Etat capteur ouverture

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Etat capteur ouverture

Message par Keros »

Boum a raison concernant la condition else. J'ai voulu aller vite pour déboguer et ce n'est pas très propre. Enfin, normalement tu aurais dû t'en rendre compte avec ton script qui s’exécutait en dehors d'une modif de Etat-Porte-garage-David. D'ailleurs, je n'aime pas trop cette condition qui en combine deux l'une avec l'autre : j'utilise d’habitude le style de code de boum :

Code : Tout sélectionner

if devicechanged['Etat-Porte-garage-David'] then
      -- Le dispositif nommé Etat-Porte-garage-David vient de changer d'état
      print("Etat porte : " .. otherdevices['Etat-Porte-garage-David'])
      if devicechanged['Etat-Porte-garage-David'] == 'Unlocked' then
            print("Garage vient de passer en unlocked")
      elseif devicechanged['Etat-Porte-garage-David'] == 'Locked' then
            print("Garage vient de passer en locked") 
      else
            print(Condition de garage non reconnue") 
      end
end
Avec ce débogage, tu as la valeur de ton capteur quand il change et la vérification que tes conditions sont fonctionnelles (je ne sais pas si les valeurs locked et unlocked sont bien les bonnes). C'est à tester.

Après, tu conserves ce qui fonctionne et tu rajoutes les autres étapes que tu souhaites.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
david86
Messages : 224
Inscription : 06 avr. 2018, 08:22

Re: Etat capteur ouverture

Message par david86 »

Merci à vous.
Comme je le disais je ne savais pas que de mettre device dans le trigger allez générer cela à chaque changement d'un capteur ou autre, je pensais que ce n'était lié qu'aux déclarations faites dans le script en lui même.

Du coup je comprend la 1ière condition, en gros on exécute le script qu'à un moment de changement de capteur en lui même.

J'ai tapé ton script, apporté une rikiki correction sur un guillemet et voici le résultat :
(Domoticz reconnaît bien donc les conditions de déclenchement "Locked et Unlocked". Je devrai pouvoir m'en servir pour allumer telle ou telle chose non ? Ou je loupe encore une étape ?
2022-01-26 13:09:21.179 Status: User: david (IP: ) initiated a switch command (587/Porte-garage-David/On)
2022-01-26 13:09:22.187 AEOTEC-GEN5: OpenZWave: Domoticz has send a Switch command! NodeID: 11 (0x0b)
2022-01-26 13:09:22.195 AEOTEC-GEN5: Light/Switch (Porte-garage-David)
2022-01-26 13:09:46.767 AEOTEC-GEN5: General/Alarm (Alarm Type: Access Control 6 (0x06))
2022-01-26 13:09:46.775 AEOTEC-GEN5: Light/Switch (Unknown)
2022-01-26 13:09:46.827 AEOTEC-GEN5: Light/Switch (Etat-porte-garage-David)
2022-01-26 13:09:46.766 Status: AEOTEC-GEN5: OpenZWave: Alarm received (Access Control: Door/Window Open), NodeID: 12 (0x0c)
2022-01-26 13:09:46.836 Status: LUA: Etat porte : Unlocked
2022-01-26 13:09:46.836 Status: LUA: Garage vient de passer en unlocked

2022-01-26 13:12:45.181 Status: User: david (IP: ) initiated a switch command (587/Porte-garage-David/On)
2022-01-26 13:12:46.185 AEOTEC-GEN5: OpenZWave: Domoticz has send a Switch command! NodeID: 11 (0x0b)
2022-01-26 13:12:46.189 AEOTEC-GEN5: Light/Switch (Porte-garage-David)
2022-01-26 13:13:10.764 AEOTEC-GEN5: General/Alarm (Alarm Type: Access Control 6 (0x06))
2022-01-26 13:13:10.769 AEOTEC-GEN5: Light/Switch (Unknown)
2022-01-26 13:13:10.879 AEOTEC-GEN5: General/Alarm (Alarm Type: Access Control 6 (0x06))
2022-01-26 13:13:10.884 AEOTEC-GEN5: Light/Switch (Unknown)
2022-01-26 13:13:10.986 AEOTEC-GEN5: Light/Switch (Etat-porte-garage-David)
2022-01-26 13:13:10.763 Status: AEOTEC-GEN5: OpenZWave: Alarm received (Access Control: Door/Window Open), NodeID: 12 (0x0c)
2022-01-26 13:13:10.878 Status: AEOTEC-GEN5: OpenZWave: Alarm received (Access Control: Door/Window Closed), NodeID: 12 (0x0c)
2022-01-26 13:13:10.999 Status: LUA: Etat porte : Locked
2022-01-26 13:13:10.999 Status: LUA: Garage vient de passer en locked
Raspberry Pi 3, Domoticz, RFXComm, contrôle RTS, contrôle SPOT PISCINE ;-), 2 inter Chacon 1000W, 2 inter CHACON 3000W, AEON Stick ZWAVE, 1 wall plug
1 WEMOS avec capteur pression
Boitier sonde + LED en cours...
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Etat capteur ouverture

Message par Keros »

En gros, tous les scripts de type Device se lancent quand il y a un objet qui change de valeur. On ne déclenche pas un script pour un objet, on limite l'exécution d'une partie du script en fonction des objets souhaités.

Maintenant que tes conditions sont bonnes, tu peux rajouter des commandes pour effectuer des actions. Ou bien rajouter d'autres conditions pour vérifier d'autres choses avant de faire d'autres actions.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
david86
Messages : 224
Inscription : 06 avr. 2018, 08:22

Re: Etat capteur ouverture

Message par david86 »

Merci, je vais farfouiller pour comprendre pourquoi je n'y étais pas arrivé avant... Et en plus dans cette discussion j'ai appris le fonctionnement du trigger device !

Le trigger time, comment fonctionne t-il stp ? Time = temps, mais pourtant lorsque dans un autre script, le trigger time ne faisait rien, le script fonctionne qu'avce un trigger device.

Le script i(idem que celui de ma parte de garage lol) :

Code : Tout sélectionner

commandArray = {}
Heure_Now = os.date("%H") * 60 + os.date("%M")
creneau_On = timeofday['SunsetInMinutes'] + 20
Heure_Actuelle=os.date("%X")
if (Heure_Now > creneau_On and devicechanged
Il faudrait quel type de déclencheur pour que le trigger time agisse ?
Raspberry Pi 3, Domoticz, RFXComm, contrôle RTS, contrôle SPOT PISCINE ;-), 2 inter Chacon 1000W, 2 inter CHACON 3000W, AEON Stick ZWAVE, 1 wall plug
1 WEMOS avec capteur pression
Boitier sonde + LED en cours...
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Etat capteur ouverture

Message par Keros »

Un script avec un trigger Time est exécuté toutes les minutes. Les conditions permettent par exemple seulement de laisser s'exécuter une partie du code lorsque les minutes sont égales à 00 (soit toutes les heures) ou à une heure précise.
Par contre, dedans plus de devicechanged ;)
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
david86
Messages : 224
Inscription : 06 avr. 2018, 08:22

