Page 1 sur 2

Chauffage et détection d'ouverture de fenêtre ?

Publié : 29 sept. 2022, 12:51
par garycooper
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.

Re: Chauffage et détection d'ouverture de fenêtre ?

Publié : 17 déc. 2022, 22:21
par garycooper
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 :

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
}
J'ai l'erreur suivante
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 ?

Publié : 17 déc. 2022, 22:55
par Neutrino
tempSalon.Temperature est pas bon
Il n'y a pas de majuscule à temperature.
https://www.domoticz.com/wiki/DzVents:_ ... ure_sensor

Re: Chauffage et détection d'ouverture de fenêtre ?

Publié : 18 déc. 2022, 09:09
par garycooper
Merci Neutrino, j'ai corrigé. Par contre j'ai deux autres messages d'erreur :
2022-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
et
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
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.

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 ?

Publié : 18 déc. 2022, 09:18
par Keros
Tu n'aurais pas deux dispositifs avec le même nom ?

Re: Chauffage et détection d'ouverture de fenêtre ?

Publié : 18 déc. 2022, 09:52
par garycooper
Non, les 3 devices sont bien les seuls avec ces noms.

Re: Chauffage et détection d'ouverture de fenêtre ?

Publié : 18 déc. 2022, 10:35
par Neutrino
Pas d'accolades, c'est bien des parenthèses qu'il faut.

Re: Chauffage et détection d'ouverture de fenêtre ?

Publié : 18 déc. 2022, 10:42
par garycooper
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 ?

Re: Chauffage et détection d'ouverture de fenêtre ?

Publié : 18 déc. 2022, 11:20
par Neutrino
domoticz.devices(fenetre).state
C'est pas bon puisque tu définis avant
local fenetre = domoticz.devices('Porte fenetre salon')

Re: Chauffage et détection d'ouverture de fenêtre ?

Publié : 18 déc. 2022, 11:41
par garycooper
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
}