Page 1 sur 1
"Résolu"Capteur de porte Fibaro pour sécurité Chauffage
Publié : 05 avr. 2020, 23:50
par Cedric59
Bonjour à tous,
je souhaite ajouter un capteur Fibaro dans mon script "voir ci-dessous" il me sert à gérer le chauffage de la chambre de ma fille en fonction de la température de la pièce... il fonctionne très bien, mais je souhaite passer une étape en ajoutant une condition si la fenêtre est ouverte....
Code : Tout sélectionner
local temp = 'Température chambre Lihore'
local thermostat_setpoint = 'Thermostat Lihore'
local heating_unit = 'Ventilateur Chauffage Lihore'
local hysteresis = 0.5
commandArray = {}
if devicechanged[temp] then
print('temp:'..otherdevices_temperature[temp])
print('thermostat_setpoint:'..otherdevices[thermostat_setpoint])
if tonumber(otherdevices[thermostat_setpoint]) < tonumber(otherdevices_temperature[temp]-hysteresis) then
if (otherdevices[heating_unit] == "On") then
commandArray[heating_unit]='Off'
print("Heating is Off")
end
elseif tonumber(otherdevices[thermostat_setpoint]) > tonumber(otherdevices_temperature[temp]+hysteresis) then
if (otherdevices[heating_unit] == "Off") then
commandArray[heating_unit]='On'
print("Heating is On")
end
end
end
return commandArray
Dans ce script j'ai "essayer" d'ajouter le capteur de porte Fibaro j'ai donc essayer d'ajouter une condition "if" la fenêtre est ouverte le ventilateur du chauffage ne pourra pas démarrer même si la température mesuré est inférieur à la température demandé... et qu'il puisse fonctionner dès que la fenêtre se ferme.... .
Code : Tout sélectionner
local temp = 'Température chambre Lihore'
local thermostat_setpoint = 'Thermostat Lihore'
local heating_unit = 'Ventilateur Chauffage Lihore'
local windows_lihore = 'Capteur Fenêtre Lihore'
local hysteresis = 0.5
commandArray = {}
if devicechanged[temp] then
print('temp:'..otherdevices_temperature[temp])
print('thermostat_setpoint:'..otherdevices[thermostat_setpoint])
print('windows_lihore:'..otherdevices[windows_lihore])
if tonumber(otherdevices[thermostat_setpoint]) < tonumber(otherdevices_temperature[temp]-hysteresis) then
if (otherdevices[heating_unit] == "On") then
if(otherdevice[windows_lihore] == "On") then
commandArray[heating_unit]='Off'
print("Heating is Off")
end
elseif tonumber(otherdevices[thermostat_setpoint]) > tonumber(otherdevices_temperature[temp]+hysteresis) then
if (otherdevices[heating_unit] == "Off") then
if (otherdevices[windows_lihore] == "Off") then
commandArray[heating_unit]='On'
print("Heating is On")
end
end
end
end
return commandArray
Bien sur si je suis là c'est que cela ne fonctionne pas correctement j'ai cette erreur dans les log...
Code : Tout sélectionner
2020-04-05 23:49:37.120 Error: EventSystem: in Test gestion chauffage chambre Lihore V2.0: [string "local temp = 'Température chambre Lihore' ..."]:30: 'end' expected (to close 'if' at line 11) near <eof>
Je ne comprend pas d'ou vient l'erreur exactement...
Quelqu'un peux m'aider ?
Merci d'avance à tous
Re: Capteur de porte Fibaro pour sécurité Chauffage
Publié : 06 avr. 2020, 00:47
par vil1driver
Salut,
Tu as ajouté ta condition sans y mettre fin
C'est ce que signifie l'erreur
'end' expected to close 'if'
Il attend un 'end' pour clôturer le 'if'
Le script qui fonctionne dit
Si la temp est haute
on stop le chauffage
Je simplifie, je ne mentionne pas la condition qui vérifie que le chauffage est bien en marche avant de l'arrêter.
Ca complexifie la lecture et personnellement je trouve que dans le fonctionnement il vaut mieux répéter ces ordres, ça fiabilise grandement.
Bref...
Tu as donc la condition A qui arrête le chauffage.
Toi, ce que tu veux c'est en ajouter une autre (la condition B : si la fenêtre est ouverte)
L'une ou l'autre pouvant arrêter le chauffage
Le plus simple est probablement de faire
Si A ou B alors
......
Si (il fait chaud) ou (la fenêtre est ouverte) .....
Reprend à partir du script qui fonctionne
Re: Capteur de porte Fibaro pour sécurité Chauffage
Publié : 06 avr. 2020, 21:32
par Cedric59
Salut Vill1driver.
C'est bon sa fonctionne
Merci de tes conseils
Est ce que tu penses que c'est utile de le mettre dans la section tuto du forum ?
Re: "Résolu"Capteur de porte Fibaro pour sécurité Chauffage
Publié : 06 avr. 2020, 21:36
par vil1driver
Ce n'est pas utile non
J'insiste sur un point
Ceci
Code : Tout sélectionner
if(otherdevice[heating_unit] == "On") then
commandArray[heating_unit]='Off'
print("Heating is Off")
end
N'a pour but que d'éviter l'envoi d'ordres inutiles à répétition (à chaque relève de temp)
Mais que ce passe t'il si l'ordre n'est pas reçu ?
Plus aucun autre ordre ne sera envoyé.
Et il va faire super chaud ou super froid...
Mon conseil, soit à minima ajouter un script qui va répéter les ordres ou alors simplement
Faire
Idem pour 'On'
Re: "Résolu"Capteur de porte Fibaro pour sécurité Chauffage
Publié : 06 avr. 2020, 22:46
par Cedric59
Ce n'est pas déjà le cas ?
Code : Tout sélectionner
local temp = 'Température chambre Lihore'
local thermostat_setpoint = 'Thermostat Lihore'
local heating_unit = 'Ventilateur Chauffage Lihore'
local windows_lihore = 'Capteur Fenêtre Lihore'
local hysteresis = 0.5
commandArray = {}
if devicechanged[temp] then
print('temp:'..otherdevices_temperature[temp])
print('thermostat_setpoint:'..otherdevices[thermostat_setpoint])
if tonumber(otherdevices[thermostat_setpoint]) < tonumber(otherdevices_temperature[temp]-hysteresis) or (otherdevices[windows_lihore] == "On") then
if (otherdevices[heating_unit] == "On") then
commandArray[heating_unit]='Off'
print("Heating is Off")
end
elseif tonumber(otherdevices[thermostat_setpoint]) > tonumber(otherdevices_temperature[temp]+hysteresis) then
if (otherdevices[heating_unit] == "Off") then
commandArray[heating_unit]='On'
print("Heating is On")
end
end
end
return commandArray
J'ai ajouter une autre condition car de temps en temps je constate des pertes de connection de mon esp8266 je pense avoir vu un article sur le forum mais je n'ai pas encre eu le temps de bien l'analyser du coup si je constate que la température et égal à 0 on coupe le ventilateur ... .
Code : Tout sélectionner
local temp = 'Température chambre Lihore'
local thermostat_setpoint = 'Thermostat Lihore'
local heating_unit = 'Ventilateur Chauffage Lihore'
local windows_lihore = 'Capteur Fenêtre Lihore'
local hysteresis = 0.5
commandArray = {}
if devicechanged[temp] then
print('temp:'..otherdevices_temperature[temp])
print('thermostat_setpoint:'..otherdevices[thermostat_setpoint])
if tonumber(otherdevices[thermostat_setpoint]) < tonumber(otherdevices_temperature[temp]-hysteresis) or (otherdevices[windows_lihore] == "On") or (otherdevices_temperature[temp] == "0") then
if (otherdevices[heating_unit] == "On") then
commandArray[heating_unit]='Off'
print("Heating is Off")
end
elseif tonumber(otherdevices[thermostat_setpoint]) > tonumber(otherdevices_temperature[temp]+hysteresis) then
if (otherdevices[heating_unit] == "Off") then
commandArray[heating_unit]='On'
print("Heating is On")
end
end
end
return commandArray
Re: "Résolu"Capteur de porte Fibaro pour sécurité Chauffage
Publié : 06 avr. 2020, 23:07
par vil1driver
Je proposais ceci
Code : Tout sélectionner
local temp = 'Température chambre Lihore'
local thermostat_setpoint = 'Thermostat Lihore'
local heating_unit = 'Ventilateur Chauffage Lihore'
local windows_lihore = 'Capteur Fenêtre Lihore'
local hysteresis = 0.5
commandArray = {}
if devicechanged[temp] then
print('temp:'..otherdevices_temperature[temp])
print('thermostat_setpoint:'..otherdevices[thermostat_setpoint])
if tonumber(otherdevices[thermostat_setpoint]) < tonumber(otherdevices_temperature[temp]-hysteresis) or (otherdevices[windows_lihore] == "On") then
commandArray[heating_unit]='Off'
print("Heating is Off")
elseif tonumber(otherdevices[thermostat_setpoint]) > tonumber(otherdevices_temperature[temp]+hysteresis) then
commandArray[heating_unit]='On'
print("Heating is On")
end
end
return commandArray
Saisi tu la différence de fonctionnement ?
Re: "Résolu"Capteur de porte Fibaro pour sécurité Chauffage
Publié : 07 avr. 2020, 21:04
par Cedric59
Au lieu de lui demander "si" demande de chauffe et si le radiateurs est off et qu'il doit être on Alors on
Maintenant c'est si demande de chauffe radiateur on et si pas demande de chauffe ou temp (ok) alors radiateur Off.
On ne demande plus l'état intermédiaire du Rad il doit s'allumer ou s'éteindre et peu importe dans quel état il est...
C'est correct ?
Code : Tout sélectionner
local temp = 'Température chambre Lihore'
local thermostat_setpoint = 'Thermostat Lihore'
local heating_unit = 'Ventilateur Chauffage Lihore'
local windows_lihore = 'Capteur Fenêtre Lihore'
local hysteresis = 0.5
commandArray = {}
if devicechanged[temp] then
print('temp:'..otherdevices_temperature[temp])
print('thermostat_setpoint:'..otherdevices[thermostat_setpoint])
if tonumber(otherdevices[thermostat_setpoint]) < tonumber(otherdevices_temperature[temp]-hysteresis) or (otherdevices[windows_lihore] == "On") or (otherdevices_temperature[temp] == 0) then
commandArray[heating_unit]='Off'
print("Heating is Off")
elseif tonumber(otherdevices[thermostat_setpoint]) > tonumber(otherdevices_temperature[temp]+hysteresis) then
commandArray[heating_unit]='On'
print("Heating is On")
end
end
return commandArray
J'ai ajouter pour le moment si température = 0 coupe le chauffage comme j'ai des problèmes de temps de perte de réseau
Je vais aussi "essayer" de refaire un script (histoire de s'entrainer) pour gérer les horaires de charge des accu du radiateur pour le moment je le gère avec un Blocky.
Question par rapport à cela est ce que je peux le gérer dans le même script ?
Re: "Résolu"Capteur de porte Fibaro pour sécurité Chauffage
Publié : 07 avr. 2020, 21:30
par vil1driver
Oui,
Si le radiateur est allumé (selon domoticz) alors au besoin on lui dis de s'éteindre
Idem pour lui dire de s'allumer, on regarde si (selon domoticz) il est éteint.
Cela permet de n'envoyez que des ordres utiles et ainsi de ne pas saturer les ondes radio.
Seulement voila, tout est selon domoticz, en gros si, on envoie l'ordre d'arrêt au chauffage, pour domoticz ce dernier est arrêté comme on vient de le lui ordonner.
Mais voila, si jamais l'ordre n'a pas été reçu (beaucoup de possibilités pour que cela arrive)
Pour domoticz, le radiateur est éteint mais en réalité il est allumé.
Mais domoticz ne va pas aller dire à un radiateur supposé éteint de s'arrêter...
Du coups en peu de temps il fait 35°C dans la chambre de ta fille....
Idem dans l'autre sens, il peux faire 5°C de la même façon.
Tu saisi le risque encouru par l'économie de signaux RF ?
Dans la lignée, on a aussi des sondes de température dont les piles rendent l'âme et qui n'indiquent plus rien, comment se comporte alors le script ?
La sonde dont la dernière mise à jour date de 5h indique toujours 19, mais il fait 35 en réalité...
Avant de bien voir les choses dans leur ensemble, fait tes essais dans ta chambre et non celle de ta fille.
----
Si temp = 0 ? Pourquoi ?
Des accu de radiateur ? Kezako ?
Beaucoup de choses sont possibles dans un même script, le tout est de faire au plus simple, de sorte à ne pas s'y perdre (même 1 an après...en relecture )
Re: "Résolu"Capteur de porte Fibaro pour sécurité Chauffage
Publié : 07 avr. 2020, 21:53
par Cedric59
Pour le test dans la chambre de ma fille pas de "stress" elle à 2mois et elle dort encore dans ma chambre
Et vue le confinement ma femme est tous les jours à la maison et moi 2X / semaine pour du télétravail...
Tu saisi le risque encouru par l'économie de signaux RF ? Non pas du tout comme tu le sais je suis un débutant et donc j'apprend à chaque fois que tu me réponds
si temp = 0 : de temps en temps je constate qu'il y à une perte de connexion donc plus de retour de température et cela affiche 0 degrès sur Domoticz... je sais que ce n'est pas top mais c'est en attendant de trouver pourquoi a perte de connection... .
Les accus c'est un radiateur avec des accu "briques réfractaires à accumulation" du coup il se charge la nuit heure creuse" et en fonction du besoin tu peux déterminer le niveau de charge "la puissance du charge des briques" en fonction de la nécessité de chauffe. c'est celui la "
https://www.eibabo.be/fr/glen-dimplex/c ... R2EALw_wcB"