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

I followed this guide to get it up and running on the Pi and it worked fine for a Linux/Docker noob such as myself.

Updating is a bit of a PITA but it’s basically a repeat of the process and a forced removal of the old docker image - settings appeared to be retained.

Only other “hassle” is enabling the serial port (raspi-config).

If you want to use a POE hat then you need header extenders (see earlier posts in the thread linked below), or if you’re anal like myself and want to have it in a smaller case then you have to de-solder (royal pita) the first 5-6 rows of header pins and solder back longer pins.

See this post (hopefully it’s OK to link to a “competitor” forum):
https://forums.homeseer.com/forum/general-home-automation/general-home-automation-hardware-discussion/electronic-circuits-and-hardware-modifications/1249779-new-pi-3-b-poe-hat?p=1298476#post1298476

When I was running HomeSeer I used two Z-Nets that I built/modded as mentioned in that post and this is basically what you’re trying to build here except that you’re running ZWaveJS instead of a serial to Ethernet gateway,

EDIT / UPDATE:

The wonderful people on discord, notably @firstof9 and @freshcoast helped me. The solution ended up being to switch to the mqtt version of the addon, which allowed me to force a re-interview.


Original

My old install of HA was quite crufty, and am doing a reinstall. It was using the older built-in zwave code. and now I’m on the official zwavejs addon, on a newly upgraded 2021.04 HA (as of a few hours ago).

I have a ZSE40 Zooz 4-in-1 that connected up ok to the new zwave-js addon. But it’s missing the motion sensor! The luminance / humidity / temp all read fine as far as I can tell.

My addon log does have:

2021-04-07T23:23:10.759Z CNTRLR [Node 009] treating BasicCC::Set as a report

Is there a way to force a re-interview of the device?

How else should I debug this? I’m stuck.

From the network dump, the node appears to have some motion sensor, so I’m not sure why it’s not showing up as an entity:

