Drayton Wiser Home Assistant Integration

I see connection issues several times per week (‘issue’ defined as hub failing to respond to 5 consequetive pings or a connection warning/error in HA). But this was the first 2 hr event IIRC since that firmware update months ago.
@LGO44 So do you think the networking stack/hardware is more resilient with the V2 hub?

for my point of view sure

Does anyone have an example of an automation/s that they are using to ‘turn off’ (reduce the setpoint down to 5 degrees for example) a given rooms iTRV, if a window contact sensor in that room is opened? I’m not finding the Wiser ‘Open Window Detection’ setting is having the desired effect, and I have contact sensors on my windows that I can use as the trigger instead. If the contact sensor subsequently closes, I suppose it would be a case of cancelling the override for that room, so that the setpoint returns to the current scheduled setpoint again?

What I do is switch the heating off and then return it to auto. I created input booleans, which I created template sensors from to use to indicate that there is an override in place, mainly for testing, but decided to keep them as it clearly indicates what’s happening. If you want the YAML for the heating override template sensors or for the dashboard display of them, just let me know.

Here’s my YAML for downstairs and a screenshot of the sensors showing window and door states and whether there is an override in place:

# Wiser windows open heating override control
- id: 5DC79502-C49B-4342-A5FB-32F2E1A6D4C0
  alias: "Wiser: Windows open heating override control"
  mode: queued
  trigger:
    # Hallway Heating Off
    - platform: state
      entity_id: binary_sensor.front_door
      from: 'off'
      to: 'on'
      for: 00:05:00
      id: hallway_heating_off
    # Hallway Heating On
    - platform: state
      entity_id: binary_sensor.front_door
      from: 'on'
      to: 'off'
      id: hallway_heating_auto
    # Living Room Heating Off
    - platform: state
      entity_id: binary_sensor.living_room_patio_doors
      from: 'off'
      to: 'on'
      for: 00:01:00
      id: living_room_heating_off
    - platform: state
      entity_id: binary_sensor.living_room_windows
      from: 'off'
      to: 'on'
      id: living_room_heating_off
    # Living Room Heating On
    - platform: state
      entity_id: binary_sensor.living_room_windows_and_doors
      from: 'on'
      to: 'off'
      id: living_room_heating_auto
    # Kitchen Heating Off
    - platform: state
      entity_id: binary_sensor.kitchen_patio_doors
      from: 'off'
      to: 'on'
      for: 00:05:00
      id: kitchen_heating_off
    - platform: state
      entity_id: binary_sensor.kitchen_windows
      from: 'off'
      to: 'on'
      id: kitchen_heating_off
    # Kitchen Heating On
    - platform: state
      entity_id: binary_sensor.kitchen_windows_and_doors
      from: 'on'
      to: 'off'
      id: kitchen_heating_auto
    # Utility Room Heating Off
    - platform: state
      entity_id: binary_sensor.back_door
      from: 'off'
      to: 'on'
      for: 00:05:00
      id: utility_room_heating_off
    # Utility Room Heating On
    - platform: state
      entity_id: binary_sensor.back_door
      from: 'on'
      to: 'off'
      id: utility_room_heating_auto
  action:
    # Check Wiser Hub is not offline and wait for it to come back online if it is
    - wait_template: "{{ is_state('binary_sensor.wiser_hub_status', 'off') and is_state('binary_sensor.wiser_hub', 'on') }}"
    - choose:
        # Hallway Heating Off
        - conditions:
            - condition: and
              conditions:
                - condition: trigger
                  id: hallway_heating_off
                - condition: not
                  conditions:
                    - condition: state
                      entity_id: climate.hallway_climate
                      state: 'off'
          sequence:
            - service: climate.set_hvac_mode
              target:
                entity_id: climate.hallway_climate
              data:
                hvac_mode: 'off'
            - service: input_boolean.turn_on
              target:
                entity_id: input_boolean.heating_override_hallway_windows_open
        # Hallway Heating On
        - conditions:
            - condition: and
              conditions:
                - condition: trigger
                  id: hallway_heating_auto
                - condition: state
                  entity_id: climate.hallway_climate
                  state: 'off'
                - condition: state
                  entity_id: input_boolean.heating_override_hallway_windows_open
                  state: 'on'
          sequence:
            - service: climate.set_hvac_mode
              target:
                entity_id: climate.hallway_climate
              data:
                hvac_mode: auto
            - service: input_boolean.turn_off
              target:
                entity_id: input_boolean.heating_override_hallway_windows_open
        # Living Room Heating Off
        - conditions:
            - condition: and
              conditions:
                - condition: trigger
                  id: living_room_heating_off
                - condition: not
                  conditions:
                    - condition: state
                      entity_id: climate.living_room_climate
                      state: 'off'
          sequence:
            - service: climate.set_hvac_mode
              target:
                entity_id: climate.living_room_climate
              data:
                hvac_mode: 'off'
            - service: input_boolean.turn_on
              target:
                entity_id: input_boolean.heating_override_living_room_windows_open
        # Living Room Heating On
        - conditions:
            - condition: and
              conditions:
                - condition: trigger
                  id: living_room_heating_auto
                - condition: state
                  entity_id: climate.living_room_climate
                  state: 'off'
                - condition: state
                  entity_id: input_boolean.heating_override_living_room_windows_open
                  state: 'on'
          sequence:
            - service: climate.set_hvac_mode
              target:
                entity_id: climate.living_room_climate
              data:
                hvac_mode: auto
            - service: input_boolean.turn_off
              target:
                entity_id: input_boolean.heating_override_living_room_windows_open
        # Kitchen Heating Off
        - conditions:
            - condition: and
              conditions:
                - condition: trigger
                  id: kitchen_heating_off
                - condition: not
                  conditions:
                    - condition: state
                      entity_id: climate.kitchen_climate
                      state: 'off'
          sequence:
            - service: climate.set_hvac_mode
              target:
                entity_id: climate.kitchen_climate
              data:
                hvac_mode: 'off'
            - service: input_boolean.turn_on
              target:
                entity_id: input_boolean.heating_override_kitchen_windows_open
        # Kitchen Heating On
        - conditions:
            - condition: and
              conditions:
                - condition: trigger
                  id: kitchen_heating_auto
                - condition: state
                  entity_id: climate.kitchen_climate
                  state: 'off'
                - condition: state
                  entity_id: input_boolean.heating_override_kitchen_windows_open
                  state: 'on'
          sequence:
            - service: climate.set_hvac_mode
              target:
                entity_id: climate.kitchen_climate
              data:
                hvac_mode: auto
            - service: input_boolean.turn_off
              target:
                entity_id: input_boolean.heating_override_kitchen_windows_open
        # Utility Room Heating Off
        - conditions:
            - condition: and
              conditions:
                - condition: trigger
                  id: utility_room_heating_off
                - condition: not
                  conditions:
                    - condition: state
                      entity_id: climate.utility_room_climate
                      state: 'off'
          sequence:
            - service: climate.set_hvac_mode
              target:
                entity_id: climate.utility_room_climate
              data:
                hvac_mode: 'off'
            - service: input_boolean.turn_on
              target:
                entity_id: input_boolean.heating_override_utility_room_windows_open
        # Utility Room Heating On
        - conditions:
            - condition: and
              conditions:
                - condition: trigger
                  id: utility_room_heating_auto
                - condition: state
                  entity_id: climate.utility_room_climate
                  state: 'off'
                - condition: state
                  entity_id: input_boolean.heating_override_utility_room_windows_open
                  state: 'on'
          sequence:
            - service: climate.set_hvac_mode
              target:
                entity_id: climate.utility_room_climate
              data:
                hvac_mode: auto
            - service: input_boolean.turn_off
              target:
                entity_id: input_boolean.heating_override_utility_room_windows_open

