créer un évènement par un script LUA
créer un évènement par un script LUA
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
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.
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.
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
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: créer un évènement par un script LUA
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.
La solution serait de pouvoir, dans le script, forcer l'envoi par le widget.
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¶m=setsetpoint&idx=1407&setpoint=" ..tostring(newcons)
print ("ESP41 "..cde)
commandArray[#commandArray+ 1] = {['OpenURL'] = cde}
...
return commandArray
Dernière modification par Keros le 02 oct. 2022, 11:29, modifié 1 fois.
Raison : Ajout des balises code pour le script
Raison : Ajout des balises code pour le script
Re: créer un évènement par un script LUA
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 ?
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 ?
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
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: créer un évènement par un script LUA
Ok, j'essaye
Re: créer un évènement par un script LUA
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