The Future of Z-Wave in HA - QT-OpenZWave

After testing this for a bit I’ve got some questions that have come up:

  1. what node information is the entity_id based on when it automatically gets added to the system?

  2. How does the system deal with what used to be “zwave events”. I was helping someone else with a wallmote that didn’t send status changes to a switch but just generated events that were used to trigger automations. How are those events translated over to the new system? I have a zwave scene controller and once I fully switch over then I’ll need to know the answer to that myself.

  3. I tested using the qt-ozw in parallel with the standard zwave integration (using different zwave sticks) and they work together fine except I get a bunch of errors in the log from the devices on the non-qt-ozw stick. The errors only show up at start up of HA and don’t seem to effect their operation so it’s not really an issue as far as I can tell. Since the containers (HA and qt_ozw) use different sticks in their definitions why would there be any errors at all using them together? why would the qt-ozw container even know about the other zwave devices connected to the other stick?

Yeah me too

If you are using an Aeon stick, i think the “/dev/serial/by-id” name is the same for both sticks (when i plugged in stick 2, it was gone from /dev/serial/by-id/ but had a /dev/ttyUSB* name) … It looks to be a design flaw by Aeon :frowning:

I really hope node naming will becoma a standard for the ozwdaemon as this wil prevent a lot of renaming and problems within HA. For instance, on my system after upgrade HassOS to 4.8 and HA to 0.110, my philio climate sensors suddenly had different entity names. So i needed to change every automation, lovelace card etc.

yesterday i switched to the official ozwdaemon as i was using the pre-release version. I removed the HA integration aswell. I started ozwdaemon, wait a bit to have the daemon collect all information about my zwave devices, and filled the nodenames. After that i added the openzwave integration back to HA and now even the entity names as based on the nodenames! So apart from having clear and actual naming to select within automations etc, as long as you name your nodes within ozwdaemon it will not break things in HA ever, even when removing integration and adding it back.

No, I’m not using the “by-id” on either stick. I have assigned them their own persistent id’s in udev.

And I’m not even using two Aeotec sticks. I’ve got one Aeotec stick (used by the built-in integration) and the other (the one being used by zwave-over-mqtt) is the zwave portion of the HUBZ stcick.

Events are published also in a topic; the value is published, quickly followed by a zero. I have made this sensor to capture these events. It switches to 26 and back to zero on double click (fibaro dimmer 2)

- platform: mqtt
  name: 'lichtknop_wk_links_boven'
  state_topic: 'OpenZWave/1/node/9/instance/1/commandclass/43/value/155893779/'
  value_template: "{{ value_json.Value }}"

1 Like

You should be able to use the ozw.scene_activated event for that.

You really probably want to be using the .scene_activated event since it delivers in a reasonably convenient form the node id and the info about what scene was activated (Up or Down and Pushed 1 time, 2 times, etc.). Ultimately, Marcel said that he plans a device level interface that would allow one to respond on a device event for the actual device by name (no need to translate the node id) and the type of event from a dropdown. Not sure when they will get implementing that but that will eventually be the right way to capture zwave events.

Is that a listener that gets installed by zwave over mqtt?

It was my understanding that zwave over mqtt only communicated with the openzwave system via mqtt. I didn’t think that ozw/zwave system services/events were generated.

please forget this reference to the HAS pre-release name

Open ZWave (beta) is the new name to avoid confusion with the unrelated zwave2mqtt project

The ozw.scene_activated event is provided by the Open ZWave (beta) - which is working to provide Z-Wave integration without the end user needing to use mqtt directly – but this does communicate over mqtt behind the scenes

1 Like

Sorry, I didn’t realize the name had officially changed.

OK thanks for the info.

on a different but related note…

does OZW beta provide any easily readable system or node status events for the devices like the built in integration does? or is that something that will have to be set up manually using an mqtt sensor?

Once the devices are successfully queried they get a status of “ready”. And once the zwave network is ready it generates a “network_ready” event.

Is there something similar in the new system?

