Nous allons voir dans ce tutorial comment détecter les noeuds morts à l’aide d’un script LUA.
Introduction du « noeud mort »
Pour différentes raisons, vos modules peuvent ne plus retourner leur état. La box Home les considère dans ce cas comme « mort ».
Le status d’un « noeud mort » est affiché par une croix.
La box Home Center 2 de Fibaro gère ce problème en testant tous les noeuds à intervale régulier. Vous pouvez le paramétrer dans l’onglet d’administration.
Principe de la scène
L’objectif de cette scène est de vérifier chaque minute, si chaque module est joignable.
Pour chaque noeud considéré comme mort, le script essaye de le réveiller. Puis il envoie une notification pour informer s’il a réussi à réveiller le noeud ou pas.
Code source
Pour commencer il vous suffit de créer une scène en indiquant qu’elle exécutera un script Lua.
Le script peut être exécuté soit manuellement, soit par défaut toute les minutes.
Voici le source du script :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | --[[ <em id="__mceDel">%% autostart %% properties %% globals --]]</em> 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 |
Télécharger le source de ce script
Utilité de ce script
L’intérêt de ce script est qu’il indique clairement ce qui se passe sur votre réseau domotique. De plus si le script détecte toujours le même module en noeud mort, cela vous indiquera que ce module a peut être un problème. Il y a deux solutions :
- Forcer votre box à refaire le maillage zwave de vos noeuds
- Réinitialiser avec les paramètres usines et de l’inclure une nouvelle fois comme un nouveau module
3 Comments
kornflex
L’utilité de cela est aussi de savoir si votre réseau n’est pas brouillé volontairement pour un éventuel cambriolage.
Si 60% des noeuds indisponibles, alors mettre la sirène par exemple.
Martial VUILLEMIN
Super tuto ! merci.
Effectivement, dans le cas d’une alarme ça sera très utile.