Code Monkey home page Code Monkey logo

qt-openzwave's Introduction

qt-openzwave Build Status

This is a QT Wrapper for OpenZWave and contains ozwdaemon - a service that allows you to remotely manage a Z-Wave Network via ozw-admin or connect to a MQTT Broker.

Docker

The ozwdaemon application is published as a Docker image. There are two types of images:

  • A dedicated container that contains only the ozwdaemon service
  • A "All In One" container that includes both the ozwdaemon service and an embedded version of the ozw-admin GUI management tool.

Using the standalone image

The dedicated ozwdaemon image contains only the ozwdaemon application and none of the management tools.

The ozwdaemon uses the /opt/ozw/config directory as the default location to store its cache files, device config files, logs and crashdumps. Be sure to use a bind mount or named volume that is persistent.

An example command for running the container would be:

docker run -it \
    --security-opt seccomp=unconfined \
    --device=/dev/ttyUSB0 \
    -v $PWD/ozw:/opt/ozw/config \
    -e MQTT_SERVER="10.100.200.102" \
    -e USB_PATH=/dev/ttyUSB0 \
    -p 1983:1983 \
    openzwave/ozwdaemon:latest

An example using Docker Compose would be this docker-compose.yaml file:

version: '3'
services:
  ozwd:
    image: openzwave/ozwdaemon:latest
    container_name: "ozwd"
    security_opt:
      - seccomp:unconfined
    devices:
      - "/dev/ttyUSB0"
    volumes:
      - ./ozw:/opt/ozw/config
    ports:
      - "1983:1983"
    environment:
      MQTT_SERVER: "192.168.0.1"
      MQTT_USERNAME: "my-username"
      MQTT_PASSWORD: "my-password"
      USB_PATH: "/dev/ttyUSB0"
      OZW_NETWORK_KEY: "0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00"
    restart: unless-stopped

The --security-opt seccomp=unconfined is needed to generate meaningful backtraces and crashdump files, otherwise it will be difficult for us to debug.

ozwdaemon will shutdown in certain conditions (errors, unable to connect to the MQTT broker), which will exit the container. Be sure to set an appropriate restart policy if you want the container to restart on failure.

Enviroment Variables

The container is configurable via several environment variables.

  • MQTT_SERVER - The IP address or hostname of the MQTT broker. Defaults to localhost.
  • MQTT_PORT - The port number of the MQTT broker. Defaults to 1883.
  • MQTT_USERNAME - The username to use when connecting to the MQTT broker. Do not set for anonymous logins.
  • MQTT_PASSWORD - The password used to connect to the MQTT broker, if needed.
  • MQTT_CONNECT_TIMEOUT - The number of seconds to wait for the MQTT broker to become available before starting ozwdaemon. If a connection cannot be made before the timeout expires the container will exit. Defaults to 30 seconds.
  • USB_PATH - The pathname of the USB stick/serial device file in the container. This value must match the name of the device that was mapped from the host with the Docker --device option. Defaults to /dev/ttyUSB0.
  • OZW_NETWORK_KEY - The Network Key to secure communications with your devices (that are included Securely) - DO NOT LOSE THIS KEY OTHERWISE YOU WILL HAVE TO REINCLUDE YOUR SECURED DEVICES. Defaults to no network key (secure inclusion not possible).
  • OZW_INSTANCE - Multiple Z-Wave networks can run concurrently by starting an individual container for each network. To distinguish the networks, set this enviroment variable to a unique value for each container instance. This affects the base topic that is published to the MQTT broker - OpenZWave/<OZW_INSTANCE>/#. Defaults to 1.
  • OZW_CONFIG_DIR - Set the path inside the container that points to the Device Database. Most users should not need to modify this. Defaults to /opt/ozw/config.
  • OZW_USER_DIR - Change the path where Network Specific Cache/Config Files are stored. Most users should not need to modify this. Defaults to /opt/ozw/config.
  • OZW_AUTH_KEY - Remote management (ozw-admin) authorization key.
  • STOP_ON_FAILURE - If true, ozwdaemon will exit when it detects any failure, such as the inability to connect to the MQTT broker, or open the Z-Wave Controller. Valid values are true or false. Defaults to true.
  • MQTT_TLS - If true, ozwdaemon will connect with TLS encryption to the MQTT broker. Valid values are true or false. Defaults to false.

Exposed Ports

The standalone image exposes the following ports:

  • 1983 - ozw-admin port

Logs

All log messages are printed to the container's console (stdout). They can be viewed with the docker logs command, e.g. docker logs <container id>.

Using the All-In-One Image

The All-In-One image is a variant of the standalone image that includes both ozwdaemon and embedded version of the ozw-admin GUI management tool. The embedded ozw-admin tool is accessible via VNC, either with an external VNC client or the hosted HTML VNC client. The desktop application is not necessary in this case, although it can also be used.

This image uses the same /opt/ozw/config directory to store persistent data.

An example command for running the container would be:

docker run -it \
    --security-opt seccomp=unconfined \
    --device=/dev/ttyUSB0 \
    -v $PWD/ozw:/opt/ozw/config \
    -e MQTT_SERVER="10.100.200.102" \
    -e USB_PATH=/dev/ttyUSB0 \
    -p 1983:1983 \
    -p 5901:5901 \
    -p 7800:7800 \
    openzwave/ozwdaemon:allinone-latest

An example using Docker Compose would be this docker-compose.yaml file:

version: '3'
services:
  ozwd:
    image: openzwave/ozwdaemon:allinone-latest
    container_name: "ozwd"
    security_opt:
      - seccomp:unconfined
    devices:
      - "/dev/ttyUSB0"
    volumes:
      - ./ozw:/opt/ozw/config
    ports:
      - "1983:1983"
      - "5901:5901"
      - "7800:7800"
    environment:
      MQTT_SERVER: "192.168.0.1"
      MQTT_USERNAME: "my-username"
      MQTT_PASSWORD: "my-password"
      USB_PATH: "/dev/ttyUSB0"
      OZW_NETWORK_KEY: "0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00"
    restart: unless-stopped

The --security-opt seccomp=unconfined is needed to generate meaningful backtraces and crashdump files, otherwise it will be difficult for us to debug.

The ozwdaemon and ozw-admin processes are managed by a supervisor watchdog. The watchdog will restart the containers in certain error conditions. It is also advisable to set an appropriate restart policy in case the supervisor exits.

Enviroment Variables

All-In-One image supports all of the same environment variables as the standalone image. In addition, the following settings are available:

  • VNC_PORT - The VNC server port number. Provides remote access to the ozw-admin application via VNC. Defaults to 5901.
  • WEB_PORT - The integrated HTTP server port number. Provides a web based VNC client (NoVNC). Defaults to 7800.

Exposed Ports

The All-In-One image exposes the following ports:

  • 1983 - ozw-admin port
  • 5901 - VNC server port
  • 7800 - HTML VNC client port

Logs

Each application saves its own logs into separate log files. By default the logs are saved in the /opt/ozw/config/logs directory. Using the examples above, the logs would be accessible in the $PWD/ozw/logs directory.

Managing the Z-Wave Network

Each of the image variants provides one or more ways of remotely managing the Z-Wave network.

  1. The standalone and All-In-One images expose the ozw-admin remote access port. The desktop application version of ozw-admin GUI tool can be installed on a PC and can remotely connect to the running container. The default ozw-admin port number is 1983. In the Remote OZWDaemon section of the Open dialog, specify the container host IP address and port 1983 to make a remote connection.
  2. The All-In-One image exposes a VNC server which is running an embedded version of the ozw-admin GUI tool. A dedicated VNC client can connect to the host IP address and the configured VNC port (default 5901) and the ozw-admin tool will be available remotely.
  3. The All-In-One image exposes a Web Based VNC client which connects to the internal VNC server that is running the ozw-admin GUI tool. Use your web browser and connect to the IP address of the container host and the configured HTML VNC client port (default 7800), for example http://192.168.1.2:7800. This will open a Web Based VNC session where you can control ozw-admin.

For the VNC remote access methods, use the Open button to open the connection dialog. Click on the Start button in the Remote OZWDaemon section. Leave the host as localhost. Leave the port as 1983 or change if the ozw-admin port number was customized.

MQTT API Documentation

Please see docs/MQTT.md for complete instructions, including settting up Network Keys, etc.

Building Instructions

The Main Requirements for building this tool is QT 5.12 (LTS) with the QTRemoteObjects Module enabled. Not All Distributions currently ship this version of QT, so manually installing/updated QT on those versions is required.

You can use ozw-base as a stable image based on Buster with a custom build of QT 5.12.x

Other Dependancies:

  • QtMQTT Module - You should clone and checkout the branch that matches your QT version
  • open-zwave - You should clone open-zwave in the same top level as qt-openzwave

For Building On Docker, you must use the enable Docker BuildKit and the command to build the base image would be:

DOCKER_BUILDKIT=1 docker build . -f Docker/Dockerfile -t test --build-arg distcchosts='<list of distcc hosts>' --target base

or for the AllInOne Image:

DOCKER_BUILDKIT=1 docker build . -f Docker/Dockerfile -t test --build-arg distcchosts='<list of distcc hosts>' --target allinone

You can omit the --build-arg distcchosts=<..> portion if you do not have distcc configured on your network

For Building stand alone binaries - Please consult the docker/Dockerfile - You can ignore the depot_tools (Google Breakpad) as this is used for Crash Reporting that should not be used for non-official builds

Home Assistant Integration

ozwdaemon integrates directly with Home Assistant. See the OpenZWave (Beta) integration documentationi for more information.

QT Wrapper Interface

Documentation is in progress. See the qt-simpleclient for a basic example.

qt-openzwave's People

Contributors

balloob avatar bushmanpete avatar bwachter avatar chilicheech avatar chrisdrackett avatar elahd avatar erikced avatar fishwaldo avatar foxy82 avatar kpine avatar lifeisafractal avatar nicklaseklund avatar tetienne avatar yearski avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

qt-openzwave's Issues

Crash on Startup while connecting to a MQTT server requiring Auth

The issue is that we can not currenty provide user/pass for the MQTT auth.
Unauth MQTT works nicely

The following is not relevant any longer for this issue - Originally i assumed the issue was due to no ZWave key set

Using a ZWave network which was running Zwave2MQTT; and swapping over to this container.
I don't see where to supply the network security key.

I see this message in the log

[20200111 22:02:57.981 UTC] [ozw.manager] [debug]: OpenZWave Manager Instance Created
[20200111 22:02:57.981 UTC] [ozw.manager] [debug]: OpenZWave Watcher Registered
[20200111 22:02:57.981 UTC] [ozw.manager] [debug]: Notification Signals Setup
[20200111 22:02:57.982 UTC] [ozw.library] [info]: Info - Node: 0 Setting Up Provided Network Key for Secure Communications
[20200111 22:02:57.983 UTC] [ozw.library] [warning]: Warning - Node: 0 Failed - Network Key Not Set
[20200111 22:02:58.017 UTC] [ozw.library] [info]: Info - Node: 0 Manufacturer_Specific.xml file Revision is 67

And within a few seconds we shut down

