lua: Comparaison temperature avec variable utilisateur

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 <\>.
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

Re: lua: Comparaison temperature avec variable utilisateur

Message par boum »

vil1driver a écrit : 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..
Au temps pour moi. Oui ça marche. Et c'est lisible. Et on ne cherche pas à optimiser l'exécution au maximum :oops:
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
morninggoal
Messages : 33
Inscription : 06 sept. 2019, 12:13

Re: lua: Comparaison temperature avec variable utilisateur

Message par morninggoal »

ma variable SMSenvoye est bien à 0 (j'ai rajouté le print). Quant a la declaration de l'heure elle fonctionne dans d'autres scripts (merci Vil1driver!). Le problème est surement sur la comparaison. Voici le code maintenant et pas d'evolution, je ne vais toujours pas jusqu'au print ('*******************'):

Code : Tout sélectionner

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


commandArray = {}

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


if heure_actuelle < '20:00' then
    if tonumber(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
lmet
Messages : 252
Inscription : 30 juin 2017, 18:16
Localisation : Val d'Oise
Contact :

Re: lua: Comparaison temperature avec variable utilisateur

Message par lmet »

Salut,
Manque une ")" c'est le genre d'erreur que l'on voit tout de suite en utilisant l'éditeur intégré.
img_003.jpg
img_003.jpg (42.87 Kio) Consulté 3579 fois
Domoticz : V4.10717
Zigate : V4.11230 plugin:4.5.4 firmware:031a
Mon petit blog domotique
morninggoal
Messages : 33
Inscription : 06 sept. 2019, 12:13

Re: lua: Comparaison temperature avec variable utilisateur

Message par morninggoal »

J'utilise l'editeur integré, il ne manque pas de parenthese si tu prends tte la ligne..
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: lua: Comparaison temperature avec variable utilisateur

Message par vil1driver »

Vous avez raison tous les 2 ;)
Le nombre est bon mais pas les positions

Dans ta ligne, le tonumber englobe tout car tu fermes sa parenthèse à la toute fin.
Ce n'est pas correcte.

Tu es à une ) de la réussite ;)
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
lmet
Messages : 252
Inscription : 30 juin 2017, 18:16
Localisation : Val d'Oise
Contact :

Re: lua: Comparaison temperature avec variable utilisateur

Message par lmet »

Oui il y a le compte en termes de parenthèses mais :
if tonumber(otherdevices_temperature['Temperature_etage'] > tonumber(uservariables['TempMax']) and uservariables['SMSenvoye'] == '0')
Tu fais un tonumber des trois conditions ... c'est tout.
Je verrais plutôt cela :
if tonumber(otherdevices_temperature['Temperature_etage']) > tonumber(uservariables['TempMax']) and uservariables['SMSenvoye'] == '0'
En fermant la parenthèse après le premier tonumber au lieu à la fin.
Domoticz : V4.10717
Zigate : V4.11230 plugin:4.5.4 firmware:031a
Mon petit blog domotique
morninggoal
Messages : 33
Inscription : 06 sept. 2019, 12:13

Re: lua: Comparaison temperature avec variable utilisateur

Message par morninggoal »

merci pour toute vos explications... mais ca ne suffit pas... :x

toujours rien dans les logs
Pièces jointes
Capture.PNG
Capture.PNG (38.91 Kio) Consulté 3552 fois
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: lua: Comparaison temperature avec variable utilisateur

Message par vil1driver »

Essai d'ajouter à tout hasard une ( juste après if et une ) juste avant then, pour chaqun des tests.

Sinon tu as bien choisis Time comme type de script ?
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

Re: lua: Comparaison temperature avec variable utilisateur

Message par boum »

Dans ces cas-là, faut afficher exactement tes tests pour voir jusqu'où le script arrive :

Code : Tout sélectionner

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

commandArray = {}

print ('Test heure = ' ..tostring(heure_actuelle < '20:00'))
if (heure_actuelle < '20:00') then
print ('Test temp = ' ..tostring((otherdevices_temperature['Temperature_etage'] > tonumber(uservariables['TempMax'])) ) )
print ('Test sms = ' ..tostring(uservariables['SMSenvoye'] == '0') )
print ('Test global = ' ..tostring((otherdevices_temperature['Temperature_etage'] > tonumber(uservariables['TempMax'])) and (uservariables['SMSenvoye'] == '0')) ) -- pas essentiel normalement
    if (tonumber(otherdevices_temperature['Temperature_etage']) > tonumber(uservariables['TempMax']) and uservariables['SMSenvoye'] == '0') then
         
         print('******** BINGO ********')
         commandArray['SendNotification']='Temperature élévée: fermeture volets 50% !'
         commandArray['Variable:SMSenvoye'] = '1'
     end
 end
 
return commandArray
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: lua: Comparaison temperature avec variable utilisateur

Message par vil1driver »

Si ce que Boum a écrit ne fonctionne pas et que le type de script est bien réglé sur TIME

Personnellement je tenterais de l'écrire dans un fichier (à l'ancienne mode ;) ma préférée )
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
Répondre