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

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
garycooper
Messages : 453
Inscription : 07 août 2017, 23:58

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

Message 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.
garycooper
Messages : 453
Inscription : 07 août 2017, 23:58

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

Message 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')
Neutrino
Messages : 2440
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

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

Message par Neutrino »

tempSalon.Temperature est pas bon
Il n'y a pas de majuscule à temperature.
https://www.domoticz.com/wiki/DzVents:_ ... ure_sensor
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
garycooper
Messages : 453
Inscription : 07 août 2017, 23:58

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

Message 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
Keros
Messages : 5261
Inscription : 23 juil. 2019, 20:57

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

Message par Keros »

Tu n'aurais pas deux dispositifs avec le même nom ?
garycooper
Messages : 453
Inscription : 07 août 2017, 23:58

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

Message par garycooper »

Non, les 3 devices sont bien les seuls avec ces noms.
Neutrino
Messages : 2440
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

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

Message par Neutrino »

Pas d'accolades, c'est bien des parenthèses qu'il faut.
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
garycooper
Messages : 453
Inscription : 07 août 2017, 23:58

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

Message 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 ?
Neutrino
Messages : 2440
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

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

Message par Neutrino »

domoticz.devices(fenetre).state
C'est pas bon puisque tu définis avant
local fenetre = domoticz.devices('Porte fenetre salon')
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
garycooper
Messages : 453
Inscription : 07 août 2017, 23:58

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

Message 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
}
Dernière modification par garycooper le 19 déc. 2022, 23:06, modifié 1 fois.
Répondre