Besoin d'aide Script Blockly > Lua
-
morninggoal
- Messages : 33
- Inscription : 06 sept. 2019, 12:13
Besoin d'aide Script Blockly > Lua
Bonjour à tous!
Je débute en domotique. J'ai quelques script blockly que je veux transformer en Lua (je commence a percevoir les limites du blockly notamment avec les if imbriqués...) Pouvez-vous me guider pour traduire le script suivant par exemple? (dans lequel "Absence" correspond à un dummy que j'ai créé et "mouvement" à la détection d'une webcam usb configurée sous motion)
Je ne voudrais pas juxtaposer les conditions mais faire des if imbriqués pour le test de l'absence et le test de l'heure.
Merci de votre aide.
Je débute en domotique. J'ai quelques script blockly que je veux transformer en Lua (je commence a percevoir les limites du blockly notamment avec les if imbriqués...) Pouvez-vous me guider pour traduire le script suivant par exemple? (dans lequel "Absence" correspond à un dummy que j'ai créé et "mouvement" à la détection d'une webcam usb configurée sous motion)
Je ne voudrais pas juxtaposer les conditions mais faire des if imbriqués pour le test de l'absence et le test de l'heure.
Merci de votre aide.
- Pièces jointes
-
- Capture.PNG (21.02 Kio) Consulté 4210 fois
Re: Besoin d'aide Script Blockly > Lua
Je ferais quelque chose dans le genre en dzVents :
L'ordre des "if" et la condition de déclenchement peuvent être intervertis. C'est une question de choix ou d'optimisation.
Code : Tout sélectionner
return {
on = {
devices = { ['Mouvement'] = {'at 06:00-12:00'} }
},
execute = function(dz, item)
if (item.state == 'On') and (dz.devices('Volet_Salon').state == 'Closed') then
if (dz.devices('Absence').state == 'Off') then
dz.log('Toutes les conditions sont remplies', dz.LOG_INFO)
dz.devices('Volet_Cuisine').switchOff()
-- dz.devices('Volet_Cuisine').switchOff().checkFirst() -- c'est peut-être mieux. À voir.
dz.devices('Volet_Salon).switchOff()
end
end
end
}Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
-
morninggoal
- Messages : 33
- Inscription : 06 sept. 2019, 12:13
Re: Besoin d'aide Script Blockly > Lua
Merci à toi pour ce retour rapide!
Peux-tu m'expliquer rapidement ce que sont les DZvent ?
Peux-tu m'expliquer rapidement ce que sont les DZvent ?
Re: Besoin d'aide Script Blockly > Lua
dzVents est un autre système de scripts pour domoticz, C'est aussi en langage Lua. C'est plus moderne que les scripts Domoticz LUA traditionnels (commandArray).
Une présentation ici https://easydomoticz.com/scripts-plus-f ... z-dzvents/
Mais les exemples utilisent une ancienne version de dzVents (la version 2.4 est intégrée à Domoticz).
La documentation est là : https://www.domoticz.com/wiki/DzVents:_ ... h_Domoticz
Il y a quelques réglages à vérifier la première fois qu'on utilise dzVents. Tout particulièrement dans Domoticz > Réglages > Paramètre > Onglet Autre, dans la section "dzVents" (après "Événements (Lua/Blockly/Scripts)"), il faut vérifier que la case "Activé" est bien cochée. Pour certaines fonctionnalités, il faut aussi que l'adresse IP 127.0.01 ne nécessite pas de mot de passe dans l'onglet "Système", rubrique "Réseaux locaux (pas d'authentification)". Enfin, dans ce même onglet, il faut vérifier que la "Localisation" est bien définie pour que les états "nighttime"/"daytime" fonctionnent.
Une présentation ici https://easydomoticz.com/scripts-plus-f ... z-dzvents/
Mais les exemples utilisent une ancienne version de dzVents (la version 2.4 est intégrée à Domoticz).
La documentation est là : https://www.domoticz.com/wiki/DzVents:_ ... h_Domoticz
Il y a quelques réglages à vérifier la première fois qu'on utilise dzVents. Tout particulièrement dans Domoticz > Réglages > Paramètre > Onglet Autre, dans la section "dzVents" (après "Événements (Lua/Blockly/Scripts)"), il faut vérifier que la case "Activé" est bien cochée. Pour certaines fonctionnalités, il faut aussi que l'adresse IP 127.0.01 ne nécessite pas de mot de passe dans l'onglet "Système", rubrique "Réseaux locaux (pas d'authentification)". Enfin, dans ce même onglet, il faut vérifier que la "Localisation" est bien définie pour que les états "nighttime"/"daytime" fonctionnent.
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
-
morninggoal
- Messages : 33
- Inscription : 06 sept. 2019, 12:13
Re: Besoin d'aide Script Blockly > Lua
Encore une fois merci... Je suis en train de parcourir des doc sur DZvents... Dans ce que tu me retournes me concernant, c'est le item que je ne comprends pas.... D'ou sort il?
Re: Besoin d'aide Script Blockly > Lua
Quand l'événement décrit dans la table 'on' est détecté, Domoticz déclenche la fonction définie par 'execute' et passe deux paramètres (le 3e est une relique des versions précédentes).
'item' contient l'élément déclencheur. Si c'est un dispositif, tu peux vérifier son état, changer sa valeur…
Dans certains scripts, certains le nomment 'device' dans ce cas. C'est une question de goût.
https://www.domoticz.com/wiki/DzVents:_ ... gerInfo.29
Pour voir comment les scripts marchent, regarde les tutoriels ou les scripts postés sur le forums. Certains sont complexes, mais il y en a d'autres plus pratiques pour l'apprentissage.
'item' contient l'élément déclencheur. Si c'est un dispositif, tu peux vérifier son état, changer sa valeur…
Dans certains scripts, certains le nomment 'device' dans ce cas. C'est une question de goût.
https://www.domoticz.com/wiki/DzVents:_ ... gerInfo.29
Pour voir comment les scripts marchent, regarde les tutoriels ou les scripts postés sur le forums. Certains sont complexes, mais il y en a d'autres plus pratiques pour l'apprentissage.
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
-
morninggoal
- Messages : 33
- Inscription : 06 sept. 2019, 12:13
Re: Besoin d'aide Script Blockly > Lua
Si je veux commencer le script par la verif du dummy absence = off c'est possible?
Je souhaite faire ce test au debut de tout mes scripts, comme ça lorsque je m'absente (en ayant activer manuellement le dummy) rien ne s'execute....
Je souhaite faire ce test au debut de tout mes scripts, comme ça lorsque je m'absente (en ayant activer manuellement le dummy) rien ne s'execute....
Re: Besoin d'aide Script Blockly > Lua
Dans ce cas-là, pour ne pas mélanger la logique du script et un mécanisme plus général, il vaut mieux ne pas imbriquer les "if" et sortir du script prématurément.
Je ferais comme ça:
Je ferais comme ça:
Code : Tout sélectionner
return {
on = {
devices = { ['Mouvement'] = {'at 06:00-12:00'} }
},
execute = function(dz, item)
-- quitte tout de suite si l'interrupteur dummy est activé
if dz.devices('Absence').active then return end
if item.active then -- teste que 'Mouvement' est passé à 'On'
if dz.devices('Volet_Salon').state == 'Closed' then
dz.log('Toutes les conditions sont remplies', dz.LOG_INFO)
dz.devices('Volet_Cuisine').switchOff().checkFirst()
dz.devices('Volet_Salon).switchOff().checkFirst()
end
end
end
}Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
-
morninggoal
- Messages : 33
- Inscription : 06 sept. 2019, 12:13
Re: Besoin d'aide Script Blockly > Lua
OK. Je ne peux pas commencer comme ci dessous et après tester le creneau horaire et le reste...?
Code : Tout sélectionner
return {
on = {
devices = 'absence'
},
execute = function(dz, item)
if (item.state == 'Off')...-
morninggoal
- Messages : 33
- Inscription : 06 sept. 2019, 12:13
Re: Besoin d'aide Script Blockly > Lua
En relisant le message je crois comprendre un truc... Le script ne se déclenchera qu'au changement de valeur du dummy 'absence' et donc pas de déclenchement quotidien... c'est ça?