Page 1 sur 3

Capteur vituel (consigne thermostat) ne se met pas à jour...

Publié : 09 mars 2015, 16:20
par chandler45
Salut,

Je sollicite votre aide, parce que je me bat depuis trop longtemps sur mon soucis, et qu'il ne me reste plus assez de cheveux à m'arracher ! :?

Voilà, comme beaucoup, j'utilise Domoticz pour gérer mon chauffage. J'ai donc une consigne de thermostat (capteur virtuel) que je veux mettre à jour par script LUA. Dis comme ça, c'est plutôt simple... sauf que ça ne marche pas !! :(

J'ai donc le script suivant, qui lorsque je bascule un interrupteur doit aller mettre à jour ma consigne de thermostat (c'est celui avec l'idx 82). Ne tenez pas compte de la logique d'ajouter 1 à chaque fois, c'est pour mes tests (j'ai essayé avec une valeur fixe également).

Code : Tout sélectionner

commandArray = {}
if (devicechanged['Thermostat Enfants Eco'] == 'On') then
   nowtemp = tonumber(otherdevices_svalues['TEST2'])
   print('Current Temperature: ' .. tostring(nowtemp))
   commandArray['UpdateDevice'] = '82|0|'..tostring(nowtemp+1)
   print('Saved Temperature: '..nowtemp+1)
end
return commandArray
Et systématiquement lorsque le script s'exécute, j'ai le message suivant dans les logs :

Code : Tout sélectionner

2015-03-05 10:41:23.757 LUA: Current Temperature: 20.5
2015-03-05 10:41:23.758 LUA: Saved Temperature: 21.5
2015-03-05 10:41:23.763 Sending SetPoint to device....
2015-03-05 10:41:30.490 Hardware Monitor: Fetching data (System sensors)
2015-03-05 10:41:33.757 Error: Warning: lua script /home/pi/domoticz/scripts/lua/script_device_test.lua has been running for more than 10 seconds
2015-03-05 10:41:23.715 (Dummy) Lighting 2 (Thermostat Enfants Eco)
2015-03-05 10:41:33.946 (Dummy) Thermostat (TEST2)
2015-03-05 10:41:34.170 Script event triggered: /home/pi/domoticz/scripts/lua/script_device_test.lua
J'ai essayé de remplacer le commandArray['UpdateDevice'] par un appel JSON et là ça fonctionne... Vous me direz alors, pourquoi je m'embête ? C'est parce que déjà j'aimerais bien comprendre pourquoi ça ne marche pas alors que ça devrait (oui, légère tendance têtu ! :)). Mais aussi parce qu'au final, j'aurais plusieurs consignes à mettre à jour dans le même script, et je ne sais pas si c'est possible avec JSON vu qu'on ne peut préciser qu'un seul commandArray['OpenURL'] par script...

Si vous avez des idées, ou que vous voyez ce qui ne va pas...

Re: Capteur vituel (consigne thermostat) ne se met pas à jour...

Publié : 09 mars 2015, 17:02
par chandler45
Mea culpa, je viens de me rendre compte que je me suis trompé de rubrique pour poster mon message... Par contre, je ne pense pas pouvoir le déplacer ??... Donc si un modérateur indulgent veut bien le faire au besoin... :( Désolé !

Re: Capteur vituel (consigne thermostat) ne se met pas à jour...

Publié : 09 mars 2015, 17:28
par hobbe
Je suppose que ton script est un script_device_xxx.lua.
Je ne sais pas comment réagit Domoticz si tu fais un UpdateDevice dans un script device... Y-a-t'il possibilité de tourner en boucle ?
Et du coup, il tue le script au bout de 10 secondes.

Quel est l'idx de "Thermostat Enfants Eco" ?
Et 82, c'est l'idx de "TEST2" ?

Re: Capteur vituel (consigne thermostat) ne se met pas à jour...

Publié : 09 mars 2015, 17:42
par chandler45
Oui effectivement, c'est bien un script_device_xxx.lua Il me semblait avoir déjà fait un "UpdateDevice" dans un script de ce type... Je vais vérifier ça, je me trompe peut être. Et je vais aussi tester dans un script_time_xxx.lua. On ne sait jamais, ça vaut le coup d'essayer en tout cas :)