Today a motion sensor which worked fine was suddnely “unavailable”. I had to wake it up in order to get it working again.

I rebooted the zwave addon to no revail.
I opened the openzwave admin and saw and “empty” line until I woke up the device.

What can be wrong?

I have installed the openzwave beta and added my first device successfully. The device is an Inovelli LZW31-SN Dimmer. HomeAssistant shows it as a dimmer so that is great.

My question, is there documentation (or an example diff) on adding functionality to devices that work through the openzwave-beta/MQTT integration? For example I would like to expose the different buttons, and some of the device’s preferences.

For other people that want to start from scratch I created a gist with my docker-compose.yml:

Here’s my first test automation I made for that switch - It’s very basic.

Turn the status light red when I press the config button 1x

automation:
  - alias: 'LZW31-SN Scene Test'
    trigger:
      - event_type: ozw.scene_activated
        platform: event
        event_data:
          node_id: 2
          scene_id: 3
          scene_value_id: 1
    action:
      - service: mqtt.publish
        data:
          qos: 1
          retain: false
          topic: OpenZWave/1/command/setvalue/
          payload: >-
            {
              "ValueIDKey": 3659174741016598,
              "Value": 1
            }

The tricky part was figuring out the ValueIDKey – I used ozw-admin to help with this but I don’t have any kind of guide to really explain in detail – Also there are likely to be other ways for figuring out the correct ValueIDKey. – Maybe watching the mqtt topic OpenZWave/1/# could help get started

1 Like

I’d recommend MQTT Explorer (or other GUIs) like it. Very simple to browse through all the nodes and values.

3 Likes

I have been reading some positive things about the OpenZWave (beta) integration so I decided to see if I could get it working, but I’m not getting very far. I run my Home Assistant instance as a docker container, so I tried to do the same for the OZW daemon. This is the relevant part of my docker-compose.yml file:

  qt-openzwave:
    container_name: "qt-openzwave"
    image: openzwave/ozwdaemon
    ### BEHAVIOUR
    depends_on:
      mosquitto:
        condition: service_started
    restart: always
    ### NETWORKING
    networks:
      - mosquitto
    ports:
      - "1983:1983"
    ### PERMISSIONS
    security_opt:
      - seccomp:unconfined
    ### SHARED
    devices:
      - "/dev/serial/by-id/usb-0658_0200-if00:/dev/ZstickG5"
    volumes:
      - ~/qt-openzwave:/opt/ozw/config
    ### VARIABLES
    environment:
      MQTT_SERVER: "mosquitto"
      MQTT_USERNAME: "REDACTED"
      MQTT_PASSWORD: "REDACTED"
      USB_PATH: "/dev/ZstickG5"
      OZW_NETWORK_KEY: "REDACTED"

Before actually migrating from the old to the new Z-Wave integration in HA, I want to see if my daemon container is actually working. I do that by connecting to it using the ozw-admin app for Windows and MacOS. The outcome of that is:

  • On MacOS, I can connect to the container but nothing shows up within the app (no controller, no nodes, no logs, etc).
  • On Windows, I connect to the container which leads to a progress bar jumping to 96%, and then the app just closes after a second.

I am at a loss why I’m seeing this behaviour. These are the logs I retrieved via Portainer after starting the qt-openzwave container:

Executing: /usr/local/bin/ozwdaemon -s /dev/ZstickG5 --config-dir /opt/ozw/config --user-dir /opt/ozw/config --mqtt-server mosquitto --mqtt-port 1883 --stop-on-failure --mqtt-instance 1 --mqtt-username REDACTED ,
ozw.daemon: Checking  "/opt/ozw/config"  for manufacturer_specific.xml,
Configuration Database Does Not Exist - Copying Database to Location  "/opt/ozw/config/",
ozw.database: Testing  "./qt-openzwavedatabase.rcc",
ozw.database: Testing Standard Paths "/root/.local/share/OpenZWave/qt-openzwavedatabase.rcc",
ozw.daemon: Checking  "/opt/ozw/config"  for options.xml,
User Configuration Path Does Not Exist - Copying Config Files to Location  "/opt/ozw/config/",
ozw.database: Testing  "./qt-openzwavedatabase.rcc",
ozw.database: Testing Standard Paths "/root/.local/share/OpenZWave/qt-openzwavedatabase.rcc",
ozw.daemon: DBPath:  "/opt/ozw/config/",
ozw.daemon: userPath:  "/opt/ozw/config/",
ozw.daemon: Network Key Specified in Enviroment is Valid,
ozw.daemon: Didn't Find Network Key File. Skipping,
ozw.daemon: We Have what appears to be a valid Network Key - Passing to OZW,
ozw.daemon: Didn't Find Auth Key File. Skipping,
[20200606 4:32:47.873 UTC] [ozw.manager] [debug]: Database Path:  "/opt/ozw/config/"  User Path "/opt/ozw/config/",
[20200606 4:32:47.873 UTC] [ozw.manager] [debug]: OpenZWave Options Class Creating,
[20200606 4:32:47.873 UTC] [ozw.manager] [debug]: OpenZWave Options Class Set,
[20200606 4:32:47.873 UTC] [ozw.manager] [debug]: Models Created,
[20200606 4:32:47.874 UTC] [qt.remoteobjects] [warning]:  Tried to register QRemoteObjectRootSource twice "QTOZWLog",
[20200606 4:32:47.874 UTC] [ozw.manager] [debug]: QTOZWManager Ready!,
[20200606 4:32:47.874 UTC] [ozw.daemon] [debug]: Ready,
[20200606 4:32:47.874 UTC] [ozw.manager] [debug]: QTOZWLog Ready!,
[20200606 4:32:47.874 UTC] [ozw.manager] [debug]: QTOZWOptions Ready!,
[20200606 4:32:47.874 UTC] [ozw.daemon] [info]: Staring  "ozwdaemon"  Version:  "0.1.127",
[20200606 4:32:47.874 UTC] [ozw.daemon] [info]: OpenZWave Version:  "1.6.1136",
[20200606 4:32:47.874 UTC] [ozw.daemon] [info]: QT-OpenZWave Version:  "1.2.0",
[20200606 4:32:47.874 UTC] [ozw.daemon] [info]: QT Version:  5.12.5,
[20200606 4:32:47.874 UTC] [default] [info]: Docker MQTT_PASSWORD Secret Missing....,
[20200606 4:32:47.874 UTC] [default] [info]: Using MQTT_PASSWORD from Enviroment,
[20200606 4:32:47.874 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "ping",
[20200606 4:32:47.874 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "open",
[20200606 4:32:47.874 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "close",
[20200606 4:32:47.874 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "refreshnodeinfo",
[20200606 4:32:47.874 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "requestnodestate",
[20200606 4:32:47.874 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "requestnodedynamic",
[20200606 4:32:47.874 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "requestconfigparam",
[20200606 4:32:47.874 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "requestallconfigparam",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "softresetcontroller",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "hardresetcontroller",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "cancelcontrollercommand",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "testnetworknode",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "testnetwork",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "healnetworknode",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "healnetwork",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "addnode",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "removenode",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "removefailednode",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "hasnodefailed",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "requestnodeneighborupdate",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "assignreturnroute",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "deleteallreturnroute",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "sendnodeinformation",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "replacefailednode",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "requestnetworkupdate",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "isnodefailed",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "checklatestconfigfilerevision",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "checklatestmfsrevision",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "downloadlatestconfigfilerevision",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "downloadlatestmfsrevision",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "setvalue",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "getpollinterval",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "setpollinterval",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "syncronisenodeneighbors",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "enablepoll",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "disablepoll",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "refreshvalue",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "addassociation",
[20200606 4:32:47.875 UTC] [ozw.mqtt.commands] [debug]: Registering Command  "removeassociation",
[20200606 4:32:47.875 UTC] [ozw.mqtt.publisher] [debug]: MQTT State Change "Connecting",
[20200606 4:32:47.875 UTC] [ozw.mqtt.publisher] [info]: MQTT Client Connecting,
[20200606 4:32:47.876 UTC] [ozw.daemon] [info]: Using BreakPad - Crash Directory:  "/opt/ozw/config/crashes/",
[20200606 4:32:47.876 UTC] [ozw.library] [debug]: Always - Node: 0 OpenZwave Version 1.6-1136-g07ea22bb Starting Up,
[20200606 4:32:47.876 UTC] [ozw.library] [warning]: Warning - Node: 0 Unable to load Localization file /opt/ozw/config/Localization.xml: Failed to open file,
[20200606 4:32:47.876 UTC] [ozw.library] [warning]: Warning - Node: 0 Exception: Localization.cpp:794 - 1 - Cannot Create Localization Class! - Missing/Invalid Config File?,
[20200606 4:32:47.877 UTC] [ozw.manager] [warning]: Failed to Load Manager Class "Cannot Create Localization Class! - Missing/Invalid Config File?",
[20200606 4:32:47.880 UTC] [ozw.mqtt.publisher] [debug]: MQTT State Change "Connected",
[20200606 4:32:47.880 UTC] [ozw.mqtt.publisher] [info]: MQTT Client Connected,
[20200606 4:32:47.880 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "addassociation",
[20200606 4:32:47.880 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/addassociation/"),
[20200606 4:32:47.880 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "addnode",
[20200606 4:32:47.880 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/addnode/"),
[20200606 4:32:47.880 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "assignreturnroute",
[20200606 4:32:47.880 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/assignreturnroute/"),
[20200606 4:32:47.880 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "cancelcontrollercommand",
[20200606 4:32:47.880 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/cancelcontrollercommand/"),
[20200606 4:32:47.880 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "checklatestconfigfilerevision",
[20200606 4:32:47.880 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/checklatestconfigfilerevision/"),
[20200606 4:32:47.880 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "checklatestmfsrevision",
[20200606 4:32:47.880 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/checklatestmfsrevision/"),
[20200606 4:32:47.880 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "close",
[20200606 4:32:47.880 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/close/"),
[20200606 4:32:47.880 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "deleteallreturnroute",
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/deleteallreturnroute/"),
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "disablepoll",
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/disablepoll/"),
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "downloadlatestconfigfilerevision",
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/downloadlatestconfigfilerevision/"),
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "downloadlatestmfsrevision",
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/downloadlatestmfsrevision/"),
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "enablepoll",
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/enablepoll/"),
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "getpollinterval",
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/getpollinterval/"),
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "hardresetcontroller",
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/hardresetcontroller/"),
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "hasnodefailed",
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/hasnodefailed/"),
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "healnetwork",
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/healnetwork/"),
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "healnetworknode",
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/healnetworknode/"),
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "isnodefailed",
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/isnodefailed/"),
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "open",
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/open/"),
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "ping",
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/ping/"),
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "refreshnodeinfo",
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/refreshnodeinfo/"),
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "refreshvalue",
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/refreshvalue/"),
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "removeassociation",
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/removeassociation/"),
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "removefailednode",
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/removefailednode/"),
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "removenode",
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/removenode/"),
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "replacefailednode",
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/replacefailednode/"),
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "requestallconfigparam",
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/requestallconfigparam/"),
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "requestconfigparam",
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/requestconfigparam/"),
[20200606 4:32:47.881 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "requestnetworkupdate",
[20200606 4:32:47.882 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/requestnetworkupdate/"),
[20200606 4:32:47.882 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "requestnodedynamic",
[20200606 4:32:47.882 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/requestnodedynamic/"),
[20200606 4:32:47.882 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "requestnodeneighborupdate",
[20200606 4:32:47.882 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/requestnodeneighborupdate/"),
[20200606 4:32:47.882 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "requestnodestate",
[20200606 4:32:47.882 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/requestnodestate/"),
[20200606 4:32:47.882 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "sendnodeinformation",
[20200606 4:32:47.882 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/sendnodeinformation/"),
[20200606 4:32:47.882 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "setpollinterval",
[20200606 4:32:47.882 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/setpollinterval/"),
[20200606 4:32:47.882 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "setvalue",
[20200606 4:32:47.882 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/setvalue/"),
[20200606 4:32:47.882 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "softresetcontroller",
[20200606 4:32:47.882 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/softresetcontroller/"),
[20200606 4:32:47.882 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "syncronisenodeneighbors",
[20200606 4:32:47.882 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/syncronisenodeneighbors/"),
[20200606 4:32:47.882 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "testnetwork",
[20200606 4:32:47.882 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/testnetwork/"),
[20200606 4:32:47.882 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "testnetworknode",
[20200606 4:32:47.882 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/testnetworknode/"),
[20200606 4:32:47.925 UTC] [ozw.mqtt.publisher] [debug]: Topics:  "OpenZWave/1/status/",

I see some warnings but I have no clue how to fix them. I can’t seem to find any info on them online either. If I clear the contents of the local folder, the following items get (re)created upon restarting the container:

  • a single folder named crashes
  • a single file named ozwdaemon.ini

Here are things I’ve tried to no avail:

  • Stopping the HA container and then restarting the qt-openzwave container to make sure it could access the controller (just in case only 1 container can at a time).
  • Using the all-in-one version of the qt-openzwave image so I could use the built-in VNC connection to access ozw-admin.
  • Putting a copy of the zwcfg_***.xml file from the HA config folder in the qt-openzwave config folder.
  • Changing all (3) device paths to /dev/ttyACM0

Is there anyone here who could shed some light on this? Am I overlooking something?

I am trying to work out what platforms are currently supported by this OZW beta integration. Has anyone get a full list of currently supported platforms, and any caveats that need to be noted.
Sorry if this is available elsewhere, but I tried the docs on HA website and even had a look over github and I seem to have missed them.

[20200606 4:32:47.876 UTC] [ozw.library] [warning]: Warning - Node: 0 Unable to load Localization file /opt/ozw/config/Localization.xml: Failed to open file,
[20200606 4:32:47.876 UTC] [ozw.library] [warning]: Warning - Node: 0 Exception: Localization.cpp:794 - 1 - Cannot Create Localization Class! - Missing/Invalid Config File?,
[20200606 4:32:47.877 UTC] [ozw.manager] [warning]: Failed to Load Manager Class "Cannot Create Localization Class! - Missing/Invalid Config File?",

Looks like a regression in ozwdaemon. It failed to install the config files, which it is supposed to do, so it basically dies and never starts the Z-Wave network. If you examine the status topic (OpenZWave/2/status/) you’ll see it’s offline. Issue here.

You can workaround this by either manually installing the config files (can download from Github) into your config volume/mount, or by using an older image. ozwdaemon:build-96 is known to be working. When you run the old image it will install all the config files automatically, as it’s supposed to. You can then stop and go back to the latest image version, since the config files will persist. Or, you can keep using the old one, but you’ll need to use the matching OZW Admin build.

I’m using allinone-build-12 without much issue. Since I already had the config files installed I did not see this problem.

1 Like

There are container images for arm, arm64 and amd64. https://hub.docker.com/r/openzwave/ozwdaemon/tags

There are build instructions if you’re brave enough to attempt that. https://github.com/OpenZWave/qt-openzwave#building-instructions

EDIT: Woops, I think you meant something else by “platforms”. :sweat_smile:

1 Like

By “platforms” did you mean “components”?
If so, my understanding (to be confirmed) is that they are listed here: https://github.com/home-assistant/core/tree/dev/homeassistant/components/ozw
The lock component is in still dev branch, though.

Anyone knows if keypads are components themselves, or part of locks?
Also, is there a way to displays USB z-wave sticks and repeaters with their status on ozw-beta?