Page 3 sur 3
Re: Tempo de thermostat
Publié : 10 mars 2015, 13:34
par mulot35
Dans ton script tu envoie la conso a un capteur virtuel:
Code : Tout sélectionner
-- envoie de la conso dans le capteur virtuel d'énergie
commandArray['UpdateDevice'] = conso_id .. '|0|' .. power .. ';' .. energy
du coup je peut l'envoyer a deux capteur virtuel via:
Code : Tout sélectionner
-- envoie de la conso dans le capteur virtuel d'énergie local
commandArray['UpdateDevice'] = conso_id .. '|0|' .. power .. ';' .. energy
-- envoie de la conso dans le capteur virtuel d'énergie global
commandArray['UpdateDevice'] = conso_id2 .. '|0|' .. power .. ';' .. energy
ca devrai marché,non?
Re: Tempo de thermostat
Publié : 10 mars 2015, 13:54
par vil1driver
quel intérêt d'envoyer la même info dans 2 capteurs différents ?
je pensais avoir compris que tu voulais un seul capteur enregistrant la conso de plusieurs radiateurs ??
sinon non, ton code ne fonctionne pas, tout comme une lampe, tu ne peux envoyer 2 commandes identique à suivre de cette façon.
Re: Tempo de thermostat
Publié : 10 mars 2015, 13:59
par vil1driver
svp, peux tu continuer sur
l'autre sujet ?
Re: Tempo de thermostat
Publié : 30 mai 2015, 01:17
par oula85
mulot35 a écrit :vil1driver a écrit :salut,
il y a de nombreuses erreurs dans ton script...
voici le mien, il fonctionne impec, fait toi plaisir =)
Code : Tout sélectionner
-- Ce script permet de maintenir la température
--------------------------------
------ Variables à éditer ------
--------------------------------
local consigne_conf_semaine = 19 -- Température de consigne confort en semaine
local consigne_conf_weekend = 20 -- Température de consigne confort le weekend
local consigne_eco = 17 -- Température de consigne économique
local consigne_abs = 15 -- Température de consigne lors d'abscence prolongée
local sonde = 'salon' -- Nom de la sonde de température
local mode = 'ampli' -- Nom de l'interrupteur virtuel de sélection de mode Off=eco On=confort
local thermostat = 'thermostat' -- Nom de l'interrupteur virtuel de thermostat (Off=abscence prolongée)
local boost = 'boost' -- Nom de l'interrupteur virtuel de de forçage de la consigne en mode weekend
local radiateur = 'radiateur cuisine' -- Nom de l'interrupteur de chauffage
local puissance = 2700 -- puissance du chauffage en watt
local conso = 'conso salon' -- nom du capteur virtuel de consommation électrique
local conso_id = 107 -- idx du capteur virtuel de consommation électrique
--------------------------------
-- Fin des variables à éditer --
--------------------------------
time = os.date("*t")
-- on regarde depuis combien de temps l'inter de mode à changé d'état
t1 = os.time()
s = otherdevices_lastupdate[mode]
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{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
difference = (os.difftime (t1, t2))
commandArray = {}
local today = os.date("%A")
local temperature = tonumber(string.sub(otherdevices_svalues[sonde],1,4)) -- Température relevée
if (today == "Saturday" or today == "Sunday" or otherdevices[boost] == 'On') then
consigne_conf = consigne_conf_weekend
else
consigne_conf = consigne_conf_semaine
end
-- si le thermostat général est actif
if (otherdevices[thermostat] == 'On') then
-- si il y a présence ou abscence depuis moins d'une heure, la journée
if (otherdevices[mode] == 'On' or (otherdevices[mode] == 'Off' and difference < 3600 and time.hour >= 7 and time.hour < 23)) then
consigne = consigne_conf
else
consigne = consigne_eco
end
else
consigne = consigne_abs
end
if (temperature < consigne) then
--commandArray[radiateur]='On'
commandArray[1]={['radiateur salon']='On'}
commandArray[2]={['radiateur cuisine']='On'}
print('Chauffage salon -. ON .-')
-- envoie de la conso dans le capteur virtuel d'énergie
npower, energy = string.match(otherdevices_svalues[conso], "(%d+%.*%d*);(%d+%.*%d*)")
energy = tonumber(energy) + (puissance / 60)
commandArray['UpdateDevice'] = conso_id .. '|0|' .. puissance .. ';' .. energy
else
--commandArray[radiateur]='Off'
commandArray[1]={['radiateur salon']='Off'}
commandArray[2]={['radiateur cuisine']='Off'}
print('Chauffage salon -. OFF .-')
-- envoie de la conso dans le capteur virtuel d'énergie
npower, energy = string.match(otherdevices_svalues[conso], "(%d+%.*%d*);(%d+%.*%d*)")
energy = tonumber(energy)
commandArray['UpdateDevice'] = conso_id .. '|0|' .. 0 .. ';' .. energy
end
print('il fait '..temperature..'°C pour '..consigne..'°C souhaité')
return commandArray
ah oui j'oubliait, mon script se nome scrip_
time_chauffage.lua
time est important, ce script est du coups exécuté toutes les minutes
ps : pas de 'devicechanged' dans un script
time
Merci pour ton excellent script.
Mérite vraiment un tuto pour les débutants.(je peut m'en occupé si tu est d'accord).
Et une petite question:
Est il possible d'avoir un capteur de conso virtual qui totalise toute les consos des radiateurs?
Fonctionne au top aussi pour connaitre la conso de son chauffe eau .
créer interrupteur virtuel avec les heures creuses --> puis compteur virtuel --> puis script_time lua --> ( conditions : CM180 , si CM180 > supérieur à la conso du Chauffe eau et interrupteur virtuel heures creuses alors incrémentation du compteur )
Cela fonctionne chez moi car j'ai temporisé la mise en marche du chauffe eau à 1h du matin ce qui me permet de faire tourner mes machines avant ce qui n'induit que le fonctionnement du chauffe eau pour mon calcul entre 1h et 4h du matin
à valider aussi cet hiver ou des radiateurs pourront se déclencher aussi pendant le laps de temps mais l'été je suis serein il ne mesurera que le Chauffe eau
Re: Tempo de thermostat
Publié : 18 déc. 2016, 19:47
par balajol
Bonsoir à tous,
J'essaye d'adapter le scipt de Vil1driver pour mon usage (chaudière gaz)
J'arrive à peu près à mes fins hormis le choix entre 2 sondes de mesure de T°à partir de l'état d'un interrupteur nommé "Sonde_T_Off_Salon_On_Cuisine_Domo"
Voila la porsion de code:
Code : Tout sélectionner
commandArray = {}
local today = os.date("%A")
if (otherdevices[Sonde_T_Off_Salon_On_Cuisine_Domo] == 'On') then
local temperature = tonumber(string.sub(otherdevices_svalues[sonde_cuisine],1,4)) -- Température relevée sonde cuisine
else
local temperature = tonumber(string.sub(otherdevices_svalues[sonde_Salon],1,4)) -- Température relevée sonde salon
end
if (today == "Saturday" or today == "Sunday" or otherdevices[boost] == 'On') then
consigne_conf = consigne_conf_weekend
else
consigne_conf = consigne_conf_semaine
end
-- si le thermostat général est actif
if (otherdevices[thermostat] == 'On') then
-- si il y a présence ou abscence depuis moins d'une heure, la journée
if (otherdevices[mode] == 'On' or (otherdevices[mode] == 'Off' and difference < 3600 and time.hour >= 7 and time.hour < 23)) then
consigne = consigne_conf
else
consigne = consigne_eco
end
else
consigne = consigne_abs
end
if (temperature < consigne) then
--Chaudiere en Marche (Chauffe) si Sortie à off (Contact thermostat sur carte chaudiere fermé)
commandArray['Coupure-Thermostat-Chaudiere(On:Arret)'] = 'Off'
print('Marche Chaudiere -. Marche .-')
J'ai un message d'erreur dans les LOGS:

- Erreur-thermostat.JPG (124.23 Kio) Consulté 5683 fois
Si j'utilise chaque sonde indépendamment de l'autre , le script fonctionne.
La ligne 63 est:
Je sèche depuis plusieurs Heures, Merci de votre aide éventuelle en retour .
Cordialement
Bertrand