Jump to content

How To: Automate a bathroom exhaust fan based on room humidity


Tim Wilson

Recommended Posts

Posted (edited)

The purpose of this tutorial is to demonstrate how to automate a bathroom exhaust fan based on the humidity in the bathroom compared to a reference sensor in a different room. This solution uses the following devices:

Background
I've been using a simple timer to control the exhaust fan in my master bathroom. It started getting flaky, and I would often come home from work and find that the fan had been running all day. I decided that it was time to up my home automation game and go with a more sophisticated solution.

I replaced the old exhaust fan timer with a 2477S SwitchLinc. Having the ISY control the 2477S is easy, but I wanted it to monitor the humidity in the bathroom and run the exhaust fan as needed. The humidity varies widely where I live so I can't simply measure the humidity in the room. I need to have two sensors so I can compare the humidity readings and determine when the difference between them exceeds a given threshold.

Step 1: Humidity monitoring
Among the cheapest and most capable humidity sensors I could find were the CAO Wireless Sensor Tags (see Wireless Sensors sub-forum). The 13-bit temperature/motion/humidity sensors can be purchased for $29 each or in a five-pack for $139. The sensors require an ethernet tag manager that receives the sensor data and publishes it to a web site for monitoring and tracking. The ethernet tag manager can also update variables on the ISY using the ISY's REST interface.

I placed one of the sensors in the master bathroom near the shower about six feet high on the wall. The other one is in the master bedroom on the far side of the room from the bathroom. You can see from the graph below that it's not difficult to tell when someone is showering. (You can view the graphs on the WirelessTag app or the MyTagList.com web site.)

34130460454_06decee8a0_m.jpgHumidity measurements (Click for full-size view.)

The wireless tags can trigger lots of different kinds of events through the use of Kumo Apps which are Javascript applications that have easy access to the sensor values. (See examples at the link.) I created a Kumo App that updates three state variables on my ISY: sMasterBath.humidity, sMasterBedroom.humidity, and sMasterSuite.humidityDelta. Here's the Kumo App:

var tags = <#tags_[13]_N#>;
var isy_ip=<%ISY IP Address%>;
var isy_user = <%ISY username%>;
var isy_password=<%ISY password%>;
var isy_RESTcall = "http://"+isy_user+":"+isy_password+"@"+isy_ip+"/rest/vars/set/2/";

var isy_variable_humi_delta = 3;  // "3" corresponds to the ISY state variable

// Initialize a couple variables to use later to trigger recording the humidity difference
var master_bath_humi = 0;
var master_bedroom_humi = 0;

tags.forEach(
function (tag) {
    tag.updated = function () {
        var cur_name = tag.name
        var valid_device = true
        switch(cur_name) {
            case "Master Bath":
                var isy_variable_temp = 4  // This and following map to ISY state variables
                var isy_variable_humi = 1
                master_bath_humi = tag.moisture  // save this for later
                break;
            case "Master Bedroom":
                var isy_variable_temp = 5
                var isy_variable_humi = 2
                master_bedroom_humi = tag.moisture  // save this for later
                break;
            default:
                var valid_device = false
        }

        if(valid_device==true){
            // Capture sensor data from the "Master Bath" and "Master Bedroom" sensors.
            var tag_temp = Math.round((tag.temperature * 1.8 + 32)*10)/10;  // Convert to F and round to 0.1
            KumoApp.Log("Temp for "+cur_name+" ("+isy_variable_temp+") updated to "+tag_temp);
            KumoApp.httpCall(isy_RESTcall+isy_variable_temp+"/"+tag_temp, "GET");
  
            var tag_moisture = Math.round(tag.moisture);
            KumoApp.Log("Humidity for "+cur_name+" ("+isy_variable_humi+") updated to "+tag_moisture);
            KumoApp.httpCall(isy_RESTcall+isy_variable_humi+"/"+tag_moisture, "GET");
           
            // Calculate the humidity delta if both sensors have checked in.
            if (master_bath_humi > 0 && master_bedroom_humi > 0) {
                var master_suite_humi_delta = Math.round((master_bath_humi - master_bedroom_humi)*10)/10;
                KumoApp.Log("Humidity difference in Master Suite ("+isy_variable_humi_delta+") updated to "+master_suite_humi_delta);
                 KumoApp.httpCall(isy_RESTcall+isy_variable_humi_delta+"/"+master_suite_humi_delta, "GET");
            };
        } else {
            KumoApp.Log("Data from non-configured device: "+cur_name);
        }
    };
}
);

