CaptainIgloo Posté(e) le 17 mai 2015 Signaler Posté(e) le 17 mai 2015 J'avance doucement, par contre il y a un décalage entre couchers de soleil. 1
darklite44 Posté(e) le 17 mai 2015 Signaler Posté(e) le 17 mai 2015 @CaptainIgloo, chez moi le caclul me cela retourne ça : [DEBUG] 21:37:50: AzimutFenetre : 200° [DEBUG] 21:37:50: LargeurFenetre : 180 cm, EpaisseurFenetre : 30 cm, HauteurFenetre : 210cm [DEBUG] 21:37:50: Seuils gauche d'incidence Azimutale dans la fenetre : 119.46° [DEBUG] 21:37:50: Seuils droit d'incidence Azimutale dans la fenetre : 280.54° [DEBUG] 21:37:50: Seuil haut d'incidence zenitale dans la fenetre : 81.87° [DEBUG] 21:37:50: PosSoleilAzimut : 301.02563180577° [DEBUG] 21:37:50: ----------------------------------------- [DEBUG] 21:37:50: Soleil àdroite de la fenêtre A partir de làje compare si je suis dans la fenêtre d'incidence Azimutale mais comment tu fais pour incidence zenitale ? Tu compares juste le seuil avec l'angle actuel ? -- Fonction pour réduire à2 décimales function round(num, dec) local mult = 10^(dec or 0) return math.floor(num * mult + 0.5) / mult end local AzimutFenetre = 200 --Mettre ici l azimut/orientation de la fenetre en degre (°), pour moi plein sud = 180° local LargeurFenetre = 180 local EpaisseurFenetre = 30 local HauteurFenetre = 210 local PosSoleilAzimut = tonumber( fibaro:getGlobalValue( "PosSoleilAzimut" ) ); fibaro:debug("AzimutFenetre : " .. AzimutFenetre .. "°"); fibaro:debug("LargeurFenetre : " .. LargeurFenetre .. " cm, " .. "EpaisseurFenetre : " .. EpaisseurFenetre .. " cm, " .. "HauteurFenetre : " .. HauteurFenetre .. "cm"); -- Seuils gauche et droit d incidence Azimutale dans la fenetre = Az + ou - cet angle masqueAz = round(math.deg(math.atan(LargeurFenetre/EpaisseurFenetre)),2) masqueAzG = round(AzimutFenetre-math.deg(math.atan(LargeurFenetre/EpaisseurFenetre)),2) masqueAzD = round(AzimutFenetre+math.deg(math.atan(LargeurFenetre/EpaisseurFenetre)),2) fibaro:debug("Seuils gauche d incidence Azimutale dans la fenetre : " .. masqueAzG .. "°") fibaro:debug("Seuils droit d incidence Azimutale dans la fenetre : " .. masqueAzD .. "°") -- Seuil haut d'incidence zenitale dans la fenetre = Horizon + cet angle masqueElev = round(math.deg(math.atan(HauteurFenetre/EpaisseurFenetre)),2) fibaro:debug("Seuil haut d'incidence zenitale dans la fenetre : " .. masqueElev .. "°") fibaro:debug("PosSoleilAzimut : " .. PosSoleilAzimut .. "°"); fibaro:debug("-----------------------------------------"); if (PosSoleilAzimut > masqueAzG and PosSoleilAzimut < masqueAzD) then fibaro:debug("Soleil dans la fenêtre") elseif (PosSoleilAzimut < masqueAzG) then fibaro:debug("Soleil àdroite de la fenêtre") elseif (PosSoleilAzimut > masqueAzD) then fibaro:debug("Soleil àdroite de la fenêtre") end
mprinfo Posté(e) le 17 mai 2015 Signaler Posté(e) le 17 mai 2015 Si vous voulez j'ai partager un scène jours nuits avec decalage possible
darklite44 Posté(e) le 17 mai 2015 Signaler Posté(e) le 17 mai 2015 Je n'avais pas pensé àcela mais je me retrouve avec une Elevation à-3° [DEBUG] 21:50:33: ----------------------------------------- [DEBUG] 21:50:33: AzimutFenetre : 200° [DEBUG] 21:50:33: LargeurFenetre : 180 cm, EpaisseurFenetre : 30 cm, HauteurFenetre : 210cm [DEBUG] 21:50:33: ----------------------------------------- [DEBUG] 21:50:33: Seuils gauche d'incidence Azimutale dans la fenetre : 119.46° [DEBUG] 21:50:33: Seuils droit d'incidence Azimutale dans la fenetre : 280.54° [DEBUG] 21:50:33: Seuil haut d'incidence zenitale dans la fenetre : 81.87° [DEBUG] 21:50:33: ----------------------------------------- [DEBUG] 21:50:33: [Azimut] Soleil àdroite de la fenêtre(304°) [DEBUG] 21:50:33: [Elevation] Soleil couché (-4°) [DEBUG] 21:44:47: Seuil haut d'incidence zenitale dans la fenetre : 81.87° [DEBUG] 21:44:47: ----------------------------------------- [DEBUG] 21:44:47: PosSoleilAzimut : 303° [DEBUG] 21:44:47: PosSoleilElevation : -3° [DEBUG] 21:44:47: ----------------------------------------- [DEBUG] 21:44:47: Soleil àdroite de la fenêtre [DEBUG] 21:44:47: Soleil dans la fenêtre
CaptainIgloo Posté(e) le 17 mai 2015 Signaler Posté(e) le 17 mai 2015 darklite44, pour l'angle zenital effectivement on compare àl'angle d'élévation solaire. On ourrait aussi avoir un masquage tel qu'une terrasse couverte ou un toit plongeant ...
darklite44 Posté(e) le 17 mai 2015 Signaler Posté(e) le 17 mai 2015 Oui par exemple j'ai la maison de mes voisins. Donc il faut que je prenne en compte ce facteur 1
Nico Posté(e) le 17 mai 2015 Auteur Signaler Posté(e) le 17 mai 2015 Captain, c'est àdire un décalage ?
CaptainIgloo Posté(e) le 18 mai 2015 Signaler Posté(e) le 18 mai 2015 @nico Oui il y a un décalage entre l'heure du coucher de soleil et son élévation sur l'horizon qui devrait être à0°.. Hier j'avais 21:04 comme coucher mais j'étais à-1,4 en élévation.
Nico Posté(e) le 18 mai 2015 Auteur Signaler Posté(e) le 18 mai 2015 Normal, il y avait une grosse vague sur la mer devant chez toi, elle a donc caché le soleil plus tôt. L'algo en tient compte
pepite Posté(e) le 18 mai 2015 Signaler Posté(e) le 18 mai 2015 Enooorme ce que vous faites messieurs, ca va etre vraiment precis pou gerer les volets et autre ;-)
CaptainIgloo Posté(e) le 19 mai 2015 Signaler Posté(e) le 19 mai 2015 @al1_fibaro, Je crois avoir trouvé l'origine de l'erreur (décalage). Cela vient selon moi du jour de l'année (DoY : Day of Year) qui s'appuie sur 365,25 jours par an au lieu de déterminer si l'année est bissextile. Avec la fonction suivante tu peux déterminer 365 ou 366 selon l'année en question : function isLeapYear(year) return year%4==0 and (year%100~=0 or year%400==0) end
darklite44 Posté(e) le 19 mai 2015 Signaler Posté(e) le 19 mai 2015 Voilà ce que ça donne : function calcul_jour_julien(jour, mois, annee, heure, minute, seconde) local month local year local day local days local a local b local jour_julien day = jour + heure /24 + minute/ 1440 + seconde / 86400 year = annee month = mois if month==1 or month==2 then year=year - 1 month=month + 12 end if isLeapYear(year) then days=365.25 else days=365 end a = math.floor(year / 100) b = 2 - a + math.floor( a / 4) jour_julien = math.floor( days * ( year + 4716)) + math.floor(30.6001*(month+1.0)) + day + b - 1524.5 return jour_julien end Avec correctif [DEBUG] 11:57:12: 19/05/15 11:57:12 [DEBUG] 11:57:12: Altitude 30.42 °, azimut 147.17 °. Sans correctif [DEBUG] 11:56:08: 19/05/15 11:56:08 [DEBUG] 11:56:08: Altitude 53.05 °, azimut 128.26 °. La différence me parait énorme. Je me suis planté quelque part ?
Nico Posté(e) le 19 mai 2015 Auteur Signaler Posté(e) le 19 mai 2015 Effectivement, c'est énorme. Car moi quand je compare mes données avec celles du site que j'avais mis plus haut dans le topic, la donnée de base était précise àmon de 1 degré prêt, donc...
darklite44 Posté(e) le 19 mai 2015 Signaler Posté(e) le 19 mai 2015 Je n'avais pas vu cette ligne également à corriger : local nb_siecle = jour_nouveau/(days*100) Sans correctif [DEBUG] 12:06:31: 19/05/15 12:06:31 [DEBUG] 12:06:31: Altitude 32.11 °, azimut 152.64 °. Avec correctif [DEBUG] 12:06:55: 19/05/15 12:06:55 [DEBUG] 12:06:55: Altitude 32.14 °, azimut 152.75 °.
CaptainIgloo Posté(e) le 19 mai 2015 Signaler Posté(e) le 19 mai 2015 Personnellement je compare à l'app sun seeker. Non il faut utiliser la fonction pour avoir le nombre de jour de l'année. 365 et 366 pour les année bissextile. Si la fonction revoie true le calcul doit partir sur 366 Jours, si false sur 365, et jamais 365.25. -- Si bissextile la fonction renvoie true sinon false function isLeapYear(annee) return annee%4==0 and (annee%100~=0 or annee%400==0) end
Nico Posté(e) le 19 mai 2015 Auteur Signaler Posté(e) le 19 mai 2015 Moi je compare avec le site SunEarthtool.com qui fonctionne bien aussi.
darklite44 Posté(e) le 19 mai 2015 Signaler Posté(e) le 19 mai 2015 Personnellement je compare à l'app sun seeker. Non il faut utiliser la fonction pour avoir le nombre de jour de l'année. 365 et 366 pour les année bissextile. Si la fonction revoie true le calcul doit partir sur 366 Jours, si false sur 365, et jamais 365.25. -- Si bissextile la fonction renvoie true sinon false function isLeapYear(annee) return annee%4==0 and (annee%100~=0 or annee%400==0) end Effectivement je m'étais contenté de copier l'existant...
darklite44 Posté(e) le 23 mai 2015 Signaler Posté(e) le 23 mai 2015 Personne n'a continué pour proposer un VD ?
Nico Posté(e) le 23 mai 2015 Auteur Signaler Posté(e) le 23 mai 2015 Bah non, on t'attendais pour te voter membre du mois... Moi j'ai pas le temps, rien que refaire toute ma HC2 aujourd'hui j'en ai encore pour des heures et des heures...
CaptainIgloo Posté(e) le 24 mai 2015 Signaler Posté(e) le 24 mai 2015 Pas vraiment de temps pour l'instant.
darklite44 Posté(e) le 25 mai 2015 Signaler Posté(e) le 25 mai 2015 J'avance doucement, par contre il y a un décalage entre couchers de soleil. Tu avais l'air d'avoir bien travaillé avec tes icones CaptainIgloo
darklite44 Posté(e) le 25 mai 2015 Signaler Posté(e) le 25 mai 2015 On dirait que cela progresse davantage sur Vera : Calcul de la position du soleil pour eedomus -via @VincentRecipon
darklite44 Posté(e) le 29 mai 2015 Signaler Posté(e) le 29 mai 2015 Je ne comprend pas pourquoi il y'a autant de différence entre les résultats du module virtuel et le site sunearthtools : [DEBUG] 14:15:23: Altitude 31.41 °, azimut 191.23 °. Cela fait plus de 30° d'écart : position du soleil Info Elevation Azimut latitudes longitudes 29/05/2015 14:16 | GMT1 63.87° 188.42° 47.544174° N 0.673835° W Une idée ? J'ai trouvé 2 autres sites pas mal pour comparer : http://suncalc.net/ http://www.pveducation.org/pvcdrom/properties-of-sunlight/sun-position-calculator
Messages recommandés