Jump to content

2441TH Thermostat and Humidity Control Project - query issue


Jim

Recommended Posts

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
Link to comment

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 B)

Edited by stusviews
Link to comment

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 B)

 

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

Link to comment
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.
Link to comment

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

Link to comment

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 by larryllix
Link to comment

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
Link to comment

 

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.

Link to comment

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 by stusviews
Link to comment

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 by Jim
Link to comment
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 by larryllix
Link to comment
Guest
This topic is now closed to further replies.

×
×
  • Create New...