The variables at the top in the angle brackets correspond to parameters that are prompted when the Kumo App is launched.

Each sensor tag is checked in turn and the temperature and humidity data are logged to the ISY via its REST interface. Once both sensors have logged their humidity data, the Kumo App calculates the humidity difference and logs it to ISY variable #3.

Step 2: Controlling the exhaust fan
Once the humidity data is stored in variables in the ISY, the final step is writing two programs: one to turn the fan on and another to turn it off.

I decided that for the purpose of triggering the exhaust fan, I would check the status of the light in the bathroom (the 2477D dimmer) on the assumption that I don't want the exhaust fan to start up unless someone is actually in the bathroom showering. Since we always have the light on when someone is in the bathroom, that makes it easy to avoid the situation where the exhaust fan might turn on when no one is home or in the middle of the night.

Here's the code:

Turn ON Master Bath Exhaust - [ID 0019][Parent 0001]
If
        '2nd Floor - Master Bath / Master Bath Lights' Status is not Off
    And $sMasterSuite.humidityDelta >= 3
Then
        Set '2nd Floor - Master Bath / Master Bath Exhaust Fan' On
Else
   - No Actions - (To add one, press 'Action')

You can see from this code that I decided to set the humidity threshold to 3%, that is, the fan will only turn on if the difference between the humidity in the bathroom and bedroom is at least 3%. This is easily tweaked over a period of a few days until the fan turns on at the right time.

Similarly, on the assumption that the master bathroom light won't be on when no one is present, the code to turn off the exhaust fan runs when the bathroom light is off and the humidity difference drops below 3%.

Turn OFF Master Bath Exhaust - [ID 001A][Parent 0001]
If
        '2nd Floor - Master Bath / Master Bath Lights' Status is Off
    And $sMasterSuite.humidityDelta < 3
Then
        Set '2nd Floor - Master Bath / Master Bath Exhaust Fan' Off
Else
   - No Actions - (To add one, press 'Action')

The sensors and programs are working great so far. Feel free to post with questions below.

Edited by Tim Wilson
Posted

Nice!

 

Did you know you can get a  fairly exact 70% R.H. for calibrating these sensors?

There are some available at HomeDepot at 33.3% ? and 70% RH but you can do it much cheaper with table salt if you avoid the type with any sugar or other impurities in it.

 

Do a web search for the technique. It's very easy and cheap involving a smaller container and larger one (or ziploc bag)

Posted

Did you know you can get a  fairly exact 70% R.H. for calibrating these sensors?

There are some available at HomeDepot at 33.3% ? and 70% RH but you can do it much cheaper with table salt if you avoid the type with any sugar or other impurities in it.

 

It looks like Amazon stocks both 32% and 70% RH calibration kits for $7.95 each. The question is which to get. I'm thinking that 32% is probably closer to the average over an entire year..

Posted (edited)

Yeah. For in the house the lower may be better but for bathroom or other humidity control?

 

Get the lower one and then use clear salt to check the other end.

 

CAO Tags only take one adjustment anyway. It would be interestingvto see how linear they are with third party testing.

 

My house never gets dowm to 32%

 

Sent from my SGH-I257M using Tapatalk

Edited by larryllix
Posted (edited)

I use two CAO Tags for humidity control in my cold cellar. One inside and one outside.

