[2022.1] erreur sur scripts lua

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 <\>.
xavierlp
Messages : 220
Inscription : 01 nov. 2016, 15:28

[2022.1] erreur sur scripts lua

Message 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
psubiaco
Messages : 55
Inscription : 21 mars 2021, 21:19
Localisation : Pieve di Soligo, Italy
Contact :

Re: [2022.1] erreur sur scripts lua

Message 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
Paolo Subiaco

J'utilise des modules DomBus, conçus pour la domotique Domoticz. Video
Facile à interconnecter (bus 4 fils RS485), très fiable, très faible consommation, no pollution RF!
Facebook - Youtube
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

Re: [2022.1] erreur sur scripts lua

Message 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)
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Modération

Message par Keros »

Sujet déplacé dans la section Scripts
xavierlp
Messages : 220
Inscription : 01 nov. 2016, 15:28

Re: [2022.1] erreur sur scripts lua

Message 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
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: [2022.1] erreur sur scripts lua

Message 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.
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
xavierlp
Messages : 220
Inscription : 01 nov. 2016, 15:28

Re: [2022.1] erreur sur scripts lua

Message 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.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: [2022.1] erreur sur scripts lua

Message 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.
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
Répondre