LUA : Envoi simultané de commandes JSON

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 <\>.
Diab
Messages : 143
Inscription : 25 sept. 2016, 13:41

LUA : Envoi simultané de commandes JSON

Message par Diab »

Salut.
Je bloque sur l'envoi de commandes JSON, si quelqu’un à une idée, je suis preneur de suggestions.
J'actionne des électrovannes de jardin dans un script LUA par l’intermédiaire de commandes JSON. Comme j'ai plusieurs zones à traiter je passe par un compteur de temps qui déclenche le passage d'une zone à une autre.
Les commandes JSON passent très bien quand il n'y en a qu'une dans un bloc d'activation comme :

Code : Tout sélectionner

        if difference > 360 and difference <= 420 then
        commandArray['OpenURL'] = 'http://192.168.0.9:9090/json.htm?type=command&param=switchlight&idx=281&switchcmd=On'
        end
    
        if difference > 420 and difference <= 780 then
        commandArray['OpenURL'] = 'http://192.168.0.9:9090/json.htm?type=command&param=switchlight&idx=278&switchcmd=Off'
        end
Mais, si je mets deux commandes dans un bloc horaire, alors seule la première est exécutée :

Code : Tout sélectionner

        if difference > 420 and difference <= 780 then
        commandArray['OpenURL'] = 'http://192.168.0.9:9090/json.htm?type=command&param=switchlight&idx=281&switchcmd=On'
        commandArray['OpenURL'] = 'http://192.168.0.9:9090/json.htm?type=command&param=switchlight&idx=278&switchcmd=Off'
        end
Les commandes fonctionnent toutes de manière individuelle dans mon navigateur.
On dirait que l'envoi rapproché de deux commandes ne peut pas être traité.

Le système est un Pi4 avec Domoticz en version 2022.1 et Python 3.7.3.
Les vannes sont commandées par des récepteurs Zigbee de marque MOES avec une Pigate V2 (Plugin 6.1.004 et Firmware 0320).
Merci.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: LUA : Envoi simultané de commandes JSON

Message par Keros »

Si tu vannes sont ZigBee avec le plugin ZigBeeForDomoticZ, tu dois pouvoir les actionner en appuyant sur les widgets de DomoticZ ?
Si oui, pourquoi utilises-tu l'API Json ?
Les commandes de type commandeArray['Vanne']='On' ne fonctionnent pas ?
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
Diab
Messages : 143
Inscription : 25 sept. 2016, 13:41

Re: LUA : Envoi simultané de commandes JSON

Message par Diab »

Si, ces commandes fonctionnent mais pas avec les modules MOES qui ont un temps d'ouverture de 20 sec (idem volet roulant). C'est pourquoi j'ai reproduit une commande qui fonctionne dans un autre script.
Pour des switch normaux j'utilise des commandes du genre "switchOn('Vanne')", ou lorsque je dois tester un état, une commande du genre "if (otherdevices['Arr_Palissade'] == 'Off') then switchOn ('Arr_Palissade') end".

Je ne connais pas la différence entre "otherdevices..." et "commandArray ..."

J'ai essayé ce que tu préconises (commandeArray['Vanne']='On') mais n'arrive pas à tester l'état de l'actionneur de vanne avant d'envoyer cette commande. Je ne comprends pas pourquoi son état est "Open" ou "Closed" dans la liste des objets alors qu'il faut la commander avec "On" ou "Off".
Y'a du boulot ...
Jeff
Messages : 1007
Inscription : 17 nov. 2016, 20:54
Localisation : Rennes (35)

Re: LUA : Envoi simultané de commandes JSON

Message par Jeff »

Il faut utiliser cette syntaxe pour passer plusieurs commandes d'affilé

Code : Tout sélectionner

commandArray[#commandArray +1]={['Device']='On'}
Version: 2023.1 sur VM Synology, docker Zwave Js UI (Z-stick GEN5, Fibaro...), Zigbeefordomoticz. Nextion RGB Led Screen
Diab
Messages : 143
Inscription : 25 sept. 2016, 13:41

Re: LUA : Envoi simultané de commandes JSON

Message par Diab »

Merci Jeff, il semble donc qu'il faille rester sur la suggestion de Keros et laisser tomber les commandes JSON.
SI je veux lancer plusieurs commandes dans un bloc horaire, il faut donc, dans mon cas quelque chose comme ça ?

Si heure = hh:mm:ss alors
commandArray[#commandArray +1]={['Vanne_1']='Off'}
commandArray[#commandArray +1]={['Vanne_2']='On'}
.....
Jeff
Messages : 1007
Inscription : 17 nov. 2016, 20:54
Localisation : Rennes (35)

Re: LUA : Envoi simultané de commandes JSON

Message par Jeff »

Oui tout a fait, cette commande permet de faire plusieurs ordres à la suite que se soit de l'ordre direct SwitchOn, du json, du sendmail...
Le otherdevice c'est une interrogation dans un if, le commandarray, une exécution.
Version: 2023.1 sur VM Synology, docker Zwave Js UI (Z-stick GEN5, Fibaro...), Zigbeefordomoticz. Nextion RGB Led Screen
Diab
Messages : 143
Inscription : 25 sept. 2016, 13:41

Re: LUA : Envoi simultané de commandes JSON

Message par Diab »

Merci, je vais essayer de reformuler mon script avec ces informations.
Diab
Messages : 143
Inscription : 25 sept. 2016, 13:41

[Résolu] LUA : Envoi simultané de commandes JSON

Message par Diab »

Merci à vous deux.
L'utilisation de commandes JSON n'était pas pertinente et l’enchaînement des commandes est maintenant OK (compliquée quand même cette syntaxe ...).
Mais ça marche ;)
Répondre