Script de surveillance de capteurs

8 septembre 2018

Un post rapide pour partager un script qui permet de signaler quand un capteur ne répond plus après un certain temps.

Pratique quand on a pas tout le temps le nez devant Domoticz et qu’une pile est arrivée en fin de vie sur un capteur sans fil.

Il faut ajouter les capteurs à surveiller à partir de la ligne 16 et rajouter un ligne par capteur avec la durée en seconde :

-- otherwise sends a notification to tell us to go check the lost one.
-- https://www.domoticz.com/forum/viewtopic.php?f=15&t=9711&p=112074#p112074


-- 1 hour = 3600 seconds
-- 1 day = 86400
-- 7 days = 604800

index=1
now = os.time()

print("[Check_Sensor_Battery] Checking for last sensor updates")


local tableDeviceToCheck = {    -- timeout for each  device, in seconde.
  ["Congélateur"]=172800, -- 2 days
  ["Salle de bain"]=172800, -- 2 days
  ["Cuisine"]=172800, -- 2 days
  ["Frigo"]=172800, -- 2 days
}

commandArray={}

date = os.date("*t")
if date.hour==18 and date.min==30 then

    for deviceName, deviceTimeOut in pairs(tableDeviceToCheck) do
   
        s = otherdevices_lastupdate[deviceName]
        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)
        lastAlive = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
        
        tijd = now - lastAlive
        print(deviceName .." "..tijd.. ' secondes sans réponse, valeur limite ='..deviceTimeOut)
   
        -- If not seen since timeout, send an email
        if (lastAlive + deviceTimeOut) < now then
            commandArray[index]={['SendNotification']='Le Device '..deviceName..' ne répond plus depuis '..s..' secondes. Batterie vide?'}
            print("[Check_Sensor_Battery] Sending alert for device "..deviceName..' not seen for '..s..' seconds. Batery maybe down.')
            index = index + 1
        end
    end
end
return commandArray

5 commentaires

  • Seb 20 janvier 2019 à21 h 59 min

    Bonjour
    Je viens d’installer le script mais c’est normal que le script remplit le log toutes les 5 à 10 seccondes ?
    Status: LUA: [Check_Sensor_Battery] Checking for last sensor updates
    Ce n’est pas censé se déclencher seulement une fois par jour ?

    • simon 21 janvier 2019 à10 h 57 min

      En fait tout les scripts tournent tous les temps, seul la condition spécifiée ligne 25 fait qu’il rentre dans le check des batteries.
      Si tu ne veux plus voir l’affiche de « Status: LUA: [Check_Sensor_Battery] Checking for last sensor updates »
      il te faut commenter ou supprimer la ligne 12:
      print(« [Check_Sensor_Battery] Checking for last sensor updates »)

      Ou la déplacer après la ligne 25 justement pour qu’elle ne soit affichée que quand le script tourne réellement.

  • pim 3 mars 2019 à20 h 48 min

    Salut
    J’ai installé le script et aujourd’hui j’ai un sensor qui ne répondait plus. J’ai reçu alors une notification par minute jusqu’à ce que je change la pile. Est ce qu’on ne pourrait pas modifier le script pour avoir une seule et unique notification ?
    Merci

    • simon 4 mars 2019 à11 h 23 min

      Normalement le script se lance toutes les minutes mais ne rentre dans la première boucles que si la première condition de l’heure est rempli :
      if date.hour==18 and date.min==30 then

      Ici à 18h30 et ne doit envoyer les notifications qu’à ce moment là aussi.
      Peux-tu me copier coller ton script ?

  • Puzzle 3D 18 avril 2019 à9 h 23 min

    Bonjour,
    Script parfait pur combler ce manque d’info quand un capteur ne répond plus !
    Ça sauve la mise et ce devrait être natif sur domoticz à mon avis.

Répondre à Puzzle 3D Annuler la réponse

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.