Aller au contenu
lolomail

Script Contrôle des noeuds mort et leur réveil

Recommended Posts

Bonjour,

 

Sur le post du script pour le contrôle du niveau des piles j'ai abordé le sujet nÅ“uds morts pour les détecter et voici un script tip top qui/

- Contrôle les nÅ“uds morts,

- Chercher a les réveiller,

- Envoie des notifications pour avertir

--[[
%% autostart
%% properties
%% globals
--]]

local sourceTrigger = fibaro:getSourceTrigger();
if (sourceTrigger["type"] == "autostart") then
while true do

local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
( (tonumber(os.date("%H%M")) >= tonumber(string.format("%02d%02d", "07", "00")) and tonumber(os.date("%H%M")) <= tonumber(string.format("%02d%02d", "23", "00"))) and (math.floor(os.time()/60)-math.floor(1369026000/60))%2 == 0 )
)
then
    
local i = 1
local TotalDevices = 156 + 1

while i < TotalDevices do

local status = fibaro:getValue(i, 'dead');

if status == "1" then
fibaro:setGlobal('lastDeadNode', i);
-- fibaro:call(30, "pressButton", "6");
    fibaro:call(1, "wakeUpDeadDevice",i);
fibaro:debug("Try to wake up node "..i);
fibaro:call(68, "sendPush", "Try to wake up node "..i);
fibaro:sleep(5*1000);
local status = fibaro:getValue(i, 'dead');
if status == "1" then
    fibaro:debug("Device "..i.." still dead");
fibaro:call(68, "sendPush", "Device "..i.." still dead");
-- fibaro:call(30, "pressButton", "6");
-- fibaro:call(65, "sendDefinedPushNotification", "9");
        -- fibaro:call(2, "sendEmail", "DEAD "..i);
else
-- fibaro:call(30, "pressButton", "7");
fibaro:debug("Device "..i.." fixed");
fibaro:call(68, "sendPush", "Device "..i.." fixed");
end
else end
i = i + 1
end
end

fibaro:sleep(60*1000);
end
else

local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
startSource["type"] == "other"
)
then
fibaro:debug("send notification");
fibaro:call(68, "sendPush", "start check dead node");
local i = 1
local TotalDevices = 156 + 1

while i < TotalDevices do

local status = fibaro:getValue(i, 'dead');

if status == "1" then
fibaro:setGlobal('lastDeadNode', i);
-- fibaro:call(30, "pressButton", "6");
    fibaro:call(1, "wakeUpDeadDevice",i);
fibaro:debug("Try to wake up node "..i);
fibaro:call(68, "sendPush", "Try to wake up node "..i);
fibaro:sleep(5*1000);
local status = fibaro:getValue(i, 'dead');
if status == "1" then
    fibaro:debug("Device "..i.." still dead");
fibaro:call(68, "sendPush", "Device "..i.." still dead");
-- fibaro:call(30, "pressButton", "6");
-- fibaro:call(65, "sendDefinedPushNotification", "9");
        -- fibaro:call(2, "sendEmail", "DEAD "..i);
else
-- fibaro:call(30, "pressButton", "7");
fibaro:debug("Device "..i.." fixed");
fibaro:call(68, "sendPush", "Device "..i.." fixed");
end
else end
i = i + 1
end

end

end

Voici le script,son auteur est Olivier MALE.

Il faut l'adapter pour le N° d'ID pour le push. Son auteur a aussi mis des "--" devant certaines lignes de notifications push et de virtual device, perso j'ai supprimé ces lignes.

 

Le script fonctionne nickel chez moi.

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci de développer le script ( pas le lien ) et de citer l'auteur

Partager ce message


Lien à poster
Partager sur d’autres sites

Comment détecter les nÅ“uds morts... A ma sauce ;) .

 

Le script est paramétrable:

 

debug: permet d'avoir une sortie vers la fenêtre 'debug' du HC2 et d’historiser les messages.

userID: l'id de l'utilisateur souhaitant recevoir la notification par email.

nodes: la liste des nÅ“uds à  surveiller et c'est la toute la différence, attention aux périphériques sur batteries, Danfoss LC, moi je dis ça, je dis rien!

