Page 1 sur 1

Erreur lua attempt to index

Publié : 29 avr. 2016, 19:58
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.

Re: Erreur lua attempt to index

Publié : 29 avr. 2016, 20:15
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..

Re: Erreur lua attempt to index

Publié : 29 avr. 2016, 20:28
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.

Re: Erreur lua attempt to index

Publié : 29 avr. 2016, 21:02
par vil1driver
Tu as modifié le script du coups car je ne vois pas de tom dedans ?

Re: Erreur lua attempt to index

Publié : 29 avr. 2016, 21:20
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

Re: Erreur lua attempt to index

Publié : 29 avr. 2016, 21:33
par vil1driver
Pas d'autre device (sonde température ou autre..) nommé tom ?

Re: Erreur lua attempt to index

Publié : 29 avr. 2016, 21:42
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...

Re: Erreur lua attempt to index

Publié : 29 avr. 2016, 22:31
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.

Re: Erreur lua attempt to index

Publié : 30 avr. 2016, 07:21
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