Lua script for controlling humidity in the bathroom Topic is solved

Moderator: leecollings

Hendrik
Posts: 18
Joined: Saturday 04 January 2014 20:20
Target OS: Raspberry Pi / ODroid
Domoticz version:
Location: Netherlands
Contact:

Re: Lua script for controlling humidity in the bathroom

Post by Hendrik »

dannybloe wrote:I have the Aeon Multi Sensor (usb powered) hanging on the ceiling of the bathroom and a zwave plug connected to the ventilator.

(I was hoping I could use the sensor's motion sensor as well for controlling the light but it doesn't detect movement when you are in the shower)
You can set the time, the senosor is on, when it see motion, the sensor stay on for .. minutes
how can i make easely the same lua script, but then with motion
i would alse switch the vent on time, my vent has two speed levels
i would set the low speed on time, and the high speed with this script, is this possible in lua?
CubieTruck with Domoticz
RfxTrx 433Mhz Usb, Rfx Sensor, Z-Wave
Slave Raspberry Pi with Domoticz, Piface, P1 usb
Wirehead
Posts: 18
Joined: Saturday 22 November 2014 8:02
Target OS: Linux
Domoticz version:
Contact:

Re: Lua script for controlling humidity in the bathroom

Post by Wirehead »

I added a variable

Code: Select all

HEAT_NAME = 'Badkamer - verwarming'
Then on line 164 I added:

Code: Select all

commandArray[HEAT_NAME] = 'Off'
This should take care of turning off the bathroom heating as well, right? :)
I have no need for it to turn it on. It's usually on by timer :) - but keeping it on until humidity has dropped helps a great deal with getting the humidity out.

Edit: worked like a charm.. The notifications are a nice touch (using Prowl here) :)
The maximum time a fan could run, would be approximately SAMPLE_INTERVAL x FAN_MAX_TIME. So if the interval is 5; and fan_max_time is 24. One could have his fan running 5x24 = 120 minutes ;)

Edit2: I also liked to know in the notification at what level the fan/heat was turned off; so I changed the "turning off the ventilator" notification to:

Code: Select all

msg = msg .. '\nTurning off the ventilator at level ' .. current .. '#0'
floris74
Posts: 75
Joined: Sunday 30 November 2014 8:41
Target OS: Raspberry Pi / ODroid
Domoticz version:
Location: Hoorn, Netherlands
Contact:

Re: Lua script for controlling humidity in the bathroom

Post by floris74 »

Hi,
it looks like the perfect script in a situation when you have 1 fan for 1 room. I have 1 fan for more then one room; bathroom, toilet, and kitchen. Can i use this script for this: when i turn on my fan (manually/blockly)when iḿ cooking for couple of hours and then turn of the fan (manually/blockly). Or will your script turn of the fan after a maximum time?

Floris
webster
Posts: 15
Joined: Saturday 13 December 2014 22:16
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Lua script for controlling humidity in the bathroom

Post by webster »

This script runs the fan for a max time and then turns the fan off

i use this script and it's works perfect you could extend the max time so the fan will run longer
RPI B+
RPI 2
Fibaro motion sensors , Philips Hue, Z-Wave dimmers, Eneco Toon
Honeywell Evohome 1-Wire Wifi sensors
dannybloe
Posts: 1355
Joined: Friday 29 August 2014 11:26
Target OS: Raspberry Pi / ODroid
Domoticz version:
Location: Ermelo
Contact:

Re: Lua script for controlling humidity in the bathroom

Post by dannybloe »

Hendrik wrote:You can set the time, the senosor is on, when it see motion, the sensor stay on for .. minutes
The problem is that I don't want an on-time that is long. Just half a minute or so. That doesn't work when taking a shower since that usually takes longer.
Hendrik wrote:how can i make easely the same lua script, but then with motion
i would alse switch the vent on time, my vent has two speed levels
i would set the low speed on time, and the high speed with this script, is this possible in lua?
I'm not sure I understand you correctly. But you can adapt the script that it checks if the ventilator is already on (at that lower speed) and then initiate the high-speed.
But why would you want to turn it on if there is no humidity-rise in the first place?

