Ajouter un compte à rebours pour un Ping

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 <\>.
Pyrrhus
Messages : 130
Inscription : 11 juin 2015, 14:57

Ajouter un compte à rebours pour un Ping

Message 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
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Ajouter un compte à rebours pour un Ping

Message 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..
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: Ajouter un compte à rebours pour un Ping

Message 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é !
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Ajouter un compte à rebours pour un Ping

Message par vil1driver »

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: Ajouter un compte à rebours pour un Ping

Message par Pyrrhus »

Merci, voilà de quoi faire mon bonheur, en plus ça me permettra de diminué le nombre de mes lua de ping :D
Répondre