Erreur lua attempt to index

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 <\>.
Tom23
Messages : 7
Inscription : 29 avr. 2016, 19:45

Erreur lua attempt to index

Message par Tom23 »

Bonjour,

J'utilise domoticz depuis quelques mois déjà et j'ai voulu commencer à regarder les scripts en lua.
Plutôt que de me lancer comme ça, j'ai voulu mettre en oeuvre un script permettant d' changer l'état d'un switch en fonction du résultat d'un ping.

Voici le script:

Code : Tout sélectionner

--Initialise la commande de retour finale
commandArray={}
--Mode deboggage (affichage des messages)
debug=true
--Prefixe pour les sorties de log
prefixe="(PING) "
--Tableau des périphériques à "pinguer"
-- Key = adresse ip à pinguer
-- Value = périphérique virtuel à switcher
local ping={}
ping['192.168.1.23']='smartphone'
ping['192.168.1.20']='NAS'
ping['192.168.1.39']='camera'
--pour chaque entree du tableau
for ip, switch in pairs(ping) do
 --Le Ping ! : -c1 = Un seul ping , -w3 délai de 3 secondes d'attente de réponse
 ping_success=os.execute('ping -c1 -w3 '..ip)
 --Si le ping à répondu
 if ping_success then
 if(debug==true)then
 print(prefixe.."ping success "..switch)
 end
 --si le switch etait sur off on l'allume
 if(otherdevices[switch]=='Off') then
 commandArray[switch]='On'
 end
 else
 --Si pas de réponse
 if(debug==true)then
 print(prefixe.."ping fail "..switch)
 end
 --si le switch etait sur oN on l'eteind
 if(otherdevices[switch]=='On') then
 commandArray[switch]='Off'
 end
 end
end
Quand je lance je sript manuellement, j'ai une erreur:

Code : Tout sélectionner

lua: ./script_time_presence.lua:24: attempt to index global 'otherdevices' (a nil value)
Je ne maitrise pas le lua, mais si vous pouviez m'expliquer d'où vient l'erreur que je la corrige, ce serait sympa.
Merci d'avance.
Dernière modification par Tom23 le 30 avr. 2016, 07:27, modifié 1 fois.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Erreur lua attempt to index

Message par vil1driver »

Salut,

Tu ne peux tout simplement pas tester manuellement comme cela..

place le script dans le dossier lua et domoticz se chargera de le lancer..

Tu suivras ce qui se passe dans la page logs..
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
Tom23
Messages : 7
Inscription : 29 avr. 2016, 19:45

Re: Erreur lua attempt to index

Message par Tom23 »

Merci de ta réponse rapide.
Effectivement en faisant comme ça j'ai bien un retour dans les logs qui affiche les appareils en ligne et ceux qui ne le sont pas.

Par contre, le switch que j'ai mis en place qui s'appelle tom ne réagit pas du tout.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Erreur lua attempt to index

Message par vil1driver »

Tu as modifié le script du coups car je ne vois pas de tom dedans ?
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
Tom23
Messages : 7
Inscription : 29 avr. 2016, 19:45

Re: Erreur lua attempt to index

Message par Tom23 »

Oui j'ai bien un tom dans le tableau. A la place de smartphone. J'ai copié le script ici depuis l'original.
D'ailleurs les logs m'indique que le ping vers tom fonctionne.

Envoyé de mon LG-D855 en utilisant Tapatalk
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Erreur lua attempt to index

Message par vil1driver »

Pas d'autre device (sonde température ou autre..) nommé tom ?
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
Pyrrhus
Messages : 130
Inscription : 11 juin 2015, 14:57

Re: Erreur lua attempt to index

Message par Pyrrhus »

J'avais écris un nouveau script_time_ping.lua il y a quelques jours, et comme toi mon interrupteur correspondant ne réagissait pas. Un redémarrage du raspberry a réglé le problème. Mais j'aimerais bien comprendre aussi ce qu'il s'est passé. Trop de scripts lua ? de .sh ? de cron ? trop d'interrupteurs ?
A voir...
Tom23
Messages : 7
Inscription : 29 avr. 2016, 19:45

Re: Erreur lua attempt to index

Message par Tom23 »

Je n'ai aucun autre actionneur appelé tom.

Mais peut être que domoticz a maintenant besoin de les prendre en compte.
Je vois dans l'onglet "Status" des logs une ligne quotidienne qui indique "EventSystem: reset all events...".
Je vais laisser passer la nuit pour voir si ça joue.

Perso je n'ai aucun autre script et pas encore de tâche cron.
Tom23
Messages : 7
Inscription : 29 avr. 2016, 19:45

Re: Erreur lua attempt to index

Message par Tom23 »

La nuit s'est passée sans changement.
Sur les conseils de Pyrrhus j'ai redémarré la machine et le script fonctionne correctement.
Merci de vos réponses.

Envoyé de mon LG-D855 en utilisant Tapatalk
Répondre