I would not use this script with variable speed though.. My idea is to lower the humidity as fast as possible then turn off. No need then to use different speeds.
Unless of course the ventilator is not for the bathroom alone.
Creator dzVents - RPi3, loads of zwave devices, esp8266, evohome.
dannybloe
Posts: 1355
Joined: Friday 29 August 2014 11:26
Target OS: Raspberry Pi / ODroid
Domoticz version:
Location: Ermelo
Contact:

Re: Lua script for controlling humidity in the bathroom

Post by dannybloe »

floris74 wrote:Hi,
it looks like the perfect script in a situation when you have 1 fan for 1 room. I have 1 fan for more then one room; bathroom, toilet, and kitchen. Can i use this script for this: when i turn on my fan (manually/blockly)when iḿ cooking for couple of hours and then turn of the fan (manually/blockly). Or will your script turn of the fan after a maximum time?
Yes you can. I had something like that before when it only started the de-humid program when the ventilator was not already on. I changed that later on so that I can turn the ventilator on manually in anticipation (to make sure the mirrors are not damp because the script has a start-delay of a couple of minutes). The problem by turning on the vents earlier is that it sucks warm air away so I never turn on the switch too early.

But you can adapt the script:

Code: Select all

if (otherdevices[FAN_NAME]=='Off' or (otherdevices[FAN_NAME]=='On' and fanFollowsProgram==0)) then
This line detects if the fan is on but not due to the de-humidify program (fanFollowsProgram == 0). If you change it to:

Code: Select all

if (otherdevices[FAN_NAME]=='Off') then
Then the program only starts if the fan isn't already on.
Creator dzVents - RPi3, loads of zwave devices, esp8266, evohome.
dannybloe
Posts: 1355
Joined: Friday 29 August 2014 11:26
Target OS: Raspberry Pi / ODroid
Domoticz version:
Location: Ermelo
Contact:

Re: Lua script for controlling humidity in the bathroom

Post by dannybloe »

Wirehead wrote:I added a variable

Code: Select all

HEAT_NAME = 'Badkamer - verwarming'
Then on line 164 I added:

Code: Select all

commandArray[HEAT_NAME] = 'Off'
This should take care of turning off the bathroom heating as well, right? :)
I have no need for it to turn it on. It's usually on by timer :) - but keeping it on until humidity has dropped helps a great deal with getting the humidity out.
Yup. That could make sense. I think though that you would see a (small) rise in humidity as soon as the bathroom cools down (cold air can hold less humidity than warm air so the percentage will rise). And... now that I think of it... you do suck all the heat out of the room when the ventilator is turning.. maybe not so good idea energy-wise?
But.. the proof of the pudding is in the eating: try it with and without the heater and check the curves :)
Creator dzVents - RPi3, loads of zwave devices, esp8266, evohome.
dannybloe
Posts: 1355
Joined: Friday 29 August 2014 11:26
Target OS: Raspberry Pi / ODroid
Domoticz version:
Location: Ermelo
Contact:

Re: Lua script for controlling humidity in the bathroom

Post by dannybloe »

webster wrote:This script runs the fan for a max time and then turns the fan off

i use this script and it's works perfect you could extend the max time so the fan will run longer
Of course the max-time in the script is there for when the target humidity level isn't reached. But ideally it should reach it. I have had situations where multiple people took a shower in a sequence while at the same time the heater in the bathroom was turned off due to a thermostat cv-program. So the temperature was lower when everybody was done. That means that relative humidity is always higher. In that situation it just turned off after the max-time.
Creator dzVents - RPi3, loads of zwave devices, esp8266, evohome.
dannybloe
Posts: 1355
Joined: Friday 29 August 2014 11:26
Target OS: Raspberry Pi / ODroid
Domoticz version:
Location: Ermelo
Contact:

Re: Lua script for controlling humidity in the bathroom

Post by dannybloe »

Wirehead wrote: The maximum time a fan could run, would be approximately SAMPLE_INTERVAL x FAN_MAX_TIME. So if the interval is 5; and fan_max_time is 24. One could have his fan running 5x24 = 120 minutes ;)
Yes, that is correct:

Code: Select all

FAN_MAX_TIME = 24                   --  maximum amount of sample cycles the fan can be on,
I deliberately control this in the script because the counter is reset as soon as a new humidity increase is detected. In that case it starts the max time count-down again.

