lua: Comparaison temperature avec variable utilisateur

Vous avez des questions concernant les scripts dans Domoticz, posez vos questions ici, quelque soit le langage nous tenterons des réponses pertinentes ...
morninggoal
Messages : 25
Enregistré le : 06 sept. 2019, 12:13

lua: Comparaison temperature avec variable utilisateur

Message par morninggoal » 13 sept. 2019, 16:01

Bonjour,

J'ai fait le script suivant en lua qui ne semble pas fonctionner... Il fonctionnait en blockly... Qu’en pensez vous? pas d'erreur dans le log mais j'imagine que le problème se situe autour de ma variable 'TempMax'.

Code : Tout sélectionner

heure_actuelle= string.sub(os.date("%X"), 1, 5)


commandArray = {}

if heure_actuelle < '20:00' then
    if (otherdevices['Temperature_etage'] == tostring(uservariables['TempMax'])) and uservariables['SMSenvoye'] == '0' then
         commandArray['SendNotification']='Temperature élévée: fermeture volets 50% !'
         commandArray['Variable:SMSenvoye'] = tostring(1)
         commandArray['Volet_Salle_a_manger 1_grand'] = 'Stopped'
         commandArray['Volet_Salle_a_manger_2'] = 'Stopped'
         commandArray['Volet_Cuisine'] = 'Stopped'
         commandArray['Volet_Salon'] = 'Stopped'
     end
 end
 


return commandArray

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


boum
Messages : 37
Enregistré le : 18 janv. 2019, 11:34
Localisation : France

Re: lua: Comparaison temperature avec variable utilisateur

Message par boum » 13 sept. 2019, 17:15

Code : Tout sélectionner

otherdevices_temperature['Temperature_etage']
(et fait plutôt le test avec >=, la température peut augmenter brutalement et rater ton seuil.
Domoticz v4.10717 sur Pi³ / Z-Wave / RFXCom

morninggoal
Messages : 25
Enregistré le : 06 sept. 2019, 12:13

Re: lua: Comparaison temperature avec variable utilisateur

Message par morninggoal » 14 sept. 2019, 12:26

J'ai appliquer ta modif mais ca n'a pas l'air de fonctionner... Toujours rien dans les logs...
Pour ma variable utilisateur "TempMax" j'ai mis un tonumber à la place du tostring...

Code : Tout sélectionner

heure_actuelle= string.sub(os.date("%X"), 1, 5)


commandArray = {}

if heure_actuelle < '20:00' then
    if otherdevices_temperature['Temperature_etage'] > tonumber(uservariables['TempMax']) and uservariables['SMSenvoye'] == '0' then
         
         print('****************')
         commandArray['SendNotification']='Temperature élévée: fermeture volets 50% !'
         commandArray['Variable:SMSenvoye'] = tostring(1)
         commandArray['Volet_Salle_a_manger 1_grand'] = 'Stopped'
         commandArray['Volet_Salle_a_manger_2'] = 'Stopped'
         commandArray['Volet_Cuisine'] = 'Stopped'
         commandArray['Volet_Salon'] = 'Stopped'
     end
 end
  


return commandArray

vil1driver
Messages : 5096
Enregistré le : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: lua: Comparaison temperature avec variable utilisateur

Message par vil1driver » 14 sept. 2019, 12:33

Salut,

Juste pour tatilloner..
Ceci

Code : Tout sélectionner

tostring(1)
Peut s'écrire ;)

Si tu veux comprendre ton problème ajoute des print à gogo en tout début de script

Code : Tout sélectionner

print otherdevices_temperature['Temperature_etage']) 
Etc... (heure_actuelle...) tout, tout...

A savoir que otherdevices_temperature ne renvoie pas un nombre mais une chaîne et ne devrait donc pas être comparé à un nombre (tonumber...)
Mais ceci aurait normalement du créer une erreur visible dans les logs..
" attempt to compare string with number"

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


morninggoal
Messages : 25
Enregistré le : 06 sept. 2019, 12:13

Re: lua: Comparaison temperature avec variable utilisateur

