Page 1 sur 3

timedifférence entre un état de DEVICE et une heure fixe avec notification , Vil1DRIVER MERCIIII

Publié : 16 nov. 2015, 20:29
par oula85
Hello

je cherche à optimiser la coupure de mes chauffages pilotés par zone de façon à ce que ceux ci se coupent au mieux avant la fin des heures creuses 06h35 chez moi ( je finirai en roue libre jusqu'a mon départ de la maison vers 8h )

l'idée serait donc de se baser sur ton script de délai de rafraichissement des sondes pour déterminer le cas échéant de combien de minutes le radiateur de la zone à dépassé la fin des heures creuses pour arriver à sa consigne de coupure ( passsage à OFF ) et ainsi d'envoyer un mail de rapport ou une notification ( ou si le père noël existe de modifier en conséquence l'heure de lancement de chaque interrupteur planning automatiquement pour que le lendemain à température égale je sois tout pile bien voir d'adapter en sens inverse…. ouais je sais je rêve )

la ou je bloque c'est qu'il faut que je déclare une heure fixe mais avec une date variable ( qui elle va changer tous les jours )

ex : calculer la différence entre l'heure de coupure du chauffage de zone par passage à OFF et les fameux 06h35 du jour en cours , d'en déduire le temps écoulé et d'envoyer ce temps par notification afin de faciliter le recalage sur le planning

le début du script souhaité , je pensais donc partir sur un script device qui détecterait le passage à OFF du module de chauffage de la zone

Merci d'avance les programmeurs fous

Code : Tout sélectionner

-- script_device_chauffagehorsHC.lua
-- ce script détecte une chauffe hors période heure creuse passé 06h35 et indique le temps depuis lequel le chauffage fonctionne dans la zone à la coupure de celui ci afin de faciliter le recalage en fonction de la température extérieure fluctuente 
 
--------------------------------
------ Variables à éditer ------
--------------------------------

local chauffe = 'Module Salon' -- Nom du module fil pilote
local chauffe2 = 'Module Cuisine' -- Nom du module fil pilote
local chauffe3 = 'Module Chambre 2' -- Nom du module fil pilote
local chauffe4 = 'Module Chambre Capucine' -- Nom du module fil pilote

--------------------------------
-- 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 coupure de chauffe dans la zone et ainsi déterminer le temps de dépassement par rapport a la fin des heures creuses 06H35

local lastSeen = timedifference(chauffe)
local lastSeen2 = timedifference(chauffe2)
local lastSeen3 = timedifference(chauffe3)
local lastSeen4 = timedifference(chauffe4)

commandArray = {}


-- lance une notification par zone si la chauffe perdure au dela de la période heures creuses indiquant le nombre de minutes de dépassement 

Re: Help Vil1DRIVER ou autre ( script lua avec heure fixe pour différence )

Publié : 16 nov. 2015, 20:55
par vil1driver
lol, mon nom dans un titre :D

si je comprends bien, tu souhaites que la pièce ai atteint la température de consigne juste avant la fin des heures creuse ?

si j'avais à faire cela je pense que je regarderais simplement ma courbe de température pour déterminer le temps qu'il faut pour passer de la consigne éco à celle de confort.

ce temps doit être sensiblement identique d'un jour sur l'autre ?

Re: Help Vil1DRIVER ou autre ( script lua avec heure fixe pour différence )

Publié : 16 nov. 2015, 21:03
par oula85
vil1driver a écrit :lol, mon nom dans un titre :D

si je comprends bien, tu souhaites que la pièce ai atteint la température de consigne juste avant la fin des heures creuse ?

si j'avais à faire cela je pense que je regarderais simplement ma courbe de température pour déterminer le temps qu'il faut pour passer de la consigne éco à celle de confort.

ce temps doit être sensiblement identique d'un jour sur l'autre ?
Que veux tu tu es mon maitre à scripter lol

c'est exactement ça

oh non malheureusement j'habite une maison de 1870 même si rénovée entierement mes montées en températures passent de 15min à 10°c extérieur à près de 2h quand il fait -3°C ( j'ai plus de 3m50 sous plafond )