{
  "nodeId": 9,
  "index": 0,
  "installerIcon": 3079,
  "userIcon": 3079,
  "status": 1,
  "ready": true,
  "isListening": false,
  "isRouting": true,
  "isSecure": false,
  "manufacturerId": 634,
  "productId": 8449,
  "productType": 8225,
  "firmwareVersion": "32.2",
  "zwavePlusVersion": 1,
  "deviceConfig": {
    "filename": "/usr/src/node_modules/@zwave-js/config/config/devices/0x027a/zse40.json",
    "manufacturer": "Zooz",
    "manufacturerId": 634,
    "label": "ZSE40",
    "description": "4-in-1 Sensor",
    "devices": [
      {
        "productType": 8225,
        "productId": 8449
      }
    ],
    "firmwareVersion": {
      "min": "0.0",
      "max": "255.255"
    },
    "paramInformation": {
      "_map": {}
    }
  },
  "label": "ZSE40",
  "neighbors": [
    2,
    3,
    5
  ],
  "interviewAttempts": 0,
  "interviewStage": 6,
  "endpoints": [
    {
      "nodeId": 9,
      "index": 0,
      "installerIcon": 3079,
      "userIcon": 3079,
      "deviceClass": {
        "basic": {
          "key": 4,
          "label": "Routing Slave"
        },
        "generic": {
          "key": 7,
          "label": "Notification Sensor"
        },
        "specific": {
          "key": 17,
          "label": "UNKNOWN (0x11)"
        },
        "mandatorySupportedCCs": [],
        "mandatoryControlledCCs": []
      }
    }
  ],
  "values": [
    {
      "endpoint": 0,
      "commandClass": 49,
      "commandClassName": "Multilevel Sensor",
      "property": "Air temperature",
      "propertyName": "Air temperature",
      "ccVersion": 7,
      "metadata": {
        "type": "number",
        "readable": true,
        "writeable": false,
        "label": "Air temperature",
        "ccSpecific": {
          "sensorType": 1,
          "scale": 1
        },
        "unit": "\u00b0F"
      },
      "value": 71.01
    },
    {
      "endpoint": 0,
      "commandClass": 49,
      "commandClassName": "Multilevel Sensor",
      "property": "Illuminance",
      "propertyName": "Illuminance",
      "ccVersion": 7,
      "metadata": {
        "type": "number",
        "readable": true,
        "writeable": false,
        "label": "Illuminance",
        "ccSpecific": {
          "sensorType": 3,
          "scale": 0
        },
        "unit": "%"
      },
      "value": 100
    },
    {
      "endpoint": 0,
      "commandClass": 49,
      "commandClassName": "Multilevel Sensor",
      "property": "Humidity",
      "propertyName": "Humidity",
      "ccVersion": 7,
      "metadata": {
        "type": "number",
        "readable": true,
        "writeable": false,
        "label": "Humidity",
        "ccSpecific": {
          "sensorType": 5,
          "scale": 0
        },
        "unit": "%"
      },
      "value": 29.88
    },
    {
      "endpoint": 0,
      "commandClass": 112,
      "commandClassName": "Configuration",
      "property": 1,
      "propertyName": "Temperature Scale",
      "ccVersion": 1,
      "metadata": {
        "type": "number",
        "readable": true,
        "writeable": true,
        "label": "Temperature Scale",
        "default": 0,
        "min": 0,
        "max": 1,
        "states": {
          "0": "Celsius",
          "1": "Fahrenheit"
        },
        "valueSize": 1,
        "format": 0,
        "allowManualEntry": false,
        "isFromConfig": true
      },
      "value": 1
    },
    {
      "endpoint": 0,
      "commandClass": 112,
      "commandClassName": "Configuration",
      "property": 2,
      "propertyName": "Temperature offset",
      "ccVersion": 1,
      "metadata": {
        "type": "number",
        "readable": true,
        "writeable": true,
        "description": "temperature change to be reported",
        "label": "Temperature offset",
        "default": 1,
        "min": 0,
        "max": 50,
        "valueSize": 1,
        "format": 0,
        "allowManualEntry": true,
        "isFromConfig": true
      },
      "value": 10
    },
    {
      "endpoint": 0,
      "commandClass": 112,
      "commandClassName": "Configuration",
      "property": 3,
      "propertyName": "Humidity",
      "ccVersion": 1,
      "metadata": {
        "type": "number",
        "readable": true,
        "writeable": true,
        "description": "Configure Relative Humidity",
        "label": "Humidity",
        "default": 10,
        "min": 1,
        "max": 50,
        "unit": "percent",
        "valueSize": 1,
        "format": 0,
        "allowManualEntry": true,
        "isFromConfig": true
      },
      "value": 10
    },
    {
      "endpoint": 0,
      "commandClass": 112,
      "commandClassName": "Configuration",
      "property": 4,
      "propertyName": "Light Sensor",
      "ccVersion": 1,
      "metadata": {
        "type": "number",
        "readable": true,
        "writeable": true,
        "label": "Light Sensor",
        "default": 10,
        "min": 1,
        "max": 50,
        "unit": "percent",
        "valueSize": 1,
        "format": 0,
        "allowManualEntry": true,
        "isFromConfig": true
      },
      "value": 10
    },
    {
      "endpoint": 0,
      "commandClass": 112,
      "commandClassName": "Configuration",
      "property": 5,
      "propertyName": "Trigger Interval",
      "ccVersion": 1,
      "metadata": {
        "type": "number",
        "readable": true,
        "writeable": true,
        "description": "Set the trigger interval for motion sensor re-activation.",
        "label": "Trigger Interval",
        "default": 3,
        "min": 1,
        "max": 255,
        "unit": "minutes",
        "valueSize": 1,
        "format": 1,
        "allowManualEntry": true,
        "isFromConfig": true
      },
      "value": 15
    },
    {
      "endpoint": 0,
      "commandClass": 112,
      "commandClassName": "Configuration",
      "property": 6,
      "propertyName": "Motion Sensor Sensitivity",
      "ccVersion": 1,
      "metadata": {
        "type": "number",
        "readable": true,
        "writeable": true,
        "description": "Adjust sensitivity of the motion sensor.",
        "label": "Motion Sensor Sensitivity",
        "default": 4,
        "min": 1,
        "max": 7,
        "states": {
          "1": "highest",
          "2": "higher",
          "3": "high",
          "4": "normal",
          "5": "low",
          "6": "lower",
          "7": "lowest"
        },
        "valueSize": 1,
        "format": 0,
        "allowManualEntry": false,
        "isFromConfig": true
      },
      "value": 3
    },
    {
      "endpoint": 0,
      "commandClass": 112,
      "commandClassName": "Configuration",
      "property": 7,
      "propertyName": "LED indicator mode",
      "ccVersion": 1,
      "metadata": {
        "type": "number",
        "readable": true,
        "writeable": true,
        "label": "LED indicator mode",
        "default": 3,
        "min": 1,
        "max": 4,
        "states": {
          "1": "Off",
          "2": "Pulsing Temperature, Flashing Motion",
          "3": "Flashing Temperature and Motion",
          "4": "No Temperature, Flashing Motion"
        },
        "valueSize": 1,
        "format": 0,
        "allowManualEntry": false,
        "isFromConfig": true
      },
      "value": 4
    },
    {
      "endpoint": 0,
      "commandClass": 113,
      "commandClassName": "Notification",
      "property": "Home Security",
      "propertyKey": "Motion sensor status",
      "propertyName": "Home Security",
      "propertyKeyName": "Motion sensor status",
      "ccVersion": 4,
      "metadata": {
        "type": "any",
        "readable": true,
        "writeable": true
      },
      "value": 0
    },
    {
      "endpoint": 0,
      "commandClass": 114,
      "commandClassName": "Manufacturer Specific",
      "property": "manufacturerId",
      "propertyName": "manufacturerId",
      "ccVersion": 2,
      "metadata": {
        "type": "number",
        "readable": true,
        "writeable": false,
        "label": "Manufacturer ID",
        "min": 0,
        "max": 65535
      },
      "value": 634
    },
    {
      "endpoint": 0,
      "commandClass": 114,
      "commandClassName": "Manufacturer Specific",
      "property": "productType",
      "propertyName": "productType",
      "ccVersion": 2,
      "metadata": {
        "type": "number",
        "readable": true,
        "writeable": false,
        "label": "Product type",
        "min": 0,
        "max": 65535
      },
      "value": 8225
    },
    {
      "endpoint": 0,
      "commandClass": 114,
      "commandClassName": "Manufacturer Specific",
      "property": "productId",
      "propertyName": "productId",
      "ccVersion": 2,
      "metadata": {
        "type": "number",
        "readable": true,
        "writeable": false,
        "label": "Product ID",
        "min": 0,
        "max": 65535
      },
      "value": 8449
    },
    {
      "endpoint": 0,
      "commandClass": 128,
      "commandClassName": "Battery",
      "property": "level",
      "propertyName": "level",
      "ccVersion": 1,
      "metadata": {
        "type": "number",
        "readable": true,
        "writeable": false,
        "label": "Battery level",
        "min": 0,
        "max": 100,
        "unit": "%"
      },
      "value": 100
    },
    {
      "endpoint": 0,
      "commandClass": 128,
      "commandClassName": "Battery",
      "property": "isLow",
      "propertyName": "isLow",
      "ccVersion": 1,
      "metadata": {
        "type": "boolean",
        "readable": true,
        "writeable": false,
        "label": "Low battery level"
      },
      "value": false
    },
    {
      "endpoint": 0,
      "commandClass": 132,
      "commandClassName": "Wake Up",
      "property": "wakeUpInterval",
      "propertyName": "wakeUpInterval",
      "ccVersion": 1,
      "metadata": {
        "type": "number",
        "default": 43200,
        "readable": false,
        "writeable": true,
        "label": "Wake Up interval",
        "min": 600,
        "max": 604800,
        "steps": 600
      },
      "value": 43200
    },
    {
      "endpoint": 0,
      "commandClass": 132,
      "commandClassName": "Wake Up",
      "property": "controllerNodeId",
      "propertyName": "controllerNodeId",
      "ccVersion": 1,
      "metadata": {
        "type": "any",
        "readable": true,
        "writeable": false,
        "label": "Node ID of the controller"
      },
      "value": 1
    },
    {
      "endpoint": 0,
      "commandClass": 134,
      "commandClassName": "Version",
      "property": "libraryType",
      "propertyName": "libraryType",
      "ccVersion": 2,
      "metadata": {
        "type": "any",
        "readable": true,
        "writeable": false,
        "label": "Library type"
      },
      "value": 3
    },
    {
      "endpoint": 0,
      "commandClass": 134,
      "commandClassName": "Version",
      "property": "protocolVersion",
      "propertyName": "protocolVersion",
      "ccVersion": 2,
      "metadata": {
        "type": "any",
        "readable": true,
        "writeable": false,
        "label": "Z-Wave protocol version"
      },
      "value": "4.54"
    },
    {
      "endpoint": 0,
      "commandClass": 134,
      "commandClassName": "Version",
      "property": "firmwareVersions",
      "propertyName": "firmwareVersions",
      "ccVersion": 2,
      "metadata": {
        "type": "any",
        "readable": true,
        "writeable": false,
        "label": "Z-Wave chip firmware versions"
      },
      "value": [
        "32.2"
      ]
    },
    {
      "endpoint": 0,
      "commandClass": 134,
      "commandClassName": "Version",
      "property": "hardwareVersion",
      "propertyName": "hardwareVersion",
      "ccVersion": 2,
      "metadata": {
        "type": "any",
        "readable": true,
        "writeable": false,
        "label": "Z-Wave chip hardware version"
      }
    }
  ],
  "isFrequentListening": false,
  "maxDataRate": 100000,
  "supportedDataRates": [
    40000,
    100000
  ],
  "protocolVersion": 3,
  "supportsBeaming": true,
  "supportsSecurity": false,
  "nodeType": 1,
  "zwavePlusNodeType": 0,
  "zwavePlusRoleType": 6,
  "deviceClass": {
    "basic": {
      "key": 4,
      "label": "Routing Slave"
    },
    "generic": {
      "key": 7,
      "label": "Notification Sensor"
    },
    "specific": {
      "key": 17,
      "label": "UNKNOWN (0x11)"
    },
    "mandatorySupportedCCs": [],
    "mandatoryControlledCCs": []
  },
  "commandClasses": [
    {
      "id": 49,
      "name": "Multilevel Sensor",
      "version": 7,
      "isSecure": false
    },
    {
      "id": 89,
      "name": "Association Group Information",
      "version": 1,
      "isSecure": false
    },
    {
      "id": 90,
      "name": "Device Reset Locally",
      "version": 1,
      "isSecure": false
    },
    {
      "id": 94,
      "name": "Z-Wave Plus Info",
      "version": 2,
      "isSecure": false
    },
    {
      "id": 112,
      "name": "Configuration",
      "version": 1,
      "isSecure": false
    },
    {
      "id": 113,
      "name": "Notification",
      "version": 4,
      "isSecure": false
    },
    {
      "id": 114,
      "name": "Manufacturer Specific",
      "version": 2,
      "isSecure": false
    },
    {
      "id": 122,
      "name": "Firmware Update Meta Data",
      "version": 2,
      "isSecure": false
    },
    {
      "id": 128,
      "name": "Battery",
      "version": 1,
      "isSecure": false
    },
    {
      "id": 132,
      "name": "Wake Up",
      "version": 1,
      "isSecure": false
    },
    {
      "id": 133,
      "name": "Association",
      "version": 2,
      "isSecure": false
    },
    {
      "id": 134,
      "name": "Version",
      "version": 2,
      "isSecure": false
    }
  ]
}
1 Like