Last year, I discovered the need for Dew Point meterng, instead of Relative Humidity.
Turns out, I was bringing in lower RH air from outside, but when it cooled to the cold cellar temperature, it would raise the humidity in the cold cellar, giving an unwanted result.

Calculating dew point is too complex for ISY programs (using exponiatial functions) , but I have fudged a way to create it accurately, inside usuable ranges.

Too bad the Tags support dew point metering, but won't send it. .

Sent from my SGH-I257M using Tapatalk

Edited by larryllix
Posted

I love seeing how these things get used - especially the KumoApp method. I hadn't thought about combining two to calculate a delta - nice!

 

Only thing I would add is a timeout.

 

Figure out how long the fan should be on as a max and use a third program to turn it off, triggered by the status of the fan being on. You never know when those wireless tags are going to trigger a fan on event then fail to report the lowering of the humidity due to interference or whatever...

 

 

Sent from my iPad using Tapatalk

Posted

Thanks for all the feedback everyone. I'm still experimenting a bit with the placement of the sensor tags to optimize the performance.

  • 3 months later...
Posted

So I figured I would add to what has been said on this. I am using the GadgetCAO sensors and KumoApps to get humidity for the bathroom and other areas. Using the KumoApps I create a delta (difference between humidity in a "neutral" area and the bathroom). So far they seem to run correctly, I am trying initially keeping the fans independent of the lights. Here are my programs:

 

Main Bath Fan, on:

If
    $CAO_BathroomMain_humidity_delta >= 4
    Or (
            Control 'Bath, Main - Fan' is switched off
        And $CAO_BathroomMain_humidity_delta >= 4
       )

Then
    Wait 3 seconds
    Set 'Bath, Main - Fan' On
    $BathroomMain_humidity_restored = 0

Else
    -No Actions

Comments:
$BathroomMain_humidity_restored:
0 = humidity out of tolerance
1 = humidity within tolerance


Main Bath Fan, timer:

If
    Control 'Bath, Main - Fan' is switched On

Then
    Wait 15 minutes
    Run Program ' Main Bath Fan, off' (If)

Else
    -No Actions

Comments:
Allow manual control of fan for 15 minutes windows, then evaluate if humidity is within/out of tolerance.

Main Bath Fan, off

If
        $CAO_BathroomMain_humidity_delta < 4
    And Status 'Bath, Main - Fan' is On
    AND Program 'Main Bath Fan, timer' is False

Then
    Wait 3 seconds
    Set 'Bath, Main - Fan' Off
    $BathroomMain_humidity_restored = 1

Else
    -No Actions

Comments:
$BathroomMain_humidity_restored:
0 = humidity out of tolerance
1 = humidity within tolerance
Posted

 

So I figured I would add to what has been said on this. I am using the GadgetCAO sensors and KumoApps to get humidity for the bathroom and other areas. Using the KumoApps I create a delta (difference between humidity in a "neutral" area and the bathroom). So far they seem to run correctly, I am trying initially keeping the fans independent of the lights. Here are my programs:

 

Main Bath Fan, on:

If
    $CAO_BathroomMain_humidity_delta >= 4
    Or (
            Control 'Bath, Main - Fan' is switched off
        And $CAO_BathroomMain_humidity_delta >= 4
       )

Then
    Wait 3 seconds
    Set 'Bath, Main - Fan' On
    $BathroomMain_humidity_restored = 0

Else
    -No Actions

Comments:
$BathroomMain_humidity_restored:
0 = humidity out of tolerance
1 = humidity within tolerance


Main Bath Fan, timer:

If
    Control 'Bath, Main - Fan' is switched On

Then
    Wait 15 minutes
    Run Program ' Main Bath Fan, off' (If)

Else
    -No Actions

Comments:
Allow manual control of fan for 15 minutes windows, then evaluate if humidity is within/out of tolerance.

Main Bath Fan, off

