MindrustUK / Heatmiser-for-home-assistant

Heatmiser Neo-Hub / Neostat support for home-assistant.io
85 stars 30 forks source link

Bug: State doesnt match hvac_action #115

Closed timknowlden closed 1 week ago

timknowlden commented 1 year ago

My thermostats although are on 'idle' report their state as 'heat'

Screenshot_20221112_204950_Home Assistant

I have another thermostat (different integration) which reports correctly as per home assistants guidelines.

ribbal commented 1 year ago

I think that is expected behaviour for the Heatmiser stats. The state toggles between ‘off’ and ‘heat’ when the stat is put into and out of ‘standby’ mode.

timknowlden commented 1 year ago

The issue I face is that using a device counter it counts thermostats as heating when the neo thermostats are on idle. All of my tado ones do not show state as heat when they are on idle

ribbal commented 1 year ago

Could you post the yaml for the device counter, please?

timknowlden commented 1 year ago

Yes, I use home kit infused. YAML is here:

device_counters.yaml

# All Radiator Valves or Climate entities (ONLY climate entities can be used here!, if you have a single thermostat put it here as well)
all_climate_entities:
  entities:
    - climate.bedroom
    - climate.graces_room
    - climate.harpers_room
    - climate.en_suite_bathroom
    - climate.main_bathroom
    - climate.hallway
    - climate.office
    - climate.kitchen
    - climate.lounge

hki_sensors.yaml

# Template Sensors (device counting)
  - platform: template
    sensors:
      empty_sensor:
        value_template: " "
      current_entities_on:
        friendly_name: All Entities Currently On
        value_template: >-
          {% set all = expand('group.all_entities')|selectattr('state','eq','on')|list|count %}
          {% set heat = expand('group.all_climate_entities')|selectattr('state','eq','heat')|list|count %}
          {% set cool = expand('group.all_climate_entities')|selectattr('state','eq','cool')|list|count %}
          {% set heat_cool = expand('group.all_climate_entities')|selectattr('state','eq','heat_cool')|list|count %}          
          {% set total = heat + cool + heat_cool + all %}
          {{ total }}
      current_lights_on:
        friendly_name: All Lights Currently On
        value_template: >-
          {{ expand('group.all_light_entities')|selectattr('state','eq','on')|list|count }}
      current_devices_on:
        friendly_name: All Devices Currently On
        value_template: >-
          {{ expand('group.all_device_switch_entities')|selectattr('state','eq','on')|list|count }}
      current_motion_sensors_on:
        friendly_name: All Motion Sensors Currently On
        value_template: >-
          {{ expand('group.all_motion_sensor_entities')|selectattr('state','eq','on')|list|count }}
      current_binary_sensors_on:
        friendly_name: All Binary Sensors Currently On
        value_template: >-
          {{ expand('group.all_binary_sensor_entities')|selectattr('state','eq','on')|list|count }}
      current_doors_open:
        friendly_name: All Doors Currently Open
        value_template: >-
          {{ expand('group.all_door_sensor_entities')|selectattr('state','eq','on')|list|count }}
      current_windows_open:
        friendly_name: All Windows Currently Open
        value_template: >-
          {{ expand('group.all_window_sensor_entities')|selectattr('state','eq','on')|list|count }}
      current_climate_entities_on:
        friendly_name: All Climate Entities Currently On
        value_template: >-
          {% set heat = expand('group.all_climate_entities')|selectattr('state','eq','heat')|list|count %}
          {% set cool = expand('group.all_climate_entities')|selectattr('state','eq','cool')|list|count %}
          {% set heat_cool = expand('group.all_climate_entities')|selectattr('state','eq','heat_cool')|list|count %}          
          {% set total = heat + cool + heat_cool %}
          {{ total }}
ribbal commented 1 year ago

Could you use something like this: {{ expand('group.all_climate_entities') | selectattr('state','eq','heat') | selectattr('attributes.hvac_action','eq','heating')|list|count }}?

You'll probably need to combine this value with your existing tado thermostat count.

timknowlden commented 1 year ago

Could you use something like this: {{ expand('group.all_climate_entities') | selectattr('state','eq','heat') | selectattr('attributes.hvac_action','eq','heating')|list|count }}?

You'll probably need to combine this value with your existing tado thermostat count.

It would be a way to get the device counter working. But styling issues with the button card would differ between different thermostats.

MindrustUK commented 11 months ago

Heatmiser handles multiple modes dictated by various settings ie;

COOL_MODE=False COOL_ON=False HEAT_MODE=True HEAT_ON=False PREHEAT_ACTIVE=False

Try and correlate these internally to the plug-in to reflect the state of the thermostat; i.e Offline Heat actively on Idle etc...

Respect already in place configuration options, or better harvest these from the hub configuration if possible.

iandarbeynhiu commented 10 months ago

Can this be used to correctly show preheating?

I can see preheating in the heatmiser app but not via homeassistant and I think it's due to the hvac action not updating when the preheat_active flag (visible in the entity attributes) changes to true.

Preheating appears a valid state https://developers.home-assistant.io/docs/core/entity/climate/#set-hvac-mode https://github.com/home-assistant/core/blob/ab29c796da44392eb61527e7e8c8e976d5596869/homeassistant/components/climate/const.py#L88C1-L97C30

MindrustUK commented 9 months ago

This should be resolved as part of the new version 2 rewrite of this integration here: https://github.com/MindrustUK/Heatmiser-for-home-assistant/tree/dev please test and provide feedback.

MindrustUK commented 1 week ago

Closing, no response.