Besoin d'aide Script Blockly > Lua

Posez ici vos questions d'utilisation, de configuration de DomoticZ, de bugs, de conseils sur le logiciel lui même dans son utilisation et son paramétrage.
Des forums spécifiques sont ouverts ci-dessous pour regrouper les différents sujets.
morninggoal
Messages : 33
Inscription : 06 sept. 2019, 12:13

Besoin d'aide Script Blockly > Lua

Message par morninggoal »

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.
Pièces jointes
Capture.PNG
Capture.PNG (21.02 Kio) Consulté 4211 fois
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

Re: Besoin d'aide Script Blockly > Lua

Message par boum »

Je ferais quelque chose dans le genre en dzVents :

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
}
L'ordre des "if" et la condition de déclenchement peuvent être intervertis. C'est une question de choix ou d'optimisation.
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

Message par morninggoal »

Merci à toi pour ce retour rapide!
Peux-tu m'expliquer rapidement ce que sont les DZvent ?
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

Re: Besoin d'aide Script Blockly > Lua

Message par boum »

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.
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

Message par morninggoal »

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?
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

Re: Besoin d'aide Script Blockly > Lua

Message par boum »

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.
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

Message par morninggoal »

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....
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

Re: Besoin d'aide Script Blockly > Lua

Message par boum »

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:

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

Message par morninggoal »

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

Message par morninggoal »

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?
Répondre