Z wave thermostat (heatit/mutireg) status feedback / energy

No no,
Did not make the xml. used the custom file from stiansoevik.
I forgot to tell you that you need to associate the different groups manually to the controller under zwave setup. Then the temperature measurement works. Now the external temp seems ok, which is the one that I’m using, but the internal temp does not update.

The upgrade process went fine, used the 1$ CP2102 as described here https://www.hjemmeautomasjon.no/forums/topic/3585-heatit-oppdater-til-v192-med-uoriginal-kabel/?tab=comments#comment-41451

Not sure that I will bother updating my other thermostats as the only gain is getting several temp readings, perhaps nice having floor and air temp. Reporting state heating/idle is achieved with older firmware anyways, reporting of decimals are nice though, but not really that big of deal.

If the z-dim is already supported by openzwave you can simply git clone the updated files and change the config directory in hass. If you want to make your own, I would go with the same process instead of changing the zwcfg*.xml, cant help you with how to make the file though…

Bumping this old thread…
Anyone who managed to get a binary sensor with the state when using ZWave over MQTT ?

Currently using zwave-js 10.3.1 but I do not get any information if it’s heating or just in standby…

I’m working on the same. I’ve updated a Heatit/Multireg til FW 1.92 and do get the Relay as a switch entity. But it’s not updating it’s status automatically.

In Zwave JS UI/Zwave2mqtt I created this under Settings → General (Remember to hit save at the bottom) and the Relay status is now updating.

1 Like

Where did you find the 1.92 firmware?

(Or do you have a copy somewhere that you can share)

You need a USB to TTL device to update it. I don’t think OTA will work. Here are the files, and documentation for FW 1.92: https://filetransfer.io/manage-package/jnZHK0Jp

Below is how I collect kWh estimates. Note that you need to know how many watts your heater is pulling and replace “ChangeMeToANumber” below

  template:
    - sensor:
        - name: 'Termostat Stue Electric Consumption [W]'
          unique_id: e6cd8509793f4b139f8d4afa9300e8ac
          unit_of_measurement: "W"
          device_class: power
          state:  >
            {% if is_state('switch.termostat_stue', 'off') %}
              {{0|float}}
            {% elif is_state('switch.termostat_stue', 'on') %}
              {{ChangeMeToANumber|float}}
            {% else %}
              {{0|float}}
            {% endif %}

  sensor:
    - platform: integration
      unique_id: 'c3fc7bbf8cce4b3a86855f0a747a812f'
      source: sensor.termostat_stue_electric_consumption_w
      name: 'Termostat Stue Electric Consumption [kWh]'
      unit_prefix: k
      round: 2
      method: left

Ah… a bit of process to commit to. :expressionless:
Think I will leave it as is… don’t want to risk bricking the unit since it’s installed and needs to be working.

(and btw, the link is a 404)

I’m already on FW 1.92.

I’m trying to add the same setting under Zwave JS UI/Zwave2mqtt as you have, but I cannot find “Current value (37-1-currentValue)” in my dropdown list - only “Current Value…” for the 4 Endpoints and various other alternatives.

What is the Endpoint/Group setup I should use for these thermostats?

Could wrong Endpoint/Group setup be the reason for not seeing the correct value in the dropdown list?

I have not added the xml file mentioned in the old posts in this thread - do I need to?

I’m confused, so your help would be appreciated!

I have added currentValue endpoint 1 in my setup.

Turns out you can do the same thing with firmware 1.8. This is how I did it.
You need to change device_id: in the automation and change how many Watts the heater is under state: in template sensor.

# FW 1.8
# Bad start
  input_boolean:
    termostat_bad:
      name: Termostat Bad
      icon: mdi:toggle-switch-variant