using this integration, my network map doesnt seem to be mapping anything…anyone else?

I had this happen, what I did was to exclude it, wait a minute to let the network heal a bit and then repaired it. I kept clicking the include button and swapped to the integration so I could see the logs. After this the motion sensor was detected.

I have 3 of them and all show motion.

I’ve seen the same. For me a re-interview of the controller and / or the nodes did the trick. A restart of the add-on should do the same.

I now notice the Z-waveJS integration loads several components I don’t use at all, like Lock and Fan or Light (of course I do use lights, but not on the Z-waveJS platform).

- zwave_js: 
   for: binary_sensor, climate, cover, fan, light, lock, number, sensor, switch

In fact, I only use binary_sensor, sensor and switch

These come with many services:

which are registered useless in the system because of that.

Why would this be, and couldnt it be prevented? Presuming all of this takes away system resources?

So… this doesn’t seem to work anymore. There’s something in the new release about events but I’m not sure what the actual change means.

I’ve not yet ‘recorded’ what happens when I press the buttons but I assume I get the same result as before. It’s just the way this trigger needs to be formulated that needs to change I think.

try listening for “zwave_js_value_notification” instead.

1 Like

This has to do with the way we set up the integration - we set up all the platforms and start listeners internally so that the discovery logic can forward relevant info to each platform to create the entities. This works the same way as it did with ozw and zwave so there is nothing inherently different about what is happening with zwave_js.

