Der lange Weg zum cod.m ZigBee Coordinator

2022 haben wir, auf Basis einer Idee von Matthias Kleine von haus-automatisierung.com, einen ZigBee Coordinator gebaut. Der war nicht viel mehr als ein ZigBee-Funkmodul (CC2652P2) und ein USR-Ethernetmodul auf einer kleinen Platine mit Spannungswandler, USB-Buchse und einem 3D-gedruckten Gehäuse drum herum. Power over Ethernet (PoE) war mit dieser Version nur mit externem Adapter möglich.
Offensichtlich haben wir damit aber einen Nerv getroffen, da sich der Coordinator doch recht gut im cod.m Shop verkaufte.

Anfang 2023 wollten wir dann das Modul überarbeiten und zum Beispiel die PoE-Funktionalität mit auf die Platine bringen. Genauso gab es Wünsche an die Firmware. So habe ich Kontakt zu USR aufgenommen um zu gucken ob weitere Features in die Software integriert werden können. Leider gab es da kein positives Feedback und wir fingen mit Überlegungen zu einer kompletten Eigenentwicklung an…

Zu diesem Zeitpunkt war der von uns präferierte ESP32 zwar lieferbar, der nötige LAN8720 für die Ethernetanbindung aber nicht – oder wenn nur sehr schwer.
Die Idee war also auf Basis des RP2040 und dem uns aus anderen Projekten bekannten W5500 eine komplett neue Platine zu entwickeln. Dazu gehörte dann auch die Eigenentwicklung von Firmware für den RP2040 die wir in einem Protoyp mit Grundfunktionalität (ohne PoE) auch schon am laufen hatten.

Durch das normale Tagesgeschäft und (z.B.) die Umstellung der Platinenproduktion sowie die daraus folgende Preissenkung für den cod.m WLED Controller, war unsere Zeit für dieses Projekt leider recht begrenzt.
Die erste Version unseres ZigBee Coordinators mit USR-Modul war etwa ab April/Mai 2023 nicht mehr lieferbar. Und da die neue Version ja schon als Prototyp auf der Werkbank lag, planten wir keine Neuauflage der alten Platinen.

Aber was sagt denn die Community zu dieser Entscheidung? Neue Version bauen oder die alte nochmal auflegen. Bei einer Umfrage im Juli in der IoBroker-Gruppe auf Facebook, ließ sich diese Frage recht schnell klären 😉 91% stimmten für die neue Version und der damit verbundenen Wartezeit.

Neuausrichtung Hardware und Firmware-Entscheidung

Im Sommer/Herbst 2023 verbesserte sich dann die Liefersituation für den LAN8720 was uns die Möglichkeit geben würde auf den ESP32 als Basis umzuschwenken. Natürlich würde das heißen, die Hardware komplett über den Haufen zu werfen und die bereits geleistete Arbeit bei der Firmwareentwicklung wäre auch für die Füße.
Leider lief es bei der Firmware-Entwicklung mit Arduino Core auf dem RP2040 im Zusammenhang mit dem Netzwerk-Stack nicht wirklich rund. Benötigte Bibliotheken waren noch nicht auf den RP2040 portiert, Standardfunktionen mussten teilweise reimplementiert werden, Nebenläufigkeit von Prozessen war fragwürdig, etc.

Die Entscheidung fiel also recht schnell: Wir wechseln auf die usprünglich geplante Hardware.

Anstatt dort aber mit der Firmwareentwicklung komplett von vorn anzufangen, schauten wir uns nach bereits vorhandener Software um… und natürlich gibt es dort einige: Angefangen bei der ZigStar-FW, die auf ZiGate-Ethernet aufbaut, hin zu der UZG Firmware, die ein Fork der ZigStar-FW ist.
Alle diese Firmwares für verschiedene ZigBee Gateways stehen unter der GPL. Eine Weiterentwicklung (fork) und Nutzung ist damit kein Problem. Die Entscheidung für unseren Fork fiel auf die UZG Firmware.

cod.m Fork der UZG Firmware

Meine Hoffnung auf Lange Sicht ist, dass sich eine allgemeine Gateway-Firmware entwickelt, die auf verschiedener Hardware läuft. Das ist doch der Grundgedanke von Open-Source 😉
Wir lassen natürlich unsere Änderungen in die UZG Firmware zurückfließen. Zum Beispiel haben wir einen USB-Passthrough implementiert, wodurch der USB-Modus auch ohne die extra Hardware auf der UZG-Platine funktioniert.

