Inhaltsverzeichnis

ZIGBEE Sensor

Motivation

In der Heimautomatisierung ist ZIGBEE eine Alternative zur WiFi-basierten Kommunikation und bereits gut in Home Assistant integriert. Auch dank der niedrigen Leistungsaufnahme und der Mesh-Fähigkeiten findet man es in kommerziellen Produkten wie TRADFRI von IKEA oder HUE von Philips. In der DIY-Welt ist es noch nicht so weit verbreitet wie WiFi (z. B. ESP8266- oder ESP32-Module). Aber ich konnte eine recht einfache und flexible Lösung finden und nutzen. Hier die Beschreibung…

Übrigens wurde die Idee zu diesem Projekt durch ZIGBEE-Impulszähler und WATERIUS angeregt.

Planung

Es gibt 3 Arten von ZigBee-Geräten:

  1. ZigBee-Koordinator: Er kommuniziert mit Routern. Dieses Gerät wird zum Verbinden der Geräte verwendet.
  2. ZigBee-Router: Er wird verwendet, um Daten zwischen Geräten weiterzuleiten.
  3. ZigBee-Endgerät: Das Gerät, das gesteuert werden soll.

Um ZIGBEE einzurichten, benötigt man mindestens ein ZigBee-Koordinator-Gerät. In meinem Fall verwende ich YELLOW von Home Assistant, bei dem ein ZIGBEE-Modul (Silicon Labs MGM210P Mighty Gecko) bereits verbaut ist. Ebenfalls gebräuchlich ist Zigbee2MQTT mit einem unterstützten ZIGBEE-Adapter der eigenen Wahl. Diesen Ansatz verwende ich nur zu Debug-Zwecken.

Module

Um ein DIY-Zigbee-Gerät (Endgerät oder Router) zu bauen, benötigen wir ein programmierbares Zigbee-Modul. Es gibt mehrere Module auf dem Markt, ich verwende jedoch E18-MS1-PCB von Chengdu Ebyte Elec Tech. Es basiert auf dem CC2530 von Texas Instruments, etwas veraltet, aber günstig und leicht erhältlich.

E18-MS1-PCB

Macken & Co.

Für DIY-Geräte muss man der Koordinator-Software unter Umständen beibringen, wie sie mit den eigenen Zigbee-Daten umgehen soll. In Home Assistant überbrücken Quirks die funktionale Lücke, die entsteht, wenn ein DIY-Gerät von der ZCL-Spezifikation abweicht, indem sie Abweichungen und Ausnahmen durch das Parsen benutzerdefinierter Nachrichten zu und von Zigbee-Geräten behandeln.

Ein ähnlicher Ansatz existiert für Zigbee2MQTT durch Einbetten einer JavaScript-basierten externen Gerätebeschreibung.

Hardware

Um eine Reihe von Anwendungen abzudecken, habe ich eine Standard-Platine entworfen, die den Anschluss von Sensoren und/oder Aktoren über GPIO, I²C oder UART ermöglicht. Meistens mit Pegelwandler, um 5V- und 3,3V-Schnittstellen zu ermöglichen.

Schaltplan

Platine

Die fertige Platine ist mit einer Größe von 44,5 x 24mm sehr kompakt. Oben sieht man die Programmierschnittstelle (J1) und einen Taster (SW1). Die gelbe LED (LED1) dient als Anzeige. Eine 5V-Stromversorgung kann über einen 2-poligen JST-Stecker (J7) oder Micro-USB angeschlossen werden. Ein 3,3V-Regler ist ebenfalls verbaut. Die UART-Schnittstelle hat einen Signalpegel von 5V, der I²C-Bus ist standardmäßig 3,3V. Der Pegel der beiden zusätzlichen GPIOs kann per Jumper zwischen 3,3V und 5V ausgewählt werden. Alle 4-poligen XH-Anschlüsse (J3-J6) stellen einen Stromversorgungspin bereit, sodass ein Sensor direkt angeschlossen werden kann.

 Fertig gelötete Platine

