Drayton Wiser Home Assistant Integration

Here is a right definition:

- sensor:                       
    - name: "Kitchen iTRV Temperature"
      unique_id: "kitchen_itrv_temp"
      unit_of_measurement: "°C"
      device_class: "temperature"             
      state_class: "measurement"
      state: >-
        {{ state_attr('sensor.wiser_itrv_kitchen_signal','temperature') }}

  • sensor: you missed the : after sensor
  • replace ’ by "
  • state: add >- and change line with one indentation more
  • {{ state_attr('sensor.wiser_itrv_kitchen_signal’,‘temperature’) }}

To display the temperature of the iTRV

in code editor:
type: entity
entity: sensor.wiser_itrv_sejour_1_signal
attribute: temperature
unit: °C
icon: mdi:thermometer
grid_options:
columns: full

Possibly being stupid here but a pointer would be appreciated. I added a load of ITRV’s today and was expecting them to pop up in homeassistant but they have not. Do i need to reinstall the wiser custom component for HA? Thanks :slight_smile:

Edit - forced a reload and its picked them up

Thankyou for your help.

I now have the iTRV temperatures displayed that I was interested in . (Actually for the Lounge, not the kitchen as in the examples).

The code editor was not very helpful in creating them.

Further confusion…
I assumed in the entities list, the ‘sensor.wiser_itrv_kitchen_signal’ was actually referencing the devices zigbee signal strength.

Indeed, when I click on any of the created temperature displays, the popup shows signal strength data.
So it works, but… how on earth did you suss that out?

The entity display show an attribute of the “sensor.wiser_itrv_room_signal”, when you click on it it call the state of this sensor.

If you want to display the history or the trend of the temperature measured by the iTRV you have to create sensors like I proposed.

For your information, if you need some special information for wiser device have a look to the sensor.wiser_*_signal

is there any way to boost “all”

service: wiser.boost_heating
data:
  time_period: 60
  temperature: 18
target:
  entity_id: "all"

I know I can just call the boost button but I want to set a bosst time and a target temperature

OK, figured it out:

    # switch.pac_heat_boost_all
    pac_heat_boost_all:
      value_template: "{{ states('sensor.wiser_heating') | lower == 'on' }}"

      turn_on:
        service: wiser.boost_heating
        data:
          time_period: "{{ states('input_number.pac_wiser_heat_boost_minutes') | int }}"
          temperature: "{{ states('input_number.pac_wiser_heat_boost_target') | float }}"
        target:
          entity_id: >
            {{ states.climate
              | selectattr('entity_id', 'match', '^climate\.wiser_')
              | selectattr('attributes', 'contains', 'number_of_trvs')
              | selectattr('attributes.number_of_trvs', '>', 0)
              | map(attribute='entity_id')
              | list }}

      turn_off:
        service: button.press
        target:
          entity_id: button.wiser_cancel_all_heating_overrides

      icon_template: >-
        {% if states('sensor.wiser_heating') | lower == 'on' %}
          mdi:radiator
        {% else %}
          mdi:radiator-disabled
        {% endif %}

ok, seems to be some kind of timing issue as not all climates get boosted.

1 Like

Its an attribute of the Signal sensor for the iTRV. You can make a template type helper for them with a template like this:

{{ state_attr('sensor.wiser_itrv_living_room_signal', 'temperature') }}"

I’m sure this has been covered before, but I’ve searched and can’t find it.

It’s to do with passive mode.
I’m using the Wiser schedule to control temperature, which works well for non-passive TRVs, but I have a problem with those in passive mode.

Basically, when I use a climate automation to set the upper/lower target temperatures, this does not alter the climate settings.

Does this mean that automations for passive TRVs can’t be used with the Wiser schedule? Is there a way around this?

Thanks!

Is there a way to know if an iTRV is currently open or closed?

I’ve looked around but have not found a state attribute exposed that clearly indicates the valve’s position. It’s possible I’m simply overlooking something though.

The goal is to determine the actual state of individual TRVs. I’m not sure if a room-level call for heat directly indicates whether one or all of the valves are actually on or off, let’s say in a room with multiple TRVs with a Room Stat added as well.

I do it with a template sensor (actually, that’s for a room, not an individual TRV)

{% if states('sensor.wiser_lts_heating_demand_kitchen') | float > 0 %} Call {% else %} Idle {% endif %}

Thanks for the confirmation.

For those having a problem with short cycling… or just a not so great boiler which takes more than 2 mins to get the radiators warm. I had Claude come up with an automation that does the following;

  1. Lets the wiser control when heat is called for
  2. When heat is called it bumps the temp by 2 degrees so it burns for at least 15 minutes (my min to get warm).
  3. After 15 mins sets the temp lower so the thermostat can then decide if it should continue or stop.
  4. Resets the temp back to the original.
  5. Doesnt fire if the temp is 9 degrees or lower (my night time and away temp). Also only works if the heating is set to auto.

To use it you need to create a helper entity of type toggle named “Wiser Extended Burn Active”.

alias: Wiser - Ensure Minimum 15 Min Boiler Burn
description: >-
  Extends heating demand to ensure efficient boiler operation with minimum
  15-minute burns
triggers:
  - entity_id: climate.wiser_hallway
    attribute: hvac_action
    to: heating
    id: heating_started
    trigger: state
  - entity_id: climate.wiser_hallway
    attribute: hvac_action
    from: heating
    to: idle
    id: heating_stopped
    trigger: state
conditions:
  - condition: state
    entity_id: climate.wiser_hallway
    state: auto
  - condition: numeric_state
    entity_id: climate.wiser_hallway
    attribute: temperature
    above: 9
actions:
  - choose:
      - conditions:
          - condition: trigger
            id: heating_started
        sequence:
          - variables:
              current_temp: "{{ state_attr('climate.wiser_hallway', 'current_temperature') }}"
              target_temp: "{{ state_attr('climate.wiser_hallway', 'temperature') }}"
              temp_delta: "{{ (target_temp - current_temp) | float }}"
              estimated_burn_minutes: "{{ (temp_delta / 0.15) | round(0) }}"
          - if:
              - condition: template
                value_template: "{{ estimated_burn_minutes < 15 }}"
            then:
              - target:
                  entity_id: input_boolean.wiser_extended_burn_active
                data: {}
                action: input_boolean.turn_on
              - target:
                  entity_id: climate.wiser_hallway
                data:
                  temperature: "{{ target_temp + 2.0 }}"
                action: climate.set_temperature
              - data:
                  name: Wiser Efficiency
                  message: >-
                    Extended burn activated. Delta: {{ temp_delta }}°C,
                    Estimated: {{ estimated_burn_minutes }} min, Boosted by
                    2.0°C
                action: logbook.log
              - delay:
                  minutes: 15
              - target:
                  entity_id: climate.wiser_hallway
                data:
                  temperature: "{{ target_temp }}"
                action: climate.set_temperature
              - target:
                  entity_id: input_boolean.wiser_extended_burn_active
                action: input_boolean.turn_off
                data: {}
            else:
              - data:
                  name: Wiser Efficiency
                  message: >-
                    Normal burn proceeding. Delta: {{ temp_delta }}°C, 
                    Estimated: {{ estimated_burn_minutes }} min
                action: logbook.log
      - conditions:
          - condition: trigger
            id: heating_stopped
        sequence:
          - if:
              - condition: state
                entity_id: input_boolean.wiser_extended_burn_active
                state: "on"
            then:
              - target:
                  entity_id: input_boolean.wiser_extended_burn_active
                action: input_boolean.turn_off
              - target:
                  entity_id: climate.wiser_hallway
                data:
                  temperature: >-
                    {{ state_attr('climate.wiser_hallway', 'temperature') - 2.0
                    }}
                action: climate.set_temperature
              - data:
                  name: Wiser Efficiency
                  message: Extended burn cancelled early, reverting temperature
                action: logbook.log
    enabled: true
mode: restart

Why not just let it do its thing and stop worrying about it? The boiler might not be firing long enough for the rads to get what you consider “hot”, but that will be because the house is very near to the set temp. It is still energy going in to the house, it’s not just disappearing. You are now forcing the boiler to fire for 15 minutes when it might not need to. If a room is calling for heat, it is going to carry on calling until the rads DO warm up enough to make a difference.

3 Likes

I agree, why have a smart heating hub and then decide to thwart its smart operation, you may as well just have a standard wireless thermostat. The automation is stopping the hub from learning the heating characteristics resulting in overheating past the setpoint.

2 Likes

Hey all. I’m seeing something very strange with my HubR and I’m hoping I’m not alone.

This is (hopefully) not strictly an issue with this integration but I do use it to track my heating, and both I and the Drayton Wiser support team are so stumped they asked me to try reaching out here!

I have the Gen 1 HubR and a single Thermostat. Standard oil combi boiler (on/off style).

No matter what I set the HubR “Heat Source Type” too, it triggers the boiler on 6 cycles per hour pattern, not 3 per hour as the “Oil Boiler” setting should.

Has anyone else ever seen this?

On the advice of their support team we have power cycled, updated the settings locally and remotely, hard reset all devices, even deleted my entire account and factory reset everything. The result is always the same.

It there any way this integration could be overriding that setting (even though I have tested the heating while it’s disabled!)? As I said we’re totally lost at this point so willing to try anything…

I have experienced this same issue before and realised I was looking at the wrong sensor. You should to look at the “Wiser Heating” sensor.

I can tell it’s short cycling by when the light comes on on the HubR, not by using a HA sensor. Unless you are saying that enabling a certain sensor could be causing this? :thinking:

No, the sensor isn’t causing it. I use the sensor to monitor when the boiler fires. How are you monitoring the firing?

Agreed, I didn’t think that would be possible.

There are few ways to monitor it, from graphing the climate sensor, to manually timing the HubR lights or the actual boiler firing.

The cycling is always 6 times per hour. It’s so weird.

When you go into Settings>Devices>Hub>Heat Source Type, does it show 'Oil Boiler 'each time you access it?