Hardwareentwicklung ESP32 mit Auto-Reset Circuit und PoE

Als nächstes Stand dann also die Hardwareentwicklung an. ESP32 hatten wir schon oft genug mit LAN8720 implementiert – soweit kein Problem. Neu für uns war aber PoE und die Integration eines USB-Serial Chips zusammen mit einem Auto-Reset Circuit. Man sollte endlich den ESP32 flashen können ohne irgendwelche Taster auf der Platine drücken zu müssen.

Bisher hatten wir uns das immer gespart, weil keine dauerhafte USB-Verbindung zur Platine gebraucht wurde. Gelegentliches Programmieren des ESP rechtfertigte nicht den Preis für einen FTDI-Chip.

Der ZigBee Coordinator kann aber außer über LAN/WLAN auch über USB betrieben werden – was sicher in den wenigstens Fällen passieren wird. Man kauft sich ja schließlich keinen PoE-fähigen LAN/WLAN ZigBee Coordinator um ihn dann per USB zu betreiben… aber: Die Firmware gibt es her.
Und natürlich macht es das Aufspielen der Firmware massiv einfacher.

Eagle-PCB-Design des cod.m ZigBee Coordinators (ESP32)

Die Wahl fiel klar auf eine USB-C Buchse. In der ersten Version hatten wir mit der verbauten Micro-USB Buchse zu viele Probleme mit Wackelkontakten und mechanischer Stabilität. Beim USB-Serial Chip setzen wir auf den FT231X da der sonst verwendete CH340 nur über chinesische Zulieferer beschafft werden kann.

Beim PoE-Teil wurde es etwas schwieriger. Zuerst mussten wir einen Interface Controller suchen – also einen Chip, der sich mit dem Netzwerk-Switch „unterhält“ und entsprechend die Stromversorgung aushandelt. Hier fiel die Wahl auf OnSemi’s NCP1092.

Dieser erlaubt es uns zwischen PoE- und USB-Versorgung hin und her zu schalten (AUX). USB hat dabei immer Priorität und deaktivert entsprechend PoE. Das funktioniert sogar unterbrechungfrei!
Nur beim Wechsel von USB- auf PoE-Versorgung startet der Coordinator neu, da der NC1092 erneute die Bedingungen mit dem Netzwerk-Switch aushandeln muss.

Die drei LED’s am Gehäuse zeigen entsprechend den Betriebszustand an. Grün für Power, Rot für den Modus und Gelb für das ZigBee-Pairing. Alle LED’s werden per Firmware gesteuert und können auch ausgeschaltet werden.
Der am Gehäuse befindliche Taster hat mehrere Funktionen und kann zum Beispiel den USB-Modus einschalten. Wir haben uns absichtlich für die Betätigung mittels Büroklammer (o.ä.) entschieden.

Fertige Hardware und Dokumentation

cod.m ZigBee Coordinator Gehäuse mit Wandhalterung

Natürlich darf auch ein Gehäuse nicht fehlen. Da wir nicht die Mengen absetzen werden, die eine Spritzgußform für den ZigBee Coordinator rechtfertigen, haben wir wieder ein 3D-Druck Gehäuse designt.

Die Druckdateien bieten wir natürlich kostenlos zum Download an. Diesmal habe ich zusätzlich eine Variaten mit Wandhalterung erstellt, die man sich bei Bedarf selbst ausdrucken kann.
Auch wenn man das Gehäuse in einer anderen Farbe haben möchte, ist das dann kein Problem ☺️
Printables: Druckdateien Gehäuse cod.m ZigBee Coordinator.

Die Schnellstart-Anleitung sollte euch den direkten und unkomlizierten Betrieb ermöglichen. Wie man zum Beispiel die Firmware des ESP32 oder des CC2652 aktualisiert, werden wir euch in detalierten Tutorials erklären.

Alle Infos, Anleitungen und Dateien findet ihr in unserer cod.m Knowledge Base: ZigBee Coordinator.

Fazit

Wenn man sich unsere ersten Platinen anguckt, sind wir doch ein gutes Stück weitergekommen 😉
Wir lernen bei jedem Projekt dazu und ich freue mich wie immer über jeglichen Input eurerseits. Kritik ist gerne gesehen und vielleicht hat der eine oder andere von euch ja auch noch eine Idee, was wir besser machen können.

Danke für eure Geduld und euren Support! ❤️

cod.m ZigBee Coordinator V1.0 (CZC)