Software

Lange habe ich gezögert, auf ZIGBEE umzusteigen, da die Firmware-Entwicklung eine Herausforderung sein könnte. Es gibt viele öffentliche Schritt-für-Schritt-Anleitungen, aber es scheint keine Out-of-the-Box-Aufgabe zu sein. Ich konnte jedoch einige Projekte finden, die die PTVO-Firmware nutzen. Das Firmware-Tool ermöglicht es, ein ZIGBEE-Gerät (muss auf einem TI-SOC basieren) mit einfach konfigurierbarer Funktionalität zu erstellen, einschließlich Ein-/Ausgängen, ADC, Impulszähler/-generator, I²C und externen Sensoren.

Nach einigen Tests war ich beeindruckt und überzeugt, wie einfach es ist, ein ZIGBEE-Gerät einzurichten. Dieses Tool erzeugt nicht nur die Binärdatei (.hex), die direkt auf das ZIGBEE-Modul programmiert werden kann, sondern generiert auch die benutzerdefinierten Dateien für den Koordinator der Wahl (z. B. Quirks für Home Assistant). Es muss keine einzige Codezeile programmiert werden.

Ein erstes Anwendungsbeispiel wird hier beschrieben.

Programmierung

Um die Firmware auf das ZIGBEE-Modul zu programmieren, benötigen wir einen Programmieradapter wie den SmartRF04EB von Texas Instruments. Um Geld zu sparen, kann man auch eine der chinesischen Kopien im Online-Shop der Wahl kaufen.

SmartRF04EB

Fünf Pins der DEBUG-Schnittstelle (Stecker J1) müssen einzeln mit dem Programmiergerät verbunden werden.

So wird der Programmer angeschlossen

Die Programmiersoftware SmartRF Flash Programmer kann von der TI-Webseite heruntergeladen werden (außerhalb der USA ist eine kurze Exportkontrolle erforderlich). Die Software ist selbsterklärend.

Programmierung läuft...

Erste Anwendung: Wasserzähler

Wir sind nicht an das öffentliche Wassernetz angeschlossen, sondern nutzen eine eigene Tauchpumpe in Kombination mit einem 2000-Liter-Wassertank. Um den Wasserverbrauch zu messen, benötigen wir einen Wasserzähler. Eine ideale Herausforderung für das neue ZIGBEE-Modul.

YF-B1 Hall-Effekt Durchflusssensor

Dieser Sensor sitzt in unserer 1/2„-Wasserleitung und enthält ein Flügelrad, das misst, wie viel Flüssigkeit hindurchgeflossen ist. Ein integrierter magnetischer Hall-Effekt-Sensor gibt bei jeder Umdrehung einen elektrischen Impuls aus. Die Sensorsignale können direkt an J3 angeschlossen werden.

Kompletter Sensor im 3D-gedruckten Gehäuse

Die Einrichtung der PTVO-Firmware ist sehr einfach. Einfach P21 als Zähler definieren und das Intervall auf 60 Sekunden setzen. Jeder Impuls länger als 1ms an P21 wird gezählt.

PTVO-Einrichtung

Nach dem Pairing sendet die PTVO-Firmware den Zählerwert an den Koordinator. In meinem Fall liefert der Sensor 360 Impulse pro Liter. Diese Berechnung sowie der Tagesverbrauch lassen sich leicht in Home Assistant durchführen. Die folgenden Beispiele zeigen die Ergebnisse:

Wasserverbrauch in l/min Wasserverbrauch pro Tag

Dieser Sensor ist nun seit mehr als 2 Monaten ohne Probleme installiert. Vielen Dank an PTVO für sein großartiges Firmware-Tool.

Downloads

Spenden

Wenn dir meine Artikel gefallen, kannst du gerne einen Cappuccino oder Ähnliches spenden…