# Automation to turn on/off helper when Basic: 255/0 received
  automation:
  - id: 'e7334376c0824758b2b45d0084d10000'
    alias: 'Termostat bad on - Relay status'
    description: "Turns on helper when thermostat kicks in"
    trigger:
      - platform: device
        device_id: 64b1856cf1457b45f46e137ea5efb523
        domain: zwave_js
        type: zwave_js.value_updated.value
        command_class: 32
        property: currentValue
        to: "255"
    condition: []
    action:
      - service: input_boolean.turn_on
        data: {}
        target:
          entity_id: input_boolean.termostat_bad
    mode: single

  - id: 'de1e1920da69458cab56db2bb73ebc19'
    alias: 'Termostat bad off - Relay status'
    description: "Turns off helper when thermostat kicks in"
    trigger:
      - platform: device
        device_id: 64b1856cf1457b45f46e137ea5efb523
        domain: zwave_js
        type: zwave_js.value_updated.value
        command_class: 32
        property: currentValue
        to: "0"
    condition: []
    action:
      - service: input_boolean.turn_off
        data: {}
        target:
          entity_id: input_boolean.termostat_bad
    mode: single

  template:
    - sensor:
        - name: 'Termostat Bad Electric Consumption [W]'
          unique_id: '1d6b39d3b0794d7a84bf39326abf0c67'
          unit_of_measurement: "W"
          device_class: power
          state:  >
            {% if is_state('input_boolean.termostat_bad', 'off') %}
              {{0|float}}
            {% elif is_state('input_boolean.termostat_bad', 'on') %}
              {{500|float}}
            {% else %}
              {{0|float}}
            {% endif %}

  sensor:
    - platform: integration
      unique_id: '0501d1fb0ad84f61bb6791b24a0146cc'
      source: sensor.termostat_bad_electric_consumption_w
      name: 'Termostat Bad Electric Consumption [kWh]'
      unit_prefix: k
      round: 2
      method: left
### Bad end
1 Like

Thanks! Will give it a go and see how it works. :slight_smile:

You get very inaccurate readings when using the default method for riemann integral. See: Riemann integral calculates wrong values with electrical devices I’ve changed mine to method: left to see if that solves the issue.

I cant even get the zwave_js.value_updated to trigger… when reading the docs it says that it should be “enabled on a per device and per entity domain basis”
But it doesn’t say how that should be done… any idea?

I haven’t had any problems with that. Do the value update/automation trigger if you refresh the endpoint manually in zwave2mqtt/zwavejsui?

Added a listener to zwave_js.value_updated events (dev tools / events) and it’s completly silent… (I have 30+ zwave units)

Hello,
I also dont see anything happening in the dev tool, event listener. I’m sure that data is recived as I get this in the debug:

2024-06-14T07:22:23.727Z CNTRLR   [Node 005] [~] [Basic] currentValue: 99 => 99                     [Endpoint 0]
2024-06-14T07:22:23.733Z DRIVER « [Node 005] [REQ] [ApplicationCommand]
                                  └─[BasicCCReport]
                                      current value: 99
2024-06-14T07:22:23.734Z CNTRLR   [Node 005] [~] [Basic] currentValue: 99 => 99                     [Endpoint 0]

However does BasicCCReport count as zwave_js.value_updated ?

Did anyone manage to receive automatic updates from v1.92 thermostats?
I’m using ZWave JS and thermostat status is not getting updated.

Yes,
The BasicCCReport are now linked to sensor entities.

I’ve been waiting for this! But how does this work? I’ve tried re-interviewing a few of these thermostats and now I have this:
a basic light entity no longer available
a basic number entity which is unavailable
a basic sensor entity which is always 99.0

should the basic sensor entity update when it’s heating?

Yes, they should.
Mine change between 0, 99 and 255 where 255 is on and 0 and 99 is off.
You need to group the on/off control to gateway if you have not allready done so:

I use automations which set state of input bolean

- alias: VK on B1
  trigger:
    platform: template
    value_template: "{{ states('sensor.bad_basic')  | float(0) > 200  | float(0) }}"   
  action:
    service: input_boolean.turn_on
    target:
      entity_id: input_boolean.heating_bad_1
  id: 473a5d27b6254b53bcb7ed34db3cdf6e

- alias: VK off B1
  trigger:
    platform: template
    value_template: "{{ states('sensor.bad_basic')  | float(0) < 200  | float(0) }}"   
  action:
    service: input_boolean.turn_off
    target:
      entity_id: input_boolean.heating_bad_1
  id: 2887bfe233374786a3ffc82b1ba9f0ec

Thanks! I finally got it working. Had trouble switching to zwave js ui to do the grouping.