[Bug Report 2.2.8.156] Rule Machine is not picking up all Thermostat modes

Short summary is that I have Nest thermostat and am using it via 'My Next Manager'. The driver is seemingly exposing the correct thermostat mode - "ECO". In Rule machine, that mode is showing up in the dropdown to set the mode, but is not visible in the dropdown where I am checking current mode state.

Shown below is where i can correctly see "eco" mode during setting:

Shown below, is where during mode condition checking, "eco" is not available.

Please refer to this thread for discussion on this [RELEASE] My Next Manager for your Nest® Tstats, Protects and Sensors: all Nest attributes available (home/away, motion detection, setTargetHumidity, setHotWaterBoost) for automation-and no throttling! - #145 by saurabh9

The capabilities list shows that RM is following the published standards while the Nest Manager has chosen to extended them; i.e. RM is correct in this instance.

Thermostat

Device Selector

capability.thermostat

Driver Definition

capability "Thermostat"

Attributes

coolingSetpoint - NUMBER, unit:°F || °C

heatingSetpoint - NUMBER, unit:°F || °C

schedule - JSON_OBJECT (Deprecated)

supportedThermostatFanModes - JSON_OBJECT

supportedThermostatModes - JSON_OBJECT

temperature - NUMBER, unit:°F || °C

thermostatFanMode - ENUM ["on", "circulate", "auto"]

thermostatMode - ENUM ["auto", "off", "heat", "emergency heat", "cool"]

thermostatOperatingState - ENUM ["heating", "pending cool", "pending heat", "vent economizer", "idle", "cooling", "fan only"]

thermostatSetpoint - NUMBER, unit:°F || °C

You may find RM's "Run Custom Action" for your device would allow you to set the mode to ECO. It's the standard way to use non-standard commands in drivers. That particular driver may not support it, but at least then you'd have a path to resolution.

Thank you for your quick assessment @thebearmay .

@yracine66 as the developer of the Nest app in context, can you please help comment on the observation from @thebearmay please?

Try using Custom Attribute for the condition. That will grab the attributes actually supported by the driver, as opposed to the pre-baked ones.

1 Like

@yracine66 do you know what is the correct custom attribute I need to use for the device, so that I can check if the current state is "eco" ? "thermostatMode" does not have "eco".

If you use Custom Attribute it will show you every attribute supported by the driver in a pulldown, and their supported values in a subsequent pulldown.

Apologies for the transactional communication here, and thank you for your patience as I am trying to better understand this workflow.

I did select, "custom attribute", but I need to select one of the dozens of attributes. I saw "thermostatMode" there, but perhaps I need to be using a different attribute in this case?

This is what I am seeing:

So, select thermostatMode, and then the next pulldown will show the supported values. The pulldown called "Select value".

So, that gives me the old value list, which is missing "eco", as shown below...and hence I was a bit lost on that step:

That list comes directly from the driver. On the device page, is there a command to set ECO mode? If so, set it, and then show the device State (right side of page).

Yes, as shown below:

Shown below is where i can correctly see "eco" mode during setting:

No, please show the device page for the thermostat.

To try an execute your steps, I checked that the Thermostat is currently in Off mode. Then, I quickly created a virtual button to call the device to set it to "eco". I can see on my physical thermostat device, that it has switched to Eco mode perfectly.

Here is the screenshot of the device page...is there any specific part of the page you need me to post:

So that attribute is "eco_mode". You may be able to set that with a Custom Action, assuming there is a command supported to set it. But, you were showing that there is a thermostat mode called eco, which is a different thing. There are two things more to look at on the device page. One is the setThermostatMode command tile -- it should have a pull down, and please show that. The other is an attribute called supportedThermostatModes, on the right, and please show that also.

There is a discrepancy in RM about this that I will look into. In the set thermostat mode action it queries the thermostat for the supportedThermostatModes, and offers what comes back from supportedThermostatModes. However, for a condition those are not looked at, and just the fixed list you showed is offered. Thermostats are a rather special case in so far as they have these variable attribute values for standard commands.

Is this the 'SetThermostatMode' dropdown you are looking for:

No, on the device page.

If what you are wanting to do is some logic based on when it has been put into thermostatMode "eco", there is a work-around:

Create a String Hub Variable to track the thermostatMode. Set it with a simple rule like this:

Trigger:  myThermostat thermostatMode *changed*
Actions:
   set thermModeVariable to %value%

That will make thermModeVariable always have the current thermostatMode, and then you can test that variable in your rule instead of testing the thermostatMode directly.

1 Like

Here you go:
image

.