If
        $CAO_BathroomMain_humidity_delta < 4
    And Status 'Bath, Main - Fan' is On
    AND Program 'Main Bath Fan, timer' is False

Then
    Wait 3 seconds
    Set 'Bath, Main - Fan' Off
    $BathroomMain_humidity_restored = 1

Else
    -No Actions

Comments:
$BathroomMain_humidity_restored:
0 = humidity out of tolerance
1 = humidity within tolerance

I can see you have been working very hard for some time on this one! :)

 

I would worry about delta temperatures using too many factors to contribute to a delta humidity. If one element fails it would be easy to receive an erroneous value among other problems.

 

To get around most of these obscure problems, I would typically use a simple all-else-fails timer to shut of the fan on a long term basis. Although it should theoretically never come into play, it could save you from some weird sequence of operations that you never thought of, leaving the fan on while you away on a winter vacation for two weeks. Too much outside air can cost you heating money, when  you live in a cold winter climate.

 

 

I do a similar thing for my cold cellar, but compare dewpoints (inside to outside), so I don't draw in lower % RH air,  that results in raising my cold cellar humidity, instead of lowering it, once it is cooled to the indoor temperature.

Posted

I can see you have been working very hard for some time on this one! :)

 

I would worry about delta temperatures using too many factors to contribute to a delta humidity. If one element fails it would be easy to receive an erroneous value among other problems.

 

To get around most of these obscure problems, I would typically use a simple all-else-fails timer to shut of the fan on a long term basis. Although it should theoretically never come into play, it could save you from some weird sequence of operations that you never thought of, leaving the fan on while you away on a winter vacation for two weeks. Too much outside air can cost you heating money, when  you live in a cold winter climate.

 

 

I do a similar thing for my cold cellar, but compare dewpoints (inside to outside), so I don't draw in lower % RH air,  that results in raising my cold cellar humidity, instead of lowering it, once it is cooled to the indoor temperature.

 

Thank you, actually I just came up with it this morning, and it seemed to work well. As for the catastrophic problems, Good idea. However someone is generally always in the house, so that is not likely going to be a problem (at least for me). I do have a CAO sensor outside and I do use other programs to verify the difference between inside humidity and outside humidity, and reported humidity (climate module) to  CAO reported humidity. I will add to the programs as needed, to ensure that the levels remain constant, and that there is some redundancy in the programming.

 

I just simplified the programs a lot, I used to have it work based on also if someone is in the bathroom. (Fan shouldn't be on if no one is in there right?? turns out that program had some issues. And the fans didn't run right.)

Posted (edited)

Thank you, actually I just came up with it this morning, and it seemed to work well. As for the catastrophic problems, Good idea. However someone is generally always in the house, so that is not likely going to be a problem (at least for me). I do have a CAO sensor outside and I do use other programs to verify the difference between inside humidity and outside humidity, and reported humidity (climate module) to  CAO reported humidity. I will add to the programs as needed, to ensure that the levels remain constant, and that there is some redundancy in the programming.

 

I just simplified the programs a lot, I used to have it work based on also if someone is in the bathroom. (Fan shouldn't be on if no one is in there right?? turns out that program had some issues. And the fans didn't run right.)

I find faults in my ISY programs from years ago that seemed so simple. :)

 

Another method I like to use is to bring all the raw CAO data into ISY state variables but only use a common variable for all other programs. This way I can back up parameters with  multiple sources.

 

My outside temperature  variable comes from three different sources averaged with any value outside more than 2C from the average thrown out of the average calculation. This selectively excludes temperatures from each sensor where the sun affects the reading improperly.  Living on a small "mountain" the sun shines on all four walls at some point in the day. V5.x is invaluable in this, having a while repeat construct that can act as an inline IF condition, making program logic stretch much further in one program.

 

