[HELP] power off heating if windows is open, turn back on when it's closed  [Solved]

Easy to use, 100% Lua-based event scripting framework.

Moderator: leecollings

Post Reply
TheCondor
Posts: 78
Joined: Thursday 18 June 2015 10:32
Target OS: Linux
Domoticz version:
Contact:

[HELP] power off heating if windows is open, turn back on when it's closed

Post by TheCondor »

Hi, i have this script running since the past winter and works fine. Essentially when the sensors on the windows or on the door is open, if the external temperature is lower then internal (so i'm in the situation to lost heating from my house) it shut down the heating system (it put the Netatmo thermostato on "away mode" which is equal to set 12 Celsius for in-house temperature and in my condition it never start).
The current config send a notify to our smartphone and tell us "I shut down the heating... when you'll close all remember to turn off "Away mode"".
Now i want to refine a bit the script and let it automate this last step: when everything is closed again -> restore the previus status of Away Mode. Somebody more experienced can help me on that? Thanks since now!!!


Code: Select all

return {
	active = true,
	
	on = {
        devices = {'Sensor window bedroom',
                    'Sensor window bathroom',
                    'Sensor window kitchen'
        }
	},
    execute = function(domoticz, switch)
        if (domoticz.devices('Sensor window bedroom').state == 'Open' or domoticz.devices('Sensor window bathroom').state == 'Open' or domoticz.devices('Sensor window kitchen').state == 'Open') then
            if domoticz.devices('Heat_Away_mode).state ~= 'On' then
                if (domoticz.devices('Temperature outside').temperature <= domoticz.devices('Temperature inside').temperature) then
                    domoticz.devices('Heat_Away_mode').switchOn()
                    domoticz.notify('Heating off for power saving, keep in mind to turn back on', message, domoticz.PRIORITY_NORMAL)
                end
            end
        end
	end
}
Last edited by TheCondor on Friday 06 December 2019 9:26, edited 1 time in total.
User avatar
waaren
Posts: 6028
Joined: Tuesday 03 January 2017 14:18
Target OS: Linux
Domoticz version: Beta
Location: Netherlands
Contact:

Re: [HELP] power off heating if windows is open, turn back on when it's closed

Post by waaren »

TheCondor wrote: Thursday 05 December 2019 16:55 Now i want to refine a bit the script and let it automate this last step: when everything is closed again -> restore the previous status of Away Mode.
Is this what you mean ? If not please explain in more detail what you expect and translate the relevant strings in your code to English.

Code: Select all

return {
    active = true,
    
    on = {
        devices = {'Sensore Camerina Porta',
                    'Sensore Soggiorno Finestra',
                    'Sensore Camera Finestra'
        }
    },
    execute = function(dz, switch)
        if  dz.devices('Sensore Camerina Porta').state == 'Open' or 
            dz.devices('Sensore Soggiorno Finestra').state == 'Open' or 
            dz.devices('Sensore Camera Finestra').state == 'Open'            then
            if dz.devices('Heat_Away_mode).state ~= 'On' then
                if (dz.devices('Temperatura Terrazzo').temperature <= dz.devices('Temperatura Ingresso').temperature) then
                    dz.devices('Heat_Away_mode').switchOn()
                    dz.notify('Riscaldamenti spenti per risparmio energetico, ricordati di riaccenderli manualmente', message, dz.PRIORITY_NORMAL)
                end
            end
        else -- All closed
            dz.devices('Heat_Away_mode').switchOff().checkFirst()
        end
    end
} 
Debian buster, bullseye on RPI-4, Intel NUC.
dz Beta, Z-Wave, RFLink, RFXtrx433e, P1, Youless, Hue, Yeelight, Xiaomi, MQTT
==>> dzVents wiki
TheCondor
Posts: 78
Joined: Thursday 18 June 2015 10:32
Target OS: Linux
Domoticz version:
Contact:

Re: [HELP] power off heating if windows is open, turn back on when it's closed  [Solved]

Post by TheCondor »

waaren wrote: Friday 06 December 2019 0:51
TheCondor wrote: Thursday 05 December 2019 16:55 Now i want to refine a bit the script and let it automate this last step: when everything is closed again -> restore the previous status of Away Mode.
Is this what you mean ? If not please explain in more detail what you expect and translate the relevant strings in your code to English.

Hi, thanks for your kind reply. I edited the first topic with the device name in english. I had in mind something that at first launch check the state of 'Away Mode' and put it in a variable. Then do the check over the inside-ouside temperature and eventually stop heating and when is all closed again restore the previous state (variable) but it will not work. I'll go with your suggest and use the inside-outside temperature compare as the only reference for decide if "away mode" should be on or off. It makes sense. Thanks!
TheCondor
Posts: 78
Joined: Thursday 18 June 2015 10:32
Target OS: Linux
Domoticz version:
Contact:

Re: [HELP] power off heating if windows is open, turn back on when it's closed

Post by TheCondor »

Hi again, i need to add a delay, otherwise every time i open/close a Windows It change the state of 'Away mode' and thermostat going Crazy.

How can i script something likes:

If WindowsSensor Is open for X time the
AwayMode.switch(off)

Thanks
User avatar
waaren
Posts: 6028
Joined: Tuesday 03 January 2017 14:18
Target OS: Linux
Domoticz version: Beta
Location: Netherlands
Contact:

Re: [HELP] power off heating if windows is open, turn back on when it's closed

Post by waaren »

TheCondor wrote: Friday 06 December 2019 20:53 Hi again, i need to add a delay, otherwise every time i open/close a Windows It change the state of 'Away mode' and thermostat going Crazy.
This will add a 5 minute delay before setting 'Away mode' if all windows are closed again within that time frame, the 'Away mode' will not be set.

Code: Select all

return {
    active = true,
    
    on = {
        devices = {'Sensore Camerina Porta',
                    'Sensore Soggiorno Finestra',
                    'Sensore Camera Finestra'
        }
    },
    execute = function(dz, switch)
        if  dz.devices('Sensore Camerina Porta').state == 'Open' or 
            dz.devices('Sensore Soggiorno Finestra').state == 'Open' or 
            dz.devices('Sensore Camera Finestra').state == 'Open'            then
            if dz.devices('Heat_Away_mode).state ~= 'On' then
                if (dz.devices('Temperatura Terrazzo').temperature <= dz.devices('Temperatura Ingresso').temperature) then
                    dz.devices('Heat_Away_mode').switchOn().afterSec(300) -- 5 minute delay before action
                    dz.notify('Riscaldamenti spenti per risparmio energetico, ricordati di riaccenderli manualmente', message, dz.PRIORITY_NORMAL)
                end
            end
        else -- All closed
            dz.devices('Heat_Away_mode').cancelQueuedCommands()
            dz.devices('Heat_Away_mode').switchOff().checkFirst()
        end
    end
} 
Debian buster, bullseye on RPI-4, Intel NUC.
dz Beta, Z-Wave, RFLink, RFXtrx433e, P1, Youless, Hue, Yeelight, Xiaomi, MQTT
==>> dzVents wiki
TheCondor
Posts: 78
Joined: Thursday 18 June 2015 10:32
Target OS: Linux
Domoticz version:
Contact:

Re: [HELP] power off heating if windows is open, turn back on when it's closed

Post by TheCondor »

works exactly as i expect!!! Thanks!!!
TheCondor
Posts: 78
Joined: Thursday 18 June 2015 10:32
Target OS: Linux
Domoticz version:
Contact:

Re: [HELP] power off heating if windows is open, turn back on when it's closed

Post by TheCondor »

i post here the final script, maybe someone could find it useful for its setup:

Basically i have 3 contact sensor on 3 windows and a Netatmo thermostat. Netatmo Away Mode put directly the termostat setpoint at 12 Celsius, it is a current netatmo function.
When any of the three windows is open, the current Away Mode status is checked, if alread On (so setpoint is currently at 12 C, a so low temperature in my house is impossible to reach so the heating system is off for sure) it does nothing.
If instead Away Mode is off, so the heating could be working, it compare the current set-point temperature with the currente in house temperature (provided by the netatmo thermostat itself), only if the first over than the second (set point > current home temp) it shut down the system by turning on Away Mode AFTER 10 minutes.
In this way not every time i open the windows the thermostat is touched, just after a concrete time frame which cause a sensible heating power loss (and $$$).
When the windows are back closed the Away Mode turn off.


Code: Select all

return {
	active = true,
	
	on = {
        devices = {'Sensor Windows 1',
                    'Sensor Windows 2',
                    'Sensor Windows 3'
        }
	},
    execute = function(domoticz, switch)
        if (domoticz.devices('Sensor Windows 1').state == 'Open' or domoticz.devices('Sensor Windows 2').state == 'Open' or domoticz.devices('Sensor Windows 3').state == 'Open') then
            if domoticz.devices('Netatmo Away Mode').state ~= 'On' then
                if (domoticz.devices('Temp External').temperature <= domoticz.devices('Temp Netatmo inside').temperature) and domoticz.devices('Netatmo Set-point').setPoint >= domoticz.devices('Temp Netatmo inside').temperature then
                        domoticz.devices('Netatmo Away Mode').switchOn().afterSec(600)
                end
            end
        else
            domoticz.devices('Netatmo Away Mode').cancelQueuedCommands()
            domoticz.devices('Netatmo Away Mode').switchOff().checkFirst()
        end
    end
}
Post Reply

Who is online

Users browsing this forum: Bing [Bot], NaTuRaL and 1 guest