Lua: Comment détecter qu'un device n'est plus accessible ?

Posez ici vos questions d'utilisation, de configuration de Domoticz, de bugs, de conseils sur le logiciel lui même dans son utilisation et son paramètrage Concernant le Raspberry ou les scripts de toute nature des forums spécifiques sont ouverts
PhilTass2Montaig
Messages : 4
Enregistré le : 22 août 2019, 10:28

Lua: Comment détecter qu'un device n'est plus accessible ?

Message par PhilTass2Montaig » 22 août 2019, 11:09

Bonjour,
J'ai une installation avec domoticz qui fonctionne (bien) depuis plusieurs mois.
Je remarque qu'il arrive que certains modules (interrupteurs ou capteurs) ne soit plus accessible, souvent temporairement. Ca peut être gênant car j'ai des scripts qui déclenchent par exemple un arrosage si un capteur d'humidité renvoi une certaine valeur. Il arrive que l'arrosage ne se declenche pas comme il faudrait parce que soit le capteur ne répond plus et la valeur lue est ancienne et fausse, soit l'interrupteur de l'arrosage ne répond pas et rien ne se passe. J'ai tenté de tester la disponibilité du device avec lastupdate, mais, comme son nom l'indique, ça rend le timestamp de la dernière mise à jour et non le moment du dernier contact, tel qu'il est affiché dans Domoticz (champ last seen).
image001.png
image001.png (5.23 Kio) Vu 293 fois
Y a t il un moyen de récupérer la valeur de "last seen" en LUA pour un device donné ?
Merci d'avance pour votre aide.

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Wolfen38
Messages : 870
Enregistré le : 19 oct. 2017, 14:49

Re: Lua: Comment détecter qu'un device n'est plus accessible ?

Message par Wolfen38 » 22 août 2019, 11:12

Même problème, donc ta question m'intéresse beaucoup, en espérant que quelqu'un ait la solution.

Wolfen38
Messages : 870
Enregistré le : 19 oct. 2017, 14:49

Re: Lua: Comment détecter qu'un device n'est plus accessible ?

Message par Wolfen38 » 22 août 2019, 11:23

Peut être par la : viewtopic.php?t=864

adv
Messages : 241
Enregistré le : 02 févr. 2016, 13:54
Contact :

Re: Lua: Comment détecter qu'un device n'est plus accessible ?

Message par adv » 22 août 2019, 11:50

Je n'ai pas lu en détail le topic que vous avez mis dans le post précédent mais voici mon script trouvé probablement sur ce forum ou sur un blog ;)

Il me permet de recevoir un mail tous les 1/4 d'heure quand une sonde ne se mets pas à jour:

Code : Tout sélectionner

commandArray = {}
 
--recupere les minutes
time=os.time()
minutes=tonumber(os.date('%M',time))
hours=tonumber(os.date('%H',time))
 
--print('Lancement du check a '..hours..'h'..minutes) --commenté pour limiter les logs 

if( (minutes==15) or (minutes==0) or (minutes==30) or (minutes==45) ) then
 
    local sonde={}
    --temperatures
    --sonde['0']='Congelateur'
    sonde['1']='Exterieur'
    sonde['2']='EDF'
    sonde['3']='Salon'
    sonde['4']='Uptime Sonoff Porte'
    sonde['5']='Courant Clim'

    --delai au dela duquel on alerte en secondes
    local alerte=1800
 
    local mail=' Alerte sur sonde '
    local trigger=0
 
       --Parcours le Tableau des sondes
   for key, valeur in pairs(sonde) do
 
                        s = otherdevices_lastupdate[valeur]
   -- returns a date time like 2013-07-11 17:23:12
                        t1 = os.time()
   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)
 
   commandArray = {}
 
   t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
   difference = (os.difftime (t1, t2))
 
              
      --print ('CHECK : '..valeur.. ' -> ' ..otherdevices[valeur].. ' age = '..difference..' secondes')
              
             if(difference > alerte)then
                mail=mail..'Age de '..valeur .. ' -> '..difference..' secondes.'
                trigger=trigger+1 
             end
       
   end
 if(trigger>0)then
    commandArray['SendEmail']='Domoticz - Alerte age sonde #<b>Attention aux sondes suivantes:</b>'
 
..mail..' #mon adresse mail@gmail.com'
        end
 
 
end
 
return commandArray
A adapter selon vos besoin :)
Raspberry pi 3 - Domoticz beta | Piface v.2 + Téléinfo + RFXtrx433E + Aeon Z-Wave+GEN5
sondes Oregon | motorisations Somfy Yslo Flex 2 RTS | prises chacon | Fibaro FGD-212, FGSD002, FGFS101 | Sonoff easyESP, Tasmota, Espurna | Sherlock S2 | ParadoxMG5050

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


PhilTass2Montaig
Messages : 4
Enregistré le : 22 août 2019, 10:28

Re: Lua: Comment détecter qu'un device n'est plus accessible ?

Message par PhilTass2Montaig » 22 août 2019, 15:45

adv a écrit :
22 août 2019, 11:50
Je n'ai pas lu en détail le topic que vous avez mis dans le post précédent mais voici mon script trouvé probablement sur ce forum ou sur un blog ;)

Il me permet de recevoir un mail tous les 1/4 d'heure quand une sonde ne se mets pas à jour:

Code : Tout sélectionner

commandArray = {}
 
