Chauffage et détection d'ouverture de fenêtre ?
-
garycooper
- Messages : 453
- Inscription : 07 août 2017, 23:58
Chauffage et détection d'ouverture de fenêtre ?
Bonjour à tous, les nouveaux radiateurs possèdent une fonction "détection fenêtre ou porte ouverte". A priori, lorsqu'il est identifié une chute de température brutale (baisse de 2°C en 1 ou 2 minute), le chauffage s'arrête automatiquement pour ne pas chauffer inutilement les ailes des oiseaux. Est-ce que quelqu'un aurait déjà bâti ce genre de script plutôt que de recourir à une détection d'ouverture par capteur de contact ?
Mes chauffages sont gérés par l'excellent script PID mais j'aurais souhaité pouvoir le compléter à l'aide de cette fonction.
Mes chauffages sont gérés par l'excellent script PID mais j'aurais souhaité pouvoir le compléter à l'aide de cette fonction.
-
garycooper
- Messages : 453
- Inscription : 07 août 2017, 23:58
Re: Chauffage et détection d'ouverture de fenêtre ?
Je me suis lancé pour essayer de faire un script DZvents qui comparerait la valeur de la température de la pièce avec la dernière température mesurée. Si la température a baissé de plus 0,6°C en 1 minute, alors j'en déduis que la porte fenêtre est ouverte. J'ai essayé de faire un script en DZvents grâce à des exemples trouvés sur le net mais ça n'a pas l'air de fonctionner ...
Voilà ce que j'ai mis :
J'ai l'erreur suivante
Voilà ce que j'ai mis :
Code : Tout sélectionner
return
{
on =
{
timer = {'every 1 minutes'}
},
data =
{
previousTemperature = { initial = 21 }
},
execute = function(domoticz)
local tempSalon = domoticz.devices('Salon')
local tempExt = domoticz.devices('Exterieur')
local fenetre = domoticz.devices('Porte fenetre salon')
if ((tempSalon.Temperature) - (domoticz.data.previousTemperature)) <= 0.6 and domoticz.devices(fenetre).state == 'Off' then
-- la temperature a baisse donc la porte fenetre est ouverte
domoticz.devices('Porte fenetre salon').switchOn()
domoticz.notify('Hey!', 'La porte fenetre du salon est ouverte !',
domoticz.PRIORITY_NORMAL)
end
if (tempSalon.Temperature > domoticz.data.previousTemperature) and domoticz.devices(fenetre).state == 'On' then
-- la temperature est remontee donc la fenetre est fermee
domoticz.devices('Porte fenetre salon').switchOff()
end
-- store current value for next cycle
domoticz.data.previousTemperature = tempSalon.Temperature
end
}2022-12-17 22:20:00.436 Error: dzVents: Error: (3.1.8) An error occurred when calling event handler test
2022-12-17 22:20:00.436 Error: dzVents: Error: (3.1.8) /home/naspi/domoticz/scripts/dzVents/scripts/test.lua:16: attempt to perform arithmetic on a nil value (field 'Temperature')
Re: Chauffage et détection d'ouverture de fenêtre ?
tempSalon.Temperature est pas bon
Il n'y a pas de majuscule à temperature.
https://www.domoticz.com/wiki/DzVents:_ ... ure_sensor
Il n'y a pas de majuscule à temperature.
https://www.domoticz.com/wiki/DzVents:_ ... ure_sensor
-
garycooper
- Messages : 453
- Inscription : 07 août 2017, 23:58
Re: Chauffage et détection d'ouverture de fenêtre ?
Merci Neutrino, j'ai corrigé. Par contre j'ai deux autres messages d'erreur :
J'ai essayé de remplacer "local tempSalon = domoticz.devices('Salon')" par "local tempSalon = {'Salon'}" mais cela ne change rien
La température du salon est donnée par un ds18b20 tandis que la température extérieure vient d'une API internet est et de type "temp+humidité+baromètre". Je ne sais pas si ça a un impact
et2022-12-18 09:05:00.337 Error: dzVents: Error: (3.1.8) There is no device with that name or id: table: 0xa0bbd568
2022-12-18 09:05:00.337 Error: dzVents: Error: (3.1.8) An error occurred when calling event handler test
2022-12-18 09:05:00.337 Error: dzVents: Error: (3.1.8) /home/naspi/domoticz/scripts/dzVents/scripts/test.lua:16: attempt to index a nil value
Je pense que ça vient de la déclaration des capteurs de température mais je ne vois pas comment le faire. Il n'y a pas d'erreur de frappe dans les noms des capteurs de temperature.2022-12-18 09:07:00.368 Error: dzVents: Error: (3.1.8) There is no device with that name or id: table: 0x9e929680
2022-12-18 09:07:00.368 Error: dzVents: Error: (3.1.8) An error occurred when calling event handler test
2022-12-18 09:07:00.368 Error: dzVents: Error: (3.1.8) /home/naspi/domoticz/scripts/dzVents/scripts/test.lua:16: attempt to index a nil value
J'ai essayé de remplacer "local tempSalon = domoticz.devices('Salon')" par "local tempSalon = {'Salon'}" mais cela ne change rien
La température du salon est donnée par un ds18b20 tandis que la température extérieure vient d'une API internet est et de type "temp+humidité+baromètre". Je ne sais pas si ça a un impact
Re: Chauffage et détection d'ouverture de fenêtre ?
Tu n'aurais pas deux dispositifs avec le même nom ?
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
-
garycooper
- Messages : 453
- Inscription : 07 août 2017, 23:58
Re: Chauffage et détection d'ouverture de fenêtre ?
Non, les 3 devices sont bien les seuls avec ces noms.
Re: Chauffage et détection d'ouverture de fenêtre ?
Pas d'accolades, c'est bien des parenthèses qu'il faut.
-
garycooper
- Messages : 453
- Inscription : 07 août 2017, 23:58
Re: Chauffage et détection d'ouverture de fenêtre ?
Merci pour la précision. Malheureusement ça ne vient pas de là, à priori; puisque j'ai toujours la même erreur.
Il n'y a pas de variable à créer ?
Il n'y a pas de variable à créer ?
Re: Chauffage et détection d'ouverture de fenêtre ?
domoticz.devices(fenetre).state
C'est pas bon puisque tu définis avant
local fenetre = domoticz.devices('Porte fenetre salon')
C'est pas bon puisque tu définis avant
local fenetre = domoticz.devices('Porte fenetre salon')
-
garycooper
- Messages : 453
- Inscription : 07 août 2017, 23:58
Re: Chauffage et détection d'ouverture de fenêtre ?
OK, du coup j'ai modifié mon script et ça semble fonctionner. A tester en réel maintenant
Code : Tout sélectionner
return
{
on =
{
timer = {'every 1 minutes'}
},
data =
{
previousTemperature = { initial = 21 }
},
execute = function(domoticz)
local tempSalon = domoticz.devices('Salon')
local tempExt = domoticz.devices('Exterieur')
local fenetre = domoticz.devices('Porte fenetre salon')
if ((domoticz.data.previousTemperature) - (domoticz.devices('Salon').temperature)) >= 0.6 and domoticz.devices('Porte fenetre salon').state == 'Off' then
-- la temperature a baisse donc la porte fenetre est ouverte
domoticz.devices('Porte fenetre salon').switchOn()
domoticz.notify('Hey!', 'La porte fenetre du salon est ouverte !',
domoticz.PRIORITY_NORMAL)
end
if ((domoticz.devices('Salon').temperature) > domoticz.data.previousTemperature) and domoticz.devices('Porte fenetre salon').state == 'On' then
-- la temperature est remontee donc la fenetre est fermee
domoticz.devices('Porte fenetre salon').switchOff()
end
-- store current value for next cycle
domoticz.data.previousTemperature = tempSalon.temperature
end
}
Dernière modification par garycooper le 19 déc. 2022, 23:06, modifié 1 fois.