I would agree with you that it would be nice to skip the setting up of platforms that ultimately won’t be used, but I don’t think it has a noticeable impact on resources aside from maybe a slight increase in memory usage. Given that this is an existing pattern, it’s something we may look into but it’s a low priority. Someone from the community who wants to get involved in the zwave_js development efforts is welcome to take this on in the interim.

1 Like

thanks @raman325 for your educational explanation. It is merely something I noticed today when creating a python script with ordered lists of domains and subdomains, and certainly not because of any impact the system suffered :wink:

given the fact that Z-WaveJS is advertised as the new kid on the block, being the super fast and modern replacement of these 2 older and slower integrations, I would hope indeed at some point you see an opportunity to only add used platforms. To make it even have less impact on the system, or maybe rephrase that, take only what’s needed.

Meanwhile, enjoying what we have thus far!

1 Like

I’ve got a GoControl (GC-TBZ48) zwave thermostat, after updating to 201.4 the temperature gets stuck/ does not update. What’s interesting, if I removed the node and add it back, it does pass the current temperature. Any ideas? Is this a known bug?

My GC-TBZ48 is working fine here.

version core-2021.4.3
installation_type Home Assistant Container
dev false

zwavejs2mqtt: 3.2.0+ad7b7d0.ad7b7d0
zwave-js: 7.1.1-68294d7

