Let's start talking about the new Z-wave JS integration

i actually have same issue on my session and im using the addon from supervisor (raspberry pi 4)

Mine appears to have come back after upgrading HA to 2021.3.2. We’ll see if they stay.

I just migrated to ZWaveJS last night. I’ve got most things working right now except my ZCOMBO. The alarmType and alarmLevel values show up just fine in the ZWaveJS2MQTT web display (and they update properly when I test the alarm by pushing the button):

But they don’t show up in the device’s entities:

This makes me think it might be a Home Assistant bug possibly. I also don’t get any events fired when the alarmType and alarmLevel values change.

1 Like

They are hidden entities. If you go to the Home Assistant Z Wave JS integration, then that device, click hidden and enable them. Give it ~ 1 minute to refresh. Then you will probably have to restart Home Assistant to actually get values updated.

All 4 of mine are 100% working as of 2021.3.2. If they dont update after all this, pull the battery, wait a few seconds, hold down the test button while reinserting the batteries. After you hear the single beep, let go. It will beep again within 10 seconds. Give it a few minutes. If still no updates, restart Home Assistant yet again.

How does one go about “updating neighbors” in ZwaveJS to MQTT? Will a heal network do it? I’m trying to reduce hops to a few devices, and so I’ve relocated my host & USB to a different part of the house… higher, out from behind two concrete walls, and closer to those distant nodes.

Thanks in advance!

Heal network or just restart ZWaveJS. Either way it will rebuild the network.

I don’t see any hidden entities in Home Assistant:

I also restarted HA, ZWaveJS2MQTT, and updated ZWaveJS2MQTT to 0.6.1. No change – the hidden entities button doesn’t show.

I’ll move future updates discussion to the GitHub issue that you mentioned above @gregg098.

Weird that it identified your device properly but didnt pull in the sensors. Usually when sensors dont show up, the device isnt fully recognized.

I’d suggest doing re-interviewing the node from ZWaveJS2MQTT dashboard. Do the sequence of steps I called out above (pull battery, push button, re-insert batteries, wait for beep, etc.) but hit the Re-interview node button right about the same time. Keep the smoke alarm close to your Z wave stick. Maybe thatll pull them in. Youll likely still have to restart Home Assistant afterwards. Try a device heal (not a full network heal) if that doesnt work.

1 Like

Thank you! Re-interview + restart did it. Looks like @eyager’s comment on the GitHub was spot on. I’m seeing the same change in my node JSON after reinterviewing.

1 Like

I’ve tried restarting, but my Network Graph doesn’t update. Maybe a manual heal will work. I may try that tonight.

Thanks. I swapped out my Aeotec for a Nortek stick and had much greater success with my ZwaveJs pairings. My Zen30 included on the first attempt.

considering https://devices.zwave-js.io/?jumpTo=0x000c:0x0203:0x0001:0.0 and a sensor xxx.indicator_value with value 0.0, what would that be? Could that be the value set with parameter 4, even though the value doesnt comply with what is listed here?

don’t update to z-wavejs 0.1.11 add-on, its bugged…

This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: ZWaveError: The config has not been loaded yet!

It’s reported in case you want to follow:

when manually updating a z-wave device do we need to add the

refresh_all_values: true

to refresh all entities of that device, or will that refresh the full mesh network. Asking because I want a hold_action on a button template to update that device and its sensors, but obviously do not want to mess with the complete mesh…

Enabling that parameter does not refresh all nodes in the network, nor does it even refresh all of the entities of a node. It only it refreshes all of the values that are associated with the given entity or entities.

A refresh with refresh_all_values: false just refreshes the primary value of the entity. A primary value is what usually provides the state of the entity, for example the primary value of a light entity is the “current level” value (on/off + brightness).

A refresh with refresh_all_values: true refreshes both the primary value, and the associated (watched) values of the entity. For example, a light entity that supports RGB has the “current level” as the primary, plus it watches all of the associated color values. Refreshing all of its values refreshes the current level plus current color values.

The value refreshes are just GET commands, so too many GETs can affect network performance. A refresh of just the light entity is one GET. A refresh with refresh_all_values: true of an RGB light is multiple GETs. There could be even more GETs depending on the device (e.g. a thermostat). Obviously, the more values you refresh the more traffic will be added to the z-wave network, potentially affecting performance.

If you want to refresh all of the entities for a device, you can use a single service call and provide all the entities as a list. The service call does not take nodes as input. An alternative is to use zwavejs2mqtt which has a node-level value refresh.

As the docs warn, be careful about doing to many refreshes too often.

1 Like

I have both the official zwaveJS addon as well as the zwavejs2mqtt addon installed.
I am currently using the zwavejs2mqtt instead of the official one due to the lack of configuration GUI on the zwaveJS one.
I have zwaveJS set so that it does not start automatically (only the update automatically toggle is on). Nonetheless, for some reason the addon starts on its own, no matter what definitions I have, rendering the zwavejs2mqtt useless if it grabs the USB controller first.
Shouldn’t it start only on demand? What is causing it to start automatically although I have it set otherwise?

thanks @freshcoast , I guess I should not have said device.

My buttons switch the switch entity of a device, but also show the sensor reading the current power. Sometimes, these power sensors are not updated, so I wrote a hold_action object template to do so.

  hold_action:
    action: >
      [[[ return variables.z_wave ? 'call-service' : 'call-service'; ]]]
    service: >
      [[[ return variables.z_wave ? 'zwave_js.refresh_value' : 'script.turn_on'; ]]]
    service_data:
      entity_id: >
        [[[ return variables.z_wave ? entity.entity_id : 'script.' + id + '_meterget_power'; ]]]
      refresh_all_values: >
        [[[ return variables.z_wave ? true : null; ]]]

hoping this would refresh_all_values on the entity_id of the button, being the switch. I now think to understand you say that isnt the way it works, and I should add a list of entities to update on that action?

example, here’s a device, with many sensors, and 1 switch. I would only need to update the sensor.xxx_actueel for this:

any idea which entities values would be updated if I used refresh_all_values: false ?

btw, update 0.1.12 on the z-waveJS add-on is live and working as expected, updating is safe again :wink:

1 Like

I can confirm that.