Code: Select all

 if (delta >= FAN_DELTA_TRIGGER) then
    -- ok, there is another FAN_DELTA_TRIGGER rise in humidity
    -- when this happen we reset the fanMaxTimer to a new count down
    -- because we have to ventilate a bit longer due to the extra humidity
    print('Another large increase detected, resetting max timer. Delta: ' .. delta)
    fanMaxTimer = FAN_MAX_TIME
end
Creator dzVents - RPi3, loads of zwave devices, esp8266, evohome.
floris74
Posts: 75
Joined: Sunday 30 November 2014 8:41
Target OS: Raspberry Pi / ODroid
Domoticz version:
Location: Hoorn, Netherlands
Contact:

Re: Lua script for controlling humidity in the bathroom

Post by floris74 »

Hi, thanks. but i've now the next error in my log:
2014-12-30 14:52:00 Error: ...loris/domoticz/scripts/lua/script_time_humidity_huis.lua:111: ')' expected near 'then'

worked it out; changed it into;
if (otherdevices[FAN_NAME]=='Off' and fanFollowsProgram==0) then
(i guess this is now correct??)
edit; i think i'm gonna have a problem when there is somebody is going to shower at the end of my Fan stand at the end of coocking. maybe i'll turn it back to the original line...)
dannybloe wrote:
Yes you can. I had something like that before when it only started the de-humid program when the ventilator was not already on. I changed that later on so that I can turn the ventilator on manually in anticipation (to make sure the mirrors are not damp because the script has a start-delay of a couple of minutes). The problem by turning on the vents earlier is that it sucks warm air away so I never turn on the switch too early.

But you can adapt the script:

Code: Select all

if (otherdevices[FAN_NAME]=='Off' or (otherdevices[FAN_NAME]=='On' and fanFollowsProgram==0)) then
This line detects if the fan is on but not due to the de-humidify program (fanFollowsProgram == 0). If you change it to:

Code: Select all

if (otherdevices[FAN_NAME]=='Off') then
Then the program only starts if the fan isn't already on.
dannybloe
Posts: 1355
Joined: Friday 29 August 2014 11:26
Target OS: Raspberry Pi / ODroid
Domoticz version:
Location: Ermelo
Contact:

Re: Lua script for controlling humidity in the bathroom

Post by dannybloe »

floris74 wrote:Hi, thanks. but i've now the next error in my log:
2014-12-30 14:52:00 Error: ...loris/domoticz/scripts/lua/script_time_humidity_huis.lua:111: ')' expected near 'then'

worked it out; changed it into;
if (otherdevices[FAN_NAME]=='Off' and fanFollowsProgram==0) then
(i guess this is now correct??)
I don't think you need that last part. Are you sure you pasted the code correctly? It seems you forgot a ) or you removed to much.
Creator dzVents - RPi3, loads of zwave devices, esp8266, evohome.
floris74
Posts: 75
Joined: Sunday 30 November 2014 8:41
Target OS: Raspberry Pi / ODroid
Domoticz version:
Location: Hoorn, Netherlands
Contact:

Re: Lua script for controlling humidity in the bathroom

Post by floris74 »

i see it now, i missed the )
thanks! and thank you very much for this great script. i guess iḿ going to use it in my garage also, after a day surfing all my wet stuff isn't good for my garage. I only don't know if the difference in humbelty is big enough though.

FLoris
Hendrik
Posts: 18
Joined: Saturday 04 January 2014 20:20
Target OS: Raspberry Pi / ODroid
Domoticz version:
Location: Netherlands
Contact:

Re: Lua script for controlling humidity in the bathroom

Post by Hendrik »

I have this script tested on my testPi, works great
now i moved it to my master, with the same variables and it didn't work
this is the reading of my sensor:
Badkamer Z 2015-01-01 10:37:54 27.1;25;1
on my testPi this works, but on my masterPi it gives the following error:
current is 0 or nil. Skipping this reading
When i try it with another sensor, with te following reading:
Badkamer 2015-01-01 10:38:32 21.0;66;1
it works like a charm.
what do i wrong with this???
CubieTruck with Domoticz
RfxTrx 433Mhz Usb, Rfx Sensor, Z-Wave
Slave Raspberry Pi with Domoticz, Piface, P1 usb
dannybloe
Posts: 1355
Joined: Friday 29 August 2014 11:26
Target OS: Raspberry Pi / ODroid
Domoticz version:
Location: Ermelo
Contact:

Re: Lua script for controlling humidity in the bathroom

Post by dannybloe »

Interesting... looks like it doesn't get the humidity from the sensor. So this is causing problems: otherdevices_humidity[SENSOR_NAME]. Are you really sure that SENSOR_NAME is set properly? I see "Badkamer" and "Badkamer Z".
Creator dzVents - RPi3, loads of zwave devices, esp8266, evohome.
Hendrik
Posts: 18
Joined: Saturday 04 January 2014 20:20
Target OS: Raspberry Pi / ODroid
Domoticz version:
Location: Netherlands
Contact:

Re: Lua script for controlling humidity in the bathroom

Post by Hendrik »

the names are good, from the sensor "Badkamer" the readings are good (these sensor is read by the DomoticzmasterPi)
and the script works well
and from the sensor "Badkamer Z" they are not good.
the sensor "Badkamer Z' is reading with my DomoticzSlavePi, this is a Z-wave sensor.
I receive these data on my master pi, but when i set this sensor, the script doesn't works

for now i run the script on my domoticzslave Pi, it works good
now i set a virtual device on and of, and read this on my DomoticzmasterPi, and with this device, i set the fan on and of
CubieTruck with Domoticz
RfxTrx 433Mhz Usb, Rfx Sensor, Z-Wave
Slave Raspberry Pi with Domoticz, Piface, P1 usb
dannybloe
Posts: 1355
Joined: Friday 29 August 2014 11:26
Target OS: Raspberry Pi / ODroid
Domoticz version:
Location: Ermelo
Contact:

Re: Lua script for controlling humidity in the bathroom

Post by dannybloe »

Still looks like a zwave or domoticz problem. Not the script's. Maybe the sensor config is different. I'd create some debug scripts to see what is in the various device collections passed to the lua scripts.
Creator dzVents - RPi3, loads of zwave devices, esp8266, evohome.
Wirehead
Posts: 18
Joined: Saturday 22 November 2014 8:02
Target OS: Linux
Domoticz version:
Contact:

Re: Lua script for controlling humidity in the bathroom

Post by Wirehead »

dannybloe wrote: Yup. That could make sense. I think though that you would see a (small) rise in humidity as soon as the bathroom cools down (cold air can hold less humidity than warm air so the percentage will rise). And... now that I think of it... you do suck all the heat out of the room when the ventilator is turning.. maybe not so good idea energy-wise?
But.. the proof of the pudding is in the eating: try it with and without the heater and check the curves :)
Well, that was the idea: warm air -> more moisture in it = keep heating "on" until humidity is gone. This way, it won't condense on the colder walls/windows. In my setup; the heating is adequate (i.e. when the ventilation is on, the temperature doesn't drop - this could be because dryer air is easier to heat).

It really works like a charm, the "reset counter on humidity rise" is also a nice touch when somebody pops in to the shower after you. There's not much to improve in this script :D
Skippiemanz
Posts: 230
Joined: Sunday 14 July 2013 20:21
Target OS: Linux
Domoticz version: 4.10233
Location: Alkmaar, The Netherlands
Contact:

Lua script for controlling humidity in the bathroom

Post by Skippiemanz »

Script is running here for almost 2 months now. Works great. But is it possible to turn of the email notifications With a print True OR false setting?
dannybloe
Posts: 1355
Joined: Friday 29 August 2014 11:26
Target OS: Raspberry Pi / ODroid
Domoticz version:
Location: Ermelo
Contact:

Re: Lua script for controlling humidity in the bathroom

Post by dannybloe »

Sure, you can modify the script in your system as you wish. Just comment out a couple of lines.
Creator dzVents - RPi3, loads of zwave devices, esp8266, evohome.
marten
Posts: 6
Joined: Saturday 14 March 2015 14:03
Target OS: -
Domoticz version:
Contact:

Re: Lua script for controlling humidity in the bathroom

Post by marten »

2015-04-09 22:05:00.338 LUA: Current humidity:90
2015-04-09 22:05:00.339 Error: /home/pi/domoticz/scripts/lua/script_time_humidity.lua:75: attempt to concatenate global 'targetFanOffHumidity' (a nil value)

This is what the logfile of domoticz tells me, but i don't know what is wrong in the lua script
Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest