Domotique-Home Posté(e) le 4 janvier 2014 Signaler Posté(e) le 4 janvier 2014 La scène précédente (Leçon 1) avait un inconvénient important – elle devait être déclenchée manuellement. Aujourd’hui je vais vous expliquer comment automatiser une scène en code LUA.Nous allons allumer une lumière à l’ouverture de la porte. Pour cela nous allons utiliser deux modules : - binary_light (vu dans la Leçon 1) - door_sensor (détecteur d’ouverture de porte/fenêtre) Pour comprendre comment fonctionne door_sensor nous allons nous aider d’API fibaro:debug déjà vu dans la Leçon 1.(nous supposons que notre door_sensor porte le numéro ID = 22 et notre binary_light a toujours ID = 100) –[[ %% properties 22 value %% globals --]] local doorSensorValue = fibaro:getValue(22, ‘value’) fibaro:debug(‘Mon etat = ‘ .. doorSensorValue) Nous déclarons notre variable doorSensorValue et grâce à la commande fibaro:getValue (Leçon 1) nous luis attribuons l’état actuel de notre door_sensor. En exécutant la scène manuellement dans la console Debug on obtientMon etat = 0 ou Mon etat = 1 en fonction de l’état de notre module.Une fois activée la scène nous donnera l’état du module à chaque changement. Utilisons cela pour activer notre deuxième module binary_light –[[ %% properties 22 value %% globals --]] – Lecture de l’état value du module 22 door_sensor local value = fibaro:getValue(<doorSensor>, ‘value’) — si l’état door_sensor = 1 alors on allume la lumière if (value == ’1′) then fibaro:call(100, ‘turnOn’) end La scène fonctionne bien mais la lumière va s’allumer à chaque ouverture de portedonc pour que cela ne fonctionne plus il faut désactiver notre scène ou……tous simplement allumer la lumière si notre door_sensor est activé. Il faut modifier notre script. –[[ %% properties 22 value %% globals --]] – Lecture de l’état value du module 22 door_sensor local value = fibaro:getValue(22, ‘value’) – Lecture de l’état d’activation du module 22 door_sensor local armed = fibaro:getValue(22, ‘armed’) – si l’état value door_sensor = 1 et il est activé alors on allume la lumière if (armed == ’1′ and value == ’1′) then fibaro:call(100, ‘turnOn’) end Et voilà 1
Shad Posté(e) le 4 janvier 2014 Signaler Posté(e) le 4 janvier 2014 Bravo pour le tuto. Par contre si je peux te donner mon avis. Si tu commences à partir de cette façon tu vas avoir une énorme quantité de scène. Perso je me suis créer une scène Association Maison, et dedans j'y met tout ce que je veux, voilà comme je m'y prend: - On commence par mettre les modules qui active la scène: J'y ai mes baies vitré, et différent éclairage pour activé des led. --[[ %% properties 30 value 31 value 9 value 8 value 12 value %% globals --]] Ensuite mes différentes variables + la condition qui démarre la scène: local startSource = fibaro:getSourceTrigger(); baieleft = 30; baieright = 31; lightbathroom = 9; lightbedroommaster = 8; kitchen = 12; if (startSource['type']=='property') then Et maintenant une partie de mon code qui allume différent équipement: if (startSource['deviceID']==tostring(lightbedroommaster)) then if (tonumber(fibaro:getValue(lightbedroommaster, "value")) > 1 ) then fibaro:call(117, "setColor", "50", "0", "175", "0"); fibaro:sleep(60*1000); else fibaro:call(117, "turnOff"); fibaro:sleep(60*1000); end elseif (startSource['deviceID']==tostring(kitchen)) then if ( tonumber(fibaro:getValue(kitchen, "value")) == 99 ) then fibaro:call(16, "turnOn"); else fibaro:call(16, "turnOff"); end end end Ce qui me permet d'avoir une seule scène pour gérer tout la maison. Bon j'avoue il y a encore 1 semaine je faisais pareil que toi Après pou gérer l'éclairage par exemple des toilettes par rapports à l'ouverture de la porte. Il y a un code sur le forum de fibaro qui est à modifier un peu car sa dépend de la version de votre door sensor, mais en gros il regarde grâce à la fonction trigger et au fait que l'état d'une variable si tu entre ou sort au toilette, et s'il doit allumer ou fermer la lumère. En tout cas belle initiative et continue comme sa. Car sa m’intéresse de voir comment font les autres
Domotique-Home Posté(e) le 5 janvier 2014 Auteur Signaler Posté(e) le 5 janvier 2014 Bonjour, Shad, dans les cours j'essaie d'expliquer les base de programmation LUA pour HC2 dans la vie je ne procède pas exactement comme ça. J'ai l'habitude de demander aux clients leurs besoins puis je définie un cahier des charge et après je programme des scènes en fonction. Ici je donne juste les exemples simples pour faire comprendre les fonctions
Domotique-Home Posté(e) le 5 janvier 2014 Auteur Signaler Posté(e) le 5 janvier 2014 --[[ %% properties 30 value 31 value 9 value 8 value 12 value %% globals --]] Ensuite mes différentes variables + la condition qui démarre la scène: local startSource = fibaro:getSourceTrigger(); baieleft = 30; baieright = 31; lightbathroom = 9; lightbedroommaster = 8; kitchen = 12; if (startSource['type']=='property') then Et maintenant une partie de mon code qui allume différent équipement: if (startSource['deviceID']==tostring(lightbedroommaster)) then if (tonumber(fibaro:getValue(lightbedroommaster, "value")) > 1 ) then fibaro:call(117, "setColor", "50", "0", "175", "0"); fibaro:sleep(60*1000); else fibaro:call(117, "turnOff"); fibaro:sleep(60*1000); end elseif (startSource['deviceID']==tostring(kitchen)) then if ( tonumber(fibaro:getValue(kitchen, "value")) == 99 ) then fibaro:call(16, "turnOn"); else fibaro:call(16, "turnOff"); end end end Shad, en regardons bien ton code je voudrais te demander si je peux le reprendre dans une Leçon 3 pour bien expliquer le fonctionnement. Je le trouve intéressant pour explique quelques fonction. merci
Domotique-Home Posté(e) le 3 avril 2014 Auteur Signaler Posté(e) le 3 avril 2014 Merci pour votre soutien promis je vais travailler sur la leçon 3
Doclpp Posté(e) le 1 juillet 2014 Signaler Posté(e) le 1 juillet 2014 Et Encore le noob.Question :Dans le premier scénario de Rems , on ajoute un interupteur physique . Comment réagi le scénario ? edit: euh .... toujours dans la scène de Rems quelqu'un peut m'expliqué simplement la différence entre "get value" qui sera forcement 1 ou 0 ( ouvert ou fermé ) et "armed" ??
Krikroff Posté(e) le 2 juillet 2014 Signaler Posté(e) le 2 juillet 2014 Avec un inter physique en plus le comportement devrait être identique si l'inter commande en toute logique le binary_light après tu peux aussi jouer sur l'origine du trigger pour désactiver temporairement la commande venant de l'inter etc. Envoyé de mon iPhone àl'aide de Tapatalk
Messages recommandés