repeatTime: le temps d'attente chaque interrogation.

 

La scène doit être active, avec démarrage automatique.

post-3-0-60959700-1388402291_thumb.png

--[[
%% autostart
%% globals
--]]

-- LUA Script for dead nodes handling V1.0.1
-- Copyright © 2013 Jean-christophe Vermandé

fibaro:debug("HC2 start script at " .. os.date());

-- check script instance count in memory
if (fibaro:countScenes() > 1) then
  fibaro:abort();
  fibaro:debug("Script already running.");
end

-- SETTINGS

-- Debug true or false (output information in HC2 debug window)
local debug = true;
-- User ID (email used to notify)
local userID = 2;
-- List of nodes you want to check
local nodes = {4,6,7,8,10,11,12,16,17,18,19,34,35,36,44,45,46,47,48,52,54,59,351,352,353,354};
-- Interval between polling
local repeatTime = (30*60*1000); -- 30 minutes

-- DO NOT EDIT THE CODE BELOW (except to suit your needs) --

local lookFor = function()
  local id, status, dtLog;
  for i = 1, #nodes do
    id = nodes[i];
    status = fibaro:getValue(id, 'dead');
    dtLog = os.date();
    if status == "1" then
      -- dead node found
      local name = fibaro:getName(id);
      local room = fibaro:getRoomNameByDeviceID(id);
      local message = dtLog .. " [status] device (" .. name .. " ID#" .. id .. " in room [" .. room .. "]) is flagged as dead node." 
      if debug then fibaro:debug(message) end
      -- try to wakeUp device
      fibaro:wakeUpDeadDevice(id);
      -- send mail
      fibaro:call(userID, "sendEmail", "Dead Nodes", message);
    end
  end
end

-- START ENGINE LOOP PROCESS
while true do
  lookFor();
  fibaro:sleep(repeatTime);
end

--[[
v 1.0.1 (06-2013)
	Implement new getRoomName / getRoomNameByDeviceID from 3.552+
v 1.0.0 (01-2013)
	First stable release
--]]

post-3-0-98061600-1388402290_thumb.png

post-3-0-87694500-1388402289_thumb.png

  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

Trop bien tu peux tester que certains modules du coup cela évite d’interroger les vannes danfoss, les sondes de température...

 

Merci, je vais tester :D

Partager ce message


Lien à poster
Partager sur d’autres sites

Question comme je vois que LUA n'a pas de secret pour toi, pourrais-tu me dire comment faire pour faire ouvrir mes volets soit àpartir de 7h soit au lever du soleil si le soleil se lève après 7h?

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonsoir Krikroff,

Merci pour ce script.

Ce code ne reveille cependant pas les noeuds morts ? est-ce exacte?

Ton code me plait bien cependant, car je peux du coup exclure mes Devices sur batterie, comment l'adapter pour réveiller les autres devices ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Je laisse l’intéressé répondre, mais d’après moi son code permet le réveil des nœuds morts :

-- try to wakeUp device
      fibaro:wakeUpDeadDevice(id);

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci moicphil, en effet, je n'avais pas vu.

Du coup, le message mail n'est pas juste alors...

e.g.: Mon Dec 30 23:17:44 2013 [status] device (VMC_Speed_2 ID#20 in room [salle de Bains Rez]) is flagged as dead node.

Krikroff ??!!??

Partager ce message


Lien à poster
Partager sur d’autres sites

Pourquoi le message mail n'est pas juste ?? Le script demande le réveil du nÅ“ud mort et envoi un mail pour prévenir que ce périphérique était en état mort... Le mail ne valide en rien le fait que l'action de réveil est soit valide ou non ;) , pour cela il faut re-tester le nÅ“ud pour voir si il est réveillé, ce que je trouve inutile car pas fiable du tout sachant que le réveil peut être immédiat ou prendre 2 heure.
 

Le but de ce type de script est d'optimiser son installation par détection des problèmes et surtout pas pour pallier définitivement aux nÅ“uds morts qui doivent être éradiqués pour obtenir une installation stable et surtout pérenne. :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Pourquoi le message n'est pas bon ? L'email te renvoi l'Id du nÅ“ud mort, c’est tout, le réveil de celui s'étant executé juste avant.

 