Another method I mostly use is with two or more sensors. One is a primary source and when it is updating and looks reasonable the secondary source program is disabled. If the secondary program runs and it doesn't look reasonable or i't heartbeat also fails then a notification is sent out.  I found this invaluable when a new stat is installed...no programs use it directly and it's easy to change out.

 

ISY...the best logic puzzle toy yet!

Edited by larryllix
  • Like 1
Posted

Speaking of which, just woke up and noticed that my bathroom master fan was on.... so that was puzzling (it is 11:15pm at night and nothing was in the bathroom that should have generated that humidity differential...) Looked at the program... at the humidity delta was at 3, which is below the required 4 for activation.... something to troubleshoot for myself in the morning.

 

That seems like a good practice receiving multiple core inputs from other sensors, and I do that a bit right now. (I do not have all of my sensors installed yet. Still have yet to install all of my Elk sensors or my Brultech. Which I can then use to aid in these programs. When these devices are added I will then be able to process more readily additional outside/inside data. 

 

Currently I have KumoApps doing the processing of the variables and core data of its tags, which are then transmitted and stored in state variables. For each tag I store: temp, humidity, humidity_delta, battery, and rssi. Temperature and humidity is rounded to the nearest integer, while voltage is multiplied by 1000 then rounded (so 3.274 volts is stored as 3274). I will likely update  that program to change the humidity and temperature to round to the first decimal (so 72.4 degrees becomes 724 in the ISY). The rssi does a bit of calculation to it [this.rssi - 2 * Math.log10(this.txpwr / 255)] as I couldn't figure out how to run that process on those variables from the ISY.

 

I like your tag. "ISY... the best logic puzzle toy yet!" Oh dear god is that true!! It really keeps me on my toes.

Posted (edited)

Speaking of which, just woke up and noticed that my bathroom master fan was on.... so that was puzzling (it is 11:15pm at night and nothing was in the bathroom that should have generated that humidity differential...) Looked at the program... at the humidity delta was at 3, which is below the required 4 for activation.... something to troubleshoot for myself in the morning.

 

That seems like a good practice receiving multiple core inputs from other sensors, and I do that a bit right now. (I do not have all of my sensors installed yet. Still have yet to install all of my Elk sensors or my Brultech. Which I can then use to aid in these programs. When these devices are added I will then be able to process more readily additional outside/inside data. 

 

Currently I have KumoApps doing the processing of the variables and core data of its tags, which are then transmitted and stored in state variables. For each tag I store: temp, humidity, humidity_delta, battery, and rssi. Temperature and humidity is rounded to the nearest integer, while voltage is multiplied by 1000 then rounded (so 3.274 volts is stored as 3274). I will likely update  that program to change the humidity and temperature to round to the first decimal (so 72.4 degrees becomes 724 in the ISY). The rssi does a bit of calculation to it [this.rssi - 2 * Math.log10(this.txpwr / 255)] as I couldn't figure out how to run that process on those variables from the ISY.

 

I like your tag. "ISY... the best logic puzzle toy yet!" Oh dear god is that true!! It really keeps me on my toes.

Once you go to V5 you can receive all those values in a realistic decimal formats. Kumoapps drops them right into ISY all in perfect decimal format.

Edited by larryllix
Posted

Great write up, I've been doing the same thing with Z-Wave multisensors. I didn't worry too much about placement of the sensors and instead focused on what the readings looks like at times I knew the exhaust should be on...like during baths and showers.

 

Dew point is interesting for sure, I've looked at it in the past, may need to look at it again.

 

 

Sent from my iPhone using Tapatalk

Posted (edited)

I use two CAO Tags for humidity control in my cold cellar. One inside and one outside.

 

Last year, I discovered the need for Dew Point meterng, instead of Relative Humidity.

Turns out, I was bringing in lower RH air from outside, but when it cooled to the cold cellar temperature, it would raise the humidity in the cold cellar, giving an unwanted result.

 

Calculating dew point is too complex for ISY programs (using exponiatial functions) , but I have fudged a way to create it accurately, inside usuable ranges.

 

Too bad the Tags support dew point metering, but won't send it. .

 

Sent from my SGH-I257M using Tapatalk

 

How did you fudge dew points?

 

I tried using a KumoApp to create the dew point variable. With fixed TempF of 71.0 and Humidity of 60.6, excel gives me 59.9, while Kumo Apps gives me 13.7 (using a rounding of multiplying by 10, thus generating 137). The formula I used is: Math.round(243.04*(Math.log(RH/100)+((17.625*T)/(243.04+T)))/(17.625-Math.log(RH/100)-((17.625*T)/(243.04+T)))*10); with variables T=tag.temperature and RH=tag.moisture. I got this formula from http://andrew.rsmas.miami.edu/bmcnoldy/Humidity.html.

EDIT: oh my goodness, I am such an idiot..... I was feeding the Celsius temperature to the equation..... DOH!!

 

Fixed giving the correct temperature, and realized that the equation is coming REALLY close to the calculator found above. About 5.1 degrees above the calculator, I tried this 4 times now on different rooms gathered sensor data. And it is always about 4.9 to 5.2 degrees above the calculator, so that is CLOSE ENOUGH!!

 

Here is the program:

 

        var corrected_temp = Math.round((tag.temperature * 9 / 5 + 32)*10);
        var corrected_rssi = Math.round(tag.rssi - 20 * Math.log(tag.txpwr/255));
        var corrected_batteryVolt = Math.round(tag.batteryVolt * 1000);
        var isy_corrected_moisture = 0
        var corrected_moisture = Math.round(tag.moisture*10);
        var T = corrected_temp;
        var RH = tag.moisture;
        var dewpoint = Math.round(243.04*(Math.log(RH/100)+((17.625*T)/(243.04+T)))/(17.625-Math.log(RH/100)-((17.625*T)/(243.04+T))));
        var corrected_dewpoint = dewpoint - 51
        // dewpoint calculation generates a whole number representing XX.X for temperature. So 68.4 degrees F would appear as 684 (due to V4 on ISY)

I am not sure how or what I will do with this new datapoint yet.... but that seems to be fairly interesting.

//

Edited by ralbright
Posted (edited)

Yeah. I found several different calculations for dewpoint but none of the exponental stuff was happening in ISY math, so I used the simplest proposal put forward I could find and then worked it from there.

 

A simple divide by 5 works for a good portion of the curve for some usages, but the curve got out of whack, so I experimented with a factor applying it to only one end ofthe curve until it got close enough.

 

http://forum.universal-devices.com/topic/21727-bathroom-fan-control-solution/?do=findComment&comment=215296

 

Note this takes v5 and the Repeats are used as inline "If / then" constructs.

When you see a line with $Variable = 0. That is to terminate the Repeat While construct.

Multiple programs could have been used for v4 in order to get mutiple If / Then constructs.

Edited by larryllix
Posted (edited)

Okay so I found a REALLY easy way to approximate the dewpoint in KumoApp for the CAO. And I verified it with quite a few datasets of numbers. It corresponds quite nicely with a graph that I found at http://www.oxywise.com/en/tools/tool/what-is-the-dew-point-and-how-do-you-calculate-it. My problem in the past was I was trying to calculate the dew point in Fahrenheit, but found the equation so much simplier if I calculated it in Celsius and then converted the result to Fahrenheit. It is fairly accurate for relative humidity values above 50%. Found it here: https://iridl.ldeo.columbia.edu/dochelp/QA/Basic/dewpoint.html

 

The formula for approximating dew point in Celsius is:

Tp = temperature - ((100 - RH)/5)

 

Then convert that result to Fahrenheit by:

TpF = Tp * 9 / 5 + 32

 

Remember I have version 4 of ISY, so my passed variables are multiplied by 10 so 56.7 will read as 567

        var cur_name = tag.name
        var valid_device = true
        
        var corrected_temp = Math.round((tag.temperature * 9 / 5 + 32)*10);
        var corrected_rssi = Math.round(tag.rssi - 20 * Math.log(tag.txpwr/255));
        var corrected_batteryVolt = Math.round(tag.batteryVolt * 1000);
        var isy_corrected_moisture = 0
        var corrected_moisture = Math.round(tag.moisture*10);
        
        //KumoApp.Log(cur_name + " tag.temp: " + tag.temperature);
        //KumoApp.Log(cur_name + " tag.moisture: " + tag.moisture);
        var dp_tag = tag.temperature - ((100-tag.moisture)/5);
        //KumoApp.Log(cur_name + " dewpoint tag (C): " + dp_tag);
        var dp_tagF = Math.round((dp_tag *9 / 5 + 32)*10);
        //KumoApp.Log(cur_name + " dewpoint tag (F): " + dp_tagF);
Edited by ralbright
Posted

 

Okay so I found a REALLY easy way to approximate the dewpoint in KumoApp for the CAO. And I verified it with quite a few datasets of numbers. It corresponds quite nicely with a graph that I found at http://www.oxywise.com/en/tools/tool/what-is-the-dew-point-and-how-do-you-calculate-it. My problem in the past was I was trying to calculate the dew point in Fahrenheit, but found the equation so much simplier if I calculated it in Celsius and then converted the result to Fahrenheit. It is fairly accurate for relative humidity values above 50%. Found it here: https://iridl.ldeo.columbia.edu/dochelp/QA/Basic/dewpoint.html

 

The formula for approximating dew point in Celsius is:

Tp = temperature - ((100 - RH)/5)

 

Then convert that result to Fahrenheit by:

TpF = Tp * 9 / 5 + 32

 

Remember I have version 4 of ISY, so my passed variables are multiplied by 10 so 56.7 will read as 567

        var cur_name = tag.name
        var valid_device = true
        
        var corrected_temp = Math.round((tag.temperature * 9 / 5 + 32)*10);
        var corrected_rssi = Math.round(tag.rssi - 20 * Math.log(tag.txpwr/255));
        var corrected_batteryVolt = Math.round(tag.batteryVolt * 1000);
        var isy_corrected_moisture = 0
        var corrected_moisture = Math.round(tag.moisture*10);
        
        //KumoApp.Log(cur_name + " tag.temp: " + tag.temperature);
        //KumoApp.Log(cur_name + " tag.moisture: " + tag.moisture);
        var dp_tag = tag.temperature - ((100-tag.moisture)/5);
        //KumoApp.Log(cur_name + " dewpoint tag (C): " + dp_tag);
        var dp_tagF = Math.round((dp_tag *9 / 5 + 32)*10);
        //KumoApp.Log(cur_name + " dewpoint tag (F): " + dp_tagF);

I explained why that doesn't work in my previous post. Check the ends of the curves. They are way out for a workable range outside.

Posted

I explained why that doesn't work in my previous post. Check the ends of the curves. They are way out for a workable range outside.

 

I understand that. Currently I have not been tracking dew point for outside. I am not even sure yet how I will utilize this new variable in my programming yet.

I was looking to try to keep to this graph:

 dew_point_graph.png

 

This graph seems to be fairly easily trackable, and for at least my purposes, thus far it has not been too far off. Now if I could figure out a formula that would give me data points from this graph.... things would be easier I would think. (of course I believe that this is all relative, I am really close to sea level [about 350'] someone that is in the mountains [at 10000+ ft] this likely would need some major adjusting.

Posted

I understand that. Currently I have not been tracking dew point for outside. I am not even sure yet how I will utilize this new variable in my programming yet.

I was looking to try to keep to this graph:

 dew_point_graph.png

 

This graph seems to be fairly easily trackable, and for at least my purposes, thus far it has not been too far off. Now if I could figure out a formula that would give me data points from this graph.... things would be easier I would think. (of course I believe that this is all relative, I am really close to sea level [about 350'] someone that is in the mountains [at 10000+ ft] this likely would need some major adjusting.

Yeah, I linked to my ISY program in a previous post, that was styled after that chart.

 

The dewpoint curves from 100% down to about 55% follow the (100% - RH%) /5 very closely, but at lower humidities the curves don't behave that simply. I took any (100% - RH%) difference over 45%, and added an additional 0.7 of difference to it, before dividing that resultant by 5.That made the lower humidities follow the dewpoint curves closer. Exponential calculations would have definitely been better.

 

Mountians? LOL.

In my previous home I was 350m abobe sea level to my foundation top = 1148 feet, and I was in a slight valley from mostly flat land around us..

Currently, my home is on a small mountain at 340m above sea level to my foundation top = 1115 feet. (yup, lower) My humidity here, ranges from about 30-100%. Mostly in the higher ranges.

We have huge bodies of water about 10km, on one side and 80km away, on the other side. That gives us snow, over our heads most winters and some days needing to blow snow out the driveway at least three times. The location was a mistake but the views are spectacular. LOL

Posted

Yeah, I linked to my ISY program in a previous post, that was styled after that chart.

 

The dewpoint curves from 100% down to about 55% follow the (100% - RH%) /5 very closely, but at lower humidities the curves don't behave that simply. I took any (100% - RH%) difference over 45%, and added an additional 0.7 of difference to it, before dividing that resultant by 5.That made the lower humidities follow the dewpoint curves closer. Exponential calculations would have definitely been better.

 

Mountians? LOL.

In my previous home I was 350m abobe sea level to my foundation top = 1148 feet, and I was in a slight valley from mostly flat land around us..

Currently, my home is on a small mountain at 340m above sea level to my foundation top = 1115 feet. (yup, lower) My humidity here, ranges from about 30-100%. Mostly in the higher ranges.

We have huge bodies of water about 10km, on one side and 80km away, on the other side. That gives us snow, over our heads most winters and some days needing to blow snow out the driveway at least three times. The location was a mistake but the views are spectacular. LOL

 

Sounds like a beautiful location, makes me a bit jealous. I don't get a lot (clue maybe 1/2 inch twice a year) of snow at my home. But I will look into that curve a bit more, probably only utilize the formula I have when humidity is 50% or greater.

Posted

Sounds like a beautiful location, makes me a bit jealous. I don't get a lot (clue maybe 1/2 inch twice a year) of snow at my home. But I will look into that curve a bit more, probably only utilize the formula I have when humidity is 50% or greater.

What really surprises me is that the CAO tags, having  dewpoint as an option do not have dewpoint as a sendable parameter option.

Well, at least they didn't sometime back but then they couldn't graph the dewpoints either. IIRC I checked the code help pages a few months ago.

 

That was just added less than a year ago so offering a sendable dewpoint to ISY would make all this dirty talk redundant. :)

Posted (edited)

What really surprises me is that the CAO tags, having  dewpoint as an option do not have dewpoint as a sendable parameter option.

Well, at least they didn't sometime back but then they couldn't graph the dewpoints either. IIRC I checked the code help pages a few months ago.

 

That was just added less than a year ago so offering a sendable dewpoint to ISY would make all this dirty talk redundant. :)

 

WHOA. I didn't know that!! So I went back and looked, yep the humidity sensors can be switched to dew point. I have opened a support ticket with CAO asking if they could add an additional property (tag.dewpoint) so that these tag will send BOTH. Let's hope they are paying attention....

Edited by ralbright
  • Like 1
Guest
This topic is now closed to further replies.

  • Recently Browsing

    • No registered users viewing this page.
  • Who's Online (See full list)

    • There are no registered users currently online
  • Forum Statistics

    • Total Topics
      37.2k
    • Total Posts
      372.5k
×
×
  • Create New...