actuellement je le fais à la main en regardant mes heures de passage à OFF et j'effectue le calcul à la main pour les 4 zones à tous les gros changements de températures extérieures pour rajouter ou diminuer du temps à l'enclenchement de la chauffe


faudrait que je puisse me servir d'une base de comparaison dans le calcul du temps écoulé au lieu de me servir de l'heure actuelle il aurait fallu que je puisse indiquer dans une chaine ( year,month,date = aujourd'hui mais heure toujours fixe à 06h35 ) et déterminer l'avance ou le retard avec l'arrivée à la consigne ( coupure du module de zone ) en fonction de cette heure

Cela dit j'ai ptet une idée j'ai un inter virtuel EDF HP qui passe à ON à 06H35 je vais ptet pouvoir jouer la dessus pour calculer mon temps sans m'emmerder avec des chaines trop complexes… du coup si tu peux juste me dire qu'elle est le code pour faire différence last seen chauffe - last seen EDF HP ce serait top

Re: Help Vil1DRIVER ou autre ( script lua avec heure fixe pour différence )

Publié : 16 nov. 2015, 21:24
par vil1driver
oula85 a écrit :
(...)
faudrait que je puisse me servir d'une base de comparaison dans le calcul du temps écoulé au lieu de me servir de l'heure actuelle il aurait fallu que je puisse indiquer dans une chaine ( year,month,date = aujourd'hui mais heure toujours fixe à 06h35 ) et déterminer l'avance ou le retard avec l'arrivée à la consigne ( coupure du module de zone ) en fonction de cette heure
(...)
quelque chose comme ceci peut-être

Code : Tout sélectionner

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(year=os.date(%Y), month=os.date(%m), day=os.date(%d), hour='06', min='35', sec='00')
   t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
   difference = os.difftime (t1, t2)
return difference

if (devicechanged['zone1'] == 'Off') then
delta = timedifference('radiateur')
end

table os.date

Re: Help Vil1DRIVER ou autre ( script lua avec heure fixe pour différence )

Publié : 16 nov. 2015, 21:26
par oula85
Merci !!!! le (d) correspond au nom de mon module ? ou faut t'il autant de bout de code comme celui que de zone à couvrir ?

j'en étais arrivé la , mais ta solution me parait bien plus propre !!! me reste plus qu'a envoyer la différence par notification

Code : Tout sélectionner

t1 = os.time()
s = otherdevices_lastupdate['chauffe']
-- 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)
 
t2 = os.time()
t = otherdevices_lastupdate['EDF HP']
-- returns a date time like 2013-07-11 17:23:12
 
year = string.sub(t, 1, 4)
month = string.sub(t, 6, 7)
day = string.sub(t, 9, 10)
hour = string.sub(t, 12, 13)
minutes = string.sub(t, 15, 16)
seconds = string.sub(t, 18, 19)commandArray = {}
 
commandeArray = {}
difference = (os.difftime (t2, t1))
   commandArray['SendNotification']='chauffe décalée # de ????? '
end 
 
return commandArray

Re: Help Vil1DRIVER ou autre ( script lua avec heure fixe pour différence )

Publié : 16 nov. 2015, 21:30
par vil1driver

Code : Tout sélectionner

commandArray['SendNotification']='chauffe décalée # de ' .. difference

Re: Help Vil1DRIVER ou autre ( script lua avec heure fixe pour différence )

Publié : 16 nov. 2015, 21:38
par oula85
ca donnerai ça ? ou il me manquera un 'and ' avant l'envoi de notification ?

Code : Tout sélectionner

local chauffe = 'Module Salon' -- Nom du module fil piloe
local chauffe2 = 'Module Cuisine' -- Nom du module fil pilote
local chauffe3 = 'Module Chambre 2' -- Nom du module fil pilote
local chauffe4 = 'Module Chambre Capucine' -- Nom du module fil pilote

--------------------------------
-- Fin des variables à éditer --
--------------------------------

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(year=os.date(%Y), month=os.date(%m), day=os.date(%d), hour='6', min='35', sec='00')
   t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
   difference = os.difftime (t1, t2)
return difference

commandArray = {}
if (devicechanged['chauffe'] == 'Off') then
delta = timedifference('chauffe')
commandArray['SendNotification']='chauffe décalée # de ' .. delta
end

if (devicechanged['chauffe2'] == 'Off') then
delta2 = timedifference('chauffe2')
commandArray['SendNotification']='chauffe décalée # de ' .. delta2
end

if (devicechanged['chauffe3'] == 'Off') then
delta3 = timedifference('chauffe3')
commandArray['SendNotification']='chauffe décalée # de ' .. delta3
end

if (devicechanged['chauffe4'] == 'Off') then
delta4 = timedifference('chauffe4')
commandArray['SendNotification']='chauffe décalée # de ' .. delta4
end
    
   
  return commandArray

Re: Help Vil1DRIVER ou autre ( script lua avec heure fixe pour différence )

Publié : 16 nov. 2015, 21:49
par vil1driver
une bonne pratique est de noter le nom du script en début de script, ça évite les erreurs avec sript_time et script_device par exemple.
en l'occurence, script_device impératif pour exploiter la table devicechanged

j'ai corrigé plus haut, mais pour les heures, je pense que '06' et mieux que '6'

en suite, gaffe à ne pas confondre variables et nom de dispositif au niveau des ''

tu peux faire ceci

Code : Tout sélectionner

devicechanged['Module Salon']
ou ceci

Code : Tout sélectionner

local chauffe = 'Module Salon' -- Nom du module fil piloe
devicechanged[chauffe]
mais pas ceci ;)