Krikroff, tu me reprend si je me trompe hein?

 

Edit: Bon! on a répondu en même temps!

Partager ce message


Lien à poster
Partager sur d’autres sites

Dans ce sens en effet, c'est juste... (Je suis content quand je vois que le node est de nouveau fonctionnel  ;) )

Il est vrai que j'utilise ce type de code pour réveiller mes noeuds morts car j'en ai quand même pas mal tous les jours.

Oui, vous avez raison, cela ne doit pas être la mesure définitive pour pallier au problème.

Cependant, mon installation est importante et les murs de la maison sont bien épais. Certains devices, si je ne me trompe pas, réclame qu'une connection directe avec le HC2, comme les vannes Danfoss ou les Aeon 4x1. ce qui limite la fonction repeater des autres devices.

Je dois avouer que c'est un peu un casse tête.

J'ai placé mon HC2 au centre de la maison, mais cela ne suffit pas. D'une manière générale, le HC2 réveille t-il par lui même les noeuds morts?

Avez vous ce type de problème? Comment les avez-vous résolue?

Partager ce message


Lien à poster
Partager sur d’autres sites

Je confirme depuis la version 3.5xx le HC2 s'occupe de tout cela, il y a la possibilité de les afficher ou non dans l'interface. Pour la résolution complète des dead nodes attendez la sortie de la V4.xx dans quelques semaines / mois ou installez des wall plugs partout :D

Partager ce message


Lien à poster
Partager sur d’autres sites

Ok, merci pour les infos.

Je n'étais pas très sure de comprendre ce que voulais dire "Ne pas marqué comme mort" Oui/Non. Si ce n'est qu'une question d'affichage...

J'ai bien vu sur le forum Fibaro cette future v4.xx, mais pas trop d'infos en fait.... En avez-vous plus?

Partager ce message


Lien à poster
Partager sur d’autres sites

Je me disais aussi que j'avais activé une option dans le HC2 "wake up dead nodes". Il me semblait bien que le script faisait redondance.

Partager ce message


Lien à poster
Partager sur d’autres sites

hello tout le monde, je reviens àla charge avec ce script.

Serait il possible d'avoir ce type de script avec seulement un récapitulatif journalier des "Dead nodes" plutôt que d'avoir un mail àchaque fois qu'un noeud mort est détecté ?

avec pourquoi pas un classement par pièce ou par étage... ce serait plus facile de cette manière pour comprendre et résoudre les zones mal couvertes par le z-wave.

Merci pour votre support.

Partager ce message


Lien à poster
Partager sur d’autres sites

Le but de ce type de script est d'optimiser son installation par détection des problèmes et surtout pas pour pallier définitivement aux nÅ“uds morts qui doivent être éradiqués pour obtenir une installation stable et surtout pérenne. :)

Au départ avec la HC2 j'avais pas mal de lien mort, c'était très pénible.

Au fil des mises a jour, je n'en ai plus aucun depuis au moins 2 mises a jour.

Et j'ai rien touché !  :lol:

Partager ce message


Lien à poster
Partager sur d’autres sites

bonjour,

la chose très bizarre chez moi, c'est que c'est seulement les deux modules que j'ai qui sont alimentés pas le secteur et qui sont répéteur, que je pers au moins 10 fois par jour.

le Wall Plug et depuis dimanche, le FGRM-222.

le wall plug me sert uniquement pour surveiller le frigidaires comme ici: http://www.planete-domotique.com/blog/2013/07/16/fibaro-wallplug-frigo-etou-congelateur/

Et j'ai pleins de trous dans la courbe de consommation àcause de ces pertes.

Le FGRM-222 fonction quand même, alors........

j'ai mis en place le script Krikroff pour les réveiller, sans trop comprendre pourquoi je les perds.

le paramètre "Ne pas marquer comme mort:" j'ai NON comme réglage, c'est juste une question d'affichage?

Partager ce message


Lien à poster
Partager sur d’autres sites

