ConBee-Zigbee-USB-Gateway
Quelle: https://www.phoscon.de/de/conbee2
Ergänzende Hinweise zur Installation
Nachdem deCONZ wie auf der Herstellerseite beschrieben installiert wurde, müssen in rasbian zumindest noch diese Dateien editiert werden:
/boot/cmdline.txt
Die Serielle Konsole heraus löschen
console=serial0,115200 console=tty1 root=PARTUUID=6c586e13-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
/boot/config.txt
Am Ende folgende Zeile ergänzen
enable_uart=1
Verzeichnispfade
Diese Pfade haben unter Linux einen Bezug zu deCONZ
Pfad | Anmerkung |
---|---|
/usr/share/deCONZ | |
/usr/share/deCONZ/webApp | Die Dateien der Webseite der Phoscon WebApp |
/usr/bin/deCONZ* | Hauptprogramm und Hilfsscripte |
~/.local/share/dresden-elektronik/deCONZ/ | dbdumps für SQLite3 können hier mitunter gefunden werden |
Ergänzend zu der Installationsanleitung unter https://www.phoscon.de/de/conbee2/install gab es zumindst für mich ein paar Stolpersteine, bei der ich nur durch herumprobieren und längerem Suchen eine Lösung gefunden habe.
Mit oder ohne GUI?
Gerade im Serverumfeld von Linux trifft man ganz selten auf eine echte grafische Benutzeroberfläche (GUI). Allerdings gibt es in der beim ConBee USB-Gateway einige Vorgänge, die man nur mit der deCONZ GUI bewältigen kann. Dazu gehört beispielsweise Firmware Updates von OSRAM Leuchtmitteln (vgl. https://www.phoscon.de/de/support#ota-update-osram-devices). Für den ganz normalen Alltag reicht jedoch die GUI-Freie Variante.
Dieser Screenshot wurde unter Windows 10 mit 16 verbundenen ZigBee Geräten (Nodes) aufgenommen. Der Blaue ist der ConBee II USB-Stick. Ich war nicht in der Lage zu ermitteln, welches Gerät zu welchem eintrag in der GUI gehört. auf den Leuchtmitteln steht nicht immer die NWK/IEEE drauf.
Port für die HTTP Weboberfläche
Für die Wahl des HTTP Ports gibt es mehrere überlegungen.
- Ist Port 80 noch frei und wird auch nicht anderweitig benötigt ?
- Will ich mit einem Sprachassistenen wie z.B. Amazon Alexa die an ConBee angelernten Geräte nativ und ohne den Einsatz einer HA-Bridge steuern?
- Sollen auch andere Geräte diese Phosoninstanz wie eine HUEBrdige nativ finden können?
Wenn hier ein Punkt mit JA beantwortet werden kann, dann sollte man beim Standard Port 80 bleiben. Andernfalls kann oder muss man sogar auf einen anderen Port ausweichen. Dafür bietet sich z.B. 8000 oder 8080 an, aber grundsätzlich ist der Port frei wählbar, solange dieser im System noch nicht anderweitig belegt ist.
Konfiguration anpassen
Bei der Installation wird auch eine Konfigurationsdatei angelegt, mit der ein Start des deCONZ Daemons nach dem Serverstart gewährleistet wird. Diese Datei ist im Falle von Ubuntu hier zu finden
/etc/systemd/system/multi-user.target.wants/deconz.service
Der Inhalt sieht in etwa so aus. Hier habe ich bereits meine Änderungen einfließen lassen
[Unit]
Description=deCONZ: ZigBee gateway -- REST API
Wants=deconz-init.service deconz-update.service
[Service]
User=1000
ExecStart=/usr/bin/deCONZ -platform minimal --http-port=8888 --ws-port=8001
Restart=on-failure
StartLimitIntervalSec=0
RestartSec=30
AmbientCapabilities=CAP_NET_BIND_SERVICE CAP_KILL CAP_SYS_BOOT CAP_SYS_TIME
[Install]
WantedBy=multi-user.target
Entscheidend ist nur Zeile 7
Parameter | Bedeutung |
---|---|
-platform minimal | Ist dieser Parameter gesetzt, wird nicht versucht die GUI zu starten |
--http-port | Legt den HTTP Web Port fest (Standard = 80) |
--ws-port | Definiert, auf welchem Port der Websocket lauschen soll. 💡 Der Websocket wird auch durch das HUEPlugin in fhem genutzt und sollte daher immer definiert sein. |
Nachdem alle Änderungen vollzogen wurden, muss man den Service neu einlesen
sudo systemctl daemon-reload && sudo systemctl start deconz.service
Dienst stoppen, starten oder neu starten
stoppen
sudo systemctl stop deconz.service
starten
sudo systemctl start deconz.service
restart
sudo systemctl restart deconz.service
Zeitzone ändern
Bei den Zeitzonen steht per default GMT drin. Hier muss
Europe/Berlin
eintragen sein.
Pairing durchführen
Startseite aufrufen
Der Stick muss, wie die Standard HUE Bridge auch, zum Verbinden mit einer App eines Drittanbieters in den Koppel- oder auch Pairingmodus genannt versetzt werden. Die original HUEBridge hat dazu einen eigenen Knopf am Gerät. Für den conbee Stick sieht das anders aus. Dort muss man die Weboberfläche mit dem zuvor konfigurierten Port im Browser öffnen und dort das Pairing aktivieren.
http://IP-ADRESSE:PORT
💡 Sollte für den Computer ein DNS-Namen existieren, kann natürlich auch der DNS Name verwendet werden. Nach Eingabe des Passwortes muss der Bildschirm in etwa so aussehen.
Hier nur noch mit dem Mauspfeil den zu verwaltenden Stick auswählen.
Die Gatewayeinstellungen aufrufen
Oben links ist das sogenannte Hamburgermenü, über das man an alle Menüpunkte gelangt.
Dort dann den Punkt Gateway auswählen
Dort findet man dann den gesuchten Pairingbuttoni, der hier jedoch mit App Verbinden
beschriftet ist.
deCONZ unter Docker (Linux)
Die Conbee 2 Software kann in einem Docker-Container gestartet werden. Dazu ist es nötig, das Device in den Container zu routen.
Device anschließen und Namen finden
-
Den USB-Dongle an dem Linux-Rechner anschließen
-
Im Verzeichnis /dev/serial/by-id nach dem conbee-stick ausschau halten.
ls /dev/serial/by-id/ -l lrwxrwxrwx 1 root root usb-dresden_elektronik_ingenieurtechnik_GmbH_ConBee_II_DE2147763-if00 -> ../../ttyACM0
-
Das Device wurde mit dem Namen ttyACM0 registriert. Dieser Name muss für die folgende
docker-compose.yml
notiert werden!
Docker-Container mit docker-compose einrichten
- Eine neue docker-compose.yml-Datei erstellen und folgenden Inhalt einfügen.
version: "3"
services:
deconz:
image: deconzcommunity/deconz
container_name: deconz
restart: always
ports:
- 8888:80
- 8001:8001
- 5900:5900
volumes:
- ./opt/deCONZ:/opt/deCONZ
- /etc/localtime:/etc/localtime:ro
devices:
- /dev/serial/by-id/usb-dresden_elektronik_ingenieurtechnik_GmbH_ConBee_II_DE2147763-if00:/dev/ttyACM0
env_file: .env
dann muss noch eine weitere Datei .env
im selben Verzeichnis angelegt werden. Diese hat dann folgenden Inhalt
DECONZ_WEB_PORT=80
DECONZ_WS_PORT=8001
DECONZ_DEVICE=/dev/ttyACM0
DEBUG_INFO=1
DEBUG_APS=0
DEBUG_ZCL=0
DEBUG_ZDP=0
DEBUG_OTAU=1
TZ=Europe/Berlin
DECONZ_UPNP=1
DECONZ_START_VERBOSE=0
#VNC
DECONZ_VNC_MODE=1
DECONZ_VNC_PORT=5900
DECONZ_VNC_PASSWORD=geheim
DECONZ_NOVNC_PORT=6080
- Die Werte DEVICE_NAME, DECONZ_WS_PORT, und VNC_PASSWORD ersetzen!
- Unter volumes kann anstatt "./deconz" auch ein absoluter Pfad angegeben werden.
- Den Container starten
docker stop deconz
Firmware mit Docker updaten
-
Falls in den Logs angezeigt wird, dass eine neue Firmware verfügbar ist.
06:59:26:764 GW update firmware found: /usr/share/deCONZ/firmware/deCONZ_ConBeeII_0x26580700.bin.GCF 06:59:26:764 GW firmware version: 0x264a0700 06:59:26:764 GW firmware version shall be updated to: 0x26580700
-
Den Docker-Container stoppen
docker-compose down
-
Den Container mit folgender Zeile manuell starten
docker run -it --rm --privileged -v /dev/:/dev --entrypoint /firmware-update.sh deconzcommunity/deconz
-
In dem Container wird nun nach dem Device gefragt. Den "Path" eingeben und mit Return bestätigen.
------------------------------------------------------------------- deconzcommunity/deconz Firmware Flashing Script Version: 0.9 ------------------------------------------------------------------- Listing attached devices... Path | Serial | Type ------------------+-------------+--------------- /dev/ttyACM0 | DExxxxxxx | ConBee_II Enter the full device path, or press Enter now to exit. Device Path : /dev/ttyACM0
-
Nun wird nach der Update-Datei gefragt. Wähle den Dateinamen aus, der in den Log-Dateien unter 1. angezeigt wurde, füge ihne ein und bestätige mit Return. Es ist auch mnöglich von der Downloadseite nur den Namen zu kopieren und diesen dann hier ohne Pfad einzugeben.
Firmware available for flashing: Enter the firmware file name from above, including extension. Alternatively, you may enter the name of a firmware file to download from any of the following sources: - http://deconz.dresden-elektronik.de/deconz-firmware/ (stable) - http://deconz.dresden-elektronik.de/deconz-firmware/beta/ (beta) If you wish to exit, just hit Enter. Firmware file: deCONZ_ConBeeII_0x26780700.bin.GCF File not found locally. Enter Y to download from http://deconz.dresden-elektronik.de/deconz-firmware/deCONZ_ConBeeII_0x26780700.bin.GCF: y Downloading... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 159k 100 159k 0 0 1341k 0 --:--:-- --:--:-- --:--:-- 1350k Download complete! Checking md5 checksum... /tmp/deCONZ_ConBeeII_0x26780700.bin.GCF: OK ------------------------------------------------------------------- Device path .: /dev/ttyACM0 Firmware file: deCONZ_ConBeeII_0x26780700.bin.GCF Timeout .....: 60 Are the above values correct? Enter Y to proceed, any other entry to exit: y
-
Er fragt noch einmal nach, ob das Update durchgeführt werden soll. Hier Y eingeben und mit Return bestätigen.
-
Wenn alles geklappt hat, sollte die Ausgabe wie folgt aussehen.
Flashing... read file success: /tmp/deCONZ_ConBeeII_0x26780700.bin.GCF (163244 bytes) flash firmware command UART reset done query bootloader id V1 bootloader detected (60) 100% uploading ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ done, wait validation... firmware successful written
-
-
Der Docker-Container wurde automatisch beendet und gelöscht
-
Den eigentlichen Docker-Container starten und per Web-UI anmelden.
docker start deconz
-
Wenn das Update erfolgreich var, wird in den Logs folgendes angezeigt
user@linux:~$ docker logs --since 5m deconz | grep -i firmware 20:15:33:269 Device firmware version 0x26780700 ConBee II
Zugriff auf Conbee2-GUI über VNC
Der Docker-Container bietet für die Administration eine Java-GUI an, die über VNC erreichbar ist.
-
Wie im Abschnitt Docker-Container mit docker-compose einrichten beschrieben müssen in der Datei
.env
die drei folgenden Environment-Variablen eingetragen sein- DECONZ_VNC_MODE=1 - DECONZ_VNC_PORT=19002 - DECONZ_VNC_PASSWORD=VNC_PASSWORD
-
Über z.B. TightVNC Viewer kann die Verbindung zur GUI hergestellt werden
No Comments