Auf github ist ein Zigbee zu MQTT gateway Projekt verfügbar. Diese Software ermöglicht die Verwendung von Zigbee-Geräten ohne die Bridges oder das Gatewayes der Hersteller und ohne dass Daten in die Cloud der Hersteller übertragen werden.
Neben der bereits sehr guten Beschreibung des Autors gibt es hier und hier weitere nützliche Artikel und diesen Forums-Thread.
- CC2531 Zigbee Sniffer: ca. 9 € - Darauf achten, dass der Stick die Debug-Pins zum anstecken das Kabels hat.
- CC-Debugger: ca. 9 €
- Downloader-Kabel: ca. 2 €
- Und als ersten Sensor probiere ich den Xiaomi Aqara für Temperatur, Luftdruck und Feuchtigkeit: ca. 10,50 €
Leider kommen die Teile aus China, so dass es bis zu zwei Monaten dauert, bis sie ankommen. Wer es eiliger hat, findet bei ebay-Kleinanzeigen fertig präperierte Sticks und hier für ein paar Euro mehr den Xiaomi Aqara Sensor geliefert aus Deutschland.
Ich werde mit diesem Teil erst mal bis Ende Februar warten, da ich das Flashen selbst machen möchte und die anderen Teile nicht in Deutschland gefunden habe...
Hier die Bescheibung, um das cc-tool
zu erstellen:
xcode-select --install
brew install autoconf automake libusb boost pkgconfig libtool
git clone https://github.com/dashesy/cc-tool.git
cd cc-tool
./bootstrap
./configure
make
Download der Firmware CC2531ZNP-Prod.hex unter https://www.zigbee2mqtt.io/.
Flashen der Firmware:
sudo ./cc-tool -e -w /private/tmp/CC2531_DEFAULT_20190608/CC2531ZNP-Prod.hex
Nun den CC debugger mit dem Downloader cable an den CC2531 USB Sniffer anschließen und den Sniffer und den Debugger per USB an den Rechner anschließen. Das Flashen der neuen Firmware erfolgt mit diesem Kommando:
sudo ./cc-tool -e -w CC2531ZNP-Prod.hex
Zur Installation bin ich dieser Anleitung gefolgt.
Prüfen, ob node (>V10.x) und npm (>v6.x) mit den benötigten Versionen installiert sind. Falls nicht, diese installieren.
# Checken der node.js- und npm-Versionen und installation von node.js
node --version
npm --version
# Setup Node.js repository
sudo curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
# Install Node.js
sudo apt-get install -y nodejs git make g++ gcc
# Clone zigbee2mqtt repository
sudo git clone https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt
sudo chown -R pi:pi /opt/zigbee2mqtt
# Install dependencies
cd /opt/zigbee2mqtt
npm install
Mit nano /opt/zigbee2mqtt/data/configuration.yaml
die Konfigurationsdatei editieren. Hier den MQTT Server, User, Kennwort und den Port prüfen bzw. eintragen.
ls -l /dev/serial/by-id
zeigt an, als welches Device der Sniffer erkannt wird. Bei mir war dies /dev/ttyACM0
. Es kam allerdings vor, dass dies nach dem booten sporadisch auch /dev/ttyACM01
gewesen ist, so dass ich lieber gleich die Ausgabe von ls -l /dev/serial/by-id
nutze.
Ich verwende derzeit den im Home Assistant enthaltenen MQTT Broker, so dass die Datei wie folgt ausschaut:
# Home Assistant integration (MQTT discovery)
homeassistant: false
# allow new devices to join
permit_join: true
# MQTT settings
mqtt:
# MQTT base topic for zigbee2mqtt MQTT messages
base_topic: zigbee2mqtt
# MQTT server URL
server: mqtt://localhost
# MQTT server authentication, uncomment if required:
user: homeassistant
password: myPassword
# Serial settings
serial:
# Location of CC2531 USB sniffer
port: /dev/serial/by-id/usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B00193648CA-if00
Bevor Zigbee2mqtt gestartet wird, sollte der mqtt-Broker (siehe mqtt.md) laufen.
cd /opt/zigbee2mqtt
npm start
Stoppen mit <CTRL + C>.
Dazu den Knopf am Sensor 5 Sekunden lang gedrückt halten.
In der Shell erscheint die Nummer des Devices.
In /opt/zigbee2mqtt/data/configuration.yaml
das Device ergänzen:
devices:
'0x00158d0002b5196f':
friendly_name: 'Temperatur Wohnzimmer'
retain: false
.homeassistant/configuration.yaml:
mqtt:
discovery: true
discovery_prefix: homeassistant
Im Web-GUI des HA findet man bei Einstellungen / Integrationen / MQTT die ersten Werte...
sudo nano /etc/systemd/system/zigbee2mqtt.service
[Unit]
Description=zigbee2mqtt
After=network.target
[Service]
ExecStart=/usr/local/bin/npm start
WorkingDirectory=/opt/zigbee2mqtt
StandardOutput=inherit
StandardError=inherit
Restart=always
User=pi
[Install]
WantedBy=multi-user.target
sudo systemctl start zigbee2mqtt
sudo systemctl enable zigbee2mqtt.service
systemctl status zigbee2mqtt.service
sudo journalctl -u zigbee2mqtt.service -f