Page 1 sur 1

[2022.1] erreur sur scripts lua

Publié : 10 mars 2022, 14:55
par xavierlp
Bonjour à tous

Suite à mon passage vers 2022.1 certains scripts lua me revoinet des erreurs dans les logs.

2022-03-10 08:44:27.814 Error: EventSystem: in CO2 - Device: [string " ..."]:16: attempt to compare number with nil

L'erreur vient sur la dernière ligne

Code : Tout sélectionner

function verif_niveau_co2(nom_chambre,variable_email,adresse_email)

 if (devicechanged[nom_chambre]) then
      time = os.date("*t")
--        print ('Valeur CO2 '..nom_chambre..' : '..otherdevices[nom_chambre])
        nb_email = uservariables[variable_email]
    
        if (tonumber(otherdevices[nom_chambre]) > 1200 and time.hour >= 9 and time.hour <=23 )   then
        
Le script est de type device, si je le change en time j'ai une autre erreur.

2022-03-10 14:43:00.139 Error: EventSystem: in CO2 - Device: [string "..."]:11: attempt to index a nil value (global 'devicechanged')

L'un de vous connait ce genre de comportement ?

Merci

Re: [2022.1] erreur sur scripts lua

Publié : 10 mars 2022, 15:11
par psubiaco
Êtes-vous sûr que le premier paramètre de la fonction verif_niveau_co2() est un vrai nom de périphérique ? Peut-être que ce n'est pas écrit correctement.
Mettez la ligne suivante comme première instruction de la fonction :
print("nom_chambre="..nom_chambre)
et vérifier le journal

Re: [2022.1] erreur sur scripts lua

Publié : 10 mars 2022, 15:13
par boum
La table devicechanged n'existe que pour les scripts device. L'erreur est normale en time.

A priori, tonumber() renvoie nil, la valeur n'est pas reconnue comme un nombre.

(nom_chambre est sûrement valide vu que c'est une clé dans la table devicechanged)

Modération

Publié : 10 mars 2022, 18:48
par Keros
Sujet déplacé dans la section Scripts

Re: [2022.1] erreur sur scripts lua

Publié : 11 mars 2022, 11:44
par xavierlp
Merci pour tous vos retours.
Si je l'ai posté dans le v2022.1 c'est que ce script fonctionnait très bine depuis les 5 dernières années avec les versions précédentes.

Je remarque que si je supprime le test sur l'heure je n'ai plus d'erreur.
Je remarque aussi que les erreurs sont différentes non pas sur le script en lui meme mais si je change le type du script. A savoir Time ou Device.

En fat si je fais un test sur le time et que le script est device j'ai l'erreur ....

Je continue mes test mais si vous avez des idées...

Bonne journée

Re: [2022.1] erreur sur scripts lua

Publié : 11 mars 2022, 12:37
par Keros
Peut-être que la fonction os.date() a changée. Regarde sur https://www.lua.org/pil/22.1.html pour calculer directement directement l'heure avec %H.

Re: [2022.1] erreur sur scripts lua

Publié : 12 mars 2022, 16:37
par xavierlp
Merci beaucoup pour l'idée.

J'ai revu le code avec cette nouvelle info et j'ai aussi fait un double if plutôt que 1 if avec le and et tout roule.

Bon weekend.

Re: [2022.1] erreur sur scripts lua

Publié : 12 mars 2022, 17:12
par Keros
Le double if ne doit pas changer grand-chose, à part faciliter le débogage qui peut valider les conditions en deux temps.

Maintenant pourquoi cela a fonctionné pendant un 5 ans et ça s'est arrêté avec la mise à jour ? Cause ou coïncidence :?

Tu es débloqué, c'est le principal.