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?