Install ozwdaemon on Raspbian 10 (without Docker).
Table of Contents
Extract from Docker
Do this on a dev host. We don't need or want docker on the RPi.
Get the latest linux/arm
tag from https://hub.docker.com/r/openzwave/ozwdaemon/tags
OZW=openzwave/ozwdaemon:latest@sha256:f51ed08d35d45280b3f5dccfc982d7914c27a548ca4453548b5713c6ab8ec9e8
docker pull $OZW
OZW_CONT=$(docker create $OZW)
docker export $OZW_CONT > ozwdaemon.f51ed08d.tar
Install on Rpi
Upgrade to Buster
We need glibc 2.28 for the QT libs. Stretch had 2.24 which is too old.
References:
- https://www.raspberrypi.org/blog/buster-the-new-version-of-raspbian/
- https://pimylifeup.com/upgrade-raspbian-stretch-to-raspbian-buster/
I decided against doing sudo rpi-update
.
Dependencies
Refer to the ozwdaemon Dockerfile
apt-get -y install libunwind8 libcurl4 binutils libglib2.0- libicu63 wget
Copy the pre-built libs
I suppose I should make a deb for it...
On the dev host:
# explode the tar
tar xvf ozwdaemon.f51ed08d.tar
# you'll need to deal with some /opt and ~/.local permissions yourself...
scp usr/local/bin/ozwdaemon pi@rpi:.local/bin/
scp -r opt/qt pi@rpi:/opt/qt
Run
pi@rpi $ ozwdaemon --version
ozwdaemon 0.1.170
pi@rpi $ ldd `which ozwdaemon` # complete lib deps
linux-vdso.so.1 (0x7ee33000)
/usr/lib/arm-linux-gnueabihf/libarmmem-${PLATFORM}.so => /usr/lib/arm-linux-gnueabihf/libarmmem-v7l.so (0x76ebb000)
libopenzwave.so.1.6 => /usr/local/lib/libopenzwave.so.1.6 (0x76d16000)
libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0x76d03000)
libresolv.so.2 => /lib/arm-linux-gnueabihf/libresolv.so.2 (0x76cdf000)
libqt-openzwave.so.1 => /opt/qt/5.12.9/lib/libqt-openzwave.so.1 (0x76bf1000)
libqt-openzwavedatabase.so.1 => /opt/qt/5.12.9/lib/libqt-openzwavedatabase.so.1 (0x76bda000)
libunwind.so.8 => /usr/lib/arm-linux-gnueabihf/libunwind.so.8 (0x76b99000)
libcurl.so.4 => /usr/lib/arm-linux-gnueabihf/libcurl.so.4 (0x76b15000)
libQt5RemoteObjects.so.5 => /opt/qt/5.12.9/lib/libQt5RemoteObjects.so.5 (0x76ad0000)
libQt5WebSockets.so.5 => /opt/qt/5.12.9/lib/libQt5WebSockets.so.5 (0x76ab9000)
libQt5Mqtt.so.5 => /opt/qt/5.12.9/lib/libQt5Mqtt.so.5 (0x76a9f000)
libQt5Network.so.5 => /opt/qt/5.12.9/lib/libQt5Network.so.5 (0x769e1000)
libQt5Core.so.5 => /opt/qt/5.12.9/lib/libQt5Core.so.5 (0x766bc000)
libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0x76692000)
libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0x7654b000)
libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0x764c9000)
libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0x7649c000)
libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0x7634e000)
/lib/ld-linux-armhf.so.3 (0x76f72000)
liblzma.so.5 => /lib/arm-linux-gnueabihf/liblzma.so.5 (0x7631d000)
libnghttp2.so.14 => /usr/lib/arm-linux-gnueabihf/libnghttp2.so.14 (0x762ee000)
libidn2.so.0 => /usr/lib/arm-linux-gnueabihf/libidn2.so.0 (0x762c2000)
librtmp.so.1 => /usr/lib/arm-linux-gnueabihf/librtmp.so.1 (0x76299000)
libssh2.so.1 => /usr/lib/arm-linux-gnueabihf/libssh2.so.1 (0x76263000)
libpsl.so.5 => /usr/lib/arm-linux-gnueabihf/libpsl.so.5 (0x76243000)
libssl.so.1.1 => /usr/lib/arm-linux-gnueabihf/libssl.so.1.1 (0x761c4000)
libcrypto.so.1.1 => /usr/lib/arm-linux-gnueabihf/libcrypto.so.1.1 (0x75fab000)
libgssapi_krb5.so.2 => /usr/lib/arm-linux-gnueabihf/libgssapi_krb5.so.2 (0x75f61000)
libkrb5.so.3 => /usr/lib/arm-linux-gnueabihf/libkrb5.so.3 (0x75ea6000)
libk5crypto.so.3 => /usr/lib/arm-linux-gnueabihf/libk5crypto.so.3 (0x75e66000)
libcom_err.so.2 => /lib/arm-linux-gnueabihf/libcom_err.so.2 (0x75e53000)
libldap_r-2.4.so.2 => /usr/lib/arm-linux-gnueabihf/libldap_r-2.4.so.2 (0x75dfe000)
liblber-2.4.so.2 => /usr/lib/arm-linux-gnueabihf/liblber-2.4.so.2 (0x75de2000)
libz.so.1 => /lib/arm-linux-gnueabihf/libz.so.1 (0x75db7000)
libicui18n.so.63 => /usr/lib/arm-linux-gnueabihf/libicui18n.so.63 (0x75b69000)
libicuuc.so.63 => /usr/lib/arm-linux-gnueabihf/libicuuc.so.63 (0x759e3000)
libicudata.so.63 => /usr/lib/arm-linux-gnueabihf/libicudata.so.63 (0x73fe5000)
libgthread-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgthread-2.0.so.0 (0x73fd3000)
libglib-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libglib-2.0.so.0 (0x73ec3000)
libunistring.so.2 => /usr/lib/arm-linux-gnueabihf/libunistring.so.2 (0x73d47000)
libgnutls.so.30 => /usr/lib/arm-linux-gnueabihf/libgnutls.so.30 (0x73ba4000)
libhogweed.so.4 => /usr/lib/arm-linux-gnueabihf/libhogweed.so.4 (0x73b65000)
libnettle.so.6 => /usr/lib/arm-linux-gnueabihf/libnettle.so.6 (0x73b21000)
libgmp.so.10 => /usr/lib/arm-linux-gnueabihf/libgmp.so.10 (0x73aa8000)
libgcrypt.so.20 => /lib/arm-linux-gnueabihf/libgcrypt.so.20 (0x739ce000)
libkrb5support.so.0 => /usr/lib/arm-linux-gnueabihf/libkrb5support.so.0 (0x739b4000)
libkeyutils.so.1 => /lib/arm-linux-gnueabihf/libkeyutils.so.1 (0x739a0000)
libsasl2.so.2 => /usr/lib/arm-linux-gnueabihf/libsasl2.so.2 (0x73979000)
libpcre.so.3 => /lib/arm-linux-gnueabihf/libpcre.so.3 (0x73902000)
libp11-kit.so.0 => /usr/lib/arm-linux-gnueabihf/libp11-kit.so.0 (0x737fd000)
libtasn1.so.6 => /usr/lib/arm-linux-gnueabihf/libtasn1.so.6 (0x737dd000)
libgpg-error.so.0 => /lib/arm-linux-gnueabihf/libgpg-error.so.0 (0x737b3000)
libffi.so.6 => /usr/lib/arm-linux-gnueabihf/libffi.so.6 (0x7379b000)
Systemctl Service
/etc/systemd/system/ozw.service
[Unit]
Description=OpenZWave Daemon
After=network.target
StartLimitIntervalSec=500
StartLimitBurst=5
[Service]
Type=simple
User=hass
WorkingDirectory=/home/hass/ozwdaemon
Environment=OZW_NETWORK_KEY="0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x23,0x34,0x45,0x56,0x67,0x78,0x89"
ExecStart=/usr/local/bin/ozwdaemon -s /dev/ttyACM0 -c /etc/openzwave -u /home/hass/ozwdaemon --mqtt-server localhost --stop-on-failure
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target