
al1_fibaro
Membres confirmés-
Compteur de contenus
19 -
Inscription
-
Dernière visite
Tout ce qui a été posté par al1_fibaro
-
Besoin daide Reconfiguration En Cours... Ouais Mais !
al1_fibaro a répondu à un(e) sujet de Domodial dans HC2
Des news ? j'ai le même pb -
Il me semble que c’est ton IF qui pose problème. Si Etat_Volet_Entree est une variable alors enlève les cotes. if ('Etat_Volet_Entree' == 'Ouvert') then if (Etat_Volet_Entree == 'Ouvert') then
-
Ben alors tu ne nous a pas prévenue . C’est bien ton article ? http://www.domotique-info.fr/2015/09/ou-est-le-soleil-pour-votre-homecenter-2/ :bravo: :bravo:
-
Bravo et encouragement. Je suis heureux de voir que le VD évolue Je l'attends avec impatience.
-
Je peux effectivement témoigner que ma première version ici se bloquait entre 2 et 3 jours.
-
@Jojo : Voila! Ma dernière version. Et effectivement c’est beaucoup plus stable ! Merci ! Position_du_Soleil.vfib
-
Besoin daide Passer Un Paramètre À Un Module Virtuel À Partir D'une Scène En Mode Bloc
al1_fibaro a répondu à un(e) sujet de Shyrka973 dans HCL
ça m'intrigue aussi -
Je n’ai pas cette erreur, as-tu bien crée les variable global ?
-
Non! non ! j’ai oublié de remettre le temps d’attente (TmpsLoop) en seconde, à un valeur plus raisonnable. Il faut modifier la première ligne. local TmpsLoop = 60 -- Temps avant le prochain loop Je cherche encore comment utiliser ces informations. Je suppose que Nico à de bonne idée à nous faire partager. PS : Pour moi il n’y a pas d’erreur. PS2 : Dans l'algo, manifestement l'azimut 0° correspond au nord et donc 180° le sud. Dans les diapos 0° correspond au sud.
-
Bon… finalement c’est précis à moins de 1°. Je me dis donc que c’est suffisant pour ce que l’on veut en faire. Donc voici le module plus abouti. Il va mettre à jour deux variable global (PosSoleilAzimut, PosSoleilElevation) qu’il faut créer avant d’importer le module. @jojo : J’ai vu ta remarque après avoir finalisé cette version de module (désolé). Je vais faire des recherche la dessus. Si tu, ou quelqu’un d’autre, avez un exemple de code ou un lien de discussion évoquant « l’affaire » je suis preneur. En attente de vos remarques ou de vos idées de scénario. Position_du_Soleil.vfib
-
Un peu mieux, mais c’est pas ça encore ! local TmpsLoop = 60 -- Temps avant le prochain loop local MVid = fibaro:getSelfId() HC2 = Net.FHttp("127.0.0.1",11111); local response, status, errorCode = HC2:GET("/api/settings/location"); if (tonumber(errorCode) == 0) then jsonTable = json.decode(response); else fibaro:debug("error "..errorCode ) end -- recuperation des données de la HC2 local Ville = (jsonTable.city) local latitude = (jsonTable.latitude); local longitude = (jsonTable.longitude); fibaro:debug("Latitude : "..latitude .." - Longitude : " .. longitude) function setDevicePropertyValue(id, label, value) fibaro:call(id, "setProperty", "ui."..label..".value", value) end function calcul_jour_julien(jour, mois, annee, heure, minute, seconde) local month local year local day 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 a = math.floor(year / 100) b = 2 - a + math.floor( a / 4) jour_julien = math.floor( 365.25 * ( year + 4716)) + math.floor(30.6001*(month+1.0)) + day + b - 1524.5 return jour_julien end -- =========================================== -- Main -- =========================================== local dt = os.date("*t") --local JourJulien = calcul_jour_julien(13,01,2015,12,00,00) local correction_heure -- Correction heure isdst = True => Eté => +2h sinon Hiver +1h (UT) if (dt.isdst) then correction_heure = 2 else correction_heure = 1 end local jour_nouveau = calcul_jour_julien(dt.day, dt.month, dt.year, dt.hour, dt.min, dt.sec)-correction_heure/24-2451545 setDevicePropertyValue(MVid, "JourJulienNouv", jour_nouveau) ------------------------------------------------------------------------------ -------------calculs et affichages ascension droite et délinaison------------- ------------------------------------------------------------------------------ local g = 357.529 + 0.98560028 * jour_nouveau local q = 280.459 + 0.98564736 * jour_nouveau local l = q + 1.915 * math.sin ( g * math.pi / 180 ) + 0.020 * math.sin( 2 * g * math.pi /180 ) local e = 23.439 - 0.00000036 * jour_nouveau local ascension_droite = math.atan(math.cos( e * math.pi / 180) * math.sin( l * math.pi / 180 ) / math.cos( l * math.pi / 180)) * ( 180 / math.pi ) / 15 if (math.cos( l * math.pi / 180) < 0) then ascension_droite = 12 + ascension_droite end if (math.cos( l *math.pi / 180) > 0 and math.sin( l * math.pi / 180) < 0 ) then ascension_droite = ascension_droite + 24 end setDevicePropertyValue(MVid, "AscensionDroite", ascension_droite) local declinaison = math.asin(math.sin(e * math.pi / 180) * math.sin( l * math.pi / 180)) * 180 / math.pi setDevicePropertyValue(MVid, "Declinaison", declinaison) ------------------------------------------------------------------------------ -----------------------------calculs heure sidérale et angle horaire---------- ------------------------------------------------------------------------------ local nb_siecle = jour_nouveau/36525 local heure_siderale1 = (24110.54841 + (8640184.812866 * nb_siecle) + (0.093104 * (nb_siecle * nb_siecle)) - (0.0000062 * (nb_siecle * nb_siecle * nb_siecle))) / 3600 local heure_siderale2 = ((heure_siderale1 / 24) - math.floor(heure_siderale1 / 24)) * 24 local angleH = 360 * heure_siderale2 / 23.9344 local angleT = ( dt.hour - correction_heure - 12 + dt.min / 60 + dt.sec / 3600) * 360 / 23.9344 local angle = angleT + angleH local angle_horaire = angle - ascension_droite * 15.0 + longitude -------------calculs et affichages altitude et azimut------------------------- ------------------------------------------------------------------------------ local altitude = math.asin(math.sin(declinaison * math.pi / 180) * math.sin(latitude * math.pi / 180) - math.cos(declinaison * math.pi / 180) * math.cos(latitude * math.pi / 180) * math.cos(angle_horaire * math.pi / 180)) * 180/math.pi setDevicePropertyValue(MVid, "Altitude", altitude) local azimut = math.acos((math.sin(declinaison * math.pi / 180) - math.sin( latitude * math.pi / 180) * math.sin(altitude * math.pi / 180)) / (math.cos(latitude * math.pi / 180) * math.cos(altitude * math.pi / 180))) * 180 / math.pi local sinazimut = (math.cos(declinaison * math.pi / 180) * math.sin(angle_horaire * math.pi / 180)) / math.cos( altitude * math.pi / 180) if(sinazimut<0) then azimut=360-azimut end setDevicePropertyValue(MVid, "Azimut", azimut) fibaro:sleep((TmpsLoop - 3)*1000) a remplacer dans le main loop.
-
J’en ai trouvé une! j’ai traduit la fonction int() par math.abs alors que c’est math.floor. Je corrige, je test, et je vous renvoie le code.
-
Alors voilà ! J’ai fait une première version en module virtuel du code C++ précédemment cite par @BenjyNet Évidemment ça ne marche pas bien. Je sollicite donc vos yeux et neurones pour me dire ou je me suis trompé. Pour vérifier j’utilise le site http://www.sunearthtools.com/dp/tools/pos_sun.php?lang=fr Voici le code du main loop: local TmpsLoop = 60 -- Temps avant le prochain loop local MVid = fibaro:getSelfId() HC2 = Net.FHttp("127.0.0.1",11111); local response, status, errorCode = HC2:GET("/api/settings/location"); if (tonumber(errorCode) == 0) then jsonTable = json.decode(response); else fibaro:debug("error "..errorCode ) end -- recuperation des données de la HC2 local Ville = (jsonTable.city) local latitude = (jsonTable.latitude); local longitude = (jsonTable.longitude); fibaro:debug("Latitude : "..latitude .." - Longitude : " .. longitude) function setDevicePropertyValue(id, label, value) fibaro:call(id, "setProperty", "ui."..label..".value", value) end function calcul_jour_julien(jour, mois, annee, heure, minute, seconde) local month local year local day 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 a = math.abs(year / 100) b = 2 - a + math.abs( a / 4) jour_julien = math.abs( 365.25 * ( year + 4716)) + math.abs(30.6001*(month+1.0)) + day + b - 1524.5 return jour_julien end -- =========================================== -- Main -- =========================================== local dt = os.date("*t") --local JourJulien = calcul_jour_julien(13,01,2015,12,00,00) local correction_heure -- Correction heure isdst = True => Eté => +2h sinon Hiver +1h (UT) if (dt.isdst) then correction_heure = 2 else correction_heure = 1 end local jour_nouveau = calcul_jour_julien(dt.day, dt.month, dt.year, dt.hour, dt.min, dt.sec)-correction_heure/24-2451545 setDevicePropertyValue(MVid, "JourJulienNouv", jour_nouveau) ------------------------------------------------------------------------------ -------------calculs et affichages ascension droite et délinaison------------- ------------------------------------------------------------------------------ local g = 357.529 + 0.98560028 * jour_nouveau local q = 280.459 + 0.98564736 * jour_nouveau local l = q + 1.915 * math.sin ( g * math.pi / 180 ) + 0.020 * math.sin( 2 * g * math.pi /180 ) local e = 23.439 - 0.00000036 * jour_nouveau local ascension_droite = math.atan(math.cos( e * math.pi / 180) * math.sin( l * math.pi / 180 ) / math.cos( l * math.pi / 180)) * ( 180 / math.pi ) / 15 if (math.cos( l * math.pi / 180) < 0) then ascension_droite = 12 + ascension_droite end if (math.cos( l *math.pi / 180) > 0 and math.sin( l * math.pi / 180) < 0 ) then ascension_droite = ascension_droite + 24 end setDevicePropertyValue(MVid, "AscensionDroite", ascension_droite) local declinaison = math.asin(math.sin(e * math.pi / 180) * math.sin( l * math.pi / 180)) * 180 / math.pi setDevicePropertyValue(MVid, "Declinaison", declinaison) ------------------------------------------------------------------------------ -----------------------------calculs heure sidérale et angle horaire---------- ------------------------------------------------------------------------------ local nb_siecle = jour_nouveau/36525 local heure_siderale1 = (24110.54841 + (8640184.812866 * nb_siecle) + (0.093104 * (nb_siecle * nb_siecle)) - (0.0000062 * (nb_siecle * nb_siecle * nb_siecle))) / 3600 local heure_siderale2 = ((heure_siderale1 / 24) - math.abs(heure_siderale1 / 24)) * 24 local angleH = 360 * heure_siderale2 / 23.9344 local angleT = ( dt.hour - correction_heure - 12 + dt.min / 60 + dt.sec / 3600) * 360 / 23.9344 local angle = angleT + angleH local angle_horaire = angle - ascension_droite * 15.0 + longitude -------------calculs et affichages altitude et azimut------------------------- ------------------------------------------------------------------------------ local altitude = math.asin(math.sin(declinaison * math.pi / 180) * math.sin(latitude * math.pi / 180) - math.cos(declinaison * math.pi / 180) * math.cos(latitude * math.pi / 180) * math.cos(angle_horaire * math.pi / 180)) * 180/math.pi setDevicePropertyValue(MVid, "Altitude", altitude) local azimut = math.acos((math.sin(declinaison * math.pi / 180) - math.sin( latitude * math.pi / 180) * math.sin(altitude * math.pi / 180)) / (math.cos(latitude * math.pi / 180) * math.cos(altitude * math.pi / 180))) * 180 / math.pi local sinazimut = (math.cos(declinaison * math.pi / 180) * math.sin(angle_horaire * math.pi / 180)) / math.cos( altitude * math.pi / 180) if(sinazimut<0) then azimut=360-azimut end setDevicePropertyValue(MVid, "Azimut", azimut) fibaro:sleep((TmpsLoop - 3)*1000) Voici le module virtuel : Position_du_Soleil.vfib
-
Ha !!!.... c++, ça ma rappel des choses . C’est finalement architecturé comme du LUA. Je crois que je vais faire quelques chose avec ça ce WE. (S’il ne fait pas trop beau) Merci @BenjyNet
-
Voici un dev open source en C #. Probablement plus lisible pour les plus jeunes. Page présentation : http://sidstation.loudet.org/sunazimuth-fr.xhtml Code source : http://anonsvn.loudet.org/SunAzimuth/tags/ Reste à trouver la/les méthodes qui nous intéressent.
-
Vola un exemple facile à lire pour les anciens http://fr.1001mags.com/parution/svm/numero-2-janvier-1984/page-52-53-texte-integral PS : je suis bien intéressé par ce sujet
-
Besoin daide Création Virtual Devices Avec Un Groupe
al1_fibaro a répondu à un(e) sujet de cybersquat dans Support
Tu as oublié de cocher "code lua" -
Topic unique Interrupteur Tactile Rgbw
al1_fibaro a répondu à un(e) sujet de turlututu74 dans Eclairage
As-tu vu ça http://forum.micasaverde.com/index.php?topic=25549.0 J’ai l’impression qu’il a résolus le problème avec un seul module mais j’avoue, je n’ai pas bien compris ! La commande est sur la sortie RGBW ???? -
Bonjour, Je monte petit à petit ma domotique sur zibase et fibaro HC2 (20% Zibase 80% HC2). Au plaisir de vous lire.