Pour les IDX, celui de "Thermostat Enfants Eco" est 44. Et le 82 c'est bien l'IDX de "TEST2".

Re: Capteur vituel (consigne thermostat) ne se met pas à jour...

Publié : 09 mars 2015, 18:06
par chandler45
Alors j'ai fait des tests...
- En passant en script_time_xxx.lua, j'ai exactement le même soucis et le même message à chaque exécution
- J'ai modifié la façon de faire la mise à jour en faisant une commande commandArray[1] = {['UpdateDevice'] = .. "84|0|" .. tostring(nowtemp+1)} dans le script_device_xxx.lua. La encore, j'ai le même message...

Je me demande si le problème n'est pas spécifique au capteur "Consigne Thermostat"... Parce que j'ai déjà un script qui fait un commandArray['UpdateDevice'] sur un capteur virtuel de type Électrique, et là ça fonctionne sans soucis...

J'avais aussi essayé de re créer un nouveau capteur, et même un nouveau Dummy, sans que ça ne change rien...

Re: Capteur vituel (consigne thermostat) ne se met pas à jour...

Publié : 10 mars 2015, 06:38
par vil1driver
Salut,

Oublies tes tostring et ça va aller.

Re: Capteur vituel (consigne thermostat) ne se met pas à jour...

Publié : 10 mars 2015, 09:18
par chandler45
Non, c'est pas ça non plus... snif !!

J'ai essayé le code suivant, en supprimant le conversion, et en enlevant le calcul pour être vraiment au plus simple... Mais j'ai le même résultat...

Code : Tout sélectionner

if (devicechanged[flagThermostatEnfantsEco] == 'On') then
   nowtemp = otherdevices_svalues['TEST2']
   print('Current Temperature: ' .. nowtemp)
   commandArray['UpdateDevice'] = '82|0|'..nowtemp
   print('Saved Temperature: '..nowtemp)
end
return commandArray 

Re: Capteur vituel (consigne thermostat) ne se met pas à jour...

Publié : 10 mars 2015, 09:22
par jackslayter
tu as quoi comme erreurs dans le log domoticz ?

Re: Capteur vituel (consigne thermostat) ne se met pas à jour...

Publié : 10 mars 2015, 09:28
par chandler45
Voici la trace que j'ai :

Code : Tout sélectionner

2015-03-10 09:13:07.116 LUA: Current Temperature: 24.5
2015-03-10 09:13:07.117 LUA: Saved Temperature: 25.5
2015-03-10 09:13:07.134 Sending SetPoint to device....
2015-03-10 09:13:17.116 Error: Warning: lua script /home/pi/domoticz/scripts/lua/script_device_test.lua has been running for more than 10 seconds
2015-03-10 09:13:07.072 (Dummy) Lighting 2 (Thermostat Enfants Eco)
2015-03-10 09:13:17.514 (Dummy) Thermostat (TEST2)
2015-03-10 09:13:17.760 Script event triggered: /home/pi/domoticz/scripts/lua/script_device_test.lua 

Re: Capteur vituel (consigne thermostat) ne se met pas à jour...

Publié : 10 mars 2015, 09:33
par jackslayter
essaye ca :

Code : Tout sélectionner

commandArray = {}
if (devicechanged[flagThermostatEnfantsEco]) then
if (devicechanged[flagThermostatEnfantsEco] == 'On') then
   nowtemp = otherdevices_svalues['TEST2']
   print('Current Temperature: ' .. nowtemp)
   commandArray['UpdateDevice'] = '82|0|'..nowtemp
   print('Saved Temperature: '..nowtemp)
end
end
return commandArray