[Résolu] Détecteur panne de courant
Publié : 20 juil. 2015, 14:38
Bonjour à tous,
Je possède entre autre un hub harmony et un Rpi2 avec domoticz et je voulais mettre en place un systéme de notification qui m'indique si il y a coupure de courant lorsque je ne suis pas à la maison, si possible sans rien acheter d'autre (c'est pas que je suis radin mais j'habite dans un DOM ou les colis mettent 3 semaines pour arriver... et ou on ne trouve pas grand chose sur place...)
Alors voilà:
-le RPi est sur un onduleur avec la livebox
-le hub n'est pas sur onduleur (inutile vu qu'en cas de coupure la télé, amplis... ne fonctionnent plus)
Je me suis inspiré d'un script qui vérifie la présence d'un téléphone en le pingant régulièrement: http://blog.alexandredubois.com/2014/12 ... telephone/
Je l'ai modifié pour pinger mon hub et ça marche: mon dummy switch est sur on lorsque mon hub harmony est alimenté, et il passe à off lorsque le hub n'est plus alimenté. Voici le code:
Bien sûr ce script ne permet pas d'être sûr qu'il y a panne de courant: ça peut être une panne de livebox ou une panne du hub...etc. Mais c'est mieux que rien, et je peux voir ce qui se passe chez moi avec ma webcam branchée aussi sur le Rpi.
OU EST LE PROBLEME ALORS ?
Il s'agit des notifications:
- lorsque mon dummy switch "hub" est sur off, il m'envoie un mail "connectivité hub perdue"
- quand il est sur on, il m'envoie un mail aussi "connectivité rétablie"
J'ai juste utilisé le bouton "notifications" du switch.
Le problème est que, comme le hub est pingé toutes les 5 minutes, une action "on" est envoyé au switch "hub" toutes les 5 minutes et donc... je vous laisse deviner... lorsqu'il y a du courant chez moi je reçois un mail toutes les 5 minutes lol !
Je ne sais pas comment résoudre ce problème
Je voudrais que la notification fonctionne uniquement si le switch "hub" est passé de OFF à ON et non pas s'il était déjà sur ON.
Je ne peux pas jouer avec les intervalles de notifications: si je coche "ignore interval", je reçois le mail toutes les 5 minutes; si je décoche et que je règle un intervalle plus grand dans les paramètres de domoticz, je risque de ne plus être averti à temps si le courant est revenu...
Ces notifications sont importantes pour moi car les coupures peuvent être très longues jusqu'à épuisement de l'onduleur. Je sais combien de temps l'onduleur peut tenir donc ça me permettrait d'éteindre proprement le Rpi à distance si la coupure est trop longue.
Pouvez-vous m'aider ?
Je possède entre autre un hub harmony et un Rpi2 avec domoticz et je voulais mettre en place un systéme de notification qui m'indique si il y a coupure de courant lorsque je ne suis pas à la maison, si possible sans rien acheter d'autre (c'est pas que je suis radin mais j'habite dans un DOM ou les colis mettent 3 semaines pour arriver... et ou on ne trouve pas grand chose sur place...)
Alors voilà:
-le RPi est sur un onduleur avec la livebox
-le hub n'est pas sur onduleur (inutile vu qu'en cas de coupure la télé, amplis... ne fonctionnent plus)
Je me suis inspiré d'un script qui vérifie la présence d'un téléphone en le pingant régulièrement: http://blog.alexandredubois.com/2014/12 ... telephone/
Je l'ai modifié pour pinger mon hub et ça marche: mon dummy switch est sur on lorsque mon hub harmony est alimenté, et il passe à off lorsque le hub n'est plus alimenté. Voici le code:
Code : Tout sélectionner
-- titre du fichier: script_time_hub.lua
-- Ce script vérifie la présence du hub sur le réseau.
-- La vérification est effectuée une fois par minute tant que le hub n'est à portée,
-- puis une fois toute les 5 minutes quand le hub est connecté.
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 le hub n'est pas détecté ou qu'il est présent depuis plus de 5 minutes (300 secondes),
--alors on vérifie à nouveau sa présence
if (otherdevices['hub']=='Off' or (otherdevices['hub']=='On' and timedifference(otherdevices_lastupdate['hub']) > 300)) then
ping_success_hub=os.execute('ping -c1 192.168.1.34')
if ping_success_hub then
commandArray['hub']='On'
else
if otherdevices['hub']=='On' then --On ne passe l'interrupteur virtuel à Off que s'il est sur On.
commandArray['hub']='Off'
end
end
end
return commandArray
OU EST LE PROBLEME ALORS ?
Il s'agit des notifications:
- lorsque mon dummy switch "hub" est sur off, il m'envoie un mail "connectivité hub perdue"
- quand il est sur on, il m'envoie un mail aussi "connectivité rétablie"
J'ai juste utilisé le bouton "notifications" du switch.
Le problème est que, comme le hub est pingé toutes les 5 minutes, une action "on" est envoyé au switch "hub" toutes les 5 minutes et donc... je vous laisse deviner... lorsqu'il y a du courant chez moi je reçois un mail toutes les 5 minutes lol !
Je ne sais pas comment résoudre ce problème
Je voudrais que la notification fonctionne uniquement si le switch "hub" est passé de OFF à ON et non pas s'il était déjà sur ON.
Je ne peux pas jouer avec les intervalles de notifications: si je coche "ignore interval", je reçois le mail toutes les 5 minutes; si je décoche et que je règle un intervalle plus grand dans les paramètres de domoticz, je risque de ne plus être averti à temps si le courant est revenu...
Ces notifications sont importantes pour moi car les coupures peuvent être très longues jusqu'à épuisement de l'onduleur. Je sais combien de temps l'onduleur peut tenir donc ça me permettrait d'éteindre proprement le Rpi à distance si la coupure est trop longue.
Pouvez-vous m'aider ?