Swap ZWave Sticks without removing/adding all devices?

I am on v7.17.2 and still have an issue almost every single day.

Understood and then it’s not related to the issue 17.2 fixes (Which would also indicate that downgrading sticks wouldn’t help much. So what issues are you seeing.

Basically, the same symptoms as pre-17.2. Devices will go offline and a ping wakes them up. Doesn’t seem to be a pattern in which devices.

I have noticed if I simply stop messing with the network for a couple days, the issues dry up and it seems stable for longer. Not sure if that’s placebo or reality but since I posted that it happens every single day 3 days ago, I don’t think it’s happened again. Go figure.

I’ll just try not to breathe on it.

1 Like

I have a hassos installation of Home Assistant. How do i run the conversion tool ? The github for nodejs also does not seem to have an answer for that question. npx is not available on the home assistant CLI.

You don’t need to use the conversion tool, it’s built into Z-Wave JS UI (formerly zwavejs2mqtt). Just use the normal NVM backup and restore feature.

1 Like

Is there any official first SDK version that support NVM backup/restore ? It would be great to know, so that we could document it correct on home-assistant.io documentation.

I just bought a refurbished ZST10 (500 based), where the seller claims “SDK: 6.81.02”, but in Home Assistant debug, i see “sdkVersion”: “6.4.0”. And i am happy to report that i could restore the NVM backup that i did from my ZST10-700 stick yesterday to the ZST10(-500) and migrate my Z-Wave network to it. So i will claim firmware version 6.4 does suffice (on that type of stick).

I have also created a pull request for the official doc to start documenting this NVM stuff:

https://github.com/home-assistant/home-assistant.io/pull/24474

Btw: great work on that NVM backup/restore/conversion support in Home Assistant!

SDK v6.61 (as quoted).

The Z-Wave integration does not support NVM backups. I’d suggest requesting the documentation be updated for Z-Wave JS UI, which is the software you are using for backup and restore. A more appropriate place in HA docs might be in the page of supported controllers. Still, someone not using Z-Wave JS UI would not be able to take advantage at this time, maybe in the future.

Something is wrong with what’s being reported. There’s no such SDK version as “6.4.0”. Here’s the entire listing of v6 SDKs: node-zwave-js/packages/zwave-js/src/lib/controller/ZWaveSDKVersions.ts at 2e311f1432de6f5bf0d94c44b28e4dee7cd03c01 · zwave-js/node-zwave-js · GitHub. The Zooz ZST10 (500) was certified with 6.81.1

1 Like

The documentation URL is for ZWAVE JS, even though it does not say so in the title. This seems to be now the official Z-Wave integration for Home Assistant, and the old official integration was degraded to legacy (AFAIK).

Thanks. Is there potentially another place in Home Assistant to check the SDK version beside this debug output ? If not… Where would one submit a bug report about the wrong information ?

The integration is called Z-Wave, formerly Z-Wave JS. My point was not about the naming of the docs, but that the integration (i.e. HA) does not support NVM backups and restores at this time, so why would this information be documented there? You are using functionality provided by a third party application, not HA, so it should be documented with that project. If HA ever supports NVM backup and restore, then sure, it would be appropriate to add it to the integration docs. That’s just my opinion though, submit a documentation update and maybe it’ll be approved.

Thanks. Is there potentially another place in Home Assistant to check the SDK version beside this debug output ? If not… Where would one submit a bug report about the wrong information ?

There’s nothing named “debug output” provided by the integration, so I can’t be sure what you’re referring to exactly. If it’s the Z-Wave JS UI node “debug info”, you can refer to their support channels (e.g. GitHub) for help. The integration supports a Device Diagnostic (Device Page → … menu). Maybe you can post an example that shows the SDK version from the device diagnostic?

Thanks. I guess there is already some amount of non-integration information on that document page, which is why i didn’t figure out this important nuance. Such as selecting Z-Wave controller. Which obviously also has nothing to do with the integration, and which is the part of the doc where i added the NVM info.

The correct place is probably for user-facing documentation Z-Wave JS UI . And update the Home Assistant doc to point to that user facing Z-Wave JS user pages instead of the developer / API page, which it does now.

Oh well, doc work is never done. I’ll see when i have time again to propose stuff :wink:

Output from ZWave JS UI debug for the ZST10 (500) :slight_smile:

{
  "id": 1,
  "name": "Z-Wave Hub",
  "loc": "Management",
  "values": [],
  "groups": [],
  "neighbors": [
    4,
    5,
    6,
    11,
    12,
    13,
    17,
    20,
    23,
    25,
    27
  ],
  "ready": true,
  "available": true,
  "hassDevices": {},
  "failed": false,
  "inited": true,
  "eventsQueue": [
    {
      "time": "2022-10-09T01:18:45.629Z",
      "event": "alive",
      "args": [
        0
      ]
    },
    {
      "time": "2022-10-09T01:18:45.639Z",
      "event": "ready",
      "args": []
    }
  ],
  "status": "Alive",
  "interviewStage": "Complete",
  "hexId": "0x027a-0x0401-0x0002",
  "dbLink": "https://devices.zwave-js.io/?jumpTo=0x027a:0x0401:0x0002:2.3",
  "manufacturerId": 634,
  "productId": 2,
  "productType": 1025,
  "deviceConfig": {
    "filename": "/data/db/devices/0x027a/zst10.json",
    "isEmbedded": true,
    "manufacturer": "Zooz",
    "manufacturerId": 634,
    "label": "ZST10",
    "description": "S2 USB Stick Controller",
    "devices": [
      {
        "productType": 1025,
        "productId": 2
      }
    ],
    "firmwareVersion": {
      "min": "0.0",
      "max": "255.255"
    }
  },
  "productLabel": "ZST10",
  "productDescription": "S2 USB Stick Controller",
  "manufacturer": "Zooz",
  "firmwareVersion": "2.3",
  "sdkVersion": "6.4.0",
  "protocolVersion": 3,
  "endpointsCount": 0,
  "endpointIndizes": [],
  "isSecure": false,
  "security": "None",
  "supportsSecurity": false,
  "supportsBeaming": true,
  "isControllerNode": true,
  "isListening": true,
  "isFrequentListening": false,
  "isRouting": true,
  "keepAwake": false,
  "maxDataRate": 100000,
  "deviceClass": {
    "basic": 2,
    "generic": 2,
    "specific": 1
  },
  "deviceId": "634-2-1025",
  "statistics": {
    "messagesTX": 40,
    "messagesRX": 800,
    "messagesDroppedRX": 0,
    "NAK": 0,
    "CAN": 16,
    "timeoutACK": 0,
    "timeoutResponse": 0,
    "timeoutCallback": 0,
    "messagesDroppedTX": 0
  },
  "lastActive": 1665337817362,
  "powerlevel": 0,
  "measured0dBm": 6.3,
  "_name": "Z-Wave Hub (Management)"
}

Integration Diagnostics:

{
  "home_assistant": {
    "installation_type": "Home Assistant OS",
    "version": "2022.9.7",
    "dev": false,
    "hassio": true,
    "virtualenv": false,
    "python_version": "3.10.5",
    "docker": true,
    "arch": "armv7l",
    "timezone": "UTC",
    "os_name": "Linux",
    "os_version": "5.15.61-v7l",
    "supervisor": "2022.09.1",
    "host_os": "Home Assistant OS 9.0",
    "docker_version": "20.10.17",
    "chassis": "embedded",
    "run_as_root": true
  },
  "custom_components": {},
  "integration_manifest": {
    "domain": "zwave_js",
    "name": "Z-Wave",
    "config_flow": true,
    "documentation": "https://www.home-assistant.io/integrations/zwave_js",
    "requirements": [
      "pyserial==3.5",
      "zwave-js-server-python==0.41.1"
    ],
    "codeowners": [
      "@home-assistant/z-wave"
    ],
    "dependencies": [
      "usb",
      "http",
      "websocket_api"
    ],
    "iot_class": "local_push",
    "usb": [
      {
        "vid": "0658",
        "pid": "0200",
        "known_devices": [
          "Aeotec Z-Stick Gen5+",
          "Z-WaveMe UZB"
        ]
      },
      {
        "vid": "10C4",
        "pid": "8A2A",
        "description": "*z-wave*",
        "known_devices": [
          "Nortek HUSBZB-1"
        ]
      }
    ],
    "zeroconf": [
      "_zwave-js-server._tcp.local."
    ],
    "loggers": [
      "zwave_js_server"
    ],
    "supported_brands": {
      "leviton_z_wave": "Leviton Z-Wave"
    },
    "is_built_in": true
  },
  "data": {
    "versionInfo": {
      "driverVersion": "10.3.0",
      "serverVersion": "1.24.0",
      "minSchemaVersion": 0,
      "maxSchemaVersion": 24
    },
    "entities": [],
    "state": {
      "nodeId": 1,
      "index": 0,
      "status": 4,
      "ready": true,
      "isListening": true,
      "isRouting": true,
      "isSecure": false,
      "manufacturerId": 634,
      "productId": 2,
      "productType": 1025,
      "firmwareVersion": "2.3",
      "name": "Z-Wave Hub",
      "location": "**REDACTED**",
      "deviceConfig": {
        "filename": "/data/db/devices/0x027a/zst10.json",
        "isEmbedded": true,
        "manufacturer": "Zooz",
        "manufacturerId": 634,
        "label": "ZST10",
        "description": "S2 USB Stick Controller",
        "devices": [
          {
            "productType": 1025,
            "productId": 2
          }
        ],
        "firmwareVersion": {
          "min": "0.0",
          "max": "255.255"
        }
      },
      "label": "ZST10",
      "interviewAttempts": 0,
      "endpoints": [
        {
          "nodeId": 1,
          "index": 0,
          "deviceClass": {
            "basic": {
              "key": 2,
              "label": "Static Controller"
            },
            "generic": {
              "key": 2,
              "label": "Static Controller"
            },
            "specific": {
              "key": 1,
              "label": "PC Controller"
            },
            "mandatorySupportedCCs": [],
            "mandatoryControlledCCs": [
              32
            ]
          },
          "commandClasses": []
        }
      ],
      "values": [],
      "isFrequentListening": false,
      "maxDataRate": 100000,
      "supportedDataRates": [
        40000,
        100000
      ],
      "protocolVersion": 3,
      "supportsBeaming": true,
      "supportsSecurity": false,
      "deviceClass": {
        "basic": {
          "key": 2,
          "label": "Static Controller"
        },
        "generic": {
          "key": 2,
          "label": "Static Controller"
        },
        "specific": {
          "key": 1,
          "label": "PC Controller"
        },
        "mandatorySupportedCCs": [],
        "mandatoryControlledCCs": [
          32
        ]
      },
      "interviewStage": "Complete",
      "deviceDatabaseUrl": "https://devices.zwave-js.io/?jumpTo=0x027a:0x0401:0x0002:2.3",
      "statistics": {
        "commandsTX": 0,
        "commandsRX": 0,
        "commandsDroppedRX": 0,
        "commandsDroppedTX": 0,
        "timeoutResponse": 0
      },
      "highestSecurityClass": -1,
      "isControllerNode": true,
      "keepAwake": false
    }
  }
}

SDK version does not show up in the integration diagnostics. Only in the Z-Wave JS diagnostic.

It appears not. In the past there was no distinction, HA just hasn’t caught up. You can get it from the raw server dumps but it will just say the same thing as zwave-js-ui. I’m curious what the driver debug logs say about the controller info (printed when starting the driver), but it’s working so I suppose it doesn’t matter.

I was on a 500 series USB stick (the old Nortek) running firmware 6.10. I had upgraded the firmware on this stick using the wire/TP28 method so am able to do NVM backups. But now I just bought a 700 series stick (SLUSB001A from DigiKey, quite cheap, $19 + $5 shipping) and want to transfer to that.

Since the SLUSB0001A s is technically a development stick (not meant for retail sale) I had to flash a firmware on it. I was able to find 7.18.3 which is the latest available. Once the firmware was installed, I then did the following to swap out the 500 series stick for the 700 series stick:

  1. Did a full backup on my Home Assistant system, just in case
  2. Did an NVM backup of the 500 stick (which places the file on my windows desktop)
  3. Disabled the ZW-JS Integration (Settings => Devices and Services => click on the 3 vertical dots in lower right of Z-Wave JS integration, and selected disable.
  4. Unplug the 500 stick, and plug in the 700 stick in the same USB slot that the 500 was in. My zwaveJS UI shows I am using /dev/ttyUSB0 as my USB port, so not linked to a unique device ID.
  5. Did a restore of the NVM on the new stick, using the file that was backup up from the 500 series stick which I saved to my windows desktop. The progress indicator first said it was converting the file, then flashing it. Took about a minute or so to complete.
  6. Re-enable the Z-Wave JS integration
  7. Did a full hardware reboot

Worked without any issues. All z-wave devices appear to be working and none of the naming changed that I can see. All automations appear to still work that had z-wave devices. I re-interviewed any 700 series devices in my home so that they would benefit from the higher data speeds when talking to the controller.

Nice!

3 Likes

How did you get the Names / Locations to follow the NVM backup / restore?
I did the same as you and it works great, just no names and locations; unfortunately I have 100’s of devices.

I did try to copy the cache over the 2nd try, but that didn’t work either…

Did your old device use /dev/ttyUSB0 or similar (aka USB1, USB2, etc)? I think it might require that the device connection name remain the same. So you might have to use “/dev/ttyUSBx” for naming and make sure you put it is the exact same USB slot as the prior stick.

So long as you follow the steps above and also made a backup then you should be able to still recover all the names/areas/etc

I used the same device: /dev/serial/by-id/usb-0658_0200-if00, and plugged into the same USB port.

I am not an expert on this, but pretty sure that will not work like mine did. Using /serial/by-id/ is specific to a device. So the system is seeing your new USB stick as different from the old one, and assumes therefore it cannot use the old names, etc. But I am now out of my league in terms of knowledge on how to fix. Anyone else?

1 Like

I don’t know, thanks for your input, hopefully someone more knowledgeable will respond.
I do know that it’s recommended to NOT use the USB device but rather the ‘by-id’ device, as it doesn’t change if you move it to a different USB port.

I am using the same ‘by-id’ device for ZWAVE JS UI as the ZWAVE JS integration.

Hello, I’m doing a similar thing today. I have a 700 17.9.2 series and it’s jamming on me and becomes unresponsive. I bought a 700 series with 17.8.3 that should resolve my issue. What specific steps should I take to move my nodes to the new stick without losing names, automations, etc? I am using JS-UI. Thank you for your help.