Jim Posted February 11, 2016 Posted February 11, 2016 I have a project where I am controlling the humidity in the house using the 2441TH thermostat, looking at the humidity number and using it to turn on my Aprialaire model 800 steam whole house humidifier. I use a 2450 IOLinc for the contact closure input on the AprialAire 800 to turn it on or off. I have the Climate Module to pull the outside temperature (I am lucky the monitoring station is only a block away from me) and I can us it also for rain forecast on irrigation (another project). Because the cold temperatures outside cause the window to sweat I had to write a program that sets the humidity depending upon outdoor temperature. I used the recommended humidity chart for our area (Atlanta) that came in the manual for the AprialAire 800. Here is the program: ------------- Main Humidifier - [iD 000B][Parent 0001] If ( Status 'Main Floor Thermostat - Main' <= 45% (Humidity) And Module 'Climate' Temperature <= 50 °F And Module 'Climate' Temperature > 40 °F And Status 'Main Floor Thermostat - Main' is Mode Heat And Status 'Main Floor Thermostat - Main' is Fan On ) Or ( Status 'Main Floor Thermostat - Main' <= 40% (Humidity) And Module 'Climate' Temperature <= 40 °F And Module 'Climate' Temperature > 30 °F And Status 'Main Floor Thermostat - Main' is Mode Heat And Status 'Main Floor Thermostat - Main' is Fan On ) Or ( Status 'Main Floor Thermostat - Main' <= 35% (Humidity) And Module 'Climate' Temperature <= 30 °F And Module 'Climate' Temperature > 20 °F And Status 'Main Floor Thermostat - Main' is Mode Heat And Status 'Main Floor Thermostat - Main' is Fan On ) Or ( Status 'Main Floor Thermostat - Main' <= 30% (Humidity) And Module 'Climate' Temperature <= 20 °F And Module 'Climate' Temperature > 10 °F And Status 'Main Floor Thermostat - Main' is Mode Heat And Status 'Main Floor Thermostat - Main' is Fan On ) Or ( Status 'Main Floor Thermostat - Main' <= 25% (Humidity) And Module 'Climate' Temperature <= 10 °F And Status 'Main Floor Thermostat - Main' is Mode Heat And Status 'Main Floor Thermostat - Main' is Fan On ) Then Set 'AprialAire 800 Humidifier' On Else Set 'AprialAire 800 Humidifier' Off -------- This program works great if I query the thermostat with my MobiLinc. In other words, I'll get up in the morning and the windows will be sweating and the humidity reading on the thermostat will be 50% humidity and it is 20 deg outside. If I go to the MobiLinc app on my phone I can see that the Humidifier is "on" and running when it should not be. I then go to the thermostat on the MobiLinc and it shows 30% humidity. I do a refresh on the MobiLinc app and immediately the humidity on the MobiLinc app shows the same as the thermostat at 50% and the ISY will turn the humidifier off as expected. So all that being said... What do I need to do in the ISY program to force it to get an update from the 2441TH thermostat without me having to manually refresh it from the Mobilinc? Thanks Jim
stusviews Posted February 11, 2016 Posted February 11, 2016 (edited) What is the result if, under the same conditions, you view the thermostat from the Admin Console? Does the humidity value agree with the display? If not, does a query correct it? You actually don't have anything to trigger the program. A Status statement won't unless the state of the device changes or something triggers the program. A query can do that. BTW, if you want to streamline your program, then you can place "And Status 'Main Floor Thermostat - Main' is Mode Heat" as the first condition outside an all inclusive And ( ). instead of repeating that statement. Also, if the thermostat is in Heat mode, then the fan will be on, so that statement is unneeded. That won't change the way the program runs, so it's purely aesthetic Edited February 11, 2016 by stusviews
Jim Posted February 11, 2016 Author Posted February 11, 2016 What is the result if, under the same conditions, you view the thermostat from the Admin Console? Does the humidity value agree with the display? If not, does a query correct it? You actually don't have anything to trigger the program. A Status statement won't unless the state of the device changes or something triggers the program. A query can do that. BTW, if you want to streamline your program, then you can place "And Status 'Main Floor Thermostat - Main' is Mode Heat" as the first condition outside an all inclusive And ( ). instead of repeating that statement. Also, if the thermostat is in Heat mode, then the fan will be on, so that statement is unneeded. That won't change the way the program runs, so it's purely aesthetic Thanks Stusviews for the suggestion to check the Admin Console. I'll do that next. I understand the comment for the Heat mode being redundant. The reason for looking to see if the fan "on" is because I do not want the steam to be released in the duct work if the fan is not running. In other words I keep the fan turned on all of the time even though the furnace is not heating so I can circulate the humidity (steam) as needed. If I did not look at the fan condition and should it get accidentally switched off or to "Auto" (so it runs only when furnace is calling for heat) the humidity steam would not be properly dispersed in the duct and cause mildew problems. I also look for the "heat" mode to be on because I would not want to accidentally put steam in the duct for AC. Make sense? Jim
larryllix Posted February 11, 2016 Posted February 11, 2016 As per Stu above and your follow up ideas. Main Humidifier - [iD 000B][Parent 0001] If Status 'Main Floor Thermostat - Main' is Mode Heat And Status 'Main Floor Thermostat - Main' is Fan On And ( ( Status 'Main Floor Thermostat - Main' <= 45% (Humidity) And Module 'Climate' Temperature <= 50 °F And Module 'Climate' Temperature > 40 °F ) Or ( Status 'Main Floor Thermostat - Main' <= 40% (Humidity) And Module 'Climate' Temperature <= 40 °F And Module 'Climate' Temperature > 30 °F ) Or ( Status 'Main Floor Thermostat - Main' <= 35% (Humidity) And Module 'Climate' Temperature <= 30 °F And Module 'Climate' Temperature > 20 °F ) Or ( Status 'Main Floor Thermostat - Main' <= 30% (Humidity) And Module 'Climate' Temperature <= 20 °F And Module 'Climate' Temperature > 10 °F ) Or ( Status 'Main Floor Thermostat - Main' <= 25% (Humidity) And Module 'Climate' Temperature <= 10 °F ) ) Then Set 'AprialAire 800 Humidifier' On Else Set 'AprialAire 800 Humidifier' Off With v5 you could extract the humidity and temperature into variables , do some math and u the humidifier on a sliding scale. I don't vary humidity but I never set it over 39%. I have to hand fill my supply bottles each day and don't want to have to cart 5 gal of water every day. Search for humidity sensor calibration. Damp salt with create an exact 75% humidity if you can get the sensor into a sealed vessel. Magnesium chloride with produce 33% humidity.
Vexillus74 Posted February 11, 2016 Posted February 11, 2016 It's funny, I just wrote pretty much the same program and it is working great. I do like your idea about the fan status. Sent from my iPhone using Tapatalk
paulbates Posted February 11, 2016 Posted February 11, 2016 Thanks Stusviews for the suggestion to check the Admin Console. I'll do that next. I understand the comment for the Heat mode being redundant. The reason for looking to see if the fan "on" is because I do not want the steam to be released in the duct work if the fan is not running. In other words I keep the fan turned on all of the time even though the furnace is not heating so I can circulate the humidity (steam) as needed. If I did not look at the fan condition and should it get accidentally switched off or to "Auto" (so it runs only when furnace is calling for heat) the humidity steam would not be properly dispersed in the duct and cause mildew problems. I also look for the "heat" mode to be on because I would not want to accidentally put steam in the duct for AC. Make sense? Jim Jim A thought is to not check the fan. Add a statement to your program to turn the fan on when humidity is needed. along with the statement for turning on the humidifier. It gets very dry here in the winter and I want humidity cycles running to the adjusted setpoint. We're in our second season of independent humidity cycles, and Its proven to improve health here. I also have an ISY program cycle my fans periodically after a certain period of no heat, cold or humidity cycles. Paul
larryllix Posted February 11, 2016 Posted February 11, 2016 (edited) I am using a portable humidifier as I screwed up and never left room on my furnace/air handler. People told me with ahome sealed this tightly the humidity would always be higher than wanted....BS! If I boiled noodles every day, and didn't have exhaust fans, maybe. Anyway this is my set of programs to cycle my humidifier at a constant humidity specified by an Integer variable constant, easily changed and denoted with '$c......'. Humidifier.start - [ID 003C][Parent 00BD] If $sHouse.humidity < $cHOUSE.HUMIDITY.SETPOINT And $sHouse.vacation is $cFALSE Then Run Program 'Humidifier.stop' (Else Path) Repeat Every 5 minutes Set 'Foyer / Humidifier' On Wait 25 minutes Set 'Foyer / Humidifier' Off Repeat 1 times Else Wait 5 minutes Set 'Foyer / Humidifier' Off Every 25 minutes, allow wick/filter to soak to top for 5 minutes. Humidifier.stop - [ID 0050][Parent 00BD] If $sHouse.humidity > $cHOUSE.HUMIDITY.SETPOINT Then Run Program 'Humidifier.start' (Else Path) Else - No Actions - (To add one, press 'Action') I have attempted to use centralised $sHouse.factors now, and use programs to clone device parameters into central variables. This offers the chance to use alternate parameter resources. eg: My humidity clone program checks to see if the Venstar T7900 thermostat is reporting OK and uses it's humidity report. If the T7900 is not reporting it uses an Insteon 2441ZTH in the basement that is slight off from the main floor sensing, but workable. If something fails ie: T7900, Router, NodeLink, RPi bridge, or other comm pathway device I can get parameters from the Insteon network devices. Edited February 11, 2016 by larryllix
Jim Posted February 12, 2016 Author Posted February 12, 2016 Thanks Guys all great ideas. I Googled the issue today and found a site where someone had a similar problem with thermostat query. They recommended the following program and it seams to work. -------- Query Thermostat - [iD 0011][Parent 0001] If From 12:00:00AM For 24 hours Then Repeat Every 10 minutes Set 'Main Floor Thermostat - Main' Query Else - No Actions - (To add one, press 'Action') --------------- It has worked now for 8 hours so we will see how it does over the weekend. I can see an time update in the humidifier program above every 10 min or so. Jim
larryllix Posted February 12, 2016 Posted February 12, 2016 Thanks Guys all great ideas. I Googled the issue today and found a site where someone had a similar problem with thermostat query. They recommended the following program and it seams to work. -------- Query Thermostat - [iD 0011][Parent 0001] If From 12:00:00AM For 24 hours Then Repeat Every 10 minutes Set 'Main Floor Thermostat - Main' Query Else - No Actions - (To add one, press 'Action') --------------- It has worked now for 8 hours so we will see how it does over the weekend. I can see an time update in the humidifier program above every 10 min or so. Jim The For 24 hours line only runs the Else block at the same time as it should retrigger. Take it out. It is not a condition with range of time, just a trigger Then at 12:00AM and a trigger for Else 24 hr. later.
stusviews Posted February 12, 2016 Posted February 12, 2016 (edited) If From xx:yy:zzPM To xx:yy:zzPM (next day) plus a trigger will repeat after you start it. Note that From and To are idential times. Edited February 12, 2016 by stusviews
Jim Posted February 12, 2016 Author Posted February 12, 2016 (edited) If From xx:yy:zzPM To xx:yy:zzPM (next day) plus a trigger will repeat after you start it. Note that From and To are idential times. Stusviews So would I write it like this? I still need the repeat every 10 min right? Query Thermostat - [iD 0011][Parent 0001] If From 12:00:00PM To 12:00:00PM (next day) Then Repeat Every 10 minutes Set 'Main Floor Thermostat - Main' Query Else - No Actions - (To add one, press 'Action') Edited February 12, 2016 by Jim
larryllix Posted February 12, 2016 Posted February 12, 2016 (edited) The From-To only serves to stop your loop by running the Else block, take it out. It only can confuse the ISY engine and does not run your code or serve any purpose. Query Thermostat - [iD 0011][Parent 0001] If At 12:00:00PM OR At 12:00:00AM <---second trigger in case of power failure and reboot, if desired Then Repeat Every 10 minutes Set 'Main Floor Thermostat - Main' Query Else - No Actions - (To add one, press 'Action') Edited February 12, 2016 by larryllix
Recommended Posts