It would be better to snapshot the states and then restore them, but as @jsh posted here, there appears to be a problem when trying to restore the snapshot and I have not got round to investigating further as to why this is, as the above automation works well enough for me.

If anyone knows why restoring the snapshot state of the climate entities is throwing an error, I would also be interested to know.

1 Like

Perfect, I can use that to help me build something similar - thanks very much!

EDIT: I’ve just checked the error that @jsh mentioned, and it’s the same error that myself and others have mentioned when trying to set a preset mode from the features option of the thermostat card. Going into the more-info menu on the thermostat card, and setting the preset from there doesnt seem to trigger the error. To me, it sounds like this is an issue with preset mode validation, rather than the snapshot setup?
There are one or two posts on the forum mentioning this or similar ‘preset not valid’ errors, such as here

Thanks, Robert, that’s very helpful.

Drat! As you say, the immersion heater use case could easily be catered for by Drayton. New firmware for the electric heat switch would do it.

Don’t suppose anyone has tried reflashing one…

Back to the drawing board!

Am thinking about hacking a smart plug to bits to use as a relay for something else, although obvs that would not handle an immersion load

Hello

Is the Wiser Hub required to make a CCTFR6400 thermostat work under HA???

With the thermostat card I can see the local temperature, but I can’t adjuts the setpoint :S

