Page 6 sur 6

Re: script de chauffage avec détection PIR et retour de conso

Publié : 02 févr. 2016, 17:05
par vil1driver
la partie anticipation est le plus foireux du script :D

je ne sais pas trop comment expliquer plus que ce que j'ai déjà dis.. je compte c'est tout, plus le temps passe pendant la montée en température de la pièce et plus j'abaisse la consigne pour que ça stoppe la chauffe avant la consigne réelle (radiateur reste chaud une bonne demie heure) et fait l'inverse en phase de refroidissement pour commencer à chauffer avant d'avoir besoin (radiateur met environs 15 minutes à être chaud).

c'est très largement perfectible car j'ai voulu faire simple.. (même si ça ne l'est pas forcément),
mais il y a un gain certain, on est plus proche de la consigne , et on est bien plus réactif (par rapport à du PID) aux influence extérieures (four.. fenêtre ouverte.. etc).

le chauffage étant mon projet initial niveau domotique je suis sur ce script depuis un moment, et il ne cesse d'être peaufiné..
il va donc certainement s'améliorer encore.
je pense que je vais tenter de me faire une petite représentation graphique de la température de surface des mes radiateur fonction du temps..

mais peut être que je dois simplement me décider à changer de génération de radiateur...
http://www.radiateur-electrique.org/bain-huile.php

Re: script de chauffage avec détection PIR et retour de conso

Publié : 14 févr. 2016, 18:32
par Nissa
Essayé et adopté !
Je l'ai simplifié n'ayant pas de capteur de mouvement. La mise on / off des radiateurs s'effectue selon la comparaison consigne/sonde et la valeur de 2 interrupteurs : Switch manuel On/Off et un calendrier.
Merci vil1driver, après la custom page, tu es mon meilleur inspirateur.

Re: script de chauffage avec détection PIR et retour de conso

Publié : 26 nov. 2016, 16:13
par lolo6112
vil1driver a écrit :la partie anticipation est le plus foireux du script :D

je ne sais pas trop comment expliquer plus que ce que j'ai déjà dis.. je compte c'est tout, plus le temps passe pendant la montée en température de la pièce et plus j'abaisse la consigne pour que ça stoppe la chauffe avant la consigne réelle (radiateur reste chaud une bonne demie heure) et fait l'inverse en phase de refroidissement pour commencer à chauffer avant d'avoir besoin (radiateur met environs 15 minutes à être chaud).

c'est très largement perfectible car j'ai voulu faire simple.. (même si ça ne l'est pas forcément),
mais il y a un gain certain, on est plus proche de la consigne , et on est bien plus réactif (par rapport à du PID) aux influence extérieures (four.. fenêtre ouverte.. etc).

../...
mais peut être que je dois simplement me décider à changer de génération de radiateur...
http://www.radiateur-electrique.org/bain-huile.php
Bonjour,
Merci pour le boulot, t'es vraiment fort en script, chapeau. Moi je galère un peu encore en LUA, pourtant je programme en pas mal de langages.

Question : Ton script marcherait-il, ou quelle adaptation penserais-tu qu'il faille faire, pour du rayonnant élec. ?
Virer l'anticipation ? Moi je trouve ça bien d'anticiper, ça évite au moins de faire du flip/flop dans certains cas.

Euhhh oui faudrait p'tet songer à changer de radiateur ;) , moi c'était des grilles pain quand j'ai acheté, j'ai même pas essayé :D

Merci de ta réponse si tu en as une. Je ne pense pas qu'il y ait une réelle inertie sur des rayonnants. Quand ils viennent de chauffer ça tiens peut-être 5 minutes. En fait j'en sais rien, j'ai pas gardé la main sur un radi pour voir.

Re: script de chauffage avec détection PIR et retour de conso

Publié : 26 nov. 2016, 18:10
par vil1driver
Bah.. Si l'inertie ne t'intéresse pas désactive la..

Code : Tout sélectionner

local inertie = true                  -- radiateur à inertie true/false

Re: script de chauffage avec détection PIR et retour de conso

Publié : 27 nov. 2016, 10:56
par lolo6112
vil1driver a écrit :Bah.. Si l'inertie ne t'intéresse pas désactive la..

Code : Tout sélectionner

local inertie = true                  -- radiateur à inertie true/false
Bonjour,

Merci de ta réponse.
Oui désolé je n'avais pas encore complétement dépiauté le script, j'ai vu qu'il suffisait de mettre la valeur à false pour désactiver.

Re: script de chauffage avec détection PIR et retour de conso

Publié : 27 nov. 2016, 16:28
par rapinou
lolo6112 a écrit :Je ne pense pas qu'il y ait une réelle inertie sur des rayonnants. Quand ils viennent de chauffer ça tiens peut-être 5 minutes. En fait j'en sais rien, j'ai pas gardé la main sur un radi pour voir.
Vois sur tes logs de capteur température.


J'en profite pour remercier vil1driver qui a inspiré je pense la quasi-totalité des membres du forum pour leurs scripts chauffage :D

Re: script de chauffage avec détection PIR et retour de conso

Publié : 28 nov. 2016, 21:13
par lolo6112
rapinou a écrit : Vois sur tes logs de capteur température.

J'en profite pour remercier vil1driver qui a inspiré je pense la quasi-totalité des membres du forum pour leurs scripts chauffage :D
Bonjour,
@rapinou,
Oui je sais mais pour le moment je teste et en plus j'ai des capteurs de température STHI100 HOME CONFORT. Hors ces foutus capteurs viennent juste d’être implémentés cet été sur RFLink. Résultat ils ne bronchent pas pendant des heures, des fois j'ai des updates qui datent de la veille !!
Pratique pour faire de la régul, bon je discute avec la stunteam pour voir si c'est les capteurs ou si c'est l'update qui ne se fait pas, mon contact à un doute là dessus. D'après le fabricant, qui ne fabrique pas grand chose à mon avis mais qui importe ça de chine, l'update se ferait toutes les 10 minutes.
Bref, la fête quoi, reste plus qu'à me bricoler des capteurs de secours avec du RF chinois en attendant...
Dommage demain c'est 'rouge' ça va être mano mano la régul.

@vil1driver,
Je suis en train de fouiller/tester ton script, et puis essayer de l'arranger à ma sauce et du coup bien le comprendre.
Encore bravo il est ballu ton script !
Et hormis mes déboires avec mes sondes, des résultats dans le log, en effet l'inertie rend la rampe plus douce qu'un PID, je la conserverai ;)
Question :
Je me disais que je mettrai bien 2 inters généraux pour toutes les zones, 1 premier pour la saison froide/chaude, 1 autre pour les vacances.
Le mieux est :
- Que je teste en premier mon inter général saison de chauffe, puis celui des vacances et que j'encapsule toute ta série de tests entre ces deux tests ;
- Ou est-ce que le bouton vacances doit plutôt renvoyer au dernier 'else' de la série de tests ;
- Et enfin que je mette un relais dédié pour au moins couper en direct les radiateurs. Par le fil pilote, avec un demi alternance, pas sur que cela inhibera vraiment les actions du script si je ne tiens pas compte de l'inter. Ton script enverrait alors un ordre 220V sur le relais Eco qui surpassera la demi alternance. Comme l'idée est plutôt aux économies je n'envisage pas de coller des modules radio ON/OFF sur toutes les alims de mes 11 radiateurs pour les couper électriquement.
En fait l'idée est de passer Off part le fil pilote tout les radiateurs hors saison de chauffe, et seulement Hors Gel tous les radiateurs pendant des vacances en saison de chauffe.
Je mettrai les relais sur une carte Arduino, pas de radio et alim secourue :) , sauf que pour le Off et le Hors gel direct il me faudrait 2 relais de plus que celui du mode 'Eco' par zone qu'avec ton script, d'où grosssssse économie :D

Re: script de chauffage avec détection PIR et retour de conso

Publié : 30 avr. 2018, 15:07
par patoche
Bonjour et merci pour le partage de ce script.

Je le teste en remplacement de mon script blocky, pour la prise en compte d'hysteresis.
Dans les logs de l'inter virtuel chauffage je vois que les actions on et off sont envoyées en constance, n'est ce pas préjudiciable pour le système, ralentissement, place mémoire, cycle écriture...,?
Dans mon blocky j'envoie l'action que si l'inter n'est pas dans le bon état, avec malgré tout une redondance de 3-4 ordres.

Re: script de chauffage avec détection PIR et retour de conso

Publié : 25 oct. 2018, 13:04
par jackslayter
l'hiver approchant enfin, j'ai remis en route les scripts de chauffage.
j'ai des problèmes alors que cela marchait bien en mars mais je suis dessus par contre dans les logs les syntaxes ne sont pas prisent en compte

Code : Tout sélectionner

 2018-10-25 13:00:26.691 Status: LUA: <font color='#0206a9'>PID zone: SALON</font>
2018-10-25 13:00:26.691 Status: LUA: <font color='#0206a9'>température: 20.9°C pour 19.5°C souhaité</font>
2018-10-25 13:00:26.691 Status: LUA: <font color='#0206a9'>Kp: 80</font>
2018-10-25 13:00:26.691 Status: LUA: <font color='#0206a9'>Ki: 35</font>
2018-10-25 13:00:26.691 Status: LUA: <font color='#0206a9'>Kd: 80</font>
2018-10-25 13:00:26.692 Status: LUA: <font color='#0206a9'>erreur: -1.4</font>
2018-10-25 13:00:26.692 Status: LUA: <font color='#0206a9'>&#8721; erreurs: 0</font>
2018-10-25 13:00:26.692 Status: LUA: <font color='#0206a9'>&#916; erreurs: -0.03</font>
2018-10-25 13:00:26.692 Status: LUA: <font color='#0206a9'>P: -112</font>
2018-10-25 13:00:26.692 Status: LUA: <font color='#0206a9'>I: 0</font>
2018-10-25 13:00:26.692 Status: LUA: <font color='#0206a9'>D: -2.4</font>
2018-10-25 13:00:26.692 Status: LUA: <font color='#0206a9'>cycle: 10min (sécu: 30s)</font>
2018-10-25 13:00:26.692 Status: LUA: <font color='#0206a9'>commande: 0% (00'00")</font>
2018-10-25 13:00:26.692 Status: LUA: <font color='#0206a9'></font> 
une idée ?

Re: script de chauffage avec détection PIR et retour de conso

Publié : 30 oct. 2018, 17:44
par dekloo
Hello à tous,
Voici mon script qui est une adapatation au script d'origine de Vil1driver (merci à toi)

J'utilise une double plage horaire pour la gestion heure plein/creuse.
Si c'est plein tarif je réduit d'un demi-degres la t° de consigne.

C'est tout frais, j'ai pas encore de recul sur les réglages. A suivre.

Si ca peut donner des idées :

Code : Tout sélectionner

----------------------------------------------
------ Configuration ------
----------------------------------------------

-- nom de zone
local zone = 'ch Pupuce' -- nom de la zone pour affichage dans les logs et alerte mail

-- consignes
local consigne_conf = 'Thermo_Pupuce' -- nom de thermostat virtuel de gestion de la température de confort
local consigne_abs = 12 -- Température lors d'abscence prolongée (hors gêle)

-- capteurs
local sonde = 'Temp_Pupuce' -- Nom de la sonde de température
local mode = 'Chauffage_Pupuce' -- Nom de l'interrupteur virtuel général (On=auto Off=hors gêle)

-- période de chauffage
-- pour une période de 24h, mettre debut = '00:00' et fin = '24:00'
-- bien respecter le format hh:mm
local debut = '02:00'
local fin = '08:00'
local debut2 = '13:00'
local fin2 = '15:00'

-- radiateur
local radiateur = 'Radiateur_Pupuce' -- Nom de l'interrupteur de chauffage

-- email
local mail = '*******@********' -- pour réception alerte sonde muette (chauffage coupé)

----------------------------------------------
-- Fin de la partie configuration --
----------------------------------------------

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

-- quelle heure est-il
local heure = string.sub(os.date("%X"), 1, 5)
-- notre dernière apparition était elle dans la plage horaire ?
if (
(
(60*tonumber(string.sub(heure,1,2)) + tonumber(string.sub(heure,4,5))) >= 60*tonumber(string.sub(debut,1,2)) + tonumber(string.sub(debut,4,5))
and
(60*tonumber(string.sub(heure,1,2)) + tonumber(string.sub(heure,4,5))) < 60*tonumber(string.sub(fin,1,2)) + tonumber(string.sub(fin,4,5))
)
or
(
(60*tonumber(string.sub(heure,1,2)) + tonumber(string.sub(heure,4,5))) >= 60*tonumber(string.sub(debut2,1,2)) + tonumber(string.sub(debut2,4,5))
and
(60*tonumber(string.sub(heure,1,2)) + tonumber(string.sub(heure,4,5))) < 60*tonumber(string.sub(fin2,1,2)) + tonumber(string.sub(fin2,4,5))
)
) then
inScope = true
else
inScope = false
end
-- on regarde de quand date la dernière relève de température
local lastSeen = string.sub(os.date("!%X", timedifference(sonde)), 1, 5)

commandArray = {}

--envoie d'une alerte mail si la sonde reste muette (pas de valeur reçue sur les 30 dernières minutes)
if (lastSeen >= '00:30' and lastSeen < '00:32') then
commandArray['SendEmail']='Domoticz Alerte#Alerte sonde '..zone..' muette#'..mail
end

-- gestion de la consigne
-- récupération de la valeur du thermostat
consigne_conf = tonumber(otherdevices_svalues[consigne_conf])
-- si le thermostat général est actif
if (otherdevices[mode] == 'On') then
consigne = consigne_conf
else
consigne = consigne_abs
end

-- si heure creuse/pleine
if (inScope == true) then
consigne = consigne
else
consigne = consigne - 0.5
end

-- on récupère la température fournie par la sonde
local temperature = math.floor(10*tonumber(otherdevices_temperature[sonde]))/10

-- si la température est supérieure ou égale à la consigne,
-- ou que la sonde semble muette (10 min sans relève),
if ((temperature >= consigne) or (lastSeen > '00:10')) then
-- on stop la chauffe
commandArray[radiateur]='Off'
log = 'Radiateur -. OFF .-'
-- si la température est inférieur à la consigne et que la sonde est OK
end
if ((temperature < consigne - 0.25) and (lastSeen <= '00:10')) then
-- on chauffe
commandArray[radiateur]='On'
log = 'Radiateur -. ON .-'
end

-- logs
print('*** Chauffage '..zone..' ***')
if (inScope == true) then
print('Heure creuse : Youpi')
else
print('Heure pleine -> Thermo - 0.5')
end
print('il fait '..temperature..'°C pour '..consigne..'°C souhaité')
print(log)

if (otherdevices[mode] == 'Off') then
print('Thermostat général sur Off')
elseif (lastSeen > '00:10') then
print('Sonde muette !')
else
-- print('il fait '..temperature..'°C pour '..consigne..'°C souhaité')
end
print('*** *** *** *** *** ***')
return commandArray
Pour ces premiers tests, le Thermostat est réglé sur 19.
Et nous sommes à 17h30 en heure creuse.

Ce qui donne en Log :
domoticz_thermostat_heure_creuse_pleine.png
domoticz_thermostat_heure_creuse_pleine.png (11.27 Kio) Consulté 7724 fois
Voila,
A suivre...