1 Like

@Antoine1 : The dip switches are (very small) hardware switches (M1 and M2) on some of the Philio devices. With these you can override configuration (Test mode, Normal Mode and Customer mode, although I don’t know what Normal vs Customer mode does). I think they are both default OFF.

But … I don’t get any of my Philio devices (1x PST02C, 2x PST02A). All of them do not report door open/closed or motion. They do report temperature and illumination.
They are included successfully and I’ve tried different configurations.
One of the PST02A reports in the zwave js plugin log:
TODO: no handler for application command DRIVER Received a command that contains multiple CommandClasses. This is not supported yet! Discarding the message...
I don’t understand this message, according to [Tracking] Implementation status of Command Classes · Issue #6 · zwave-js/node-zwave-js · GitHub the Multi Command should be supported.

The other devices don’t log anything. Also only two of my (20) z-wave devices log anything at all.

But, let me not forget: other than that I’m very much impressed by what has been created in such a short time.

1 Like

I’ve been having some weird issues ever since my last update run.
Now I’ve updated to hass 2021.4.0 at the same time as when I updated to Wavejs2mqtt 0.11.0 so unfortunately I can’t really tell which of the 2 has caused these problems.
Basically everything works perfectly except for when I tell Google home that I’m going to bed. This triggers a routine that switches like 25 devices and needless to say this causes a lot of network congestion.
Since I updated however, Google will tell me “an error has occurred with 25 devices” but they still switch off…!
While this is going on I noticed that other zwave devices become very unresponsive. Again, you would expect this behaviour with all the congestion going on but I didn’t have these issues before I updated.

I don’t have any log messages that indicate an error so it’s difficult to provide more information. Is there by any chance anyone with the same issues?

I’m all set, I changed the batteries and did a factory reset, good to go now.

My 2 cents - although I agree that it’s low priority, I think the main impetus to develop it is not resource use, but rather to declutter the available services.

Ah I use the C wire, no batteries here.

After upgrading to core 2021.4.3, ZWaveJS2MQTT looks “not well” in a strange way
All devices have Manufacturer, prduct and product code =0xXXXX. Most (maybe all, I haven’t checked yet) seem to work, with the new event names and all.
Nothing else has changed. zwavejs2mqtt is version 3.2.0, zwave js is 7.1.1, and has been running very well since it came out.
What could have happened? Do I have to interview all devices to get the product codes back?

CC @Mariusthvdb

2 Likes

Thanks for this! ( and for the tag :wink: ) really appreciate the effort and feedback