détecter défaut rafraichissement sonde oregon par lua ? RESOLU en page 2

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: détecter défaut rafraichissement sonde oregon par lua ?

Message par vil1driver »

Tu devrais oublier blockly, ;)
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
oula85
Messages : 161
Inscription : 29 avr. 2015, 18:09
Localisation : Challans

Re: détecter défaut rafraichissement sonde oregon par lua ?

Message par oula85 »

Pour l'instant je le trouve quand même plus pratique pour retoucher avec mon petit niveau en lua mais je progresse doucement en gros j'utilise le lua pour les sécurités et les calculs et je laisse en blocky pour l'instant ce qui me parait chaud patate à programmer en lua d'un bout à l'autre

Donc ma solution semble fonctionner nickel verdict à la prochaine panne de sonde

le script final , il détecte donc la perte de la sonde supérieure à 10min et lance un interrupteur virtuel alarme à ON et le coupe quand la sonde revient à la vie , ceci zone par zone , à l'issue je récupère cette condition à rajouter dans ma ligne de mise en marche confort et eco sur mon blocky de la zone en question

Code : Tout sélectionner

-- script_time_alarme.lua
-- ce script détecte une perte de sonde et coupe le chauffage dans la zone
 
--------------------------------
------ Variables à éditer ------
--------------------------------

local sonde = 'Temp Salon' -- Nom de la sonde de température
local sonde2 = 'Temp Cuisine' -- Nom de la sonde de température
local sonde3 = 'Temp Chambre 2' --Nom de la sonde de température
local sonde4 = 'Temp Chambre Capucine' --Nom de la sonde de température

local radiateur = 'Module Salon' -- Nom de l'interrupteur de chauffage
local radiateur2 = 'Module Cuisine' -- Nom de l'interrupteur de chauffage
local radiateur3 = 'Module Chambre 2' -- Nom de l'interrupteur de chauffage
local radiateur4 = 'Module Chambre Capucine' -- Nom de l'interrupteur de chauffage

--------------------------------
-- Fin des variables à éditer --
--------------------------------
 
time = os.date("*t")  

function timedifference(d)
   s = otherdevices_lastupdate[d]
   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


-- on regarde de quand date la dernière relève de température

local lastSeen = timedifference(sonde)
local lastSeen2 = timedifference(sonde2)
local lastSeen3 = timedifference(sonde3)
local lastSeen4 = timedifference(sonde4)

commandArray = {}


-- lance une alarme par zone au dessus du seuil 600s si l'alarme est à OFF et la coupe en dessous si l'alarme est à On 

if (lastSeen > 600 ) and (otherdevices['Alarme Salon'] == 'Off') then
      commandArray['Alarme Salon']='On'
end
if (lastSeen2 > 600 ) and (otherdevices['Alarme Cuisine'] == 'Off') then
      commandArray['Alarme Cuisine']='On'
end
if (lastSeen3 > 600 ) and (otherdevices['Alarme Chambre 2'] == 'Off') then
      commandArray['Alarme Chambre 2']='On'
end
if (lastSeen4 > 600  ) and (otherdevices['Alarme Chambre Capucine'] == 'Off') then
      commandArray['Alarme Chambre Capucine']='On'
end
if (lastSeen < 600 ) and (otherdevices['Alarme Salon'] == 'On') then
      commandArray['Alarme Salon']='Off'
end
if (lastSeen2 < 600 ) and (otherdevices['Alarme Cuisine'] == 'On') then
      commandArray['Alarme Cuisine']='Off'
end
if (lastSeen3 < 600 ) and (otherdevices['Alarme Chambre 2'] == 'On') then
      commandArray['Alarme Chambre 2']='Off'
end
if (lastSeen4 < 600  ) and (otherdevices['Alarme Chambre Capucine'] == 'On') then
      commandArray['Alarme Chambre Capucine']='Off'
end

   
    
   
  return commandArray
Image


En tout cas un grand merci à toi Vil1Driver ;) ;) ;)
Wolfen38
Messages : 1983
Inscription : 19 oct. 2017, 14:49

Re: détecter défaut rafraichissement sonde oregon par lua ? RESOLU en page 2

Message par Wolfen38 »

Je viens de tester ce script qui fonctionne nickel.

Reste plus qu'à mettre en place quelque chose pour ne recevoir la notif qu'une fois.

Merci.
Wolfen38
Messages : 1983
Inscription : 19 oct. 2017, 14:49

Re: détecter défaut rafraichissement sonde oregon par lua ? RESOLU en page 2

Message par Wolfen38 »

Par contre, y a moyen dans un seul script de tester plusieurs devices ?
PhilTass2Montaig
Messages : 4
Inscription : 22 août 2019, 10:28

Re: détecter défaut rafraichissement sonde oregon par lua ? RESOLU en page 2

Message par PhilTass2Montaig »

Juste une remarque: otherdevices.lastupdate['mydevicename'] ne rend pas la valeur LAST SEEN (moment du dernier contact de domoticz avec le module) mais le moment du dernier changement de valeur. POur les sondes, ça revient presque au même, mais pour les modules de commande (interrupteurs, variateurs, etc), ça rend la date/heure de dernière activation du module, qui peut avoir eu lieu il y a 3 jours ... :(
D'ailleurs, je cherche un moyen de récupérer le "vrai" LAST SEEN. une idée quelqu'un ?
Répondre