Code : Tout sélectionner

local chauffe = 'Module Salon' -- Nom du module fil piloe
devicechanged['chauffe']
ça donne

Code : Tout sélectionner

-- script_device_xxxx.lua

local chauffe = 'Module Salon' -- Nom du module fil piloe
local chauffe2 = 'Module Cuisine' -- Nom du module fil pilote
local chauffe3 = 'Module Chambre 2' -- Nom du module fil pilote
local chauffe4 = 'Module Chambre Capucine' -- Nom du module fil pilote

--------------------------------
-- Fin des variables à éditer --
--------------------------------

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(year=os.date(%Y), month=os.date(%m), day=os.date(%d), hour='06', min='35', sec='00')
   t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
   difference = os.difftime (t1, t2)
return difference

commandArray = {}
if (devicechanged[chauffe] == 'Off') then
delta = timedifference(chauffe)
commandArray['SendNotification']='chauffe décalée # de ' .. delta
end

if (devicechanged[chauffe2] == 'Off') then
delta2 = timedifference(chauffe2)
commandArray['SendNotification']='chauffe décalée # de ' .. delta2
end

if (devicechanged[chauffe3] == 'Off') then
delta3 = timedifference(chauffe3)
commandArray['SendNotification']='chauffe décalée # de ' .. delta3
end

if (devicechanged[chauffe4] == 'Off') then
delta4 = timedifference(chauffe4)
commandArray['SendNotification']='chauffe décalée # de ' .. delta4
end
   
   
return commandArray

Re: Help Vil1DRIVER ou autre ( script lua avec heure fixe pour différence )

Publié : 16 nov. 2015, 21:52
par vil1driver
j'ai également envie de dire, delta1,2,3 etc... n'est pas bien utile,
une seule condition sera valide à chaque fois, donc tu peux utiliser delta pour toutes les conditions

Re: Help Vil1DRIVER ou autre ( script lua avec heure fixe pour différence )

Publié : 16 nov. 2015, 21:52
par oula85
un énorme merci à toi je vais tester tout ça