Re: Etat capteur ouverture

Message par david86 »

ah ok !!! Rien à voir avec une heure précise que l'on souhaitera faire déclencer le script... je vais regarder plus en détail cela. Merci :)
Raspberry Pi 3, Domoticz, RFXComm, contrôle RTS, contrôle SPOT PISCINE ;-), 2 inter Chacon 1000W, 2 inter CHACON 3000W, AEON Stick ZWAVE, 1 wall plug
1 WEMOS avec capteur pression
Boitier sonde + LED en cours...
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Etat capteur ouverture

Message par Keros »

C'est comme pour les devices, tu ne déclenches pas un script à une heure précise : tu détermines le moment où il s'exécute et si ça correspond à l'heure que tu souhaites, là tu fais fonctionner une partie du code.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
david86
Messages : 224
Inscription : 06 avr. 2018, 08:22

Re: Etat capteur ouverture

Message par david86 »

Excuse de ne répondre que maintenant, merci de la précision. (je ne sais pas pourquoi je n'ai pas reçu de notifications).

Pour rédiger les scripts, existe-t-il une importance pour écrier le ='on' ou =='on' ?
Je trouve les 2 rédactions comme ci-après :

Code : Tout sélectionner

      if devicechanged['Capteur-garage-David'] == 'Unlocked' then 
            --print("Garage vient de passer en unlocked")
            commandArray['Lumiere garage'] ='On FOR 30 SECONDS'
Est-ce que je pourrai écrire : (j'ai l'impression que oui)

Code : Tout sélectionner

      if devicechanged['Capteur-garage-David'] = 'Unlocked' then 
            --print("Garage vient de passer en unlocked")
            commandArray['Lumiere garage'] =='On FOR 30 SECONDS'
Raspberry Pi 3, Domoticz, RFXComm, contrôle RTS, contrôle SPOT PISCINE ;-), 2 inter Chacon 1000W, 2 inter CHACON 3000W, AEON Stick ZWAVE, 1 wall plug
1 WEMOS avec capteur pression
Boitier sonde + LED en cours...
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Etat capteur ouverture

Message par denis_brasseur »

Si tu utilises l'éditeur de script intégré à Domoticz, tu obtiens un message d'erreur avec cette syntaxe :

Capture.PNG
Capture.PNG (4.68 Kio) Consulté 1525 fois
Comme dans beaucoup de langage informatique, le = permet d'affecter une valeur, alors que == est un opérateur de comparaison.

Idem dans les logs :

Code : Tout sélectionner

2022-01-31 05:01:01.404 Error: EventSystem: in time_toute_les_minutes: [string " ..."]:47: 'then' expected near '='
Idem pour ta ligne suivante :
Capture.PNG
Capture.PNG (6.48 Kio) Consulté 1522 fois

Je te conseille de lire les tutos du site easydomoticz.com

https://easydomoticz.com/?s=lua
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
david86
Messages : 224
Inscription : 06 avr. 2018, 08:22

Re: Etat capteur ouverture

Message par david86 »

Ok donc c'est plutôt la 1ière partie qui fonctionnerait. Je me doutais qu'il y avait une importance entre le = et == mais je n'avais pas de remonté de message d'erreur...
J'étais allé voir le wiki lua programming, je m'en sers de base systématiquement, ne serait-ce que je ne connais pas par cœur les actions.
En tout cas merci de m'avoir éclairci et précisé cela.
Raspberry Pi 3, Domoticz, RFXComm, contrôle RTS, contrôle SPOT PISCINE ;-), 2 inter Chacon 1000W, 2 inter CHACON 3000W, AEON Stick ZWAVE, 1 wall plug
1 WEMOS avec capteur pression
Boitier sonde + LED en cours...
Répondre