Ajouter un compte à rebours pour un Ping
Publié : 15 avr. 2016, 15:21
Bonjour,
j'ai mis en place un capteur de coupure de courant dont le principe est simple: domoticz ping un equipement non connecté à un onduleur (une chromecast par exemple, inutile si la tv marche pas). C'est un script_time_chromecast.lua:
Evidemment il faut creer un interrupteur " chromecast " pour avoir le capteur de courant. Si il est sur On il y a du courant, si il est sur off il y a coupure.
Ca marche presque bien: tant que je ne fais pas de maintenance, je n'ai jamais de faux positif (ou de faux negatif). A chaque coupure je suis averti par email par domoticz. Et lorsque le courant revient aussi.
Le problème est lorsque je fais de la maintenance: si je redémarre ma livebox, le ping échoue, donc domoticz interprete ça comme une coupure de courant. Il faudrait un ping avec un compte à rebours de 2 minutes (le temps que la livebox ait redémarrer).
Du genre
Option 1: modifier mon lua avec le code ci-dessus
Mais comment faire alors que le script_time se relance toutes les minutes (il me faut 2 minutes) ???
Option 2: oublier le lua et écrire un bash executé par un cron toutes les 2 minutes. Mais quelquechose m'inquiète:
Est-ce que ça ne va pas monopoliser mon terminal et bloquer tous les autres scripts ?
Est-ce sans danger de pinger aussi longuement et continuellement la chromecast (ou tout autre appareil reseau ) ?
Option 3: acheter un onduleur USB. Dans mon trou perdu, ya des onduleurs... chinois... installé "nut" sur mon rasp... 1 semaine à essayer... ne veut rien savoir... Et puis ça m'interesse vraiment de savoir si un ping avec un compte à rebours de 2 minutes est sans danger pour le systeme, et si c'est possible en lua.
Merci de votre aide
j'ai mis en place un capteur de coupure de courant dont le principe est simple: domoticz ping un equipement non connecté à un onduleur (une chromecast par exemple, inutile si la tv marche pas). C'est un script_time_chromecast.lua:
Code : Tout sélectionner
commandArray = {}
--Cette fonction calcule la différence de temps (en secondes) entre maintenant
--et la date passée en paramètre.
function timedifference (s)
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)
t1 = os.time()
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
difference = os.difftime (t1, t2)
return difference
end
--Si la chromecast n'est pas détecté ou qu'elle est présente depuis plus de 5 minutes (300 secondes),
--alors on vérifie à nouveau sa présence
if (otherdevices['chromecast']=='Off' or (otherdevices['chromecast']=='On' and timedifference(otherdevices_lastupdate['chromecast']) > 300)) then
ping_success_chromecast=os.execute('ping -c1 192.168.1.23')
if ping_success_chromecast then -- si le ping reussi
if otherdevices['chromecast']=='Off' then -- si le bouton est a off
commandArray['chromecast']='On' -- on le passe a on
end
else -- si le ping echoue
if otherdevices['chromecast']=='On' then --On ne passe l'interrupteur virtuel à Off que s'il est sur On.
commandArray['chromecast']='Off'
end
end
end
return commandArray
Ca marche presque bien: tant que je ne fais pas de maintenance, je n'ai jamais de faux positif (ou de faux negatif). A chaque coupure je suis averti par email par domoticz. Et lorsque le courant revient aussi.
Le problème est lorsque je fais de la maintenance: si je redémarre ma livebox, le ping échoue, donc domoticz interprete ça comme une coupure de courant. Il faudrait un ping avec un compte à rebours de 2 minutes (le temps que la livebox ait redémarrer).
Du genre
Code : Tout sélectionner
ping -w 120 192.168.1.23Mais comment faire alors que le script_time se relance toutes les minutes (il me faut 2 minutes) ???
Option 2: oublier le lua et écrire un bash executé par un cron toutes les 2 minutes. Mais quelquechose m'inquiète:
Est-ce que ça ne va pas monopoliser mon terminal et bloquer tous les autres scripts ?
Est-ce sans danger de pinger aussi longuement et continuellement la chromecast (ou tout autre appareil reseau ) ?
Option 3: acheter un onduleur USB. Dans mon trou perdu, ya des onduleurs... chinois... installé "nut" sur mon rasp... 1 semaine à essayer... ne veut rien savoir... Et puis ça m'interesse vraiment de savoir si un ping avec un compte à rebours de 2 minutes est sans danger pour le systeme, et si c'est possible en lua.
Merci de votre aide