--recupere les minutes
time=os.time()
minutes=tonumber(os.date('%M',time))
hours=tonumber(os.date('%H',time))
 
--print('Lancement du check a '..hours..'h'..minutes) --commenté pour limiter les logs 

if( (minutes==15) or (minutes==0) or (minutes==30) or (minutes==45) ) then
 
    local sonde={}
    --temperatures
    --sonde['0']='Congelateur'
    sonde['1']='Exterieur'
    sonde['2']='EDF'
    sonde['3']='Salon'
    sonde['4']='Uptime Sonoff Porte'
    sonde['5']='Courant Clim'

    --delai au dela duquel on alerte en secondes
    local alerte=1800
 
    local mail=' Alerte sur sonde '
    local trigger=0
 
       --Parcours le Tableau des sondes
   for key, valeur in pairs(sonde) do
 
                        s = otherdevices_lastupdate[valeur]
   -- returns a date time like 2013-07-11 17:23:12
                        t1 = os.time()
   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)
 
   commandArray = {}
 
   t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
   difference = (os.difftime (t1, t2))
 
              
      --print ('CHECK : '..valeur.. ' -> ' ..otherdevices[valeur].. ' age = '..difference..' secondes')
              
             if(difference > alerte)then
                mail=mail..'Age de '..valeur .. ' -> '..difference..' secondes.'
                trigger=trigger+1 
             end
       
   end
 if(trigger>0)then
    commandArray['SendEmail']='Domoticz - Alerte age sonde #<b>Attention aux sondes suivantes:</b>'
 
..mail..' #mon adresse mail@gmail.com'
        end
 
 
end
 
return commandArray
A adapter selon vos besoin :)
Merci, mais otherdevices.lastupdate ne rend la valeur de last seen qu'au moment d'un changement de valeur. J'utilise déjà, mais uniquement sur les capteurs dont les mises à jour sont fréquentes.

Datawolf
Messages : 179
Enregistré le : 03 avr. 2018, 13:51

Re: Lua: Comment détecter qu'un device n'est plus accessible ?

Message par Datawolf » 22 août 2019, 16:05

Salut,
Voici qui pourrait peut-être t'aider: https://www.domoticz.com/forum/viewtopi ... 644#p60040
@+
Datawolf

PhilTass2Montaig
Messages : 4
Enregistré le : 22 août 2019, 10:28

Re: Lua: Comment détecter qu'un device n'est plus accessible ?

Message par PhilTass2Montaig » 22 août 2019, 16:35

J'ai testé l'API Json. Après vérifications minutieuses, la variable lastupdate retourne bien la valeur affichée dans last seen. Last seen porte donc mal son nom puisqu'il s'agit bien de la dernière mise à jour soit, pour un interrupteur, la dernière activation (hier soir quand j'ai éteint les lumières...).
En revanche, le json retourne un status = "OK" qui n'est peut être pas ok si le device est off line. Mais ça peut aussi être le status de l'API.
A tester quand j'aurais un device off line, là j'en ai pas... jamais content le mec ... :lol:

Wolfen38
Messages : 870
Enregistré le : 19 oct. 2017, 14:49

Re: Lua: Comment détecter qu'un device n'est plus accessible ?

Message par Wolfen38 » 22 août 2019, 16:56

Bon, ca ne fonctionne pas chez moi, enfin pas comme je veux.

Il regarde quand le device a été utilisé j'ai l'impression, pas quand à eu lieu la dernière reconnaissance par dz....

denis_brasseur
Messages : 193
Enregistré le : 24 déc. 2018, 17:05
Localisation : (26)

Re: Lua: Comment détecter qu'un device n'est plus accessible ?

Message par denis_brasseur » 22 août 2019, 19:07

J'utilise ceci, [DZVents] Script de notifications ultime (mais pas que) de papoo :

[DZVents] Script de notifications ultime (mais pas que)
Example 7 : be notified if device is out since x minutes
with notifications frequency in minutes and quiet hours notification
Exemple 7 : être averti si le périphérique est hors service depuis x minutes
avec fréquence de notifications en minutes et notification des heures calmes
Cela pourrait correspondre à ton besoin, (mais pas que).
Domoticz + Raspberry Pi3 + Disque Dur PiDrive + RFXtrx433
10 Getdio 54755 (gestion chauffage)
2 CHACON 34131 (détecteur fumées)
5 Bresser Capteur thermo/hygro RC 5CH
2 CHACON DiO 54781 (contacteur porte)
1 Compteur de consommation OWL Micro+ CM180

Wolfen38
Messages : 870
Enregistré le : 19 oct. 2017, 14:49

Re: Lua: Comment détecter qu'un device n'est plus accessible ?

Message par Wolfen38 » 22 août 2019, 19:17

denis_brasseur a écrit :
22 août 2019, 19:07
J'utilise ceci, [DZVents] Script de notifications ultime (mais pas que) de papoo :

[DZVents] Script de notifications ultime (mais pas que)
Example 7 : be notified if device is out since x minutes
with notifications frequency in minutes and quiet hours notification
Exemple 7 : être averti si le périphérique est hors service depuis x minutes
avec fréquence de notifications en minutes et notification des heures calmes
Cela pourrait correspondre à ton besoin, (mais pas que).
Donc ce n'est pas vraiment un script, je prends par ex la partie qui m'intéresse de l'ex 7, et je le mets dans mon device ?

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Répondre