Homekit : thermostat - color of bubble in the home app

Who know what is the current visualization for thermostat in home app.
I notice that thermostat represented as a round circle with current temperature inside sometimes is orange and sometimes light green. Not sure what item/metadata is responsible for such visualization. I remember that in the past current heating / off was presented using a small red icon (when heating was on). Grey cirle is for OFF

oh i notice the red arrow also… so it probably means current_heating_mode = HEAT.
Whats the best practice…, i am not sure if the HEAT should be send only if the valve is opened (at least 1%) or should it be send based on “mode” like auto/eco/heat without looking at valve opening (setpoint is lower than current temp)?

One problem discovered with icons - i have two Thermostats with a little different config (separate thermostates/separates groups)

First - showing a GREEN circle icon

homekit: { value: `CurrentHeatingCoolingMode`, config: { OFF: `OFF`, HEAT: `ON` }
2023-01-03 21:57:25.836 [TRACE] [ssories.AbstractHomekitAccessoryImpl] - getKeyFromMapping: characteristic CurrentHeatingCoolingMode, state **ON**, mapping {OFF=OFF, HEAT=ON, COOL=Cooling}

Second - showing an ORANGE circle icon

homekit: { value: `CurrentHeatingCoolingMode`, config: { OFF: `off`, HEAT: `auto`  } }
2023-01-03 21:57:25.841 [TRACE] [ssories.AbstractHomekitAccessoryImpl] - getKeyFromMapping: characteristic CurrentHeatingCoolingMode, state **auto**, mapping {OFF=off, HEAT=auto, COOL=Cooling}

@yfre would you be so kind and have a look on this issue? I think the configuration and item states should display the same colors for both icons

my understanding of the Home app logic:

  • if mode is HEAT or AUTO and
    • target temperature > current temperature then show “orange” icon, i.e. the heating is ON and should heat up the room
    • target temperature <= current temperature then show “green” icon, i.e. the heating is on but no heating is required as it is warm enough

in my case, i have a rule the sends HEAT or OFF depending on the valve status. (open/close)

thank you - so the only one charateristisc responsible for the color jst CurrentHeatingCoolingMode which can have OFF or HEAT (COOLING). Still don’t know why the first thermostat shows green instead of orange like the second one is

4 - working bad - always green

//items.replaceItem({ type: `Switch`, name: `RadiatorAC${i}_PWM_Relay`, label: `PWM relay`, tags: [`Room${i}`], groups: [`gRoom${i}_termostat`,`gRoom${i}_termostat_PWM`], metadata: {homekit: { value: `CurrentHeatingCoolingMode`, config: { OFF: `OFF`, HEAT: `ON` } }}, channels: { [`mqtt:topic:mymqttbroker:relay:${i}`]: {} }});
items.getItem(`RadiatorAC4_PWM_Relay`).sendCommand("ON")
console.log("4",items.getItem(`RadiatorAC4_PWM_Relay`).state)

2023-01-04 08:55:25.176 [TRACE] [ssories.AbstractHomekitAccessoryImpl] - getKeyFromMapping: characteristic TargetHeatingCoolingMode, state heat, mapping {OFF=off, HEAT=heat, COOL=CoolOn, AUTO=auto}

2023-01-04 08:55:25.179 [TRACE] [ssories.AbstractHomekitAccessoryImpl] - getKeyFromMapping: characteristic CurrentHeatingCoolingMode, state ON, mapping {OFF=OFF, HEAT=ON, COOL=Cooling}

Still GREEN whatever i send ON or OFF command to the item - i unlinked the mqtt channel but didnt helped

1 - small difference in config but working OK.


//items.replaceItem({ type: `String`, name: `RadiatorAC${i}_SystemMode_current`, label: `SystemModeCurrent`, tags: [`Room${i}`], groups: [`gRoom${i}_termostat`], metadata: {homekit: { value: `CurrentHeatingCoolingMode`, config: { OFF: `off`, HEAT: `auto`  } }}, channels: { [`mqtt:topic:mymqttbroker:Thermostat_${i}:system_mode`]: {} }});
items.getItem(`RadiatorAC1_SystemMode_current`).sendCommand("off")
console.log("1",items.getItem(`RadiatorAC1_SystemMode_current`).state)

GREEN - OK

items.getItem(`RadiatorAC1_SystemMode_current`).sendCommand("auto")

2023-01-04 08:55:25.184 [TRACE] [ssories.AbstractHomekitAccessoryImpl] - getKeyFromMapping: characteristic TargetHeatingCoolingMode, state auto, mapping {OFF=off, HEAT=heat, COOL=CoolOn, AUTO=auto}

2023-01-04 08:55:25.186 [TRACE] [ssories.AbstractHomekitAccessoryImpl] - getKeyFromMapping: characteristic CurrentHeatingCoolingMode, state auto, mapping {OFF=off, HEAT=auto, COOL=Cooling}

ORANGE OK

Current mode item needs to by string, not switch. Maybe it can be fixed somehow but for now i will make a workarround

1 Like

there is feature request to implement mapping for numbers and switches. not implement yet.

the color depends on mode and whether the current temperature is below or above target temperature