Page 1 sur 1

créer un évènement par un script LUA

Publié : 01 oct. 2022, 20:58
par prz24
Bonjour à tous, j'ai 2 climatiseurs Daikin connectés à Domoticz via le plugin Daikin Airconditioning with LAN interface. Ce plugin crée une série de devices, dont un de type Thermostat qui permet de contrôler la température de consigne. Cela fonctionne bien dans les deux sens. Si je modifie la température de consigne sur Domoticz, elle est transmise au climatiseur. Si je modifie en direct via la télécommande IR ou le smartphone, elle est mise à jour dans Domoticz avec quelques secondes de délai. Ce que désire faire, c'est modifier la consigne du thermostat via un script LUA (afin d'adapter cette consignes à des conditions extérieures) Cela fonctionne aussi, jusqu'qu thermostat Domoticz, mais la transmission vers le climatiseur n'a pas lieu, et après quelques secondes, le thermostat reprend l'ancienne valeur de consigne. C'est la même chose d'ailleurs quand on change un capteur via une requête json, l'évènement devicechanged de ce capteur ne se produit pas. Comment faire pour forcer, dans un script LUA, cet évènement ? Merci pour votre aide

Re: créer un évènement par un script LUA

Publié : 01 oct. 2022, 21:11
par Keros
En LUA, le widget est mis à jour, mais reprend sa valeur précédente. Idem avec une requête Json. C'est bien ça ?

Tu peux nous partager ton script ?
Tu es sur quelle version de DomoticZ ?
Tu as essayé en DzVents ? Pas de refaire tout ton script, mais juste essayer de mettre à jour le widget.

Re: créer un évènement par un script LUA

Publié : 02 oct. 2022, 11:01
par prz24
Merci Keros
version Dz : Version: 2022.1
Build Hash: c9526851b
Compile Date: 2022-01-31 09:34:32
dzVents Version: 3.1.8
Python Version: 3.7.3 (default, Jan 22 2021, 20:04:44) [GCC 8.3.0]
tournant sur un PI3B
En LUA, le widget est mis à jour, mais reprend sa valeur précédente. Idem avec une requête Json. C'est bien ça ?

Oui, mais je n'ai pas été complet dans la description. Le widget communique avec le Daikin et reçoit les valeurs de celui-ci toutes les 30 sec. Quand le script change la valeur du widget, celui-ci n'envoie pas la nouvelle consigne au Daikin et à la prochaine interrogation, le Daikin lui renvoie la valeur précédente. Le problème ne se trouve pas dans le script, qui fonctionne bien et je ne pense pas qu'un autre langage y changerait quelque chose, mais dans le widget qui ne transmet pas la nouvelle consigne quand celle-ci est modifiée. Voici quand même la partie du script qui concerne la clim.

Code : Tout sélectionner

local sp = "Thermostat Chambre"
...
   elseif (deviceName==sp) then
       print ("ESP41 '"..deviceName.."', value '"..tostring(deviceValue).."'")
       newcons=otherdevices_svalues[sp] + otherdevices_temperature['Clim-Chambre Temp+Hum'] - otherdevices_temperature['Temperature Chambre']
       cde="http://192.168.1.31:8080/json.htm?type=command&param=setsetpoint&idx=1407&setpoint=" ..tostring(newcons)
       print ("ESP41 "..cde)
       commandArray[#commandArray+ 1] = {['OpenURL'] = cde}
...
return commandArray
La solution serait de pouvoir, dans le script, forcer l'envoi par le widget.

Re: créer un évènement par un script LUA

Publié : 02 oct. 2022, 11:36
par Keros
Est-ce que tu as essayé d'envoyer une valeur entière via ton script au lieu de faire un calcul ? Peut-être que tu as une valeur 20.52 qu'il arrive à afficher, mais pas à envoyer.

Tu as essayé de mettre un max de logs sur ton plugin (log Info + status) pour voir s'il y a une info de mise à jour du widget ?

Re: créer un évènement par un script LUA

Publié : 02 oct. 2022, 15:06
par prz24
Ok, j'essaye

Re: créer un évènement par un script LUA

Publié : 02 oct. 2022, 15:19
par prz24
Super, ça fonctionne. J'ai d'abord mis une valeur entière OK. Puis ajouté newcons=round(newcons,0)dans le script et tout est OK. merci beaucoup