Im using the myecobee app/handler, and is great that i can show the current relative humidity , current humidifier setting, etc… but i cant find a way to actually set the humidifier level. Setting humidity directly on the ecobee takes too many clicks, i just want to be able to walk up and tap on the dashboard to change the settings.
am i going to have to trigger a webcore piston using the rules engine and some generic up/down arrows?
@irfan, I don’t personally use the myecobee device handler, but it seems you can use setHumidifierLevel command and a Variable in the Rule Engine to achieve your goal. Here are the high level steps:
Create a Number variable and set the desired value. I am calling it $heatTemp here, but you can name it whatever makes sense to you.
Create a rule to be triggered when this variable changes and its value is equal or greater than 0, and add the command to set the humidity level using the variable as the argument. (I am using setHeaingSetpoint here as the example because I don’t have the myecobee device handler.) I couldn’t find what argument(s) does setHumidifierLevel command take in the document, but if you can post a screenshot of the rule command block, I’d be happy to take a look.
Note: you can tap the icon next to the argument field to toggle between manual input or variable selector.
Add this variable to the dashboard. When you tap, it will prompt and allow you to input a value, which will trigger the rule to run and send the command using this variable’s value as the command’s argument accordingly.
thanks i ended up using a quick adjust variable and using the setHumidiferLevel. works great to change it. but i have an issue in polling:
I have the tile to adjust the variable ‘humidifiersetting’…and when this changes it triggers the rule to send setHumidifierLevel. this changes the humidifier level on the ecobee as expected.
but i also want this to reflect back any changes that may have been made via a piston or directly on the ecobee. I have a rule to change the variable ‘humidifiersetting’ when the device attribute changes (so if i changed it on the thermostat itself or it changed via a webcore piston automatically)… so this way the dashboard accurately reflects the actual setting.
but when i have this enabled and the variable changes it seems to just push the orginal variable again.
example:
1: I set the variable on the dash to 40. this changes the ecobee to 40.
2: I change directly on the ecobee to set it to 38.
expected: dashboard changes to show 38, and ecobee remains on 38.
actual: ecobee reverts right back to 40.
In the adjusting rule i set it to look for if its turned on first, and then execute. this way when the variable changes, the rules already set to OFF it so it doesn’t just become cyclical.
@irfan, I think it’s a good idea to prevent the other rule to run if not necessary and prevent potential racing condition. One side note here that you can also use the context.event.value Context Variable to set the $HumidifierSetting value directly without having to poll the humidity reading. (The rule will execute slightly faster and not depending on if it gets the polling result.) See the rule example below that the context.event.value will be whatever the heatingSetpoint’s triggering value.
I wanted to use a context variable but couldn’t figure out how to use the quick adjust arrows as the event. Seems the dashboard event is specific to rule tiles?
@irfan, if the rule is triggered by the variable’s ($HumidifierSetting ) value change event, from dashboard’s quick adjust like your “setting rule” or somewhere else, you will need to use the Context Variables → Event → Variable Event → Value to get the triggering value. And similarly, if the rule is triggered by a device attribute value change event, you would get the triggering value from Context Variables → Event → Location/Device Event → Value
That’s right, the Dashboard Rule Tile event related context variables are specifically for the rule executed from a rule tile or the $.runRule() syntax in a hyperlink action.
I gave up on the logic of the context variable:). i swear i had it set correctly but it just wouldnt make a change… .so i reverted back to my original way; it works perfectly well so i guess i didnt need to keep tinkering:)
side note: will you guys eventually allow-
a) math expressions in variables?
b) custom unit in variables for dash display? (eg having a % symbol after my humidity reading)
for the expressions my use case is this:
ecobee app only recognizes even numbers in the humidifier reading. if my dash sets it to 38, it reads 38. if i set 39 or any odd number, it reads 20. I dont think the actual setting changes to 20, just the app display since the scroll wheel doesnt have any odd numbers on it so i think it defaults to the minimum. I dont think its actually changing to 20 because my dash would then reflect 20.
I dont like the app showing 20 because OCD occasionally. I ended up creating a piston to read the humidiferlevel and if its any odd number it takes the number and executes ‘round( (humidity)/2 ) * 2’ to get the next higher even number… so a 39 turns to 40. it works fine.
thanks for all the help and for the app, its been fantastic and im glad to be a customer.