Page 1 sur 1

Ajouter un compte à rebours pour un Ping

Publié : 15 avr. 2016, 15:21
par Pyrrhus
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:

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
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

Code : Tout sélectionner

ping -w 120 192.168.1.23
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

Re: Ajouter un compte à rebours pour un Ping

Publié : 15 avr. 2016, 17:40
par vil1driver
Salut,

J'ai vu passer ici un script qui ne va pas mettre le dispositif à Off au premier échec..

C'est certainement ce qu'il te faut..


D'ailleurs tu peux également tenter le matériel Système Alive Checker qui fait aussi cela..

Re: Ajouter un compte à rebours pour un Ping

Publié : 15 avr. 2016, 19:23
par Pyrrhus
Salut !
Tu parles de ce sujet ? viewtopic.php?f=10&t=1803
Effectivement c'est la solution, même si je n'aime pas trop l'idée de rajouter un énième dummy switch...
Quant au system alive checker, les retours que j'ai pu lire sur le net parlent d'un gros manque de fiabilité.
Je vais choisir l'option de rajoutter une "pingbox" et modifier mon lua.
Merci de m'avoir aidé !

Re: Ajouter un compte à rebours pour un Ping

Publié : 15 avr. 2016, 19:45
par vil1driver

Re: Ajouter un compte à rebours pour un Ping

Publié : 15 avr. 2016, 21:43
par Pyrrhus
Merci, voilà de quoi faire mon bonheur, en plus ça me permettra de diminué le nombre de mes lua de ping :D