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 <\>.
oula85
Messages : 161
Inscription : 29 avr. 2015, 18:09
Localisation : Challans

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

Message par oula85 »

Bonjour à tous

Je domotise mon chauffage et quelques fois j'ai une de mes 4 sondes qui freeze pendant un temps plus ou moins long ) ce qui empêche la bonne régulation de mon chauffage par radiateurs electriques.

je me retrouve donc avec une température inchangée laissant croire à mes blocky de controle que la température de consigne n'est toujours pas atteinte, du coup je surchauffe ma pièce jusqu'au retour à la normale de la sonde.

exemple ce matin

Image

je souhaiterai surveiller les 4 sondes de pièces :

Image

il y aurait t'il un moyen de détection l'info LAST SEEN d'une sonde et de déclencher un capteur virtuel " alarme sonde" lorsque le rafraichissement d'une des sondes dépasse un temps donné ( disons 5min au pif au lieu des 40s pour les sondes oregon ) ?

je galère un peu en Lua et la ca dépasse mes compétences dès qu'il faut extraire des valeurs de chaines de caractères ou autres infos de capteurs )

merci d'avance
Dernière modification par oula85 le 08 oct. 2015, 21:49, modifié 1 fois.
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 »

Salut,

Dans le dossier lua il y a un exemple pour cela

Tu peux aussi regarder mon script, j'utilise aussi cette alerte.
viewtopic.php?f=17&t=364
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 »

pas trouvé le script dans le forum je vais tacher d'adapter le tien mais je sens que je vais bien galérer et faire des conneries au passage …. je m'y colle je teste et je reviens si ca merde ( ce qui a de grandes chances d'arriver … )
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 »

je disais dans le dossier lua de domoticz

le script se nomme script_time_demo.lua

Code : Tout sélectionner

-- demo time script
-- script names have three name components: script_trigger_name.lua
-- trigger can be 'time' or 'device', name can be any string
-- domoticz will execute all time and device triggers when the relevant trigger occurs
-- 
-- copy this script and change the "name" part, all scripts named "demo" are ignored. 
--
-- Make sure the encoding is UTF8 of the file
--
-- ingests tables: otherdevices,otherdevices_svalues
-- 
-- otherdevices and otherdevices_svalues are two item array for all devices: 
--   otherdevices['yourotherdevicename']="On"
--	otherdevices_svalues['yourotherthermometer'] = string of svalues
--
-- Based on your logic, fill the commandArray with device commands. Device name is case sensitive. 
--
-- Always, and I repeat ALWAYS start by checking for a state.
-- If you would only specify commandArray['AnotherDevice']='On', every time trigger (e.g. every minute) will switch AnotherDevice on.
--
-- The print command will output lua print statements to the domoticz log for debugging.
-- List all otherdevices states for debugging: 
--   for i, v in pairs(otherdevices) do print(i, v) end
-- List all otherdevices svalues for debugging: 
--   for i, v in pairs(otherdevices_svalues) do print(i, v) end

print('this will end up in the domoticz log')

t1 = os.time()
s = otherdevices_lastupdate['Garagedoor']
-- returns a date time like 2013-07-11 17:23:12

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))
if (otherdevices['Garagedoor'] == 'Open' and difference > 600 and difference < 700) then
	commandArray['SendNotification']='Garage door alert#The garage door has been open for more than 10 minutes!'

end 

return commandArray
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 »

Si je remplace 'garagedoor' par le nom de ma sonde ca fonctionnera aussi ?

pour l'instant j'en suis la mais pas encore testé à partir de ton script

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 = {}

--alarme si la sonde reste muette (pas de valeur reçue sur les 10 dernières minutes)
if (lastSeen > 600 ) then
      commandArray['Alarme']='On'
end
if (lastSeen2 > 600 ) then
      commandArray['Alarme']='On'
end
if (lastSeen3 > 600 ) then
      commandArray['Alarme']='On'
end
if (lastSeen4 > 600  ) then
      commandArray['Alarme']='On'
end
   
   
   -- si la sonde semble muette, on stop la chauffe 
   
   if (lastSeen > 600 ) then   
      
      commandArray['radiateur']='Off'
else 
      commandArray['Alarme']='Off'
end
   
   if (lastSeen2 > 600 ) then   
      
      commandArray['radiateur2']='Off'
else 
      commandArray['Alarme']='Off'
end
      
   if (lastSeen3 > 600 ) then   
      
      commandArray['radiateur3']='Off'
else 
      commandArray['Alarme']='Off'
end

   if (lastSeen4 > 600 ) then   
      
      commandArray['radiateur4']='Off'
else 
      commandArray['Alarme']='Off'
end
 
         
                        
   


   
  return commandArray
Dernière modification par oula85 le 07 oct. 2015, 23:01, modifié 5 fois.
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 »

impec mais gaff à Alarme et 'Alarme' =)

Code : Tout sélectionner

lastSeen2 > 600 and lastSeen2 < 660
ceci signit entre 10 minute et 10 min 10 secondes,

si ta sonde est muette plus longtemps ?

juste lastSeen2 > 600 ;)
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 »

je vais simplifier ça

sinon ca me renvoi ça

2015-10-07 22:52:00.214 Error: EventSystem: /home/pi/domoticz/scripts/lua/script_time_alarme.lua:69: table index is nil
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 »

normal, comme je disais..

tu mets ceci

Code : Tout sélectionner

 commandArray[Alarme]='Off'
alors que plus haut tu ne faisais pas l'erreur

Code : Tout sélectionner

 commandArray['Alarme']='Off'
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 »

je corrige de suite ainsi que pour les interrupteurs de chauffe et je te dis

code corrigé réedité sur mon deuxieme post je teste
oula85
Messages : 161
Inscription : 29 avr. 2015, 18:09
Localisation : Challans

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

Message par oula85 »

ca à l'air de fonctionner je vois l'inter alarme se fixer à OFF toutes les minutes

un grand merci à toi il n'y a plus qu'a simplifier tout ca au maximum et faire un script bien propre
Répondre