-
Compteur de contenus
4 434 -
Inscription
-
Dernière visite
-
Jours gagnés
201
Tout ce qui a été posté par Steven
-
Un peu light comme demo :-)
-
Aucun de ces codes n'est vraiment optimale car on ne vérifie jamais l'état de la lumière pendant ces 2 minutes. Si la lumière est allumée 3 fois pendant ces deux minutes, cela risque de faire un peu discothèque àla maison De plus, il n'est pas demandé d'éteindre la ventilation si la lumière est éteint.
-
Salut Sylvain, Je suis àenviron 4000km de ma box donc difficile de tester. Néanmoins le comportement que tu m'explique est étrange mais je ne pourrais rien tester avant la fin de la semaine prochaine. @+
-
Je suis retombé sur cette article et comme j'avais 5 minutes, je me suis dis qu'à des fins pédagogiques, cela serait sympa de réaliser ce script. Attention, l'utilisation du Scheduler devrait être plus performant. Alors le voici --[[ %% autostart %% properties %% globals LEVERCOUCHER --]] -- ------------------------------------------------------ -- Ce script va réagir au démarrage de la HC2 (autostart) et au changement -- de la variable globale LEVERCOUCHER -- ------------------------------------------------------ local id_sonnette = 10 -- identifiant de la sonnette local sourceTrigger = fibaro:getSourceTrigger(); -- le déclencheur de ce scénario -- au démarrage de la HC2 if (sourceTrigger["type"] == "autostart") then -- On vérifie toute les minutes while true do local dt = os.date("*t"); -- date et heure courante local heure = string.format("%02d", dt.hour) .. ": ".. string.format("%02d", dt.min) -- juste l'heure au format HH:mm local ete = dt.isdst; -- vrai si on est l'été -- 7h du matin un jour d'hiver if (heure == "07:00" and not ete) then -- allumage de la sonnette fibaro:call(id_sonnette, "turnOn") end -- 22h un jour d'été if (heure == "22:00" and ete) then -- éteindre la sonnette fibaro:call(id_sonnette, "turnOff") end -- minuit un jour d'hiver if (heure == "00:00" and not ete) then -- éteindre la sonnette fibaro:call(id_sonnette, "turnOff") end fibaro:sleep(60*1000); -- on attend 1 minute end end -- au changement de la variable LEVERCOUCHER if (sourceTrigger["type"] == "global" and sourceTrigger["varName"] == "LEVERCOUCHER") then -- lever du soleil if (fibaro:getGlobalValue("LEVERCOUCHER") == 0) then -- on éteint la sonnette fibaro:call(id_sonnette, "turnOff") else -- on allume la sonnette lorsque la variable passe sur Nuit fibaro:call(id_sonnette, "turnOn") end end
-
Bizarre, on a la même adresse IP
-
Il y a encore quelques années, quelqu'un qui parlait tout seul était enfermé dans un asile de fou et ceux qui ne parlait pas étaient catalogué comme autiste. Aujourd'hui, on aimerait pouvoir parler à nos téléphones, nos voitures, nos maisons. .. Comment s'appelle cette nouvelle maladie ? Je sais à qui je vais demander : "Notre copine en pull" http://www.domotique-fibaro.fr/index.php/topic/891-une-vision-particuliere-de-la-domotique/?p=9840
-
Un truc du genre ? Attention, c'est un exemple de code non testé. Cela réutilise la variable global Meteo vu précédement pour savoir si le ciel est dégagé ou non. --[[ %% properties %% globals %% autostart --]] local id_termometre = 1 -- identifiant du thermometre local temp_souhaitee = 20 -- température souhaitée while true do local currentDate = os.date("*t"); local currentHour = string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) -- Entre le lever et le coucher du soleil if ( currentHour >= fibaro:getValue(1, "sunriseHour") and currentHour <= fibaro:getValue(1, "sunsetHour") ) then -- si la température est suffisament élevée if ( tonumber(fibaro:getValue(id_termometre, "value")) >= temp_souhaitee ) then -- --------------------- -- fermer le volets -- --------------------- else if (fibaro:getGlobalValue("Meteo") == "DECOUVERT") then -- --------------------- -- ouvrir les volets pour laisser rentrer le soleil -- --------------------- else -- le ciel est chargé, il pourrait être utile de fermer les volets -- pour conservé la température de la maison si la température -- extérieur est inférieur à celle de la maison end end end fibaro:sleep(60*60*1000) --- toutes les heures end Facultatif : Il est possible d'enlever la boucle "while true do (ligne 11)" et les 2 dernières lignes "sleep et end (ligne 38 et 39)" et de demander au Scheduler de lancer ce scénario toutes les heures. Edit : enlever aussi le %%autostart (ligne 5)
-
Cela allume le périphérique qui a pour ID le numéro 71. Pour l'éteindre, c'est "turnOff" au lieu de "turnOn".
-
Intéressant, moi, à mon époque il n'y a avait pas le RF. Dans ce cas, cela deviendrait presque inintéressant :-) Le module Kira est relativement cher donc si tu peux trouver une autre solution avec le RF, je suis convaincu que cela sera moins coà»teux.
-
Les télécommande Harmony n'envoi que des ondes infra-rouges et rien d'autres. Oui, il y existe des récepteurs infra-rouges qui transforment cela en requêtes HTTP pour commander un Wall Plug. Recherche "Kira 128" sur Internet.
-
La température extérieur est inutile par contre, oui, la température intérieur est importante. Si on veux avoir une maison tempérée, dès que la température souhaitée est atteinte on devrait commencer à fermer les volets. La seule différence est que la température intérieur change au fil de la journée, ce qui n'a plus rien à voir avec le scénario initial. Par contre, cela serait une idée de scénario supplémentaire. Toutes les heures on vérifie la température intérieur et que le ciel soit dégagé, si la température est trop élevée on ferme les volets, sinon on les ouvre.
-
Voici ma version pour répondre àta demande : --[[ %% properties 74 value %% globals --]] -- Ce scénario sera executé uniquement àl'ouverture / fermeture -- du décteur de porte ID 74 local currentDate = os.date("*t") local currentHour = string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) local door = 74 local light = 9 -- entre 19:30 et 07:00 -- if (currentHour >= "19:30" and currentHour <= "07:00") then if (tonumber(fibaro:getValue(door, "value")) > 0) then -- porte en alert soit ouverte fibaro:call(light, "turnOn"); else -- porte fermée fibaro:call(light, "turnOn"); end end Pas testé non plus
-
Le else est si la source de déclenchement n'est pas "autostart". En gros que doit faire le scénario si tu le lance toi manuellement. Dans ce cas là, tu veux aussi allumer la lampe.
-
Ok j'ai parcouru les 1000 lignes de code. L'utilisateur met une heure que le Scheduler transforme pour faire un fibaro:sleep. Suffit de rechercher la fonction sleep dans son code. On lui met plein d'événements. Il recherche le plus proche en terme de délai et fait un sleep. Une fois l'événement terminé, il sleep jusqu'au prochain. C'est très bien car, contrairement àla plus part des autres, il ne vérifie pas toutes les minutes s'il doit faire quelque chose puisqu'il sait quand il doit le faire.
- 186 réponses
-
- Script Lua
- Agenda
-
(et 2 en plus)
Étiqueté avec :
-
Shad est l'expert du Scheduler et pourra confirmer ou infirmer mes dires.
- 186 réponses
-
- Script Lua
- Agenda
-
(et 2 en plus)
Étiqueté avec :
-
Si en appuyant sur l'interrupteur tu demande au Scheduler d'éteindre la lumière dans 5mn et que dans ces 5mn ta boxe reboot, le Scheduler ne pourra rien faire... Au même titre que le sleep. D'ailleurs le Scheduler "sleep" jusqu'àla prochaine action àeffectuer. A moins que le Scheduler stock les événements en dur quelques part, tout les événements ajoutés suite àune action ne fonctionne plus après un reboot. Ce serait vraiment cool de pouvoir stocker autre chose que des variables globales.
- 186 réponses
-
- Script Lua
- Agenda
-
(et 2 en plus)
Étiqueté avec :
-
Dans ta variable global, au lieu de stocker le déclencheur, tu devrais stocker la durée avant extinction. Pseudo-code Si interrupteur Alors setGlobal("extinction", 5*60*1000) --5 minutes sinon setGlobal("extinction", 30*1000) -- 30 secondes end call(..., turnOn) Ensuite tu créer un scénario que s'active au changement de la variable global *Extinction" Pseudo-code --[[ %% properties %% globals Extinction --]] sleep(tonumber(getGlobal("Extinction"))) call(.., turnOff) Et voilà
- 186 réponses
-
- Script Lua
- Agenda
-
(et 2 en plus)
Étiqueté avec :
-
fredo a raison, ce qui par définition est assez rare. Sérieusement, on plaisante, tu es le bienvenu dans cette communauté.
-
Allez, on attaque. --[[ %% autostart %% properties %% globals --]] local sourceTrigger = fibaro:getSourceTrigger(); -- si le déclencheur est le démarrage de la HC2 if (sourceTrigger["type"] == "autostart") then -- On boucle à l'infini while true do -- on prend la date & heure local currentDate = os.date("*t"); -- si ce n'est pas le weekend et qu'il est 6:45 if ( currentDate.wday >= 2 and currentDate.wday <= 6 and (string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "06:45") ) then -- 6h45 : Allumage réveil fibaro:call(71, "turnOn"); end -- on attend 1 minute fibaro:sleep(60*1000); end else -- Si le déclencheur est autre, du style lancement manuel -- de ce scénario -- on allume le réveil fibaro:call(71, "turnOn"); end Si le déclencheur "SourceTrigger" est "autostart" (démarrage de la HC2) alors on lance une boucle sans fin qui va attendre toute les minutes vérifier s'il est 6:45, si oui, elle allume le module 71. Par contre, si le déclencheur est autre chose alors on allume simplement le module 71. Ce scénario DOIT pouvoir être exécuter plusieurs fois en même temps car il y a toujours la boucle qui tourne attendant l'heure et éventuellement un autre lancement manuel si tu te lève avant, cela peut donc faire 2 lancements en simultané.
-
De rien, content que cela puisse aider.
-
Shad, tu n'as plus la boucle qui attend que l'heure arrive. Ton code ne s'exécutera jamais. Rem, ton abort est dans ta boucle qui attend 6:45 donc tu tue cette dernière.
-
Topic unique Fibaro - Motion Sensor - Fgms-001
Steven a répondu à un(e) sujet de Moicphil dans Modules Fibaro
Lol désolé pour la confusion. -
Et puis alboon s'écrit album. OK je sors [emoji12]
-
Les modules virtuels attribuent un icône par bouton en plus de celui du module lui-même. Chaque fois qu'un bouton est enfoncé, son icône remplace celui du module. Donc si tu n'as pas d'icône sur les boutons, tu perds l'icône du module. [emoji22] Solutions : mettre un icône sur chaque bouton ou utiliser le main loop pour remettre systématiquement l'icône àsa place. * * Trouver un tuto pour cela. Voilà:-)
-
C'est exactement cela [emoji12]