Ce script doit etre super :-) mais il ne semble pas se lancer toutes les 30 minutes dans l'interface de debug j'ai uniquement cette ligne.

[DEBUG] 13:16:12: HC2 start script at Fri Aug 15 13:16:12 2014

c'est un bon début mais pas de nouvelle ligne toutes les 30 minutes. Faut il rebooter la box ? (j'ai respecté scrupuleusement le "tuto" :-) )

Partager ce message


Lien à poster
Partager sur d’autres sites

Non le debug "start script" n'apparaît que lors de la première exécution, après il reste en mémoire et ce n'est plus le scheduler du HC2 mais bien la scène elle même qui gère la tâche ;)

Il t a un debug si il y a un nœud mort détecté

Partager ce message


Lien à poster
Partager sur d’autres sites

ok alors je vais en tuer un niark niark ;-)

Merci pour l'info

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

J'utilise ce script de Krikroff, dans le debug j'ai bien la notif, d'ailleurs je perds le Wallplug ? Bizarre non ?

Mais je ne recois pas le mail, pourtant j'ai bien mis le bon ID :-(, qu'ai je rate ?

Combien de temps faut il pour que le reveil des noeuds morts soit effectif ?

[DEBUG] 16:55:52: Sat Dec 6 16:55:52 2014 [status] device (WP_Halogene ID#14 in room [Salle à  Manger]) is flagged as dead node.

MErci a tous

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

J'ai piqué (mais pas dans ce topic) un script pour analyser les dead nodes.

Sorry, mais je ne retrouve plus où, alors je post sur dans ce topic qui me paraît très approprié. (je ne peux donc pas remercier les auteurs initiaux)

 

J'ai donc fait une V2.0 du VD avec les changements suivants :

  • affichage dans de détail de la VD des noeuds morts (et plus uniquement par mail)
  • possibilité au départ de la VD de spécifier si on veut être notifié ou pas, sans devoir changer le code
  • affichage d'info en vert dans le bas de l'icône

 

post-1320-0-41400000-1424349684_thumb.png

post-1320-0-50499400-1424349685_thumb.png

DeadNodesAnalysis.V2.0.vfib

Partager ce message


Lien à poster
Partager sur d’autres sites

@jojo : super !!

 

celui de krikroff ne te convenait pas ? l'avantage je trouve, cela permet de choisir quel noeud tu veux surveiller, en faisant attention aux modules sur batterie ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

je t'avoue que je ne l'ai pas regardé.

 

Maintenant, je me souviens, j'ai piqué cela à  sebcbien dans son post d'optimisation du réseau z-wave : http://www.domotique-fibaro.fr/index.php/topic/2879-conseils-pour-analyser-et-am%C3%A9liorer-la-couverture-zwave/

 

Et je le trouve super, car il me permet de réveiller automatiquement les devices qui ne sont pas sur batterie.

J'ai un FGS qui tombe mort systématiquement, mais se réveille sans problème avec ce script.

Effectivement, dans mon script je teste que ce n'est pas un device sur batterie, car le wakeup ne fonctionne pas

Partager ce message


Lien à poster
Partager sur d’autres sites

Voici "ma" version 2.1, il y avait une petite erreur dans l'affichage de la version 2.0.

DeadNodesAnalysis.V2.1.vfib

 

@Pepite,

J'ai regardé plus en détail celui de Krikroff. 

Sans vouloir manquer de respect au grand maître, je préfère le mien :

  • il vérifie d'office tous les devices (et donc je ne dois pas mettre à  jour la liste si j'en ajoute ou retire)
  • je fais le test sur les devices sur batterie : pas d'essai de réveil. Expl : si je retire la pile d'un device sur batterie, parfois il s'affiche comme mort, parfois pas. Je publierai bientôt un petit VD qui permettra de modifier le paramètre d'un device (et donc de le forcer à  dead si je sais que j'en ai retiré les batteries)
  • Je trouve l'affichage du détail sympa

post-1320-0-19483500-1424419282_thumb.png

post-1320-0-76527000-1424419282_thumb.png

post-1320-0-34250200-1424419283_thumb.png

Partager ce message


Lien à poster
Partager sur d’autres sites

×