If you want to use the CCRFR6400 with HA, it should be possible with ZHA or Zigbee2MQTT.
The device provide the room temperature and humidity, you have to use a number to adjust the set point or a climate …

By using a Wiser Hub you 'll can use the devices and all the features provided by the awesome wiser integration…

I use a Sonoff POWR3 (POWR3 - SONOFF Official) that I reflashed with tasmota.

Any reason, other than having all heating and hot water related controls through Wiser, not to use the Frient Smart Cable outside of Wiser through Z2M or ZHA?

Personally, I don’t think it’s worth trying to reflash or modify a Wiser smart plug for this functionality and, as you say, it’s unlikely to take the load of an immersion heater anyway.

FWIW, if it’s the fact it’s out of stock (backordered) at Vesternet and showing Unavailable at Amazon, it’s because Frient have released v2, which is Zigbee 3.0 as opposed to Zigbee 1.2 on the v1. The v2 is available on Amazon for next day delivery and cheaper than the v1 was through Vesternet.

Hello. First of all thank you to the developers for this great integration.
I have an on/off system (not OT) with 2 channel control (CH and HW). I am trying to use a Sonoff THR320D to measure cylinder temperature and thus control the HW via the Wiser hub. However I can not use the Wiser Hot Water entity - I have to use the LTS Hot Water entity and test for 100% or not. This is because the Wiser Hot Water entity does not appear to have a state. For example if I try showing the history in the UI, there is none - the graph area is empty. This is also true of the Wiser Heating entity. Interestingly the card shows the state of each of these. I am wondering if anyone else has this problem?

This is also true of the Wiser Heating entity.

Do you mean by this the entity sensor.wiser_heating?
If so, I see this history in the UI when I click on this entity in an entity card. BTW it does show the state as either on or off.

image

Or is this not what you mean?

  • Core2024.2.4
  • Supervisor2024.02.0
  • Operating System12.0
  • Frontend20240207.1

Using v3.4.2 of the integration currently, but only upgraded from an older version to try and solve a problem that came up after a full backup restore of a 1-2 week old backup last week.

On startup getting the following message in the “Repairs” notifications for 3 different automations calling the wiser.set_schedule service:

The automation “AidanWFHOff_MikeNightsOn” (automation.aidanwfhoff_mikenightson) has an action that calls an unknown service: wiser.set_schedule.

This error prevents the automation from running correctly. Maybe this service is no longer available, or perhaps a typo caused it.

To fix this error, edit the automation and remove the action that calls this service.

Click on SUBMIT below to confirm you have fixed this automation.

Yes exactly that except my history is blank ie no on/off bar as yours. I can however see the state as “off” as yours shows. Similarly with Wiser Hot Water. I can not use it in an automation because no state is shown to select in the visual editor. And if I try to use yaml it does not work. For some reason the state is not recognised even though clearly it shows the state on an entity card.

This definitely isn’t normal. Have you switched the recorder off in configuration.yaml? Do any other entities not display the history? Please post a screenshot of what you are seeing to help us help you. The hot water should also display as below:

image

Try redownloading the integration in HACS and rebooting. It sounds like something has gone a bit squify after the restore.

Thanks - have used the redownload option for the integration in HACS and rebooted but no joy.

Wondering if I should remove the integration completely and add it again, or if that would make any difference compared to redownloading?

hotwater
Here is a image of history of the Wiser Hot Water. The Wiser Heating is the same. As far as I am aware none of the other entities exhibit no actual history. If I have switched off the recorder, I have done so by mistake (I have no idea how to switch off or on!) Interestingly your hot water entity displays as Wiser Hub Hot Water, whilst mine is just Wiser Hot Water. I read somewhere that you can reload the integration from within the integration configuration without loosing any set up. If that is so, would it be worth trying this?

Hi

As @robertwigley suggested, try redownloading the integration from HACS, it will then force you to do a restart of HA. See if that makes a difference.
Reloading an integration just re-initialises it, the same as a restart of HA would do, which I assume you have already done?

To redownload it go to HACS, in integrations, search for wiser, open it and click the overflow menu button (3 dots) in upper right corner. Choose redownload.

I would suspect that this is a recorder issue. If it is updating its value then the integration is working and all history logging is handled by HA. Do you have any errors in your log? You could also try renaming the entity (not its name but its entity id) and see if that starts it working. Other than that, maybe try and clear the history for this entity (developer tools → services → recorder.purge_entities) selecting this entity.