Message par morninggoal » 14 sept. 2019, 14:36

J'ai rajouter les print comme tu me conseilles... grace a ça je constate que la valeur de la temperature_etage et la valeur de ma variable TempMax correspondent a ce que j'attends.... pour autant il ne se passe toujours rien...

heure_actuelle= string.sub(os.date("%X"), 1, 5)


commandArray = {}

print (otherdevices_temperature['Temperature_etage'])
print (uservariables['TempMax'])


if heure_actuelle < '20:00' then
if (otherdevices_temperature['Temperature_etage'] >= tonumber(uservariables['TempMax']) and uservariables['SMSenvoye'] == '0') then

print('****************')
commandArray['SendNotification']='Temperature élévée: fermeture volets 50% !'
commandArray['Variable:SMSenvoye'] = tostring(1)
commandArray['Volet_Salle_a_manger 1_grand'] = 'Stopped'
commandArray['Volet_Salle_a_manger_2'] = 'Stopped'
commandArray['Volet_Cuisine'] = 'Stopped'
commandArray['Volet_Salon'] = 'Stopped'
end
end



return commandArray


voici les log
[img][img]



et mes variables
Fichiers joints
Capture1.PNG
Capture1.PNG (14.54 Kio) Vu 136 fois
Capture.PNG
Capture.PNG (9.87 Kio) Vu 137 fois

vil1driver
Messages : 5096
Enregistré le : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: lua: Comparaison temperature avec variable utilisateur

Message par vil1driver » 14 sept. 2019, 14:44

L'onglet erreur de la page de logs n'indiques rien?

Ps: je t'ai conseillé d'enlever le tonumber

morninggoal
Messages : 25
Enregistré le : 06 sept. 2019, 12:13

Re: lua: Comparaison temperature avec variable utilisateur

Message par morninggoal » 14 sept. 2019, 14:51

j'ai enlevé le tonumber... pas mieux et rien dans les logs meme sur l'onglet erreur... je comprends pas...

boum
Messages : 37
Enregistré le : 18 janv. 2019, 11:34
Localisation : France

Re: lua: Comparaison temperature avec variable utilisateur

Message par boum » 14 sept. 2019, 15:04

Code : Tout sélectionner

if heure_actuelle < '20:00' then
oops ;)

Code : Tout sélectionner

local juste_l_heure = tonumber(string.sub(heure_actuelle, 1, 2))
print( juste_l_heure )
if (juste_l_heure < 20) then
Pour les chaines de caractères, il ne faut pas trop compter sur < et >

Si tu n'as rien dans les logs, c'est qu'il ne passe pas par les print. Le script s'est arrêté avant ou ne passe pas une condition englobante ou plus haut. C'est du travail de détective :lol:
Domoticz v4.10717 sur Pi³ / Z-Wave / RFXCom

vil1driver
Messages : 5096
Enregistré le : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: lua: Comparaison temperature avec variable utilisateur

Message par vil1driver » 14 sept. 2019, 15:09

Je me sers énormément de cette méthode de comparaison sur les heures (ce code est d'ailleurs le mien) et elle est fonctionnelle.
Un print juste après le confirmerait..

Pour le reste, oui tester > a la place de >=
Ou tout mettre en numérique en mettant des tonumber partout (ce que je fais d'habitude, voir fonction getTemp dans ma signature)
Certainement bien plus fiable, que de comparer des chaînes de taille différentes.

Merci pour le rappel Boum ;)

boum
Messages : 37
Enregistré le : 18 janv. 2019, 11:34
Localisation : France

Re: lua: Comparaison temperature avec variable utilisateur

Message par boum » 14 sept. 2019, 16:15

Le dernier endroit où ça peut bloquer, c'est:

Code : Tout sélectionner

uservariables['SMSenvoye'] == '0'
Encore une variable a imprimer pour vérifier la valeur. Elle a peut-être été mise à '1' sur un test précédent et n'a pas été réinitialisée.
Domoticz v4.10717 sur Pi³ / Z-Wave / RFXCom

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Répondre