(résolu)Thermostat sur Domoticz
(résolu)Thermostat sur Domoticz
Bonjour à tous,
J'aurais besoin s'il vous plait de votre aide pour pouvoir gérer le chauffage de la chambre de ma fille grace à Domoticz :
C'est un chauffage à accumulation qui est déjà programmer pour charger la nuit "programmation faites par le biais de Blockly et gérer par un ESP pour donner le contact au contacteur pour la charge..... ."
Ce que je souhaite réaliser c'est de démarrer un ventilateur dans une chambre si la température demandé par le thermostat de Domoticz est supérieur à la température mesuré... .
La température mesuré est reprise par un module température et humidité qui est connecté à un ESP-8266 et qui fonctionne déjà sur Domoticz
Le ventilateur fonctionne déjà aussi en manuel depuis Domoticz et il est gérer par un ESP-8266 également...
Pour cela j'ai récupérer un code sur le net qui je pense est bon dans mon cas mais ..... dans les log j'ai ce résultat...
2020-03-22 16:29:34.009 Error: EventSystem: in Test Th: [string "--..."]:30: attempt to perform arithmetic on field '?' (a string value)
Mon niveau est débutant, j'apprend d'internet et de quelques livres que j'ai acheter pour apprendre les bases... Mais la LUA pour moi reste encore TOUT nouveau, je vois que les possibilités sont infinies mais le chemin sera encore long avant d'aider à mon tour.
Quelqu'un peux m'aider à résoudre mon problème s'il vous plait ?
Merci d'avance à tous.
local temp_only = 'Température chambre Lihore'
local thermostat_setpoint = 'Test thermostat'
local heating_unit = 'Ventilateur Chauffage Lihore'
local hysteresis = 0.5
commandArray = {}
for deviceName,deviceValue in pairs(otherdevices) do
if (deviceName== thermostat_setpoint ) then
if tonumber(deviceValue) < tonumber(otherdevices[temp_only]-hysteresis) then
if (otherdevices[heating_unit] == "On") then
commandArray['SendNotification']='Heating is off'
commandArray[heating_unit]='Off'
print("Heating is Off")
end
elseif tonumber(deviceValue) > tonumber(otherdevices[temp_only]+hysteresis) then
if (otherdevices[heating_unit] == "Off") then
commandArray[heating_unit]='On'
commandArray['SendNotification']='Heating is on'
print("Heating is On")
end
end
end
end
for variableName,variableValue in pairs(uservariables) do
end
return commandArray
J'aurais besoin s'il vous plait de votre aide pour pouvoir gérer le chauffage de la chambre de ma fille grace à Domoticz :
C'est un chauffage à accumulation qui est déjà programmer pour charger la nuit "programmation faites par le biais de Blockly et gérer par un ESP pour donner le contact au contacteur pour la charge..... ."
Ce que je souhaite réaliser c'est de démarrer un ventilateur dans une chambre si la température demandé par le thermostat de Domoticz est supérieur à la température mesuré... .
La température mesuré est reprise par un module température et humidité qui est connecté à un ESP-8266 et qui fonctionne déjà sur Domoticz
Le ventilateur fonctionne déjà aussi en manuel depuis Domoticz et il est gérer par un ESP-8266 également...
Pour cela j'ai récupérer un code sur le net qui je pense est bon dans mon cas mais ..... dans les log j'ai ce résultat...
2020-03-22 16:29:34.009 Error: EventSystem: in Test Th: [string "--..."]:30: attempt to perform arithmetic on field '?' (a string value)
Mon niveau est débutant, j'apprend d'internet et de quelques livres que j'ai acheter pour apprendre les bases... Mais la LUA pour moi reste encore TOUT nouveau, je vois que les possibilités sont infinies mais le chemin sera encore long avant d'aider à mon tour.
Quelqu'un peux m'aider à résoudre mon problème s'il vous plait ?
Merci d'avance à tous.
local temp_only = 'Température chambre Lihore'
local thermostat_setpoint = 'Test thermostat'
local heating_unit = 'Ventilateur Chauffage Lihore'
local hysteresis = 0.5
commandArray = {}
for deviceName,deviceValue in pairs(otherdevices) do
if (deviceName== thermostat_setpoint ) then
if tonumber(deviceValue) < tonumber(otherdevices[temp_only]-hysteresis) then
if (otherdevices[heating_unit] == "On") then
commandArray['SendNotification']='Heating is off'
commandArray[heating_unit]='Off'
print("Heating is Off")
end
elseif tonumber(deviceValue) > tonumber(otherdevices[temp_only]+hysteresis) then
if (otherdevices[heating_unit] == "Off") then
commandArray[heating_unit]='On'
commandArray['SendNotification']='Heating is on'
print("Heating is On")
end
end
end
end
for variableName,variableValue in pairs(uservariables) do
end
return commandArray
Dernière modification par Cedric59 le 26 mars 2020, 19:06, modifié 1 fois.
Débutant sur domoticz
Débutant dans la prog....
Raspberry Pi 3, Fibaro door, ESP8266-01 + carte relais x2, contrôleur Z-wave, sonde de température DHT11
Débutant dans la prog....
Raspberry Pi 3, Fibaro door, ESP8266-01 + carte relais x2, contrôleur Z-wave, sonde de température DHT11
-
denis_brasseur
- Messages : 898
- Inscription : 24 déc. 2018, 17:05
- Localisation : (26)
Re: Thermostat sur Domoticz
2 astuces simples qui peuvent nous aider à t'aider :
- Publie ton code entre les balises adéquates </>
- Indente ton code pour le rendre plus lisible
En cas de message d'erreur, rien de mieux que lire le message d'erreur, pour comprendre l'anomalie.
Apparemment, calcul avec une string value.
2 "calculs" dans ton code
Si otherdevices[temp_only] est un string, alors quel comportement ?.
Rien de mieux que d'afficher l'ensemble des valeurs que tu utilises dans ton code : print(otherdevices[temp_only]).
- Publie ton code entre les balises adéquates </>
- Indente ton code pour le rendre plus lisible
En cas de message d'erreur, rien de mieux que lire le message d'erreur, pour comprendre l'anomalie.
Ton erreur se situe ligne 30, encore faut il que ton code soit complet et entre les bonnes balises pour faire le lien avec la ligne 30.2020-03-22 16:29:34.009 Error: EventSystem: in Test Th: [string "--..."]:30: attempt to perform arithmetic on field '?' (a string value)
Apparemment, calcul avec une string value.
2 "calculs" dans ton code
Code : Tout sélectionner
tonumber(otherdevices[temp_only]-hysteresis)
tonumber(otherdevices[temp_only]+hysteresis)
Rien de mieux que d'afficher l'ensemble des valeurs que tu utilises dans ton code : print(otherdevices[temp_only]).
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Re: Thermostat sur Domoticz
je vais y aller par étapes :
Dans la ligne 30 je n'ai rien de spécifique "voir annexe"
Quand tu dis Indente ton code tu veux dire quoi par là ?
Le code est tel qu'il est implémenter dans Domoticz mais je crois comprendre qu'il y à une erreur ... ? rien d'étonnant....
Le but est d'avoir deux actions différentes si la température mesuré est inférieur à la température demandé inclus l'hystéries le ventilateur se met sur On + et dans le sens inverse si la température mesuré est supérieur à la demandé inclus l'hystéries....=Off du ventile... .
Merci d'avance de ta patience....
Code : Tout sélectionner
local temp_only = 'Température chambre Lihore'
local thermostat_setpoint = 'Test thermostat'
local heating_unit = 'Ventilateur Chauffage Lihore'
local hysteresis = 0.5
commandArray = {}
for deviceName,deviceValue in pairs(otherdevices) do
if (deviceName== thermostat_setpoint ) then
if tonumber(deviceValue) < tonumber(otherdevices[temp_only]-hysteresis) then
if (otherdevices[heating_unit] == "On") then
commandArray['SendNotification']='Heating is off'
commandArray[heating_unit]='Off'
print("Heating is Off")
end
elseif tonumber(deviceValue) > tonumber(otherdevices[temp_only]+hysteresis) then
if (otherdevices[heating_unit] == "Off") then
commandArray[heating_unit]='On'
commandArray['SendNotification']='Heating is on'
print("Heating is On")
end
end
end
end
for variableName,variableValue in pairs(uservariables) do
end
return commandArrayQuand tu dis Indente ton code tu veux dire quoi par là ?
Le code est tel qu'il est implémenter dans Domoticz mais je crois comprendre qu'il y à une erreur ... ? rien d'étonnant....
Le but est d'avoir deux actions différentes si la température mesuré est inférieur à la température demandé inclus l'hystéries le ventilateur se met sur On + et dans le sens inverse si la température mesuré est supérieur à la demandé inclus l'hystéries....=Off du ventile... .
Merci d'avance de ta patience....
- Pièces jointes
-
- Capture d’écran 2020-03-22 à 17.40.00.png (1.24 Mio) Consulté 5962 fois
Débutant sur domoticz
Débutant dans la prog....
Raspberry Pi 3, Fibaro door, ESP8266-01 + carte relais x2, contrôleur Z-wave, sonde de température DHT11
Débutant dans la prog....
Raspberry Pi 3, Fibaro door, ESP8266-01 + carte relais x2, contrôleur Z-wave, sonde de température DHT11
Re: Thermostat sur Domoticz
Si sa peut aider à m'aider je me suis baser sur ce Tuto
https://www.iot4.eu/wiki/index.php/Domo ... thermostat
Merci d'avance de votre aide
https://www.iot4.eu/wiki/index.php/Domo ... thermostat
Merci d'avance de votre aide
Débutant sur domoticz
Débutant dans la prog....
Raspberry Pi 3, Fibaro door, ESP8266-01 + carte relais x2, contrôleur Z-wave, sonde de température DHT11
Débutant dans la prog....
Raspberry Pi 3, Fibaro door, ESP8266-01 + carte relais x2, contrôleur Z-wave, sonde de température DHT11
-
denis_brasseur
- Messages : 898
- Inscription : 24 déc. 2018, 17:05
- Localisation : (26)
Re: Thermostat sur Domoticz
Désactive ces 2 lignes pour commencer :
Ceci n'est pas utile non plus, puisque rien dans la boucle :
Fait egalement un
juste après
Code : Tout sélectionner
commandArray['SendNotification']='Heating is off'Code : Tout sélectionner
for variableName,variableValue in pairs(uservariables) do
endCode : Tout sélectionner
print(otherdevices[temp_only])Code : Tout sélectionner
if (deviceName== thermostat_setpoint) thenPi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Re: Thermostat sur Domoticz
Merci pour ta patience Denis,
il y à du mieux je n'ai plus de message d'érreurs dans les log... je modifie la température de consigne sur le thermostat virtuel de Domoticz mais le statut du ventilateur lui ne change pas...
Il y à une étape que je n'ai pas fait... que veux tu dire par fait un
juste après
Ou je dois le faire ?
Mon code ressemble à cela maintenant
Si j'ai enlever la notification pour off est ce que je ne dois pas le faire pour On ?
Merci d'avance pour ton aide
il y à du mieux je n'ai plus de message d'érreurs dans les log... je modifie la température de consigne sur le thermostat virtuel de Domoticz mais le statut du ventilateur lui ne change pas...
Il y à une étape que je n'ai pas fait... que veux tu dire par fait un
Code : Tout sélectionner
print(otherdevices[temp_only])Code : Tout sélectionner
if (deviceName== thermostat_setpoint) thenMon code ressemble à cela maintenant
Code : Tout sélectionner
local temp_only = 'Température chambre Lihore'
local thermostat_setpoint = 'Test thermostat'
local heating_unit = 'Ventilateur Chauffage Lihore'
local hysteresis = 0.5
commandArray = {}
if (deviceName== thermostat_setpoint ) then
if tonumber(deviceValue) < tonumber(otherdevices[temp_only]-hysteresis) then
if (otherdevices[heating_unit] == "On") then
commandArray[heating_unit]='Off'
print("Heating is Off")
end
elseif tonumber(deviceValue) > tonumber(otherdevices[temp_only]+hysteresis) then
if (otherdevices[heating_unit] == "Off") then
commandArray[heating_unit]='On'
commandArray['SendNotification']='Heating is on'
print("Heating is On")
end
end
end
return commandArrayMerci d'avance pour ton aide
Débutant sur domoticz
Débutant dans la prog....
Raspberry Pi 3, Fibaro door, ESP8266-01 + carte relais x2, contrôleur Z-wave, sonde de température DHT11
Débutant dans la prog....
Raspberry Pi 3, Fibaro door, ESP8266-01 + carte relais x2, contrôleur Z-wave, sonde de température DHT11
-
denis_brasseur
- Messages : 898
- Inscription : 24 déc. 2018, 17:05
- Localisation : (26)
Re: Thermostat sur Domoticz
Tu as retiré trop de chose de ton code initial, cela ne peux plus fonctionner maintenant.
Question essentielle : quel est le déclencheur de ton script, le changement d'état du thermostat 'Test thermostat' ou bien le changement d'état de la température mesurée 'Température chambre Lihore' ?
Teste ceci dans l'immédiat afin d'afficher les valeurs sur lesquelles tu fais tes tests.
Ta méthode de boucler sur l'ensemble des devices est certainement perfectible.
Dans l'état, l’exécution du script se fera sur le changement de la temperature.
Question essentielle : quel est le déclencheur de ton script, le changement d'état du thermostat 'Test thermostat' ou bien le changement d'état de la température mesurée 'Température chambre Lihore' ?
Teste ceci dans l'immédiat afin d'afficher les valeurs sur lesquelles tu fais tes tests.
Ta méthode de boucler sur l'ensemble des devices est certainement perfectible.
Dans l'état, l’exécution du script se fera sur le changement de la temperature.
Code : Tout sélectionner
local temp_only = 'Température chambre Lihore'
local thermostat_setpoint = 'Test thermostat'
local heating_unit = 'Ventilateur Chauffage Lihore'
local hysteresis = 0.5
commandArray = {}
if devicechanged[temp_only] then
--for deviceName,deviceValue in pairs(otherdevices) do
--if (deviceName== thermostat_setpoint) then
print('temp_only:'..otherdevices[temp_only])
print('thermostat_setpoint:'..otherdevices[thermostat_setpoint])
if tonumber(deviceValue) < tonumber(otherdevices[temp_only]-hysteresis) then
if (otherdevices[heating_unit] == "On") then
--commandArray['SendNotification']='Heating is off'
commandArray[heating_unit]='Off'
print("Heating is Off")
end
elseif tonumber(deviceValue) > tonumber(otherdevices[temp_only]+hysteresis) then
if (otherdevices[heating_unit] == "Off") then
commandArray[heating_unit]='On'
--commandArray['SendNotification']='Heating is on'
print("Heating is On")
end
end
--end
end
return commandArrayPi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Re: Thermostat sur Domoticz
Denis,
ce que je veux faire c'est mettre sur on le ventilateur chambre Lihore quand la température du thermostat qui est demandé est supérieur à la température mesuré et l'inverse quand la température est sur 0.
Est le ventilateur doit ce mettre sur Off dès qu'il à éteint la température demandé + l'histeris.
Le code que tu m'as donné ne fais aucune action sur le ventilateur.
Merci de ton aide Denis.... .
ce que je veux faire c'est mettre sur on le ventilateur chambre Lihore quand la température du thermostat qui est demandé est supérieur à la température mesuré et l'inverse quand la température est sur 0.
Est le ventilateur doit ce mettre sur Off dès qu'il à éteint la température demandé + l'histeris.
Le code que tu m'as donné ne fais aucune action sur le ventilateur.
Merci de ton aide Denis.... .
Débutant sur domoticz
Débutant dans la prog....
Raspberry Pi 3, Fibaro door, ESP8266-01 + carte relais x2, contrôleur Z-wave, sonde de température DHT11
Débutant dans la prog....
Raspberry Pi 3, Fibaro door, ESP8266-01 + carte relais x2, contrôleur Z-wave, sonde de température DHT11
-
denis_brasseur
- Messages : 898
- Inscription : 24 déc. 2018, 17:05
- Localisation : (26)
Re: Thermostat sur Domoticz
Cedric,
j'ai inseré dans le code précédent les log ci dessous :
A chaque changement de la valeur de la température de la sonde 'Température chambre Lihore', le log doit te retourner les valeurs de cette sonde et de 'Test thermostat'.
Qu'as tu dans tes logs ?
j'ai inseré dans le code précédent les log ci dessous :
Code : Tout sélectionner
print('temp_only:'..otherdevices[temp_only])
print('thermostat_setpoint:'..otherdevices[thermostat_setpoint])Qu'as tu dans tes logs ?
temp_only:xxxxx
thermostat_setpoint:yyyyy
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Re: Thermostat sur Domoticz
Bonjour Denis,
voici ce que j'ai dans les log
Avec le méssage d'erreur que j'ai "attempt to perform arithmetic on field" je me suis demandé si le problème ne venait pas des infos collectées par la sonde de température du coup j'ai essayer en changeant a source de l'information et j'ai pris juste la fonction température de la météo et j'ai eu le même méssage d'érreur....
voici ce que j'ai dans les log
Avec le méssage d'erreur que j'ai "attempt to perform arithmetic on field" je me suis demandé si le problème ne venait pas des infos collectées par la sonde de température du coup j'ai essayer en changeant a source de l'information et j'ai pris juste la fonction température de la météo et j'ai eu le même méssage d'érreur....
Code : Tout sélectionner
2020-03-25 07:11:26.467 Status: EventSystem: reset all events...
2020-03-25 07:11:31.375 Status: EventSystem: reset all events...
2020-03-25 07:11:56.265 MQTT: Topic: domoticz/in, Message: {"command":"addlogmessage","message":"Connexion MQTT de Température & Humidité réussi sous référence technique : ESP8266Client-7fa6."}
2020-03-25 07:11:56.365 MQTT: Topic: domoticz/in, Message: {"type":"command","param":"udevice","idx":8,"nvalue":0,"svalue":"22.80;37.00;0"}
2020-03-25 07:11:56.265 Status: MQTT MSG: Connexion MQTT de Température & Humidité réussi sous référence technique : ESP8266Client-7fa6.
2020-03-25 07:11:56.376 Status: LUA: temp_only:22.80;37.00;0
2020-03-25 07:11:56.376 Status: LUA: thermostat_setpoint:27.00
2020-03-25 07:11:56.376 Error: EventSystem: in Test Th: [string "local temp_only = 'Température chambre Lihor..."]:15: attempt to perform arithmetic on field '?' (a string value)
2020-03-25 07:13:17.954 (Température) Thermostat (Test thermostat)
2020-03-25 07:13:49.433 (Température) Thermostat (Test thermostat)
2020-03-25 07:14:01.302 MQTT: Topic: domoticz/in, Message: {"command":"addlogmessage","message":"Connexion MQTT de Température & Humidité réussi sous référence technique : ESP8266Client-232f."}
2020-03-25 07:14:01.403 MQTT: Topic: domoticz/in, Message: {"type":"command","param":"udevice","idx":8,"nvalue":0,"svalue":"23.10;36.00;0"}
2020-03-25 07:14:01.302 Status: MQTT MSG: Connexion MQTT de Température & Humidité réussi sous référence technique : ESP8266Client-232f.
2020-03-25 07:14:01.413 Status: LUA: temp_only:23.10;36.00;0
2020-03-25 07:14:01.414 Status: LUA: thermostat_setpoint:25.00
2020-03-25 07:14:01.414 Error: EventSystem: in Test Th: [string "local temp_only = 'Température chambre Lihor..."]:15: attempt to perform arithmetic on field '?' (a string value)Débutant sur domoticz
Débutant dans la prog....
Raspberry Pi 3, Fibaro door, ESP8266-01 + carte relais x2, contrôleur Z-wave, sonde de température DHT11
Débutant dans la prog....
Raspberry Pi 3, Fibaro door, ESP8266-01 + carte relais x2, contrôleur Z-wave, sonde de température DHT11