[20200111 22:02:59.656 UTC] [ozw.library] [info]: Info - Node: 0 Queuing Lookup on mfs.db.openzwave.com for Node 0
[20200111 22:02:59.657 UTC] [ozw.library] [info]: Info - Node: 0   Opening controller /dev/ttyACM0
[20200111 22:02:59.658 UTC] [ozw.library] [info]: Info - Node: 0 Starting DNSThread
[20200111 22:02:59.658 UTC] [ozw.library] [info]: Info - Node: 0 LookupTxT Checking mfs.db.openzwave.com
[20200111 22:02:59.659 UTC] [ozw.library] [info]: Info - Node: 0 mgr,     Added driver for controller /dev/ttyACM0
[20200111 22:02:59.659 UTC] [ozw.manager] [debug]: AddDriver Completed
[20200111 22:02:59.659 UTC] [ozw.library] [info]: Info - Node: 0 Trying to open serial port /dev/ttyACM0 (attempt 1)
[20200111 22:02:59.661 UTC] [ozw.library] [info]: Info - Node: 0 Timer: thread starting
[20200111 22:02:59.661 UTC] [ozw.library] [debug]: Detail - Node: 0 Timer: waiting with timeout -1 ms
[20200111 22:02:59.663 UTC] [ozw.library] [info]: Info - Node: 0 Serial port /dev/ttyACM0 opened (attempt 1)
[20200111 22:02:59.664 UTC] [ozw.library] [debug]: Detail - Node: 255 Queuing (Command) FUNC_ID_ZW_GET_VERSION: 0x01, 0x03, 0x00, 0x15, 0xe9
[20200111 22:02:59.695 UTC] [ozw.library] [info]: Info - Node: 0 Lookup for mfs.db.openzwave.com returned 65
[20200111 22:02:59.708 UTC] [ozw.library] [debug]: Debug - Node: 0 Downloads Remaining: 0
[20200111 22:02:59.709 UTC] [ozw.library] [info]: Info - Node: 0 ManufacturerSpecificDB Initialized
[20200111 22:02:59.709 UTC] [ozw.library] [debug]: Detail - Node: 0 Notification: ManufacturerSpecificDB Ready
[20200111 22:02:59.710 UTC] [ozw.library] [debug]: Detail - Node: 0
[20200111 22:02:59.711 UTC] [ozw.library] [info]: Info - Node: 255 Sending (Command) message (Callback ID=0x00, Expected Reply=0x15) - FUNC_ID_ZW_GET_VERSION: 0x01, 0x03, 0x00, 0x15, 0xe9
[20200111 22:02:59.711 UTC] [ozw.library] [info]: Info - Node: 255 Encrypted Flag is 0
[20200111 22:02:59.714 UTC] [ozw.library] [debug]: Detail - Node: 255   Received: 0x01, 0x10, 0x01, 0x15, 0x5a, 0x2d, 0x57, 0x61, 0x76, 0x65, 0x20, 0x33, 0x2e, 0x39, 0x35, 0x00, 0x01, 0x99
[20200111 22:02:59.715 UTC] [ozw.library] [debug]: Detail - Node: 0
[20200111 22:02:59.716 UTC] [ozw.library] [info]: Info - Node: 255 Received reply to FUNC_ID_ZW_GET_VERSION:
[20200111 22:02:59.717 UTC] [ozw.library] [info]: Info - Node: 255     Static Controller library, version Z-Wave 3.95
[20200111 22:02:59.718 UTC] [ozw.library] [debug]: Detail - Node: 255 Queuing (Command) FUNC_ID_ZW_MEMORY_GET_ID: 0x01, 0x03, 0x00, 0x20, 0xdc
[20200111 22:02:59.719 UTC] [ozw.library] [debug]: Detail - Node: 255   Expected reply was received
[20200111 22:02:59.720 UTC] [ozw.library] [debug]: Detail - Node: 255   Message transaction complete
[20200111 22:02:59.720 UTC] [ozw.library] [debug]: Detail - Node: 0
[20200111 22:02:59.721 UTC] [ozw.library] [debug]: Detail - Node: 255 Removing current message
[20200111 22:02:59.722 UTC] [ozw.library] [debug]: Detail - Node: 0
[20200111 22:02:59.723 UTC] [ozw.library] [info]: Info - Node: 255 Sending (Command) message (Callback ID=0x00, Expected Reply=0x20) - FUNC_ID_ZW_MEMORY_GET_ID: 0x01, 0x03, 0x00, 0x20, 0xdc
[20200111 22:02:59.724 UTC] [ozw.library] [info]: Info - Node: 255 Encrypted Flag is 0
[20200111 22:02:59.728 UTC] [ozw.library] [debug]: Detail - Node: 255   Received: 0x01, 0x08, 0x01, 0x20, 0xe3, 0x04, 0xb1, 0xf2, 0x01, 0x73
[20200111 22:02:59.729 UTC] [ozw.library] [debug]: Detail - Node: 0
[20200111 22:02:59.730 UTC] [ozw.library] [info]: Info - Node: 255 Received reply to FUNC_ID_ZW_MEMORY_GET_ID. Home ID = 0xe304b1f2.  Our node ID = 1
[20200111 22:02:59.731 UTC] [ozw.library] [debug]: Detail - Node: 255 Queuing (Command) FUNC_ID_ZW_GET_CONTROLLER_CAPABILITIES: 0x01, 0x03, 0x00, 0x05, 0xf9
[20200111 22:02:59.732 UTC] [ozw.library] [debug]: Detail - Node: 255   Expected reply was received
[20200111 22:02:59.732 UTC] [ozw.library] [debug]: Detail - Node: 255   Message transaction complete
[20200111 22:02:59.733 UTC] [ozw.library] [debug]: Detail - Node: 0
[20200111 22:02:59.733 UTC] [ozw.library] [debug]: Detail - Node: 255 Removing current message
[20200111 22:02:59.734 UTC] [ozw.library] [debug]: Detail - Node: 0
[20200111 22:02:59.735 UTC] [ozw.library] [info]: Info - Node: 255 Sending (Command) message (Callback ID=0x00, Expected Reply=0x05) - FUNC_ID_ZW_GET_CONTROLLER_CAPABILITIES: 0x01, 0x03, 0x00, 0x05, 0xf9
[20200111 22:02:59.736 UTC] [ozw.library] [info]: Info - Node: 255 Encrypted Flag is 0
[20200111 22:02:59.738 UTC] [ozw.library] [debug]: Detail - Node: 255   Received: 0x01, 0x04, 0x01, 0x05, 0x08, 0xf7
[20200111 22:02:59.739 UTC] [ozw.library] [debug]: Detail - Node: 0
[20200111 22:02:59.739 UTC] [ozw.library] [info]: Info - Node: 255 Received reply to FUNC_ID_ZW_GET_CONTROLLER_CAPABILITIES:
[20200111 22:02:59.740 UTC] [ozw.library] [info]: Info - Node: 255     There is no SUC ID Server (SIS) in this network.
[20200111 22:02:59.740 UTC] [ozw.library] [info]: Info - Node: 255     The PC controller is a primary controller.
[20200111 22:02:59.741 UTC] [ozw.library] [debug]: Detail - Node: 255 Queuing (Command) FUNC_ID_ZW_GET_SUC_NODE_ID: 0x01, 0x03, 0x00, 0x56, 0xaa
[20200111 22:02:59.741 UTC] [ozw.library] [debug]: Detail - Node: 255   Expected reply was received
[20200111 22:02:59.742 UTC] [ozw.library] [debug]: Detail - Node: 255   Message transaction complete
[20200111 22:02:59.743 UTC] [ozw.library] [debug]: Detail - Node: 0
[20200111 22:02:59.744 UTC] [ozw.library] [debug]: Detail - Node: 255 Removing current message
[20200111 22:02:59.745 UTC] [ozw.library] [debug]: Detail - Node: 0
[20200111 22:02:59.745 UTC] [ozw.library] [info]: Info - Node: 255 Sending (Command) message (Callback ID=0x00, Expected Reply=0x56) - FUNC_ID_ZW_GET_SUC_NODE_ID: 0x01, 0x03, 0x00, 0x56, 0xaa
[20200111 22:02:59.746 UTC] [ozw.library] [info]: Info - Node: 255 Encrypted Flag is 0
[20200111 22:02:59.749 UTC] [ozw.library] [debug]: Detail - Node: 255   Received: 0x01, 0x04, 0x01, 0x56, 0x00, 0xac
[20200111 22:02:59.750 UTC] [ozw.library] [debug]: Detail - Node: 0
[20200111 22:02:59.750 UTC] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlConnect()
[20200111 22:02:59.750 UTC] [ozw.library] [info]: Info - Node: 255 Received reply to GET_SUC_NODE_ID.  Node ID = 0
[20200111 22:02:59.751 UTC] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 87
[20200111 22:02:59.751 UTC] [ozw.library] [info]: Info - Node: 0 Controller Does not Support SUC - Cannot Setup Controller as SUC Node
[20200111 22:02:59.752 UTC] [ozw.notifications] [debug]: Notification pvt_manufacturerSpecificDBReady
[20200111 22:02:59.753 UTC] [ozw.mqtt.publisher] [debug]: Publishing Event manufacturerSpecificDBReady
[20200111 22:02:59.753 UTC] [ozw.library] [debug]: Detail - Node: 255 Queuing (Command) FUNC_ID_SERIAL_API_GET_CAPABILITIES: 0x01, 0x03, 0x00, 0x07, 0xfb
[20200111 22:02:59.754 UTC] [qt.mqtt.connection.verbose] [debug]: void QMqttConnection::transportReadReady()
[20200111 22:02:59.754 UTC] [ozw.library] [debug]: Detail - Node: 255   Expected reply was received
[20200111 22:02:59.755 UTC] [qt.mqtt.connection.verbose] [debug]: Received CONNACK
[20200111 22:02:59.755 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize CONNACK
[20200111 22:02:59.756 UTC] [ozw.library] [debug]: Detail - Node: 255   Message transaction complete
[20200111 22:02:59.756 UTC] [qt.mqtt.connection] [debug]: Connection has been rejected.
[20200111 22:02:59.757 UTC] [ozw.library] [debug]: Detail - Node: 0
[20200111 22:02:59.758 UTC] [ozw.mqtt.publisher] [debug]: MQTT State Change 0
[20200111 22:02:59.758 UTC] [ozw.mqtt.publisher] [warning]: Exiting on Failure
=============================
CRASH!!! - Dumping Backtrace:
=============================
pi@zwave2mqtt:~ $

Selected_id value is wrong

For list values you've recently added a selected_id property which should give the int value of the selected item from the list. This does not match...

{
    "Label": "Scene 1",
    "Value": {
        "List": [
            {
                "Value": 0,
                "Label": "Inactive"
            },
            {
                "Value": 1,
                "Label": "Pressed 1 Time"
            },
            {
                "Value": 2,
                "Label": "Key Released"
            },
            {
                "Value": 3,
                "Label": "Key Held down"
            }
        ],
        "Selected": "Inactive",
        "Selected_id": 3887329024
    },
    "Units": "",
    "Min": 0,
    "Max": 0,
    "Type": "List",
    "Instance": 1,
    "CommandClass": "COMMAND_CLASS_CENTRAL_SCENE",
    "Index": 1,
    "Node": 66,
    "Genre": "User",
    "Help": "",
    "ValueIDKey": 281476089692180,
    "ReadOnly": false,
    "WriteOnly": false,
    "ValueSet": false,
    "ValuePolled": false,
    "ChangeVerified": false,
    "Event": "valueChanged",
    "TimeStamp": 1582300478
}

User directory setting is ignored.

If specifying a non-default user path (using --user-dir argument), it is ignored because main.cpp either derives it from the location of options.xml, or in the case of an empty config (first time run), hard-codes it to /.config/. The actual program parameter is never used.

I would like to keep the cache, config, etc. files on a separate volume from the config files.

Here's an execution log (ignore the usb path):

/opt/ozw # USB_PATH=/dev/zero OZW_USER_DIR=/opt/ozw/user /usr/local/bin/startozwdaemon.sh
Executing: /usr/local/bin/ozwdaemon -s /dev/zero --config-dir /opt/ozw/config --user-dir /opt/ozw/user --mqtt-server localhost --mqtt-port 1883 --stop-on-failure --mqtt-instance 1
...
DBPath:  "./config/"
userPath:  "./config/"
...
[20200512 0:51:29.229 UTC] [ozw.manager] [debug]: Database Path:  "./config/"  User Path "./config/"

Container Shuts down with MQTT Broker is unavailable

Noticed that when I reboot the node running the MQTT broker

this is what i see, no crash dump is generated in this scenario

[20200117 23:35:50.847 UTC] [qt.mqtt.connection.verbose] [debug]: Received PUBLISH
[20200117 23:35:50.847 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize PUBLISH: topic: QMqttTopicName("OpenZWave/1/node/32/statistics/")  payloadLength: 787
[20200117 23:35:51.529 UTC] [ozw.library] [debug]: Detail - Node: 25   Received: 0x01, 0x0c, 0x00, 0x04, 0x00, 0x19, 0x06, 0x31, 0x05, 0x01, 0x42, 0x06, 0x77, 0xee
[20200117 23:35:51.530 UTC] [ozw.library] [debug]: Detail - Node: 0
[20200117 23:35:51.530 UTC] [ozw.library] [info]: Info - Node: 25 Received SensorMultiLevel report from node 25, instance 1, Air Temperature: value=16.55C
[20200117 23:35:51.531 UTC] [ozw.library] [debug]: Detail - Node: 25 Refreshed Value: old value=16.47, new value=16.55, type=decimal
[20200117 23:35:51.532 UTC] [ozw.library] [debug]: Detail - Node: 25 Changes to this value are not verified
[20200117 23:35:51.532 UTC] [ozw.library] [debug]: Detail - Node: 25 Notification: ValueChanged
[20200117 23:35:51.541 UTC] [ozw.notifications] [debug]: Notification pvt_valueChanged:  281475401138194
[20200117 23:35:51.545 UTC] [qt.remoteobjects.models] [debug]: void QAbstractItemModelSourceAdapter::sourceDataChanged(const QModelIndex&, const QModelIndex&, const QVector<int>&) const start= (ModelIndex[row=580, column=0]) end= (ModelIndex[row=580, column=13]) neededRoles= QVector(0, 2, 3)
[20200117 23:35:51.545 UTC] [ozw.mqtt.publisher] [debug]: Publishing Event valueChanged: 281475401138194
[20200117 23:35:51.548 UTC] [ozw.mqtt.qt2js] [debug]: Field is Unchanged:  "Event"  Value:  "valueChanged"
[20200117 23:35:51.551 UTC] [qt.mqtt.connection] [debug]: qint32 QMqttConnection::sendControlPublish(const QMqttTopicName&, const QByteArray&, quint8, bool, const QMqttPublishProperties&) QMqttTopicName("OpenZWave/1/node/25/instance/1/commandclass/49/value/281475401138194/")  Size: 525  bytes. QoS: 0  Retain: true
[20200117 23:35:51.552 UTC] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 599
[20200117 23:35:51.554 UTC] [qt.mqtt.connection.verbose] [debug]: void QMqttConnection::transportReadReady()
[20200117 23:35:51.554 UTC] [qt.mqtt.connection.verbose] [debug]: Received PUBLISH
[20200117 23:35:51.555 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize PUBLISH: topic: QMqttTopicName("OpenZWave/1/node/25/instance/1/commandclass/49/value/281475401138194/")  payloadLength: 525
[20200117 23:36:06.122 UTC] [qt.mqtt.connection] [debug]: void QMqttConnection::transportError(QAbstractSocket::SocketError) QAbstractSocket::RemoteHostClosedError
[20200117 23:36:06.122 UTC] [ozw.mqtt.publisher] [debug]: MQTT State Change 0
[20200117 23:36:06.123 UTC] [ozw.mqtt.publisher] [warning]: Exiting on Failure

README.md does not list prerequesites or give build instructions

I'm trying to build this for NetBSD, via pkgsrc, and hence not using docker. While I expect to figure it out just from reading sources, I noticed that README.md doesn't have the usual list of what other packages this depends on (qt5 base libs, openzwave ?), or give any build instructions.

Also, this seems to contain both ozwdaemon, which is an MQTT bridge, as well as some sort of "qt wrapper", and it's unclear what "qt wrapper" means. It's also unclear whether one is meant only to be able to build all the things from this repo at once, or if there is a notion of subprojects.

Config database not copied on first start (mqtt branch)

When starting the docker container with an empty config directory, the config database files are not copied over. Eventually the mfs.xml and config files are downloaded, but the string XML files (Localization.xml, NotificationCCTypes.xml) are not, and since they are missing things like notifications are missing their labels.

I noticed there is some code (copyConfigDatabase()) that is supposed to initialize the DB using a QT resource file? This function doesn't appear to actually do anything because I don't see any log messages related to the files ("Copying" or "Skipping"). What I see is:

<snip>
Checking  "/usr/share/OpenZWave/config/options.xml"  for options.xml
DBPath:  "./config/"
userPath:  "./config/"
<snip>

I would expect that when the DB files are copied I would see the Copying/Skipping messages in-between "Checking" and "DBPath".

The workaround of course is to download the files yourself, but I would expect that the Docker image at least would include everything to start with, and from the code it seems that is the intent.

I wasn't sure if this part of the code is a WIP still and expected not to work, so I've submitted this issue. I was attempting to build the project myself, but on my system the compiler crashes with an out of memory error when it tries to build the cpp file generated from the qrc file. Any idea how much memory is required to build this?

qt-openzwave crashes when trying to send command/enablepoll/

I'm trying to enable polling for a z-wave (non-plus) device with (possibly) buggy firmware. One of the nodes seems to require polling to get updated.

(This is exploring troubleshooting options from OpenZWave/open-zwave#2215 (comment))

One of my attempted solutions is to enable polling (the correct way) via the qz-openzwave mqtt commands.

Previously I was manually editing the poll_intensity value in my ozwcache_0x*.xml file to force polling:

<Value type="decimal" genre="user" instance="3" index="5" label="Humidity" units="%" read_only="true" write_only="false" verify_changes="false" poll_intensity="96" min="0" max="0" value="35">
	<Help>Humidity Sensor Value</Help>
</Value>

I'm pretty sure that's not the the correct way to do this. Based on the documentation, I should be able to enable polling for a specific ValudeIDKey though an MQTT topic.

https://github.com/OpenZWave/qt-openzwave/blob/master/docs/MQTT.md#enablepoll

However, when I send the payload though OpenZWave/1/command/enablepoll/, qt-openzwave crashes.

qt-openzwave Crash Log

Crash Log
[20200522 13:43:49.298 UTC] [qt.mqtt.connection.verbose] [debug]: void QMqttConnection::transportReadReady(),
[20200522 13:43:49.298 UTC] [qt.mqtt.connection.verbose] [debug]: Received PUBLISH,
[20200522 13:43:49.298 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize PUBLISH: topic: QMqttTopicName("OpenZWave/1/command/enablepoll/")  payloadLength: 46,
[20200522 13:43:49.299 UTC] [ozw.mqtt.commands] [debug]: Got  "OpenZWave/1/command/enablepoll/"  Message:  "{\"ValueIDKey\":1407374938882098,\"Intensity\":96}",
ozwdaemon: /usr/include/rapidjson/document.h:1053: rapidjson::GenericValue<Encoding, Allocator>& rapidjson::GenericValue<Encoding, Allocator>::operator[](const rapidjson::GenericValue<Encoding, SourceAllocator>&) [with SourceAllocator = rapidjson::MemoryPoolAllocator<>; Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>]: Assertion `false' failed.,
[20200522 13:43:49.336 UTC] [default] [warning]: =============================,
[20200522 13:43:49.336 UTC] [default] [warning]: CRASH!!! - Dumping Backtrace:,
[20200522 13:43:49.336 UTC] [default] [warning]: =============================,
[20200522 13:43:49.336 UTC] [default] [warning]: #1  0x000055dc70a8f5d2 sp=0x000055dc71c4bd40 dumpCallback(google_breakpad::MinidumpDescriptor const&, void*, bool) + 0x32,
[20200522 13:43:49.336 UTC] [default] [warning]: #2  0x000055dc70aa6da5 sp=0x000055dc71c4bf90 google_breakpad::ExceptionHandler::GenerateDump(google_breakpad::ExceptionHandler::CrashContext*) + 0x375,
[20200522 13:43:49.337 UTC] [default] [warning]: #3  0x000055dc70aa70ef sp=0x000055dc71c4c030 google_breakpad::ExceptionHandler::SignalHandler(int, siginfo_t*, void*) + 0x9f,
[20200522 13:43:49.337 UTC] [default] [warning]: #4  0x00007f7ae97a1110 sp=0x000055dc71c4c100 funlockfile + 0x50,
[20200522 13:43:49.337 UTC] [default] [warning]: #5  0x00007f7ae9438761 sp=0x00007ffd9106e2f0 gsignal + 0x141,
[20200522 13:43:49.337 UTC] [default] [warning]: #6  0x00007f7ae942255b sp=0x00007ffd9106e410 abort + 0x127,
[20200522 13:43:49.337 UTC] [default] [warning]: #7  0x00007f7ae942242f sp=0x00007ffd9106e540 __libc_freeres + 0x127,
[20200522 13:43:49.337 UTC] [default] [warning]: #8  0x00007f7ae9431092 sp=0x00007ffd9106e590 __assert_fail + 0x42,
[20200522 13:43:49.338 UTC] [default] [warning]: #9  0x000055dc70a8e87f sp=0x00007ffd9106e5c0 MqttCommand_EnablePoll::processMessage(rapidjson::GenericDocument<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>, rapidjson::CrtAllocator>&) + 0x3cf,
[20200522 13:43:49.338 UTC] [default] [warning]: #10 0x000055dc70a7ce09 sp=0x00007ffd9106e650 MqttCommand::messageReceived(QMqttMessage) + 0x2c59,
[20200522 13:43:49.338 UTC] [default] [warning]: #11 0x000055dc70a7d379 sp=0x00007ffd9106e8c0 QtPrivate::QSlotObject<void (MqttCommand::*)(QMqttMessage), QtPrivate::List<QMqttMessage>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) + 0x49,
[20200522 13:43:49.338 UTC] [default] [warning]: #12 0x00007f7ae9a554e8 sp=0x00007ffd9106e8f0 QMetaObject::activate(QObject*, int, int, void**) + 0x918,
[20200522 13:43:49.338 UTC] [default] [warning]: #13 0x00007f7ae9ec81f5 sp=0x00007ffd9106e9e0 QMqttSubscription::messageReceived(QMqttMessage) + 0x35,
[20200522 13:43:49.339 UTC] [default] [warning]: #14 0x00007f7ae9ebe1b4 sp=0x00007ffd9106ea10 QMqttConnection::finalize_publish() + 0x1d4,
[20200522 13:43:49.339 UTC] [default] [warning]: #15 0x00007f7ae9ebeb1f sp=0x00007ffd9106eae0 QMqttConnection::processDataHelper() + 0x2bf,
[20200522 13:43:49.339 UTC] [default] [warning]: #16 0x00007f7ae9ebf2a8 sp=0x00007ffd9106eb40 QMqttConnection::transportReadReady() + 0x78,
[20200522 13:43:49.339 UTC] [default] [warning]: #17 0x00007f7ae9a554e8 sp=0x00007ffd9106ebb0 QMetaObject::activate(QObject*, int, int, void**) + 0x918,
[20200522 13:43:49.339 UTC] [default] [warning]: #18 0x00007f7ae9dd1874 sp=0x00007ffd9106eca0 QAbstractSocket::setSocketDescriptor(long long, QAbstractSocket::SocketState, QFlags<QIODevice::OpenModeFlag>) + 0x664,
[20200522 13:43:49.340 UTC] [default] [warning]: #19 0x00007f7ae9dd190b sp=0x00007ffd9106ecc0 QAbstractSocket::setSocketDescriptor(long long, QAbstractSocket::SocketState, QFlags<QIODevice::OpenModeFlag>) + 0x6fb,
[20200522 13:43:49.340 UTC] [default] [warning]: #20 0x00007f7ae9de3921 sp=0x00007ffd9106ecf0 QTcpServer::incomingConnection(long long) + 0xb561,
[20200522 13:43:49.340 UTC] [default] [warning]: #21 0x00007f7ae9a2aa2f sp=0x00007ffd9106ed00 QCoreApplication::notifyInternal2(QObject*, QEvent*) + 0x15f,
[20200522 13:43:49.340 UTC] [default] [warning]: #22 0x00007f7ae9a813c5 sp=0x00007ffd9106ed70 QEventDispatcherGlib::registerSocketNotifier(QSocketNotifier*) + 0x145,
[20200522 13:43:49.340 UTC] [default] [warning]: #23 0x00007f7ae8ae160d sp=0x00007ffd9106edb0 g_main_context_dispatch + 0x27d,
[20200522 13:43:49.340 UTC] [default] [warning]: #24 0x00007f7ae8ae1890 sp=0x00007ffd9106ee30 g_main_context_dispatch + 0x500,
[20200522 13:43:49.340 UTC] [default] [warning]: #25 0x00007f7ae8ae191f sp=0x00007ffd9106ee90 g_main_context_iteration + 0x2f,
[20200522 13:43:49.341 UTC] [default] [warning]: #26 0x00007f7ae9a807c1 sp=0x00007ffd9106eeb0 QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 0x61,
[20200522 13:43:49.341 UTC] [default] [warning]: #27 0x00007f7ae9a296db sp=0x00007ffd9106ef00 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 0x12b,
[20200522 13:43:49.341 UTC] [default] [warning]: #28 0x00007f7ae9a31182 sp=0x00007ffd9106ef80 QCoreApplication::exec() + 0x92,
[20200522 13:43:49.341 UTC] [default] [warning]: #29 0x000055dc70a49cfc sp=0x00007ffd9106efe0 main + 0x2b0c,
[20200522 13:43:49.341 UTC] [default] [warning]: #30 0x00007f7ae9423e0b sp=0x00007ffd9106f4e0 __libc_start_main + 0xeb,
[20200522 13:43:49.341 UTC] [default] [warning]: #31 0x000055dc70a4af8a sp=0x00007ffd9106f5a0 _start + 0x2a,
[20200522 13:43:49.341 UTC] [default] [warning]: dumpCallback Succeeded:  true  at  /opt/ozw/config/crashes//324eebee-d923-4c90-a3ba5380-78664f7d.dmp,
[20200522 13:43:49.341 UTC] [default] [warning]: Uploading MiniDump to  https://sentry.io/api/1868130/minidump/?sentry_key=e086ba93030843199aab391947d205da,
Failed to open curl lib from binary, use libcurl.so instead,
double free or corruption (!prev),

qt-openzwave Crash Dump

Here's the crash dump (as a zip since GitHub doesn't like *.dmp files):
324eebee-d923-4c90-a3ba5380-78664f7d.zip

MQTT Topic and Payload that crashed qt-openzwave

Topic: OpenZWave/1/command/enablepoll/
Payload: {"ValueIDKey":1407374938882098,"Intensity":96}

Other Helpful Information

MQTT ValueIDKey Info

Output from OpenZWave/1/node/3/instance/3/commandclass/49/value/1407374938882098/

{
    "Label": "Instance 3: Humidity",
    "Value": 59,
    "Units": "%",
    "ValueSet": false,
    "ValuePolled": false,
    "ChangeVerified": false,
    "Min": 0,
    "Max": 0,
    "Type": "Decimal",
    "Instance": 3,
    "CommandClass": "COMMAND_CLASS_SENSOR_MULTILEVEL",
    "Index": 5,
    "Node": 3,
    "Genre": "User",
    "Help": "Humidity Sensor Value",
    "ValueIDKey": 1407374938882098,
    "ReadOnly": false,
    "WriteOnly": false,
    "Event": "valueAdded",
    "TimeStamp": 1590154347
}

Questions

  1. Is there a good way to find the ValueIDKey? Right now I'm getting it from my HA core.entity_registry... which I know there has to be a better way inside the MQTT commands. I just haven't found it.

  2. Is this enablepoll command something I will need to enable every boot, on every config update, or something else?

  3. Is the enablepoll adding a PollInterval behind the scenes to the options.xml file that ozw (non-wrapper) reads, or is that more for a global polling setting? https://github.com/OpenZWave/open-zwave/wiki/Config-Options#optionsxml

  4. What additional information can I provide to help debug this?

Thanks for taking a look!

OpenZWave::Internal::VC::Value::VerifyRefreshedValue

Sentry Issue: QT-OPENZWAVE-C

SIGSEGV /SEGV_MAPERR: Fatal Error: SIGSEGV /SEGV_MAPERR
  ?, in OpenZWave::Internal::VC::Value::VerifyRefreshedValue
  ?, in OpenZWave::Internal::VC::ValueString::OnValueRefreshed
  ?, in OpenZWave::Internal::CC::ManufacturerSpecific::HandleMsg
  ?, in OpenZWave::Node::ApplicationCommandHandler
  ?, in OpenZWave::Driver::ProcessMsg
...
(6 additional frame(s) were not displayed)

If you are getting this crash, appreciate if you can post the LogFiles

[bug] Doesn't publish Central Scene to MQTT

Hey Folks,

I see in the logs that Central Scene has been detected correctly, but nothing was published at MQTT

[20200124 20:47:14.492 UTC] [ozw.library] [debug]: Detail - Node: 6   Received: 0x01, 0x0b, 0x00, 0x04, 0x00, 0x06, 0x05, 0x5b, 0x03, 0xfb, 0x80, 0x02, 0xd2
[20200124 20:47:14.493 UTC] [ozw.library] [debug]: Detail - Node: 0
[20200124 20:47:14.493 UTC] [ozw.library] [info]: Info - Node: 6 Received Central Scene set from node 6: scene id=2 with key Attribute 0. Sending event notification.
[20200124 20:47:14.493 UTC] [ozw.library] [info]: Info - Node: 6 Automatically Clearing Scene 2 in 1000ms
[20200124 20:47:14.493 UTC] [ozw.library] [info]: Info - Node: 0 Timer: adding event in 1000 ms
[20200124 20:47:14.493 UTC] [ozw.library] [debug]: Detail - Node: 0 Timer: waiting with timeout 1000 ms
[20200124 20:47:15.374 UTC] [ozw.library] [debug]: Detail - Node: 17   Received: 0x01, 0x10, 0x00, 0x04, 0x00, 0x11, 0x0a, 0x71, 0x05, 0x00, 0x00, 0x00, 0xff, 0x07, 0x00, 0x01, 0x08, 0x75

Any solutions how to fix it?

Thanks in advance

Weird topic behavior after factory resetting a node

I accidentally factory reset a node that was in the network while testing. It looks like OZW responded by auto-failing the node and the removing the failed node. During that time there was something weird going on with the published topics.

First, this node 0 topic was published, then eventually removed:

OpenZWave/1/node/0/instance/0/commandclass/0

Second, for the node that was removed, it has a left over topic and message:

OpenZWave/1/node/5/association/1/,{    "Name": "All Reports",    "Help": "",    "MaxAssociations": 5,    "Members": [        "1.0"    ],    "TimeStamp": 1588206032}

Attached are the logs during the reset.

failed.txt

Hass.io add-on

Hi, just wondering if the maintainers would be open to merging support for a custom hass.io addon? I'm not sure if this is the right place for it, otherwise I'd start a new repository if there isn't one already and request that the README be updated with a link.

OZW Instance Status property names

Currently the OZW Instance status looks like this:

{
  "OpenZWave_Version": "1.6.1025",
  "OZWDeamon_Version": "0.1",
  "QTOpenZWave_Version": "1.0.0",
  "QT_Version": "5.12.5",
  "Status": "driverAllNodesQueried",
  "TimeStamp": 1581020710,
  "ManufacturerSpecificDBReady": true,
  "homeID": 3336491847,
  "getControllerNodeId": 1,
  "getSUCNodeId": 1,
  "isPrimaryController": true,
  "isBridgeController": false,
  "hasExtendedTXStatistics": false,
  "getControllerLibraryVersion": "Z-Wave 3.95",
  "getControllerLibraryType": "Static Controller",
  "getControllerPath": "/dev/ttyACM1"
}

getControllerPath seems like a weird property name. Should that be controllerPath ?

Also, we are mixing up camel and snake casing here for the version properties. Should they be OpenZWaveVersion instead of OpenZWave_Version ? I guess it was chosen because of QTVersion

ozwdaemon shuts down with no reason

At least I see nothing in the output that stands out.

I setup openzwave/ozwdaemon docker. It's working, can control it with MQTT explorer. Home Assistant working fine.

I have to reboot my server for unrelated reason (unRaid). System comes back up. HA starts fine, MQTT starts fine, ozwdaemon does not.

Trying to run it manually results in the following output.

root@SERVER:/mnt/user/appdata/ozw# **/usr/local/emhttp/plugins/dynamix.docker.manager/scripts/docker run --name='ozwdaemon
2' --net='bridge' -e TZ="America/Los_Angeles" -e HOST_OS="Unraid" -e 'USB_PATH'='/dev/zwave' -e 'MQTT_USERNAME'='mosquitto' -e 'MQTT_PASSWORD'='12345@' -e 'MQTT_SERVER'='192.168.0.84' -v '/mnt/user/appdata/ozw':'/opt/ozw/config':'rw' --device='/dev/zwave' 'openzwave/ozwdaemon' /bin/bash
Executing: /usr/local/bin/ozwdaemon -s /dev/zwave --config-dir /opt/ozw/config --user-dir /opt/ozw/config --mqtt-server 192.168.0.84 --mqtt-port 1883 --stop-on-failure --mqtt-instance 1 --mqtt-username mosquitto /bin/bash**
Checking  "/opt/ozw/config/config/manufacturer_specific.xml"  for manufacturer_specific.xml
Checking  "/opt/ozw/config../config/manufacturer_specific.xml"  for manufacturer_specific.xml
Checking  "/opt/ozw/config/config/Options.xml"  for options.xml
Checking  "/opt/ozw/config/options.xml"  for options.xml
DBPath:  "/opt/ozw/config/manufacturer_specific.xml"
userPath:  "/opt/ozw/config/options.xml"
Network Key Specified in Enviroment is Invalid
Didn't Find Network Key File. Skipping
Didn't Find Auth Key File. Skipping
[20200519 20:23:13.302 PDT] [ozw.manager] [debug]: Database Path:  "./config/"  User Path "./config/"
[20200519 20:23:13.302 PDT] [ozw.manager] [debug]: OpenZWave Options Class Creating
[20200519 20:23:13.302 PDT] [ozw.manager] [debug]: OpenZWave Options Class Set
[20200519 20:23:13.302 PDT] [ozw.manager] [debug]: Models Created
[20200519 20:23:13.303 PDT] [default] [debug]: Ready
[20200519 20:23:13.303 PDT] [default] [info]: Staring  "ozwdaemon"  Version:  "0.1.98"
[20200519 20:23:13.303 PDT] [default] [info]: OpenZWave Version:  "1.6.1123"
[20200519 20:23:13.303 PDT] [default] [info]: QT-OpenZWave Version:  "1.0.0"
[20200519 20:23:13.303 PDT] [default] [info]: QT Version:  5.12.5
[20200519 20:23:13.303 PDT] [default] [info]: Docker MQTT_PASSWORD Secret Missing....
[20200519 20:23:13.303 PDT] [default] [info]: Using MQTT_PASSWORD from Enviroment
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "ping"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "open"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "close"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "refreshnodeinfo"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "requestnodestate"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "requestnodedynamic"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "requestconfigparam"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "requestallconfigparam"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "softresetcontroller"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "hardresetcontroller"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "cancelcontrollercommand"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "testnetworknode"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "testnetwork"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "healnetworknode"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "healnetwork"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "addnode"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "removenode"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "removefailednode"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "hasnodefailed"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "requestnodeneighborupdate"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "assignreturnroute"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "deleteallreturnroute"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "sendnodeinformation"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "replacefailednode"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "requestnetworkupdate"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "isnodefailed"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "checklatestconfigfilerevision"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "checklatestmfsrevision"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "downloadlatestconfigfilerevision"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "downloadlatestmfsrevision"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "setvalue"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "getpollinterval"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "setpollinterval"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "syncronisenodeneighbors"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "enablepoll"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "disablepoll"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "refreshvalue"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "addassociation"
[20200519 20:23:13.303 PDT] [ozw.mqtt.commands] [debug]: Registering Command  "removeassociation"
[20200519 20:23:13.303 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::ensureTransport(bool) QObject(0x0)
[20200519 20:23:13.303 PDT] [ozw.mqtt.publisher] [debug]: MQTT State Change 1
[20200519 20:23:13.303 PDT] [ozw.mqtt.publisher] [info]: MQTT Client Connecting
[20200519 20:23:13.303 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::ensureTransportOpen(const QString&) 1
[20200519 20:23:13.303 PDT] [default] [info]: Using BreakPad - Crash Directory:  "/opt/ozw/config/crashes/"
[20200519 20:23:13.304 PDT] [ozw.mqtt.publisher] [debug]: Publishing Event starting
[20200519 20:23:13.305 PDT] [ozw.library] [debug]: Always - Node: 0 OpenZwave Version 1.6-1123-g1d7f512f Starting Up
[20200519 20:23:13.309 PDT] [ozw.library] [info]: Info - Node: 0 Loading Localization File ./config/Localization.xml
[20200519 20:23:13.309 PDT] [ozw.library] [info]: Info - Node: 0 Loaded ./config/Localization.xml With Revision 8
[20200519 20:23:13.310 PDT] [ozw.library] [debug]: Always - Node: 0 Using Language Localization
[20200519 20:23:13.310 PDT] [ozw.library] [info]: Info - Node: 0 Loading NotificationCCTypes File ./config/NotificationCCTypes.xml
[20200519 20:23:13.311 PDT] [ozw.library] [info]: Info - Node: 0 Loaded ./config/NotificationCCTypes.xml With Revision 9
[20200519 20:23:13.311 PDT] [ozw.library] [info]: Info - Node: 0 Loading SensorMultiLevelCCTypes File ./config/SensorMultiLevelCCTypes.xml
[20200519 20:23:13.311 PDT] [ozw.library] [info]: Info - Node: 0 Loaded ./config/SensorMultiLevelCCTypes.xml With Revision 3
[20200519 20:23:13.312 PDT] [ozw.manager] [debug]: OpenZWave Manager Instance Created
[20200519 20:23:13.312 PDT] [ozw.manager] [debug]: OpenZWave Watcher Registered
[20200519 20:23:13.312 PDT] [ozw.manager] [debug]: Notification Signals Setup
[20200519 20:23:13.312 PDT] [ozw.library] [info]: Info - Node: 0 Setting Up Provided Network Key for Secure Communications
[20200519 20:23:13.312 PDT] [ozw.library] [warning]: Warning - Node: 0 Failed - Network Key Not Set
[20200519 20:23:13.316 PDT] [ozw.library] [info]: Info - Node: 0 Manufacturer_Specific.xml file Revision is 91
[20200519 20:23:13.472 PDT] [ozw.library] [info]: Info - Node: 0 Product name collision: FGR223 Roller Shutter Controller 3 type 303 id 1000 manufacturerid 10f, collides with FGRM223 Roller Shutter Controller 3, type 303 id 1000 manufacturerid 10f
[20200519 20:23:13.581 PDT] [ozw.library] [info]: Info - Node: 0 Product name collision: ED2.0 Meter Adapter type 0 id 0 manufacturerid 128, collides with ED2.0 Meter Adapter, type 0 id 0 manufacturerid 128
[20200519 20:23:13.581 PDT] [ozw.library] [info]: Info - Node: 0 Product name collision: ED2.0 Display type 128 id 0 manufacturerid 128, collides with ED2.0 Display, type 128 id 0 manufacturerid 128
[20200519 20:23:13.636 PDT] [ozw.library] [info]: Info - Node: 0 Product name collision: GR105 Auto Valve type 202 id 511 manufacturerid 152, collides with GR105 Auto Valve, type 202 id 511 manufacturerid 152
[20200519 20:23:13.636 PDT] [ozw.library] [info]: Info - Node: 0 Product name collision: GR105n Auto Valve type 3 id 512 manufacturerid 152, collides with GR105n Auto Valve, type 3 id 512 manufacturerid 152
[20200519 20:23:13.636 PDT] [ozw.library] [info]: Info - Node: 0 Product name collision: ZSE02 Motion Sensor type 500 id 3 manufacturerid 152, collides with ZSE02 Motion Sensor, type 500 id 3 manufacturerid 152
[20200519 20:23:13.647 PDT] [ozw.library] [info]: Info - Node: 0 Product name collision: ZWN-BPC Ceiling Mounted PIR Motion Sensor type 601 id 901 manufacturerid 11a, collides with ZWN-BPC Ceiling Mounted PIR Motion Sensor, type 601 id 901 manufacturerid 11a
[20200519 20:23:13.648 PDT] [ozw.library] [info]: Info - Node: 0 Product name collision: ZWN-SC7 7-Button Scene Controller type 801 id b03 manufacturerid 11a, collides with ZWN-SC7 7-Button Scene Controller, type 801 id b03 manufacturerid 11a
[20200519 20:23:13.648 PDT] [ozw.library] [info]: Info - Node: 0 Product name collision: ZW15S 15A On/Off Switch type 101 id 102 manufacturerid 11a, collides with ZW15S 15A On/Off Switch, type 101 id 102 manufacturerid 11a
[20200519 20:23:13.648 PDT] [ozw.library] [info]: Info - Node: 0 Product name collision: ZW20R 20A TR Duplex Receptacle type 101 id 603 manufacturerid 11a, collides with ZW20R 20A TR Duplex Receptacle, type 101 id 603 manufacturerid 11a
[20200519 20:23:13.648 PDT] [ozw.library] [info]: Info - Node: 0 Product name collision: ZWN-RSM1 PLUS-Smart Single Relay Switch Module type 111 id 605 manufacturerid 11a, collides with ZWN-RSM1 PLUSโ€”Smart Single Relay Switch Module, type 111 id 605 manufacturerid 11a
[20200519 20:23:13.648 PDT] [ozw.library] [info]: Info - Node: 0 Product name collision: ZW20RM 20A TR Smart Meter Duplex Receptacle type 111 id 101 manufacturerid 11a, collides with ZW20RM 20A TR Smart Meter Duplex Receptacle, type 111 id 101 manufacturerid 11a
[20200519 20:23:13.648 PDT] [ozw.library] [info]: Info - Node: 0 Product name collision: ZW500D 500W In-Wall Preset Dimmer Switch type 102 id 201 manufacturerid 11a, collides with ZW500D 500W In-Wall Preset Dimmer Switch, type 102 id 201 manufacturerid 11a
[20200519 20:23:13.648 PDT] [ozw.library] [info]: Info - Node: 0 Product name collision: ZW15RM Plus 15A TR Smart Meter Duplex Receptacle type 111 id 105 manufacturerid 11a, collides with ZW15RM Plus 15A TR Smart Meter Duplex Receptacle, type 111 id 105 manufacturerid 11a
[20200519 20:23:13.671 PDT] [ozw.library] [info]: Info - Node: 0 Queuing Lookup on mfs.db.openzwave.com for Node 0
[20200519 20:23:13.671 PDT] [ozw.library] [info]: Info - Node: 0   Opening controller /dev/zwave
[20200519 20:23:13.671 PDT] [ozw.library] [info]: Info - Node: 0 Trying to open serial port /dev/zwave (attempt 1)
[20200519 20:23:13.671 PDT] [ozw.library] [info]: Info - Node: 0 mgr,     Added driver for controller /dev/zwave
[20200519 20:23:13.671 PDT] [ozw.manager] [debug]: AddDriver Completed
[20200519 20:23:13.671 PDT] [ozw.library] [info]: Info - Node: 0 Timer: thread starting
[20200519 20:23:13.672 PDT] [ozw.library] [debug]: Detail - Node: 0 Timer: waiting with timeout -1 ms
[20200519 20:23:13.672 PDT] [ozw.library] [info]: Info - Node: 0 Starting DNSThread
[20200519 20:23:13.672 PDT] [ozw.library] [info]: Info - Node: 0 LookupTxT Checking mfs.db.openzwave.com
[20200519 20:23:13.672 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlConnect()
[20200519 20:23:13.672 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 102
[20200519 20:23:13.673 PDT] [qt.mqtt.connection.verbose] [debug]: void QMqttConnection::transportReadReady()
[20200519 20:23:13.673 PDT] [qt.mqtt.connection.verbose] [debug]: Received CONNACK
[20200519 20:23:13.673 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize CONNACK
[20200519 20:23:13.673 PDT] [ozw.mqtt.publisher] [debug]: MQTT State Change 2
[20200519 20:23:13.673 PDT] [ozw.mqtt.publisher] [info]: MQTT Client Connected
[20200519 20:23:13.673 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/#")  qos: 0
[20200519 20:23:13.673 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 20
[20200519 20:23:13.673 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "addassociation"
[20200519 20:23:13.673 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/addassociation/")  qos: 0
[20200519 20:23:13.673 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 42
[20200519 20:23:13.673 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/addassociation/")
[20200519 20:23:13.673 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "addnode"
[20200519 20:23:13.673 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/addnode/")  qos: 0
[20200519 20:23:13.673 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 35
[20200519 20:23:13.673 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/addnode/")
[20200519 20:23:13.673 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "assignreturnroute"
[20200519 20:23:13.673 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/assignreturnroute/")  qos: 0
[20200519 20:23:13.673 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 45
[20200519 20:23:13.673 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/assignreturnroute/")
[20200519 20:23:13.673 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "cancelcontrollercommand"
[20200519 20:23:13.673 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/cancelcontrollercommand/")  qos: 0
[20200519 20:23:13.673 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 51
[20200519 20:23:13.673 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/cancelcontrollercommand/")
[20200519 20:23:13.673 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "checklatestconfigfilerevision"
[20200519 20:23:13.673 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/checklatestconfigfilerevision/")  qos: 0
[20200519 20:23:13.673 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 57
[20200519 20:23:13.673 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/checklatestconfigfilerevision/")
[20200519 20:23:13.673 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "checklatestmfsrevision"
[20200519 20:23:13.673 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/checklatestmfsrevision/")  qos: 0
[20200519 20:23:13.673 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 50
[20200519 20:23:13.673 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/checklatestmfsrevision/")
[20200519 20:23:13.673 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "close"
[20200519 20:23:13.673 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/close/")  qos: 0
[20200519 20:23:13.674 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 33
[20200519 20:23:13.674 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/close/")
[20200519 20:23:13.674 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "deleteallreturnroute"
[20200519 20:23:13.674 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/deleteallreturnroute/")  qos: 0
[20200519 20:23:13.674 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 48
[20200519 20:23:13.674 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/deleteallreturnroute/")
[20200519 20:23:13.674 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "disablepoll"
[20200519 20:23:13.674 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/disablepoll/")  qos: 0
[20200519 20:23:13.674 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 39
[20200519 20:23:13.674 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/disablepoll/")
[20200519 20:23:13.674 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "downloadlatestconfigfilerevision"
[20200519 20:23:13.674 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/downloadlatestconfigfilerevision/")  qos: 0
[20200519 20:23:13.674 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 60
[20200519 20:23:13.674 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/downloadlatestconfigfilerevision/")
[20200519 20:23:13.674 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "downloadlatestmfsrevision"
[20200519 20:23:13.674 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/downloadlatestmfsrevision/")  qos: 0
[20200519 20:23:13.674 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 53
[20200519 20:23:13.674 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/downloadlatestmfsrevision/")
[20200519 20:23:13.674 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "enablepoll"
[20200519 20:23:13.674 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/enablepoll/")  qos: 0
[20200519 20:23:13.674 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 38
[20200519 20:23:13.674 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/enablepoll/")
[20200519 20:23:13.674 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "getpollinterval"
[20200519 20:23:13.674 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/getpollinterval/")  qos: 0
[20200519 20:23:13.674 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 43
[20200519 20:23:13.674 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/getpollinterval/")
[20200519 20:23:13.674 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "hardresetcontroller"
[20200519 20:23:13.674 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/hardresetcontroller/")  qos: 0
[20200519 20:23:13.674 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 47
[20200519 20:23:13.674 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/hardresetcontroller/")
[20200519 20:23:13.674 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "hasnodefailed"
[20200519 20:23:13.674 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/hasnodefailed/")  qos: 0
[20200519 20:23:13.674 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 41
[20200519 20:23:13.674 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/hasnodefailed/")
[20200519 20:23:13.674 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "healnetwork"
[20200519 20:23:13.674 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/healnetwork/")  qos: 0
[20200519 20:23:13.674 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 39
[20200519 20:23:13.674 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/healnetwork/")
[20200519 20:23:13.674 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "healnetworknode"
[20200519 20:23:13.674 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/healnetworknode/")  qos: 0
[20200519 20:23:13.674 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 43
[20200519 20:23:13.674 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/healnetworknode/")
[20200519 20:23:13.674 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "isnodefailed"
[20200519 20:23:13.674 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/isnodefailed/")  qos: 0
[20200519 20:23:13.674 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 40
[20200519 20:23:13.674 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/isnodefailed/")
[20200519 20:23:13.674 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "open"
[20200519 20:23:13.674 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/open/")  qos: 0
[20200519 20:23:13.674 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 32
[20200519 20:23:13.674 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/open/")
[20200519 20:23:13.674 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "ping"
[20200519 20:23:13.675 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/ping/")  qos: 0
[20200519 20:23:13.675 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 32
[20200519 20:23:13.675 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/ping/")
[20200519 20:23:13.675 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "refreshnodeinfo"
[20200519 20:23:13.675 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/refreshnodeinfo/")  qos: 0
[20200519 20:23:13.675 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 43
[20200519 20:23:13.675 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/refreshnodeinfo/")
[20200519 20:23:13.675 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "refreshvalue"
[20200519 20:23:13.675 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/refreshvalue/")  qos: 0
[20200519 20:23:13.675 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 40
[20200519 20:23:13.675 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/refreshvalue/")
[20200519 20:23:13.675 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "removeassociation"
[20200519 20:23:13.675 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/removeassociation/")  qos: 0
[20200519 20:23:13.675 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 45
[20200519 20:23:13.675 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/removeassociation/")
[20200519 20:23:13.675 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "removefailednode"
[20200519 20:23:13.675 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/removefailednode/")  qos: 0
[20200519 20:23:13.675 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 44
[20200519 20:23:13.675 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/removefailednode/")
[20200519 20:23:13.675 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "removenode"
[20200519 20:23:13.675 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/removenode/")  qos: 0
[20200519 20:23:13.675 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 38
[20200519 20:23:13.675 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/removenode/")
[20200519 20:23:13.675 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "replacefailednode"
[20200519 20:23:13.675 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/replacefailednode/")  qos: 0
[20200519 20:23:13.675 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 45
[20200519 20:23:13.675 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/replacefailednode/")
[20200519 20:23:13.675 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "requestallconfigparam"
[20200519 20:23:13.675 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/requestallconfigparam/")  qos: 0
[20200519 20:23:13.675 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 49
[20200519 20:23:13.675 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/requestallconfigparam/")
[20200519 20:23:13.675 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "requestconfigparam"
[20200519 20:23:13.675 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/requestconfigparam/")  qos: 0
[20200519 20:23:13.675 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 46
[20200519 20:23:13.675 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/requestconfigparam/")
[20200519 20:23:13.675 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "requestnetworkupdate"
[20200519 20:23:13.675 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/requestnetworkupdate/")  qos: 0
[20200519 20:23:13.675 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 48
[20200519 20:23:13.675 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/requestnetworkupdate/")
[20200519 20:23:13.675 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "requestnodedynamic"
[20200519 20:23:13.675 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/requestnodedynamic/")  qos: 0
[20200519 20:23:13.675 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 46
[20200519 20:23:13.675 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/requestnodedynamic/")
[20200519 20:23:13.675 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "requestnodeneighborupdate"
[20200519 20:23:13.675 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/requestnodeneighborupdate/")  qos: 0
[20200519 20:23:13.675 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 53
[20200519 20:23:13.675 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/requestnodeneighborupdate/")
[20200519 20:23:13.676 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "requestnodestate"
[20200519 20:23:13.676 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/requestnodestate/")  qos: 0
[20200519 20:23:13.676 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 44
[20200519 20:23:13.676 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/requestnodestate/")
[20200519 20:23:13.676 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "sendnodeinformation"
[20200519 20:23:13.676 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/sendnodeinformation/")  qos: 0
[20200519 20:23:13.676 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 47
[20200519 20:23:13.676 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/sendnodeinformation/")
[20200519 20:23:13.676 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "setpollinterval"
[20200519 20:23:13.676 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/setpollinterval/")  qos: 0
[20200519 20:23:13.676 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 43
[20200519 20:23:13.676 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/setpollinterval/")
[20200519 20:23:13.676 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "setvalue"
[20200519 20:23:13.676 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/setvalue/")  qos: 0
[20200519 20:23:13.676 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 36
[20200519 20:23:13.676 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/setvalue/")
[20200519 20:23:13.676 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "softresetcontroller"
[20200519 20:23:13.676 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/softresetcontroller/")  qos: 0
[20200519 20:23:13.676 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 47
[20200519 20:23:13.676 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/softresetcontroller/")
[20200519 20:23:13.676 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "syncronisenodeneighbors"
[20200519 20:23:13.676 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/syncronisenodeneighbors/")  qos: 0
[20200519 20:23:13.676 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 51
[20200519 20:23:13.676 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/syncronisenodeneighbors/")
[20200519 20:23:13.676 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "testnetwork"
[20200519 20:23:13.676 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/testnetwork/")  qos: 0
[20200519 20:23:13.676 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 39
[20200519 20:23:13.676 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/testnetwork/")
[20200519 20:23:13.676 PDT] [ozw.mqtt.commands] [debug]: Creating Subscription for  "testnetworknode"
[20200519 20:23:13.676 PDT] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/testnetworknode/")  qos: 0
[20200519 20:23:13.676 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 43
[20200519 20:23:13.676 PDT] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/testnetworknode/")
**[20200519 20:23:13.676 PDT] [ozw.library] [info]: Info - Node: 0 Serial port /dev/zwave opened (attempt 1)**
[20200519 20:23:13.677 PDT] [ozw.library] [debug]: Detail - Node: 255 Queuing (Command) FUNC_ID_ZW_GET_VERSION: 0x01, 0x03, 0x00, 0x15, 0xe9
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: void QMqttConnection::transportReadReady()
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 2 qos: 0
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Received PUBLISH
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize PUBLISH: topic: QMqttTopicName("OpenZWave/1/status/")  payloadLength: 572
**[20200519 20:23:13.678 PDT] [ozw.mqtt.publisher] [debug]: Topics:  "OpenZWave/1/status/"
[20200519 20:23:13.678 PDT] [ozw.mqtt.publisher] [debug]: "{\n    \"OpenZWave_Version\": \"1.6.1123\",\n    \"OZWDaemon_Version\": \"0.1.98\",\n    \"QTOpenZWave_Version\": \"1.0.0\",\n    \"QT_Version\": \"5.12.5\",\n    \"Status\": \"driverAllNodesQueried\",\n    \"TimeStamp\": 1589908819,\n    \"ManufacturerSpecificDBReady\": true,\n    \"homeID\": 3460416404,\n    \"getControllerNodeId\": 1,\n    \"getSUCNodeId\": 1,\n    \"isPrimaryController\": true,\n    \"isBridgeController\": false,\n    \"hasExtendedTXStatistics\": false,\n    \"getControllerLibraryVersion\": \"Z-Wave 4.05\",\n    \"getControllerLibraryType\": \"Static Controller\",\n    \"getControllerPath\": \"/dev/zwave\"\n}"**
[20200519 20:23:13.678 PDT] [ozw.mqtt.publisher] [debug]: Unsubscribing from Topic Cleanup
[20200519 20:23:13.678 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/#")
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 19
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 3 qos: 0
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 4 qos: 0
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 5 qos: 0
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 6 qos: 0
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 7 qos: 0
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 8 qos: 0
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 9 qos: 0
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 10 qos: 0
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 11 qos: 0
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 12 qos: 0
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 13 qos: 0
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 14 qos: 0
**[20200519 20:23:13.678 PDT] [default] [info]: Shutting Down  "ozwdaemon"  Version:  "0.1.98"
[20200519 20:23:13.678 PDT] [default] [info]: OpenZWave Version:  "1.6.1123"
[20200519 20:23:13.678 PDT] [default] [info]: QT-OpenZWave Version:  "1.0.0"
[20200519 20:23:13.678 PDT] [default] [info]: QT Version:  5.12.5**
[20200519 20:23:13.678 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlDisconnect()
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 2
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: void QMqttConnection::transportReadReady()
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 15 qos: 0
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 16 qos: 0
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 17 qos: 0
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 18 qos: 0
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 19 qos: 0
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 20 qos: 0
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 21 qos: 0
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 22 qos: 0
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.678 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 23 qos: 0
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 24 qos: 0
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 25 qos: 0
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 26 qos: 0
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 27 qos: 0
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 28 qos: 0
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 29 qos: 0
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 30 qos: 0
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 31 qos: 0
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 32 qos: 0
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 33 qos: 0
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 34 qos: 0
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 35 qos: 0
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 36 qos: 0
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 37 qos: 0
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 38 qos: 0
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 39 qos: 0
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 40 qos: 0
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
[20200519 20:23:13.679 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 41 qos: 0
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/addassociation/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/addnode/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/assignreturnroute/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/cancelcontrollercommand/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/checklatestconfigfilerevision/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/checklatestmfsrevision/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/close/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/deleteallreturnroute/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/disablepoll/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/downloadlatestconfigfilerevision/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/downloadlatestmfsrevision/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/enablepoll/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/getpollinterval/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/hardresetcontroller/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/hasnodefailed/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/healnetwork/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/healnetworknode/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/isnodefailed/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/open/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/ping/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/refreshnodeinfo/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/refreshvalue/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/removeassociation/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/removefailednode/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/removenode/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/replacefailednode/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/requestallconfigparam/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/requestconfigparam/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/requestnetworkupdate/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/requestnodedynamic/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/requestnodeneighborupdate/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/requestnodestate/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/sendnodeinformation/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/setpollinterval/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/setvalue/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/softresetcontroller/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/syncronisenodeneighbors/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/testnetwork/")
[20200519 20:23:13.679 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlUnsubscribe(const QMqttTopicFilter&, const QMqttUnsubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/testnetworknode/")

Not sure why it is quitting.

Crash on setValue

Getting a crash when trying to setValue on an Aeotec ZWA002 LED bulb. I think it may be related to values with type Byte as I am able to setValue on a Bool value without a crash.

[20200107 1:01:39.969 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize PUBLISH: topic: QMqttTopicName("OpenZWave/1/node/33/statistics/")  payloadLength: 774
[20200107 1:01:44.595 UTC] [qt.mqtt.connection.verbose] [debug]: void QMqttConnection::transportReadReady()
[20200107 1:01:44.595 UTC] [qt.mqtt.connection.verbose] [debug]: Received PUBLISH
[20200107 1:01:44.595 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize PUBLISH: topic: QMqttTopicName("OpenZWave/1/command/setvalue/")  payloadLength: 46
[20200107 1:01:44.595 UTC] [ozw.mqtt.commands] [debug]: Got  "OpenZWave/1/command/setvalue/"  Message:  "{\"ValueIDKey\": 1407375551070225, \"Value\": 255}"
ozwdaemon: /usr/include/rapidjson/document.h:1646: unsigned int rapidjson::GenericValue<Encoding, Allocator>::GetUint() const [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>]: Assertion `data_.f.flags & kUintFlag' failed.
[20200107 1:01:44.597 UTC] [default] [warning]: =============================
[20200107 1:01:44.598 UTC] [default] [warning]: CRASH!!! - Dumping Backtrace:
[20200107 1:01:44.598 UTC] [default] [warning]: =============================
[20200107 1:01:44.598 UTC] [default] [warning]: #1  0x000055d5f88e7502 sp=0x000055d5f8c891e0 dumpCallback(google_breakpad::MinidumpDescriptor const&, void*, bool) + 0x32
[20200107 1:01:44.599 UTC] [default] [warning]: #2  0x000055d5f88fb765 sp=0x000055d5f8c893d0 google_breakpad::ExceptionHandler::GenerateDump(google_breakpad::ExceptionHandler::CrashContext*) + 0x375
[20200107 1:01:44.599 UTC] [default] [warning]: #3  0x000055d5f88fbaaf sp=0x000055d5f8c89470 google_breakpad::ExceptionHandler::SignalHandler(int, siginfo_t*, void*) + 0x9f
[20200107 1:01:44.600 UTC] [default] [warning]: #4  0x00007fa1cdb75520 sp=0x000055d5f8c89540 funlockfile + 0x50
[20200107 1:01:44.600 UTC] [default] [warning]: #5  0x00007fa1cd858081 sp=0x00007ffc82823310 gsignal + 0x141
[20200107 1:01:44.601 UTC] [default] [warning]: #6  0x00007fa1cd843535 sp=0x00007ffc82823430 abort + 0x121
[20200107 1:01:44.601 UTC] [default] [warning]: #7  0x00007fa1cd84340f sp=0x00007ffc82823560 __libc_freeres + 0x121
[20200107 1:01:44.602 UTC] [default] [warning]: #8  0x00007fa1cd850b92 sp=0x00007ffc828235b0 __assert_fail + 0x42
[20200107 1:01:44.602 UTC] [default] [warning]: #9  0x000055d5f88e1733 sp=0x00007ffc828235e0 rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >::GetUint() const [clone .isra.0] [clone .part.0] + 0x23
[20200107 1:01:44.602 UTC] [default] [warning]: #10 0x000055d5f88e48e5 sp=0x00007ffc828235f0 MqttCommand_SetValue::processMessage(rapidjson::GenericDocument<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>, rapidjson::CrtAllocator>&) + 0x2f05
[20200107 1:01:44.602 UTC] [default] [warning]: #11 0x000055d5f88d68eb sp=0x00007ffc828237d0 MqttCommand::messageReceived(QMqttMessage) + 0x28eb
[20200107 1:01:44.602 UTC] [default] [warning]: #12 0x000055d5f88d6e39 sp=0x00007ffc82823a40 QtPrivate::QSlotObject<void (MqttCommand::*)(QMqttMessage), QtPrivate::List<QMqttMessage>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) + 0x49
[20200107 1:01:44.603 UTC] [default] [warning]: #13 0x00007fa1cde2a5b8 sp=0x00007ffc82823a70 QMetaObject::activate(QObject*, int, int, void**) + 0x918
[20200107 1:01:44.603 UTC] [default] [warning]: #14 0x00007fa1ce29c1f5 sp=0x00007ffc82823b60 QMqttSubscription::messageReceived(QMqttMessage) + 0x35
[20200107 1:01:44.604 UTC] [default] [warning]: #15 0x00007fa1ce2921b4 sp=0x00007ffc82823b90 QMqttConnection::finalize_publish() + 0x1d4
[20200107 1:01:44.604 UTC] [default] [warning]: #16 0x00007fa1ce292b1f sp=0x00007ffc82823c60 QMqttConnection::processDataHelper() + 0x2bf
[20200107 1:01:44.605 UTC] [default] [warning]: #17 0x00007fa1ce2932a8 sp=0x00007ffc82823cc0 QMqttConnection::transportReadReady() + 0x78
[20200107 1:01:44.605 UTC] [default] [warning]: #18 0x00007fa1cde2a5b8 sp=0x00007ffc82823d30 QMetaObject::activate(QObject*, int, int, void**) + 0x918
[20200107 1:01:44.606 UTC] [default] [warning]: #19 0x00007fa1ce1a5874 sp=0x00007ffc82823e20 QAbstractSocket::setSocketDescriptor(long long, QAbstractSocket::SocketState, QFlags<QIODevice::OpenModeFlag>) + 0x664
[20200107 1:01:44.606 UTC] [default] [warning]: #20 0x00007fa1ce1a590b sp=0x00007ffc82823e40 QAbstractSocket::setSocketDescriptor(long long, QAbstractSocket::SocketState, QFlags<QIODevice::OpenModeFlag>) + 0x6fb
[20200107 1:01:44.607 UTC] [default] [warning]: #21 0x00007fa1ce1b7921 sp=0x00007ffc82823e70 QTcpServer::incomingConnection(long long) + 0xb561
[20200107 1:01:44.607 UTC] [default] [warning]: #22 0x00007fa1cddffaff sp=0x00007ffc82823e80 QCoreApplication::notifyInternal2(QObject*, QEvent*) + 0x15f
[20200107 1:01:44.608 UTC] [default] [warning]: #23 0x00007fa1cde56495 sp=0x00007ffc82823ef0 QEventDispatcherGlib::registerSocketNotifier(QSocketNotifier*) + 0x145
[20200107 1:01:44.608 UTC] [default] [warning]: #24 0x00007fa1ccd3af1d sp=0x00007ffc82823f30 g_main_context_dispatch + 0x27d
[20200107 1:01:44.608 UTC] [default] [warning]: #25 0x00007fa1ccd3b1a0 sp=0x00007ffc82823fb0 g_main_context_dispatch + 0x500
[20200107 1:01:44.609 UTC] [default] [warning]: #26 0x00007fa1ccd3b22f sp=0x00007ffc82824010 g_main_context_iteration + 0x2f
[20200107 1:01:44.609 UTC] [default] [warning]: #27 0x00007fa1cde55891 sp=0x00007ffc82824030 QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 0x61
[20200107 1:01:44.610 UTC] [default] [warning]: #28 0x00007fa1cddfe7ab sp=0x00007ffc82824080 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 0x12b
[20200107 1:01:44.610 UTC] [default] [warning]: #29 0x00007fa1cde06252 sp=0x00007ffc82824100 QCoreApplication::exec() + 0x92
[20200107 1:01:44.610 UTC] [default] [warning]: #30 0x000055d5f88a5db3 sp=0x00007ffc82824160 main + 0x25b3
[20200107 1:01:44.611 UTC] [default] [warning]: #31 0x00007fa1cd844bbb sp=0x00007ffc828245f0 __libc_start_main + 0xeb
[20200107 1:01:44.611 UTC] [default] [warning]: #32 0x000055d5f88a6e0a sp=0x00007ffc828246b0 _start + 0x2a
[20200107 1:01:44.611 UTC] [default] [warning]: dumpCallback Succeeded:  false  at  /opt/ozw/config/crashes//db4401ce-3965-424b-34391aac-eb77aae0.dmp
Aborted (core dumped)

setValue data sent:

{"ValueIDKey": 659128337, "Value": 66}

Value data:

{
    "Label": "Level",
    "Value": 99,
    "Units": "",
    "Min": 0,
    "Max": 255,
    "Type": "Byte",
    "Instance": 1,
    "CommandClass": "COMMAND_CLASS_SWITCH_MULTILEVEL",
    "Index": 0,
    "Node": 39,
    "Genre": "User",
    "Help": "The Current Level of the Device",
    "ValueIDKey": 659128337,
    "ReadOnly": false,
    "WriteOnly": false,
    "ValueSet": false,
    "ValuePolled": false,
    "ChangeVerified": false,
    "Event": "valueAdded",
    "TimeStamp": 1578358859
}

OpenZWave::Internal::CC::SwitchMultilevel::SetLevel

Sentry Issue: QT-OPENZWAVE-4

relates to OpenZWave/open-zwave#1981

SIGSEGV /SEGV_MAPERR: Fatal Error: SIGSEGV /SEGV_MAPERR
  ?, in OpenZWave::Internal::CC::SwitchMultilevel::SetLevel
  ?, in OpenZWave::Internal::CC::SwitchMultilevel::SetValue
  ?, in OpenZWave::Internal::VC::Value::Set
  ?, in OpenZWave::Internal::VC::ValueByte::Set
  ?, in OpenZWave::Manager::SetValue
...
(22 additional frame(s) were not displayed)

Command Class version not reported

I don't see the version of the command classes reported in any of the MQTT topic data, did I miss it somewhere? Should it be included, or is it intentionally withheld from the clients?

OpenZWave/1/node/3/instance/1/commandclass/113/

{
    "Instance": 1,
    "CommandClassId": 113,
    "CommandClass": "COMMAND_CLASS_NOTIFICATION",
    "TimeStamp": 1587995269
}

OpenZWave/1/node/3/instance/1/commandclass/113/value/1688849916641300/

{
    "Label": "Access Control",
    "Value": { ... },
    "Units": "",
    "Min": 0,
    "Max": 0,
    "Type": "List",
    "Instance": 1,
    "CommandClass": "COMMAND_CLASS_NOTIFICATION",
    "Index": 6,
    "Node": 3,
    "Genre": "User",
    "Help": "Access Control Alerts",
    "ValueIDKey": 1688849916641300,
    "ReadOnly": false,
    "WriteOnly": false,
    "ValueSet": false,
    "ValuePolled": false,
    "ChangeVerified": false,
    "Event": "valueAdded",
    "TimeStamp": 1587995269
}

Alternate install methods for FeeNAS/FreeBSD

Hello, thank you for your work. I have been running a small test system on a rpi 4 using the docker container with good success, however, I would eventually like ( if it's possible ) to have owzdaemon running from my main FreeNAS server.

So here's the curve ball, my server is running FreeNAS ( based FreeBSD ) but there is no support for docker -- FreeNAS does includes the bhyve hypervisor but this does not support USB pass-through so a VM running Linux w/Docker will not work.

Will there eventually be instructions for a "bare metal" install process?

On FreeNAS, there is a similar container technology called jails. I would like to attempt a "bare metal" install to get qt-openwave running from a jail on my FreeNAS.

Thanks

refreshnodeinfo strange behaviour

Issuing a refreshnodeinfo command seems to cause a crash of the daemon.
Tested it a few times on different nodes and in all cases OZW daemon crashed and restarted.

Cannot get docker image to run due to missing libQt5Test.so.5

I was trying to load and run a docker container and was met with
/usr/local/bin/ozwdaemon: error while loading shared libraries: libQt5Test.so.5: cannot open shared object file: No such file or directory

Currently running docker on Ubuntu 16.04.6 LTS. Making sure everything is as upgraded as it can be and will keep trying. Any help in figuring out what I'm missing would be appreciated.

Build error - qmake

Hi,

After clone the repository and running the following from the root directory I receive the below error.

docker build -t qt-openzwace Docker/

Step 10/32 : COPY . /opt/qt-openzwave/
---> cbe5157b16b6
Step 11/32 : RUN cd qt-openzwave && if [ -f Makefile ]; then /usr/lib/qt5/bin/qmake -r; make distclean; fi && /usr/lib/qt5/bin/qmake -r "CONFIG+=BreakPad" && make -j4 && make install
---> Running in b1f6678d2158
Usage: /usr/lib/qt5/bin/qmake [mode] [options] [files]

I would like to add mqtt authentication and offer a pull request. I need to get it building first though :)

Unable to build from Dockerfile

I appear to be unable to build from the dockerfile in this repository. I receive an error on this section of code. It appears that qmake is not receiving the correct arguments. I experimented but was unable to find a solution and am unfamiliar with qmake. I failed to build from the file on two seperate machines with the same error.

RUN cd qt-openzwave \
	&& if [ -f Makefile ]; then /usr/lib/qt5/bin/qmake -r; make distclean; fi \
	&& /usr/lib/qt5/bin/qmake -r "CONFIG+=BreakPad" \
	&&  make -j4 \
	&& make install

I have not experienced problems with the openzwave/ozwdaemon:latest image. However, I do not know how often these images are built.

Device associations

It looks like setting up associations hasn't been implemented yet. Is this on the roadmap?

I'm trying to set up associations between some Fibaro FGD-212 dimmers, but can't find the functionality for that (it looks like it's a separate setting from a config parameter)

Battery devices have stale information after a ozwdaemon restart

Not sure if this is an issue with qt-openzwave only, or OZW itself.

Running ozwdaemon in Docker, and I restarted the container. The battery devices have wrong data for some of the status flags. The two I noticed are isZWavePlus is set to false, and isAwake is set to true. Neither of those are correct as the devices are sleeping and are Z-Wave Plus. I am guessing they will update during the next wake up.

Another thing I noticed is that there is a difference between how the values are being reported after a restart. Two of the nodes are door sensors (different models). For the access control value, one is reporting that the door is closed, which it is. The other is reporting a "Clear" value. Prior to restart, the first sensor was indeed Closed, but the second sensor was Open. I believe this has to do with the cache file being stale? The cache file is not saved during a restart/shutdown, so I assume it contains the values that were last found when I refreshed the nodes, which were "Closed" and "Clear".

I can reproduce and provide any logs or the cache file if you need them.

MQTT command documentation does not match implementation

MQTT topics are case sensitive. I tried to issue a refreshNodeInfo command as documented:

topic: OpenZWave/1/command/refreshNodeInfo/
data: {"node": 11"}

There was no response, and ozwdaemon debug logs showed the command was received but no action was taken.

I changed the topic to OpenZWave/1/command/refreshnodeinfo/. That was successful and ozwdaemon replied with OpenZWave/1/event/refreshnodeinfo/. I noticed all the setValue commands issued by Home Assistant are lowercase setvalue as well, not setValue as documented.

I took a look and If I am understanding everything correctly, there are 3 different forms of topic letter-casing being used:

  1. Documentation use camel case with lower case first letter, e.g. refreshNodeInfo.
  2. The MQTT class static method StaticGetCommand() use camel case with upper case first letter, e.g. AssignReturnRoute
  3. The subscription setup code that registers MQTT topics to the class implementations lower cases the class string (e.g. refreshnodeinfo) and listens for the lower case topic.

So either the documentation needs updating, or the implementation should match the docs.

Add support for Basic command class

ozwd appears to not implement any handling of Basic Set messages. I have a GE 14294 dimmer which sends Basic Set for double taps to assocation group 3. I've assigned my controller (node 1) to the group. It functions as a rudimentary alternative to scenes. Here is the ozwd log when a basic set is received:

[20200413 22:45:30.530 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize PUBLISH: topic: QMqttTopicName("OpenZWave/1/node/11/statistics/")  payloadLength: 811
[20200413 22:45:38.623 PDT] [ozw.library] [debug]: Detail - Node: 11   Received: 0x01, 0x0b, 0x00, 0x04, 0x00, 0x0b, 0x03, 0x20, 0x01, 0xff, 0xbc, 0x00, 0x9a
[20200413 22:45:38.623 PDT] [ozw.library] [debug]: Detail - Node: 0
[20200413 22:45:38.623 PDT] [ozw.library] [info]: Info - Node: 11 Received Basic set from node 11: level=255.  Sending event notification.
[20200413 22:45:38.623 PDT] [ozw.library] [debug]: Detail - Node: 11 Notification: NodeEvent
[20200413 22:45:38.623 PDT] [ozw.notifications] [debug]: Notification pvt_nodeEvent  11  Event:  255
[20200413 22:46:00.528 PDT] [qt.mqtt.connection] [debug]: bool QMqttConnection::sendControlPingRequest()

After the pvt_nodeEvent there is no more related activity. ozwd is not implementing the NodeEvent notifications, with a comment that it is supported via "the normal ValueID/ValueChanged Events". However, there is no topic for command class basic, thus no ValueIDs to watch for. The ozwcache file does show the Basic class with a mapping to 38 (switch multilevel).

In OZW 1.4 and HA this works as expected. Instead of via a value id, HA receives a "node event" with the basic set data (0 for double tap off, 255 for double tap on).

[question] Execute Commands using an MQTT Explorer

Hi All,

Trying to execute commands using MQTT Explorer. I am publishing topics for commands like: addNode or removeNode but I do see nothing happening.

As I am pretty new to MQTT and probably I am doing something wrong I am asking for help.
reading the spec https://github.com/OpenZWave/qt-openzwave/blob/master/docs/MQTT.md (which probably I am not reading properly)

I did publish the following topics:

Topic OpenZWave/1/command/addNode/
payload: { "secure": false }

Topic: OpenZWave/1/command/removeNode/
payload: { } (or empty)

I do see no reactions from the z-wave or qt-openzwave. What am I doing wrong?

OZW database handling

While making this usable when installed through packages (opensuse tumbleeweed ones here I ran into some issues with database handling - mainly with ozw-admin, but it applies here as well, and as ozw-admin uses qt-openzwave for dealing with the database this is probably the better place.

On startup the system wide database gets copied to a new location, but it's not updated when the system wide one changes.

First question, why is it copied at all? Is it supposed to be user editable, or is it supposed to get updates via internet?

Second, in case that database copy is needed, wouldn't it make more sense to just keep the changed files on user side? I.e., for a lookup read users manufacturer_specific.xml, if there's an entry try device specific file from user, and on failure system wide. If there's no device entry check the systems manufacturer_specific.xml and try only the system wide device specific file.

Invalid command payload data crashes ozwdaemon

I used payload data that was in an unexpected format and it crashed.

[20200507 10:38:42.410 PDT] [qt.mqtt.connection.verbose] [debug]: Finalize PUBLISH: topic: QMqttTopicName("OpenZWave/1/command/hasnodefailed/")  payloadLength: 18
[20200507 10:38:42.410 PDT] [ozw.mqtt.commands] [debug]: Got  "OpenZWave/1/command/hasnodefailed/"  Message:  "\"asdfasdfsadfasdf\""
ozwdaemon: /usr/include/rapidjson/document.h:1078: rapidjson::GenericValue<Encoding, Allocator>::ConstMemberIterator rapidjson::GenericValue<Encoding, Allocator>::MemberEnd() const [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; rapidjson::GenericValue<Encoding, Allocator>:
:ConstMemberIterator = rapidjson::GenericMemberIterator<true, rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >]: Assertion `IsObject()' failed.
[20200507 10:38:46.316 PDT] [default] [warning]: =============================
[20200507 10:38:46.316 PDT] [default] [warning]: CRASH!!! - Dumping Backtrace:
[20200507 10:38:46.316 PDT] [default] [warning]: =============================
[20200507 10:38:46.326 PDT] [default] [warning]: #1  0x0000557fd493e3d6 sp=0x0000557fd5ded260 dumpCallback(google_breakpad::MinidumpDescriptor const&, void*, bool) + 0x36
[20200507 10:38:46.326 PDT] [default] [warning]: #2  0x0000557fd4956f25 sp=0x0000557fd5ded4d0 google_breakpad::ExceptionHandler::GenerateDump(google_breakpad::ExceptionHandler::CrashContext*) + 0x385
[20200507 10:38:46.327 PDT] [default] [warning]: #3  0x0000557fd4957288 sp=0x0000557fd5ded570 google_breakpad::ExceptionHandler::SignalHandler(int, siginfo_t*, void*) + 0xa8
[20200507 10:38:46.329 PDT] [default] [warning]: #4  0x00007fae2f0ac110 sp=0x0000557fd5ded640 funlockfile + 0x50
[20200507 10:38:46.330 PDT] [default] [warning]: #5  0x00007fae2ec2d761 sp=0x00007ffdf282b120 gsignal + 0x141
[20200507 10:38:46.331 PDT] [default] [warning]: #6  0x00007fae2ec1755b sp=0x00007ffdf282b240 abort + 0x127
[20200507 10:38:46.332 PDT] [default] [warning]: #7  0x00007fae2ec1742f sp=0x00007ffdf282b370 __libc_freeres + 0x127
[20200507 10:38:46.333 PDT] [default] [warning]: #8  0x00007fae2ec26092 sp=0x00007ffdf282b3c0 __assert_fail + 0x42
[20200507 10:38:46.333 PDT] [default] [warning]: #9  0x0000557fd492b7f2 sp=0x00007ffdf282b3f0 MqttCommand::messageReceived(QMqttMessage) + 0x25e2
[20200507 10:38:46.333 PDT] [default] [warning]: #10 0x0000557fd492bf1b sp=0x00007ffdf282b680 QtPrivate::QSlotObject<void (MqttCommand::*)(QMqttMessage), QtPrivate::List<QMqttMessage>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) + 0x4b
[20200507 10:38:46.335 PDT] [default] [warning]: #11 0x00007fae2f3624e8 sp=0x00007ffdf282b6b0 QMetaObject::activate(QObject*, int, int, void**) + 0x918
[20200507 10:38:46.339 PDT] [default] [warning]: #12 0x00007fae2f7d1c75 sp=0x00007ffdf282b7a0 QMqttSubscription::messageReceived(QMqttMessage) + 0x35
[20200507 10:38:46.340 PDT] [default] [warning]: #13 0x00007fae2f7c78ea sp=0x00007ffdf282b7d0 QMqttConnection::finalize_publish() + 0x20a
[20200507 10:38:46.341 PDT] [default] [warning]: #14 0x00007fae2f7c8435 sp=0x00007ffdf282b8a0 QMqttConnection::processDataHelper() + 0x5b5
[20200507 10:38:46.343 PDT] [default] [warning]: #15 0x00007fae2f7c88a0 sp=0x00007ffdf282b900 QMqttConnection::transportReadReady() + 0x70
[20200507 10:38:46.344 PDT] [default] [warning]: #16 0x00007fae2f3624e8 sp=0x00007ffdf282b960 QMetaObject::activate(QObject*, int, int, void**) + 0x918
[20200507 10:38:46.345 PDT] [default] [warning]: #17 0x00007fae2f6dc874 sp=0x00007ffdf282ba50 QAbstractSocket::setSocketDescriptor(long long, QAbstractSocket::SocketState, QFlags<QIODevice::OpenModeFlag>) + 0x664
[20200507 10:38:46.348 PDT] [default] [warning]: #18 0x00007fae2f6dc90b sp=0x00007ffdf282ba70 QAbstractSocket::setSocketDescriptor(long long, QAbstractSocket::SocketState, QFlags<QIODevice::OpenModeFlag>) + 0x6fb
[20200507 10:38:46.349 PDT] [default] [warning]: #19 0x00007fae2f6ee921 sp=0x00007ffdf282baa0 QTcpServer::incomingConnection(long long) + 0xb561
[20200507 10:38:46.350 PDT] [default] [warning]: #20 0x00007fae2f337a2f sp=0x00007ffdf282bab0 QCoreApplication::notifyInternal2(QObject*, QEvent*) + 0x15f
[20200507 10:38:46.351 PDT] [default] [warning]: #21 0x00007fae2f38e3c5 sp=0x00007ffdf282bb20 QEventDispatcherGlib::registerSocketNotifier(QSocketNotifier*) + 0x145
[20200507 10:38:46.352 PDT] [default] [warning]: #22 0x00007fae2db9f60d sp=0x00007ffdf282bb60 g_main_context_dispatch + 0x27d
[20200507 10:38:46.354 PDT] [default] [warning]: #23 0x00007fae2db9f890 sp=0x00007ffdf282bbe0 g_main_context_dispatch + 0x500
[20200507 10:38:46.355 PDT] [default] [warning]: #24 0x00007fae2db9f91f sp=0x00007ffdf282bc40 g_main_context_iteration + 0x2f
[20200507 10:38:46.356 PDT] [default] [warning]: #25 0x00007fae2f38d7c1 sp=0x00007ffdf282bc60 QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 0x61
[20200507 10:38:46.357 PDT] [default] [warning]: #26 0x00007fae2f3366db sp=0x00007ffdf282bcb0 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 0x12b
[20200507 10:38:46.359 PDT] [default] [warning]: #27 0x00007fae2f33e182 sp=0x00007ffdf282bd30 QCoreApplication::exec() + 0x92
[20200507 10:38:46.359 PDT] [default] [warning]: #28 0x0000557fd48fd751 sp=0x00007ffdf282bd90 main + 0x2ad1
[20200507 10:38:46.360 PDT] [default] [warning]: #29 0x00007fae2ec18e0b sp=0x00007ffdf282c2d0 __libc_start_main + 0xeb
[20200507 10:38:46.361 PDT] [default] [warning]: #30 0x0000557fd48fe9da sp=0x00007ffdf282c390 _start + 0x2a
[20200507 10:38:46.361 PDT] [default] [warning]: dumpCallback Succeeded:  true  at  /opt/ozw/config/crashes//38949278-3601-46b2-7cda9392-a645427d.dmp
[20200507 10:38:46.361 PDT] [default] [warning]: Uploading MiniDump to  https://sentry.io/api/1868130/minidump/?sentry_key=e086ba93030843199aab391947d205da
[20200507 10:38:46.743 PDT] [default] [warning]: Uploaded Crash minidump With ID:  f67af4c9-683b-4b8b-8b28-6faf12f36e81

[bug] Meter data is being dropped

Log 1

[20200124 20:54:50.882 UTC] [ozw.library] [debug]: Detail - Node: 33 Removing current message
[20200124 20:54:50.882 UTC] [ozw.library] [debug]: Detail - Node: 33 Notification: Notification - TimeOut
[20200124 20:54:50.883 UTC] [ozw.library] [debug]: Detail - Node: 0
[20200124 20:54:50.883 UTC] [ozw.notifications] [debug]: Notification pvt_ozwNotification NotificationTypes::Notification_Code_MsgTimeout
[20200124 20:54:50.883 UTC] [ozw.library] [info]: Info - Node: 33 Sending (Send) message (Callback ID=0xc9, Expected Reply=0x04) - MeterCmd_Get (Node=33): 0x01, 0x0a, 0x00, 0x13, 0x21, 0x03, 0x32, 0x01, 0x20, 0x25, 0xc9, 0x3b
[20200124 20:54:50.883 UTC] [ozw.mqtt.publisher] [debug]: Publishing Event ozwNotification
[20200124 20:54:50.883 UTC] [ozw.library] [info]: Info - Node: 33 Encrypted Flag is 0
[20200124 20:54:50.883 UTC] [qt.mqtt.connection] [debug]: qint32 QMqttConnection::sendControlPublish(const QMqttTopicName&, const QByteArray&, quint8, bool, const QMqttPublishProperties&) QMqttTopicName("OpenZWave/1/event/notification/")  Size: 92  bytes. QoS: 0  Retain: false
[20200124 20:54:50.883 UTC] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 127
[20200124 20:54:50.884 UTC] [qt.mqtt.connection.verbose] [debug]: void QMqttConnection::transportReadReady()
[20200124 20:54:50.884 UTC] [qt.mqtt.connection.verbose] [debug]: Received PUBLISH
[20200124 20:54:50.884 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize PUBLISH: topic: QMqttTopicName("OpenZWave/1/event/notification/")  payloadLength: 92
[20200124 20:54:50.891 UTC] [ozw.library] [debug]: Detail - Node: 33   Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8
[20200124 20:54:50.891 UTC] [ozw.library] [debug]: Detail - Node: 33   ZW_SEND_DATA delivered to Z-Wave stack
[20200124 20:54:50.907 UTC] [ozw.library] [debug]: Detail - Node: 33   Received: 0x01, 0x07, 0x00, 0x13, 0xc9, 0x00, 0x00, 0x02, 0x20
[20200124 20:54:50.907 UTC] [ozw.library] [debug]: Detail - Node: 33   ZW_SEND_DATA Request with callback ID 0xc9 received (expected 0xc9)
[20200124 20:54:50.907 UTC] [ozw.library] [info]: Info - Node: 33 Request RTT 23 Average Request RTT 25
[20200124 20:54:50.907 UTC] [ozw.library] [debug]: Detail - Node: 33   Expected callbackId was received

Log 2

[20200124 20:55:00.884 UTC] [ozw.library] [debug]: Detail - Node: 33 Removing current message
[20200124 20:55:00.884 UTC] [ozw.library] [debug]: Detail - Node: 33 Notification: Notification - TimeOut
[20200124 20:55:00.885 UTC] [ozw.library] [debug]: Detail - Node: 0
[20200124 20:55:00.885 UTC] [ozw.library] [info]: Info - Node: 33 Sending (Send) message (Callback ID=0xca, Expected Reply=0x04) - MeterCmd_Get (Node=33): 0x01, 0x0a, 0x00, 0x13, 0x21, 0x03, 0x32, 0x01, 0x28, 0x25, 0xca, 0x30
[20200124 20:55:00.885 UTC] [ozw.notifications] [debug]: Notification pvt_ozwNotification NotificationTypes::Notification_Code_MsgTimeout
[20200124 20:55:00.885 UTC] [ozw.library] [info]: Info - Node: 33 Encrypted Flag is 0
[20200124 20:55:00.885 UTC] [ozw.mqtt.publisher] [debug]: Publishing Event ozwNotification
[20200124 20:55:00.885 UTC] [qt.mqtt.connection] [debug]: qint32 QMqttConnection::sendControlPublish(const QMqttTopicName&, const QByteArray&, quint8, bool, const QMqttPublishProperties&) QMqttTopicName("OpenZWave/1/event/notification/")  Size: 92  bytes. QoS: 0  Retain: false
[20200124 20:55:00.885 UTC] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 127
[20200124 20:55:00.886 UTC] [qt.mqtt.connection.verbose] [debug]: void QMqttConnection::transportReadReady()
[20200124 20:55:00.886 UTC] [qt.mqtt.connection.verbose] [debug]: Received PUBLISH
[20200124 20:55:00.886 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize PUBLISH: topic: QMqttTopicName("OpenZWave/1/event/notification/")  payloadLength: 92
[20200124 20:55:00.893 UTC] [ozw.library] [debug]: Detail - Node: 33   Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8
[20200124 20:55:00.893 UTC] [ozw.library] [debug]: Detail - Node: 33   ZW_SEND_DATA delivered to Z-Wave stack
[20200124 20:55:00.909 UTC] [ozw.library] [debug]: Detail - Node: 33   Received: 0x01, 0x07, 0x00, 0x13, 0xca, 0x00, 0x00, 0x02, 0x23
[20200124 20:55:00.909 UTC] [ozw.library] [debug]: Detail - Node: 33   ZW_SEND_DATA Request with callback ID 0xca received (expected 0xca)
[20200124 20:55:00.909 UTC] [ozw.library] [info]: Info - Node: 33 Request RTT 23 Average Request RTT 24
[20200124 20:55:00.909 UTC] [ozw.library] [debug]: Detail - Node: 33   Expected callbackId was received

Cannot run ozwdaemon docker image using older kernels, libQt5Core.so.5 not found

When I try to start ozwdaemon build 47 (and others) all I get is

/usr/local/bin/ozwdaemon: error while loading shared libraries: libQt5Core.so.5: cannot open shared object file: No such file or directory

For some reason, all other libraries are found so it does not appear to be that the linker doesn't look in the right folders, and libQt5Core.so.5 does exist:

$ docker run --rm --entrypoint=/usr/bin/ldd docker.io/openzwave/ozwdaemon:latest /usr/local/bin/ozwdaemon
        linux-vdso.so.1 (0x00007ffc9f7e7000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f5ae8104000)
        libqt-openzwave.so.1 => /usr/local/lib/libqt-openzwave.so.1 (0x00007f5ae7fed000)
        libqt-openzwavedatabase.so.1 => /usr/local/lib/libqt-openzwavedatabase.so.1 (0x00007f5ae7fe6000)
        libunwind.so.8 => /usr/lib/x86_64-linux-gnu/libunwind.so.8 (0x00007f5ae7fc9000)
        libQt5Mqtt.so.5 => /usr/local/lib/libQt5Mqtt.so.5 (0x00007f5ae7f99000)
        libQt5Network.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Network.so.5 (0x00007f5ae7dde000)
        libQt5Core.so.5 => not found
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f5ae7dbb000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f5ae7c37000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5ae7a77000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f5ae81d4000)
        libopenzwave.so.1.6 => /usr/local/lib/libopenzwave.so.1.6 (0x00007f5ae78b5000)
        libQt5RemoteObjects.so.5 => /usr/lib/x86_64-linux-gnu/libQt5RemoteObjects.so.5 (0x00007f5ae7812000)
        libQt5Core.so.5 => not found
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f5ae77f6000)
        libQt5Core.so.5 => not found
        liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f5ae77ce000)
        libQt5Core.so.5 => not found
        libQt5Core.so.5 => not found
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f5ae75ae000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f5ae7469000)
        libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f5ae7451000)
        libQt5Core.so.5 => not found

$ docker run --rm --entrypoint=/bin/sh docker.io/openzwave/ozwdaemon:latest -c "/bin/ls -l /usr/lib/x86_64-linux-gnu/libQt*"
lrwxrwxrwx. 1 root root      20 Jan 30 21:03 /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 -> libQt5Core.so.5.12.5
lrwxrwxrwx. 1 root root      20 Jan 30 21:03 /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12 -> libQt5Core.so.5.12.5
-rw-r--r--. 1 root root 5454088 Jan 30 21:03 /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12.5
lrwxrwxrwx. 1 root root      20 Jan 30 21:03 /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5 -> libQt5DBus.so.5.12.5
lrwxrwxrwx. 1 root root      20 Jan 30 21:03 /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5.12 -> libQt5DBus.so.5.12.5
-rw-r--r--. 1 root root  619952 Jan 30 21:03 /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5.12.5
lrwxrwxrwx. 1 root root      23 Jan 30 21:03 /usr/lib/x86_64-linux-gnu/libQt5Network.so.5 -> libQt5Network.so.5.12.5
lrwxrwxrwx. 1 root root      23 Jan 30 21:03 /usr/lib/x86_64-linux-gnu/libQt5Network.so.5.12 -> libQt5Network.so.5.12.5
-rw-r--r--. 1 root root 1806136 Jan 30 21:03 /usr/lib/x86_64-linux-gnu/libQt5Network.so.5.12.5
lrwxrwxrwx. 1 root root      29 Dec 20 19:09 /usr/lib/x86_64-linux-gnu/libQt5RemoteObjects.so.5 -> libQt5RemoteObjects.so.5.12.5
lrwxrwxrwx. 1 root root      29 Dec 20 19:09 /usr/lib/x86_64-linux-gnu/libQt5RemoteObjects.so.5.12 -> libQt5RemoteObjects.so.5.12.5
-rw-r--r--. 1 root root  661680 Dec 20 19:09 /usr/lib/x86_64-linux-gnu/libQt5RemoteObjects.so.5.12.5

The host is running CentOS 7 / 7.7.1908, with the latest os-supplied docker (1.13.1 / 4ef4b30).

Unchanging scene controller values in Home Assistant

Hi. I'm having an issue with scenes between HA (0.109.5) and qt-openzwave:latest. I'm using a Hank 1-Button Scene Controller to control a device in Home Assistant.

This is likely similar to #28, but it was closed and I wasn't sure if this was a different issue.

Previously when I was using the native Z-Wave controller in HA, I was detecting scene changes to trigger an event on my Hank 1-Button Scene Controller. I was planning to do the same with the qt-openzwave wrapper, but it's behaving a little differently than I expected.

I can see that my button sends both COMMAND_CLASS_BATTERY and COMMAND_CLASS_CENTRAL_SCENE over MQTT.

I can also confirm that both entities are visible in HA.

image

My problem is that when I push the button, qt-openzwave sends the COMMAND_CLASS_CENTRAL_SCENE but it's either being mis-interpreted or incorrect.

HA only ever interprets the COMMAND_CLASS_CENTRAL_SCENE value as 0 so I'm unable to detect scene changes (button presses)

Here are possible explanations I can come up with, but I'm not sure which are true.

  • Does qt-openzwave fully support scenes?
  • Are the incorrect values being passed along?
  • Is this a problem with the way HA is interperetting the data?

I'm not sure if the problem lies in qt-openzwave, Home Assistant, or OpenZWave. Here are the logs for each command type send through qt-openzwave.

COMMAND_CLASS_BATTERY event log
2020-05-08T12:25:01.859536582Z [20200508 12:25:01.859 UTC] [ozw.library] [debug]: Detail - Node: 23   Received: 0x01, 0x09, 0x00, 0x04, 0x00, 0x17, 0x03, 0x80, 0x03, 0x64, 0x01,
2020-05-08T12:25:01.862608480Z [20200508 12:25:01.862 UTC] [ozw.library] [debug]: Detail - Node: 0 ,
2020-05-08T12:25:01.865046683Z [20200508 12:25:01.864 UTC] [ozw.library] [info]: Info - Node: 23 Received Battery report from node 23: level=100,
2020-05-08T12:25:01.867250465Z [20200508 12:25:01.867 UTC] [ozw.library] [debug]: Detail - Node: 23 Refreshed Value: old value=27, new value=100, type=byte,
2020-05-08T12:25:01.869497157Z [20200508 12:25:01.869 UTC] [ozw.library] [debug]: Detail - Node: 23 Changes to this value are not verified,
2020-05-08T12:25:01.871652182Z [20200508 12:25:01.871 UTC] [ozw.library] [debug]: Detail - Node: 23 Notification: ValueChanged CC: COMMAND_CLASS_BATTERY Instance: 1 Index: 0,
2020-05-08T12:25:01.874135242Z [20200508 12:25:01.874 UTC] [ozw.notifications] [debug]: Notification pvt_valueChanged:  392167441,
2020-05-08T12:25:01.874349592Z [20200508 12:25:01.874 UTC] [ozw.mqtt.publisher] [debug]: Publishing Event valueChanged: 392167441,
2020-05-08T12:25:01.874441732Z [20200508 12:25:01.874 UTC] [ozw.mqtt.qt2js] [debug]: Field is Unchanged:  "Event"  Value:  "valueChanged",
2020-05-08T12:25:01.874572748Z [20200508 12:25:01.874 UTC] [qt.mqtt.connection] [debug]: qint32 QMqttConnection::sendControlPublish(const QMqttTopicName&, const QByteArray&, quint8, bool, const QMqttPublishProperties&) QMqttTopicName("OpenZWave/1/node/23/instance/1/commandclass/128/value/392167441/")  Size: 484  bytes. QoS: 0  Retain: true,
2020-05-08T12:25:01.874596164Z [20200508 12:25:01.874 UTC] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 553,
2020-05-08T12:25:01.874818358Z [20200508 12:25:01.874 UTC] [qt.mqtt.connection.verbose] [debug]: void QMqttConnection::transportReadReady(),
2020-05-08T12:25:01.874841843Z [20200508 12:25:01.874 UTC] [qt.mqtt.connection.verbose] [debug]: Received PUBLISH,
2020-05-08T12:25:01.874876036Z [20200508 12:25:01.874 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize PUBLISH: topic: QMqttTopicName("OpenZWave/1/node/23/instance/1/commandclass/128/value/392167441/")  payloadLength: 484,
COMMAND_CLASS_CENTRAL_SCENE event log
2020-05-08T12:25:03.539978936Z [20200508 12:25:03.539 UTC] [ozw.library] [debug]: Detail - Node: 23   Received: 0x01, 0x0b, 0x00, 0x04, 0x00, 0x17, 0x05, 0x5b, 0x03, 0x96, 0x00, 0x01, 0x2d,
2020-05-08T12:25:03.542706966Z [20200508 12:25:03.542 UTC] [ozw.library] [debug]: Detail - Node: 0 ,
2020-05-08T12:25:03.544606486Z [20200508 12:25:03.544 UTC] [ozw.library] [info]: Info - Node: 23 Received Central Scene set from node 23: scene id=1 with key Attribute 0. Sending event notification.,
2020-05-08T12:25:03.546487916Z [20200508 12:25:03.546 UTC] [ozw.library] [debug]: Detail - Node: 23 Refreshed Value: old value=0, new value=1, type=list,
2020-05-08T12:25:03.548345924Z [20200508 12:25:03.548 UTC] [ozw.library] [debug]: Detail - Node: 23 Changes to this value are not verified,
2020-05-08T12:25:03.550217592Z [20200508 12:25:03.550 UTC] [ozw.library] [info]: Info - Node: 23 Automatically Clearing Scene 1 in 1000ms,
2020-05-08T12:25:03.552096381Z [20200508 12:25:03.551 UTC] [ozw.library] [info]: Info - Node: 0 Timer: adding event in 1000 ms,
2020-05-08T12:25:03.554450649Z [20200508 12:25:03.554 UTC] [ozw.library] [debug]: Detail - Node: 0 Timer: waiting with timeout 1000 ms,
2020-05-08T12:25:03.557093892Z [20200508 12:25:03.556 UTC] [ozw.library] [debug]: Detail - Node: 23 Notification: ValueChanged CC: COMMAND_CLASS_CENTRAL_SCENE Instance: 1 Index: 1,
2020-05-08T12:25:03.559290631Z [20200508 12:25:03.559 UTC] [ozw.notifications] [debug]: Notification pvt_valueChanged:  281475368271892,
2020-05-08T12:25:03.559554241Z [20200508 12:25:03.559 UTC] [ozw.mqtt.publisher] [debug]: Publishing Event valueChanged: 281475368271892,
2020-05-08T12:25:03.559614327Z [20200508 12:25:03.559 UTC] [ozw.mqtt.qt2js] [debug]: Field is Unchanged:  "Event"  Value:  "valueChanged",
2020-05-08T12:25:03.559798474Z [20200508 12:25:03.559 UTC] [qt.mqtt.connection] [debug]: qint32 QMqttConnection::sendControlPublish(const QMqttTopicName&, const QByteArray&, quint8, bool, const QMqttPublishProperties&) QMqttTopicName("OpenZWave/1/node/23/instance/1/commandclass/91/value/281475368271892/")  Size: 967  bytes. QoS: 0  Retain: true,
2020-05-08T12:25:03.559806298Z [20200508 12:25:03.559 UTC] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 1041,
2020-05-08T12:25:03.559935975Z [20200508 12:25:03.559 UTC] [qt.mqtt.connection.verbose] [debug]: void QMqttConnection::transportReadReady(),
2020-05-08T12:25:03.559954041Z [20200508 12:25:03.559 UTC] [qt.mqtt.connection.verbose] [debug]: Received PUBLISH,
2020-05-08T12:25:03.559977803Z [20200508 12:25:03.559 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize PUBLISH: topic: QMqttTopicName("OpenZWave/1/node/23/instance/1/commandclass/91/value/281475368271892/")  payloadLength: 967,

Docker image no longer building

Maybe you're aware, but the image no longer builds due to what looks like updates to the unstable repository packages. Not sure if it's just a transient issue, if there is a workaround, or if they are now incompatible.

#8 [5/8] RUN apt-get -y -t unstable install qt5-default libqt5websockets5-d...
#8 0.413 Reading package lists...
#8 3.900 Building dependency tree...
#8 4.457 Reading state information...
#8 5.008 Some packages could not be installed. This may mean that you have
#8 5.008 requested an impossible situation or if you are using the unstable
#8 5.008 distribution that some required packages have not yet been created
#8 5.008 or been moved out of Incoming.
#8 5.008 The following information may help to resolve the situation:
#8 5.008
#8 5.008 The following packages have unmet dependencies:
#8 5.204  libc6-dev : Breaks: libgcc-8-dev (< 8.4.0-2~) but 8.3.0-6 is to be installed
#8 5.241 E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.
#8 ERROR: executor failed running [/bin/sh -c apt-get -y -t unstable install qt5-default libqt5websockets5-dev qtbase5-private-dev libqt5remoteobjects5-dev libqt5remoteobjects5-bin]: buildkit-runc did not terminate sucessfully

Crash Dump

Running the app results in a crash dump after a few minutes of exectution

Node 2 in this network is a Greenwave Powernode 1 (This network has 19 of these devices included)

[20200112 15:58:24.097 UTC] [ozw.library] [info]: Info - Node: 2 Encrypted Flag is 0
[20200112 15:58:24.101 UTC] [qt.remoteobjects.models] [debug]: void QAbstractItemModelSourceAdapter::sourceDataChanged(const QModelIndex&, const QModelIndex&, const QVector<int>&) const start= (ModelIndex[row=333, column=0]) end= (ModelIndex[row=333, column=13]) neededRoles= QVector(0, 2, 3)
[20200112 15:58:24.103 UTC] [qt.remoteobjects.models] [debug]: void QAbstractItemModelSourceAdapter::sourceDataChanged(const QModelIndex&, const QModelIndex&, const QVector<int>&) const start= (ModelIndex[row=333, column=0]) end= (ModelIndex[row=333, column=13]) neededRoles= QVector(0, 2, 3)
[20200112 15:58:24.103 UTC] [ozw.mqtt.publisher] [debug]: Publishing Event valueAdded: 281475025043479
[20200112 15:58:24.105 UTC] [ozw.mqtt.qt2js] [debug]: Field is Unchanged:  "TimeStamp"  Value:  1578844704
[20200112 15:58:24.106 UTC] [qt.mqtt.connection] [debug]: qint32 QMqttConnection::sendControlPublish(const QMqttTopicName&, const QByteArray&, quint8, bool, const QMqttPublishProperties&) QMqttTopicName("OpenZWave/1/node/2/instance/1/")  Size: 50  bytes. QoS: 0  Retain: true
[20200112 15:58:24.106 UTC] [ozw.library] [debug]: Detail - Node: 2   Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8
[20200112 15:58:24.107 UTC] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 84
[20200112 15:58:24.107 UTC] [ozw.library] [debug]: Detail - Node: 2   ZW_SEND_DATA delivered to Z-Wave stack
[20200112 15:58:24.108 UTC] [ozw.mqtt.qt2js] [debug]: Field is Unchanged:  "TimeStamp"  Value:  1578844704
[20200112 15:58:24.109 UTC] [qt.mqtt.connection] [debug]: qint32 QMqttConnection::sendControlPublish(const QMqttTopicName&, const QByteArray&, quint8, bool, const QMqttPublishProperties&) QMqttTopicName("OpenZWave/1/node/2/instance/1/commandclass/134/")  Size: 122  bytes. QoS: 0  Retain: true
[20200112 15:58:24.109 UTC] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 174
[20200112 15:58:24.114 UTC] [qt.mqtt.connection] [debug]: qint32 QMqttConnection::sendControlPublish(const QMqttTopicName&, const QByteArray&, quint8, bool, const QMqttPublishProperties&) QMqttTopicName("OpenZWave/1/node/2/instance/1/commandclass/134/value/281475025043479/")  Size: 499  bytes. QoS: 0  Retain: true
[20200112 15:58:24.115 UTC] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 573
[20200112 15:58:24.116 UTC] [ozw.notifications] [debug]: Notification pvt_valueAdded: 562950001754135
[20200112 15:58:24.120 UTC] [qt.remoteobjects.models] [debug]: void QAbstractItemModelSourceAdapter::sourceDataChanged(const QModelIndex&, const QModelIndex&, const QVector<int>&) const start= (ModelIndex[row=334, column=0]) end= (ModelIndex[row=334, column=13]) neededRoles= QVector(0, 2, 3)
[20200112 15:58:24.121 UTC] [ozw.library] [debug]: Detail - Node: 2   Received: 0x01, 0x07, 0x00, 0x13, 0x4d, 0x00, 0x00, 0x02, 0xa4
[20200112 15:58:24.122 UTC] [qt.remoteobjects.models] [debug]: void QAbstractItemModelSourceAdapter::sourceDataChanged(const QModelIndex&, const QModelIndex&, const QVector<int>&) const start= (ModelIndex[row=334, column=0]) end= (ModelIndex[row=334, column=13]) neededRoles= QVector(0, 2, 3)
[20200112 15:58:24.122 UTC] [ozw.library] [debug]: Detail - Node: 2   ZW_SEND_DATA Request with callback ID 0x4d received (expected 0x4d)
[20200112 15:58:24.123 UTC] [ozw.library] [info]: Info - Node: 2 Request RTT 24 Average Request RTT 41
[20200112 15:58:24.123 UTC] [ozw.mqtt.publisher] [debug]: Publishing Event valueAdded: 562950001754135
[20200112 15:58:24.124 UTC] [ozw.library] [debug]: Detail - Node: 2   Expected callbackId was received
[20200112 15:58:24.126 UTC] [ozw.mqtt.qt2js] [debug]: Field is Unchanged:  "TimeStamp"  Value:  1578844704
[20200112 15:58:24.126 UTC] [qt.mqtt.connection] [debug]: qint32 QMqttConnection::sendControlPublish(const QMqttTopicName&, const QByteArray&, quint8, bool, const QMqttPublishProperties&) QMqttTopicName("OpenZWave/1/node/2/instance/1/")  Size: 50  bytes. QoS: 0  Retain: true
[20200112 15:58:24.127 UTC] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 84
[20200112 15:58:24.128 UTC] [ozw.mqtt.qt2js] [debug]: Field is Unchanged:  "TimeStamp"  Value:  1578844704
[20200112 15:58:24.129 UTC] [qt.mqtt.connection] [debug]: qint32 QMqttConnection::sendControlPublish(const QMqttTopicName&, const QByteArray&, quint8, bool, const QMqttPublishProperties&) QMqttTopicName("OpenZWave/1/node/2/instance/1/commandclass/134/")  Size: 122  bytes. QoS: 0  Retain: true
[20200112 15:58:24.129 UTC] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 174
[20200112 15:58:24.134 UTC] [qt.mqtt.connection] [debug]: qint32 QMqttConnection::sendControlPublish(const QMqttTopicName&, const QByteArray&, quint8, bool, const QMqttPublishProperties&) QMqttTopicName("OpenZWave/1/node/2/instance/1/commandclass/134/value/562950001754135/")  Size: 498  bytes. QoS: 0  Retain: true
[20200112 15:58:24.135 UTC] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 572
[20200112 15:58:24.136 UTC] [ozw.notifications] [debug]: Notification pvt_valueAdded: 39960593
[20200112 15:58:24.137 UTC] [ozw.library] [warning]: Warning - Node: 2 Node::GetValue - Couldn't find ValueID in Store: HomeID: 0xe304b1f2, ValueID: (Id 0x000000000261c011, NodeID 2, Genre user, CC 0x87, Instance 1, Index 0, Type byte)
[20200112 15:58:24.138 UTC] [ozw.library] [warning]: Warning - Node: 0 Exception: Manager.cpp:1565 - 101 - Invalid ValueID passed to GetValueLabel
terminate called after throwing an instance of 'OpenZWave::OZWException'
terminate called recursively
[20200112 15:58:24.149 UTC] [default] [warning]: =============================
[20200112 15:58:24.150 UTC] [default] [warning]: CRASH!!! - Dumping Backtrace:
[20200112 15:58:24.151 UTC] [default] [warning]: =============================
[20200112 15:58:24.154 UTC] [default] [warning]: #1  0x00000000004e8fb5 sp=0x00000000017d80a8 dumpCallback(google_breakpad::MinidumpDescriptor const&, void*, bool) + 0x24
[20200112 15:58:24.156 UTC] [default] [warning]: #2  0x00000000004f86f1 sp=0x00000000017d8228 google_breakpad::ExceptionHandler::GenerateDump(google_breakpad::ExceptionHandler::CrashContext*) + 0x198
[20200112 15:58:24.158 UTC] [default] [warning]: #3  0x00000000004f89ad sp=0x00000000017d8270 google_breakpad::ExceptionHandler::SignalHandler(int, siginfo_t*, void*) + 0x74
[20200112 15:58:24.159 UTC] [default] [warning]: #4  0x00000000766b4661 sp=0x00000000017d8320 __default_sa_restorer + 0x10
[20200112 15:58:24.161 UTC] [default] [warning]: #5  0x00000000766a5cd6 sp=0x000000007e815268 gnu_get_libc_version + 0x119
[20200112 15:58:24.163 UTC] [default] [warning]: #6  0x00000000766b3957 sp=0x000000007e815270 gsignal + 0x7a
[20200112 15:58:24.163 UTC] [default] [warning]: dumpCallback Succeeded:  false  at  /opt/ozw/config/crashes//4a37d409-ef6a-4f86-501b57a2-a7885859.dmp
Aborted (core dumped)

In MQTT for this node the last message was OpenZWave/1/node/2

{
    "NodeID": 2,
    "NodeQueryStage": "Probe",
    "isListening": true,
    "isFlirs": false,
    "isBeaming": true,
    "isRouting": true,
    "isSecurityv1": false,
    "isZWavePlus": false,
    "isNIFRecieved": false,
    "isAwake": true,
    "isFailed": false,
    "MetaData": {
        "OZWInfoURL": "",
        "ZWAProductURL": "",
        "ProductPic": "",
        "Description": "",
        "ProductManualURL": "",
        "ProductPageURL": "",
        "InclusionHelp": "",
        "ExclusionHelp": "",
        "ResetHelp": "",
        "WakeupHelp": "",
        "ProductSupportURL": "",
        "Frequency": "",
        "Name": "",
        "ProductPicBase64": ""
    },
    "Event": "nodeNaming",
    "TimeStamp": 1578844587,
    "NodeManufacturerName": "",
    "NodeProductName": "",
    "NodeBasicString": "Routing Slave",
    "NodeBasic": 4,
    "NodeGenericString": "Binary Switch",
    "NodeGeneric": 16,
    "NodeSpecificString": "Binary Power Switch",
    "NodeSpecific": 1,
    "NodeManufacturerID": "0x0000",
    "NodeProductType": "0x0000",
    "NodeProductID": "0x0000",
    "NodeBaudRate": 100000,
    "NodeVersion": 4
}

and the stats OpenZWave/1/node/2/statistics/

{
    "sendCount": 3,
    "sentFailed": 0,
    "retries": 0,
    "receivedPackets": 1,
    "receivedDupPackets": 0,
    "receivedUnsolicited": 0,
    "lastSentTimeStamp": 1578844587,
    "lastReceivedTimeStamp": 1578844587,
    "lastRequestRTT": 26,
    "averageRequestRTT": 59,
    "lastResponseRTT": 38,
    "averageResponseRTT": 38,
    "quality": 0,
    "extendedTXSupported": false,
    "txTime": 0,
    "hops": 0,
    "rssi_1": "",
    "rssi_2": "",
    "rssi_3": "",
    "rssi_4": "",
    "rssi_5": "",
    "route_1": 0,
    "route_2": 0,
    "route_3": 0,
    "route_4": 0,
    "ackChannel": 0,
    "lastTXChannel": 0,
    "routeScheme": "Idle",
    "routeUsed": "",
    "routeSpeed": "Auto",
    "routeTries": 0,
    "lastFailedLinkFrom": 0,
    "lastFailedLinkTo": 0
}

OpenZwave information message OpenZWave/1/status/

{
    "Status": "Offline"
}

Just before the last will, this is what was reported

{
    "OpenZWave_Version": "1.6.1007",
    "OZWDeamon_Version": "0.1",
    "QTOpenZWave_Version": "1.0.0",
    "QT_Version": "5.12.5",
    "Status": "driverReady",
    "TimeStamp": 1578844473,
    "ManufacturerSpecificDBReady": true,
    "homeID": 3808735730,
    "getControllerNodeId": 1,
    "getSUCNodeId": 0,
    "isPrimaryController": false,
    "isBridgeController": false,
    "hasExtendedTXStatistics": false,
    "getControllerLibraryVersion": "Z-Wave 3.95",
    "getControllerLibraryType": "Static Controller",
    "getControllerPath": "/dev/ttyACM0"
}

Ensure Crash Directory exists on Startup

ozwdaemon should ensure the crash directory exists (for writting minidumps out) when starting up.

For kicks, I ran the command sudo mkdir /tmp/ozw/crashes and relaunched the container. This time the crash report appears to have returned the true and uploaded the dump.

Related to #16

FR: Add Support for network attached USB stick

I came here from the HA annouocment that this is the path forward for Zwave. Sorry if this is not approproite but I wanted to see if this was within your scope.

For the past 6 months I have been using a zwave stick that is attached to a mini wifi router located centrally in my house. Almost like my own Wink or Smart Things hub.

You can read more about it here. https://community.home-assistant.io/t/add-network-protocol-support-to-zigbee-and-zwave-integrations/136056

Could you see adding network support for this integration? My alternative could be to replace the wifi-router with a pi that can run this container, but the router is small, poe or usb powered and works perfectly.

Thank you for the time.

Cannot open serial port /dev/ttyUSB0, should be /dev/zwave

docker-compose.yml:

  ozw:
    image: openzwave/ozwdaemon
    security_opt:
      - seccomp:unconfined
    devices:
      - '/dev/serial/by-id/usb-0658_0200-if00:/dev/zwave'
    volumes:
      - /home/pi/.ozw:/opt/ozw/config
    environment:
      MQTT_SERVER: x.x.x.x
      USB_PATH: /dev/zwave
      OZW_NETWORK_KEY: xxxx

Per the docker-compose file I set USB_PATH to /dev/zwave. However, when I start the container it's looking in /dev/ttyUSB0.

Here's the log:

ozw_1   | [20200129 3:58:56.094 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "refreshValue"
ozw_1   | [20200129 3:58:56.094 UTC] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/refreshvalue/")  qos: 0
ozw_1   | [20200129 3:58:56.095 UTC] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 40
ozw_1   | [20200129 3:58:56.095 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/refreshvalue/")
ozw_1   | [20200129 3:58:56.095 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "setPollInterval"
ozw_1   | [20200129 3:58:56.096 UTC] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/setpollinterval/")  qos: 0
ozw_1   | [20200129 3:58:56.096 UTC] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 43
ozw_1   | [20200129 3:58:56.097 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/setpollinterval/")
ozw_1   | [20200129 3:58:56.097 UTC] [ozw.mqtt.commands] [debug]: Creating Subscription for  "syncroniseNodeNeighbors"
ozw_1   | [20200129 3:58:56.097 UTC] [qt.mqtt.connection] [debug]: QMqttSubscription* QMqttConnection::sendControlSubscribe(const QMqttTopicFilter&, quint8, const QMqttSubscriptionProperties&)  Topic: QMqttTopicFilter("OpenZWave/1/command/syncronisenodeneighbors/")  qos: 0
ozw_1   | [20200129 3:58:56.098 UTC] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 51
ozw_1   | [20200129 3:58:56.098 UTC] [ozw.mqtt.commands] [debug]: Subscription Setup for  QMqttTopicFilter("OpenZWave/1/command/syncronisenodeneighbors/")
ozw_1   | [20200129 3:58:56.108 UTC] [qt.mqtt.connection.verbose] [debug]: void QMqttConnection::transportReadReady()
ozw_1   | [20200129 3:58:56.108 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.109 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 2 qos: 0
ozw_1   | [20200129 3:58:56.109 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.109 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 3 qos: 0
ozw_1   | [20200129 3:58:56.110 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.110 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 4 qos: 0
ozw_1   | [20200129 3:58:56.110 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.111 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 5 qos: 0
ozw_1   | [20200129 3:58:56.111 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.111 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 6 qos: 0
ozw_1   | [20200129 3:58:56.112 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.112 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 7 qos: 0
ozw_1   | [20200129 3:58:56.112 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.113 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 8 qos: 0
ozw_1   | [20200129 3:58:56.113 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.113 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 9 qos: 0
ozw_1   | [20200129 3:58:56.113 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.114 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 10 qos: 0
ozw_1   | [20200129 3:58:56.114 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.114 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 11 qos: 0
ozw_1   | [20200129 3:58:56.115 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.115 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 12 qos: 0
ozw_1   | [20200129 3:58:56.115 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.116 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 13 qos: 0
ozw_1   | [20200129 3:58:56.116 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.116 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 14 qos: 0
ozw_1   | [20200129 3:58:56.117 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.117 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 15 qos: 0
ozw_1   | [20200129 3:58:56.117 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.117 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 16 qos: 0
ozw_1   | [20200129 3:58:56.118 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.118 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 17 qos: 0
ozw_1   | [20200129 3:58:56.118 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.119 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 18 qos: 0
ozw_1   | [20200129 3:58:56.119 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.119 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 19 qos: 0
ozw_1   | [20200129 3:58:56.120 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.120 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 20 qos: 0
ozw_1   | [20200129 3:58:56.120 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.120 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 21 qos: 0
ozw_1   | [20200129 3:58:56.121 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.121 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 22 qos: 0
ozw_1   | [20200129 3:58:56.121 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.122 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 23 qos: 0
ozw_1   | [20200129 3:58:56.122 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.122 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 24 qos: 0
ozw_1   | [20200129 3:58:56.123 UTC] [qt.mqtt.connection.verbose] [debug]: void QMqttConnection::transportReadReady()
ozw_1   | [20200129 3:58:56.124 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.124 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 25 qos: 0
ozw_1   | [20200129 3:58:56.124 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.125 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 26 qos: 0
ozw_1   | [20200129 3:58:56.125 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.125 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 27 qos: 0
ozw_1   | [20200129 3:58:56.126 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.126 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 28 qos: 0
ozw_1   | [20200129 3:58:56.126 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.127 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 29 qos: 0
ozw_1   | [20200129 3:58:56.127 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.127 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 30 qos: 0
ozw_1   | [20200129 3:58:56.128 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.128 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 31 qos: 0
ozw_1   | [20200129 3:58:56.128 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.129 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 32 qos: 0
ozw_1   | [20200129 3:58:56.129 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.129 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 33 qos: 0
ozw_1   | [20200129 3:58:56.129 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.130 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 34 qos: 0
ozw_1   | [20200129 3:58:56.130 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.130 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 35 qos: 0
ozw_1   | [20200129 3:58:56.131 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.131 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 36 qos: 0
ozw_1   | [20200129 3:58:56.131 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.132 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 37 qos: 0
ozw_1   | [20200129 3:58:56.132 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.132 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 38 qos: 0
ozw_1   | [20200129 3:58:56.132 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.133 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 39 qos: 0
ozw_1   | [20200129 3:58:56.133 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.133 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 40 qos: 0
ozw_1   | [20200129 3:58:56.134 UTC] [qt.mqtt.connection.verbose] [debug]: Received SUBACK
ozw_1   | [20200129 3:58:56.134 UTC] [qt.mqtt.connection.verbose] [debug]: Finalize SUBACK: id: 41 qos: 0
ozw_1   | [20200129 3:59:00.797 UTC] [ozw.library] [info]: Info - Node: 0   Opening controller /dev/ttyUSB0
ozw_1   | [20200129 3:59:00.798 UTC] [ozw.library] [info]: Info - Node: 0 Trying to open serial port /dev/ttyUSB0 (attempt 1)
ozw_1   | [20200129 3:59:00.799 UTC] [ozw.library] [critical]: Error - Node: 0 ERROR: Cannot open serial port /dev/ttyUSB0. Error code 2
ozw_1   | [20200129 3:59:00.800 UTC] [ozw.library] [critical]: Error - Node: 0 ERROR: Failed to open serial port /dev/ttyUSB0
ozw_1   | [20200129 3:59:00.800 UTC] [ozw.library] [warning]: Warning - Node: 0 WARNING: Failed to init the controller (attempt 1)
ozw_1   | [20200129 3:59:00.934 UTC] [ozw.library] [info]: Info - Node: 0 Lookup for mfs.db.openzwave.com returned 71
ozw_1   | [20200129 3:59:05.801 UTC] [ozw.library] [info]: Info - Node: 0   Opening controller /dev/ttyUSB0
ozw_1   | [20200129 3:59:05.802 UTC] [ozw.library] [info]: Info - Node: 0 Trying to open serial port /dev/ttyUSB0 (attempt 1)
ozw_1   | [20200129 3:59:05.803 UTC] [ozw.library] [critical]: Error - Node: 0 ERROR: Cannot open serial port /dev/ttyUSB0. Error code 2
ozw_1   | [20200129 3:59:05.806 UTC] [ozw.library] [critical]: Error - Node: 0 ERROR: Failed to open serial port /dev/ttyUSB0
ozw_1   | [20200129 3:59:05.809 UTC] [ozw.library] [warning]: Warning - Node: 0 WARNING: Failed to init the controller (attempt 2)
ozw_1   | [20200129 3:59:10.811 UTC] [ozw.library] [info]: Info - Node: 0   Opening controller /dev/ttyUSB0
ozw_1   | [20200129 3:59:10.812 UTC] [ozw.library] [info]: Info - Node: 0 Trying to open serial port /dev/ttyUSB0 (attempt 1)
ozw_1   | [20200129 3:59:10.813 UTC] [ozw.library] [critical]: Error - Node: 0 ERROR: Cannot open serial port /dev/ttyUSB0. Error code 2
ozw_1   | [20200129 3:59:10.816 UTC] [ozw.library] [critical]: Error - Node: 0 ERROR: Failed to open serial port /dev/ttyUSB0
ozw_1   | [20200129 3:59:10.817 UTC] [ozw.library] [warning]: Warning - Node: 0 WARNING: Failed to init the controller (attempt 3)
ozw_1   | [20200129 3:59:15.820 UTC] [ozw.library] [info]: Info - Node: 0   Opening controller /dev/ttyUSB0
ozw_1   | [20200129 3:59:15.821 UTC] [ozw.library] [info]: Info - Node: 0 Trying to open serial port /dev/ttyUSB0 (attempt 1)
ozw_1   | [20200129 3:59:15.822 UTC] [ozw.library] [critical]: Error - Node: 0 ERROR: Cannot open serial port /dev/ttyUSB0. Error code 2
ozw_1   | [20200129 3:59:15.825 UTC] [ozw.library] [critical]: Error - Node: 0 ERROR: Failed to open serial port /dev/ttyUSB0
ozw_1   | [20200129 3:59:15.827 UTC] [ozw.library] [warning]: Warning - Node: 0 WARNING: Failed to init the controller (attempt 4)
ozw_1   | [20200129 3:59:15.829 UTC] [ozw.library] [debug]: Detail - Node: 255 Notification: DriverFailed: /dev/ttyUSB0
ozw_1   | [20200129 3:59:15.833 UTC] [ozw.notifications] [debug]: Notification pvt_driverFailed  0
ozw_1   | [20200129 3:59:15.834 UTC] [ozw.mqtt.publisher] [debug]: Publishing Event stopped
ozw_1   | [20200129 3:59:15.835 UTC] [qt.mqtt.connection] [debug]: qint32 QMqttConnection::sendControlPublish(const QMqttTopicName&, const QByteArray&, quint8, bool, const QMqttPublishProperties&) QMqttTopicName("OpenZWave/1/status/")  Size: 206  bytes. QoS: 0  Retain: true
ozw_1   | [20200129 3:59:15.835 UTC] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 230
ozw_1   | [20200129 3:59:15.836 UTC] [ozw.mqtt.publisher] [debug]: Publishing Event driverFailed: 0
ozw_1   | [20200129 3:59:15.837 UTC] [ozw.mqtt.qt2js] [debug]: Field is Unchanged:  "homeID"  Value:  0
ozw_1   | [20200129 3:59:15.838 UTC] [ozw.mqtt.qt2js] [debug]: Field is Unchanged:  "TimeStamp"  Value:  1580270355
ozw_1   | [20200129 3:59:15.839 UTC] [qt.mqtt.connection] [debug]: qint32 QMqttConnection::sendControlPublish(const QMqttTopicName&, const QByteArray&, quint8, bool, const QMqttPublishProperties&) QMqttTopicName("OpenZWave/1/status/")  Size: 211  bytes. QoS: 0  Retain: true
ozw_1   | [20200129 3:59:15.840 UTC] [qt.mqtt.connection.verbose] [debug]: bool QMqttConnection::writePacketToTransport(const QMqttControlPacket&)  DataSize: 235
ozw_1   | [20200129 3:59:15.841 UTC] [ozw.mqtt.publisher] [warning]: Exiting on Failure
containers_ozw_1 exited with code 255

I also tried using quotes around the environment values:

    environment:
      MQTT_SERVER: 'x.x.x.x'
      USB_PATH: '/dev/zwave'
      OZW_NETWORK_KEY: 'xxxx'

and with the list syntax:

    environment:
      - MQTT_SERVER=x.x.x.x
      - USB_PATH=/dev/zwave
      - OZW_NETWORK_KEY=xxxxxx

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.