MySensors Gateway
MySensors ist eine offene Platform für Hard- und Software zur DIY-Heimautomatisierung. Dabei richtet sich das Augenmerk von MySensors hauptsächlich auf die Hardware sowie die entsprechende Firmware auf den Devices.
Zur Darstellung und Verwaltung der Sensoren und Aktoren wird weitere Software benötigt. Dabei ist man aber nicht an ein Produkt gebunden sondern kann es in viele Lösungen integrieren. Ich z.B. werde die Sensoren hier in Fhem einbinden.
Damit Fhem mit den MySensors Geräten kommunizieren kann benötigt man ein Gateway. Auf der Website von MySensors sind einige Varianten beschrieben. Die Verbindung kann via USB, Ethernet oder WiFi erfolgen. Auch eine Möglichkeit das Funkmodul direkt an die GPIO Pins des Rasperry zu hängen gibt es.
Die Ethernet-Variante bietet sich an wenn man den Standort des Gateways so wählen muss dass er nicht in der Nähe des Rechner mit der Hausautomationssoftware steht, also z.B. wenn der Rechner im Keller steht und man den Gateway z.B. im Erdgeschoss aufstellen möchte um auch noch die höheren Stockwerke erreichen zu können. Bei der WiFi Variante ist es ähnlich nur dass man kein Ethernet Kabel benötigt.
Ich habe mich für die USB-Variante entschieden, da diese keine zusätzliche Stromversorgung benötigt und mein Rechner mit Fhem ziemlich zentral steht. Der Aufbau des Gateways ist extrem simpel und besteht eingentlich nur aus zwei Komponenten, dem Arduino Nano und dem nRF24L01+ Funk-Modul.
Warum noch eine Anleitung
Es gibt bereits etliche Anleitungen im Netz wie man einen solchen Gateway zusammenbaut aber viele davon sehen irgendwie "geschustert" aus. Ich muss gestehen ich bin kein so großer Freund von Heißkleber oder Klebern im Allgemeinen zur Befestigung von Bauteilen in meinen Projekten. Daher möchte ich euch hier meinen Versuch vorstellen der ganz ohne Kleber auskommt.
Materialliste
Typ | Menge | Notizen | Link | Einzelpreis | Gesamtpreis |
---|---|---|---|---|---|
Arduino | 1 | Mit 3.3V Regler, Pinleisten nicht verlötet(!!) | <a href="https://de.aliexpress.com/item/Nano-V3-ATmega328-CH340G-Micro-USB-Pin-headers-NOT-soldered-Compatible-for-Arduino-Nano-V3-0/32664577152.html">AliExpress</a> | 2,14 € | 2,14 € |
nRF24L01+ | 1 | Mit externer Antenne | <a href="https://de.aliexpress.com/item/1pcs-Free-Shipping-Special-promotions-1100-meter-long-distance-NRF24L01-PA-LNA-wireless-modules-1100meters-with/32328242682.html">AliExpress</a> | 1,79 € | 1,79 € |
10µF Elko | 1 | <a href="https://de.aliexpress.com/item/120pcs-12-value-kit-1uF-470uF-Electrolytic-Capacitor-Package-1UF-2-2UF-3-3UF-4-7UF/1856356672.html">AliExpress</a> | 1,89 € | 0,02 € | |
100nF Kondensator | 1 | <a href="https://www.conrad.de/de/keramik-kondensator-radial-bedrahtet-100-nf-50-vdc-10-holystone-rdcx104k050dka-1-st-531855.html">Conrad</a> | 0,10 € | 0,10 € | |
Buchsenleiste | 1 | einreihig, 2x15 Pin | <a href="https://de.aliexpress.com/item/10pcs-2-54mm-40-Pin-Female-Single-Row-Pin-Header-Strip/32287932836.html">AliExpress</a> | 1,08 € | 0,08 € |
Buchsenleiste | 1 | zweireihig, 8 Pin | <a href="https://de.aliexpress.com/item/5pcs-2-54mm-2x20-Pin-Double-Row-Female-Pin-Header/32514104984.html">AliExpress</a> | 0,94 € | 0,04 € |
Platine | 1 | 60mm x 40mm | <a href="https://de.aliexpress.com/item/20pcs-5x7-4x6-3x7-2x8-cm-double-Side-Copper-prototype-pcb-Universal-Board-for-Arduino-Free/765383366.html">AliExpress</a> | 0,55 € | 0,55 € |
Alu Profil-Gehäuse | 1 | 60 x 45 x 25 | <a href="https://www.conrad.de/de/profil-gehaeuse-60-x-45-x-25-aluminium-aluminium-hammond-electronics-1455d601-1-st-442919.html">Conrad</a> | 15,99 € | 15,99 € |
Gesamtpreis 20,71 €.
Vor- und Nachteile des Systems
Wie alles im Leben hat auch dieses System seine Vor- und Nachteile.
Vorteile
In erster Linie sind die Sensoren günstig und einfach zu bauen. Außerdem sind die Sensoren mit nRF24L01 Funkchip gegenüber Sensoren die zur Datenübertragung WLan verwenden, wie z.B. Sensoren auf ESP8266 Basis, sehr energiesparend. Die Boards mit aufgedruckter Antenne benötigen laut Datenblatt nur maximal 13.5mA wenn sie "wach" sind, 900nA im Power-Down Mode und 26µA im Sleep-Mode. Daher eignen sich diese Sensoren auch gut für Batteriebetrieb. Die Boards mit externer Antenne und integriertem Verstärker benötigen mehr. Diese benötigen bis zu 115mA beim Senden.
Nachteile
Der größte Nachteil von MySensors ist dass die Kommunikation nicht verschlüsselt ist, daher sollte man dieses System nur für nicht kritische Anwendungen verwenden. Also nicht die Heizung oder den Türöffner darüber steuern. Es gibt aber immerhin eine Möglichkeit die Authentizität und Integrität von Kommandos zu verifizieren. Dies benötigt aber noch ein zusätzliches Bauteil. Das ist leider noch mit der Post unterwegs zu mir und wird daher zu einem späteren Zeitpunkt behandelt.
Vorbereitung
Da der nRF24L01 mit externer Antenne mehr Strom am 3.3V Pin benötigt kann als der normale Arduino Nano liefern kann benötigt man einen separaten 3.3V Spannungsregler. Ich habe zufällig bei AliExpress einen alternativen Nano von RoboDyn gefunden der bereits einen 3.3V Regler auf dem Board hat und bis zu 500mA liefern kann. Und er kostet teilweise sogar weniger als ein normaler Arduino.
Eine weitere schöne Sache an dem Nano ist, dass er ohne verlötete Stiftleisten daherkommt. Man spart etwas Platz wenn man die Stiftleisten "verkehrt" herum einlötet. Damit zeigt der USB-Port nach unten und nimmt keinen zusätzlichen Platz weg. Und Platz ist echt knapp in dem von mir gewählten Gehäuse. Die Pfostenleiste wird also gegenüber dem normalen Nano auf der Oberseite anstatt auf der Unterseite eingelötet.
Ein weiteres Problem was das Thema Platz betrifft sind die Steckerleisten am Funkmodul. Diese sind auch "falsch" herum eingelötet. Die Höhe des Moduls ist die Summer aus Antennenstecker, Platine und Steckerleiste, was natürlich Platzverschwendung ist.
Die Steckerleiste muss also raus und von der anderen Seite wieder rein. Um die Leiste zu entfernen habe ich zuerst die Pins mit einem Seitenschneider so nah wie möglich am Plastik abgeknipst und dann vorsichtig den Kunststoff entfernt. Anschließend habe ich die noch verbliebenen Pin-Reste mit dem Lötkolben einzeln herausgelötet. Zum Schluss noch eine neue doppelreihige, 8 Pin Stiftleiste eingelötet und das Modul war nur noch halb so hoch :-)
Testaufbau
Sketch
Der Sketch für den seriellen Gateway gibt es direkt auf www.mysensors.org.
Bevor man den Sketch allerdings kompilieren kann muss man die MySensors Library installieren. Dazu in der Arduio IDE im Dropdown Menü
Sketch > Bibliothek einbinden > Bibliotheken verwalten
auswählen und über die Suche nach "mysensors" suchen. Die Bibliothek jetzt über den Button "Installieren" auf dem Computer installieren.
Platine
Auf der Platine sitzen der Nano und das nRF24L01 Funkmodul nebeneinander. Auf diese Weise passen sie gerade so in das Gehäuse ein. Ist etwas fummlig beide in das Gehäuse zu bekommen und man muss ggf. ein bisschen an den Rändern der Experimentierplatine schleifen bis es passt, aber irgendwann passt es :-) Wichtig ist die Platine genau so zuzuschneiden wie es im Bild der Fall ist. Es gibt eine Standardgröße von Lochrasterplatinen die genau in das Gehäuse passen. Mit diesen wird es nicht funktionieren. Mit der so zuschnittenen Platine passt alles gerade so in das Gehäuse. Ggf. auf ein größeres Gehäuse ausweichen.
Die folgenden vier Bilder zeigen die fertig verlötete Platine. An einem Ground-Pin habe ich einen Abzweig mit einem runden Kabelschuh angelötet (Bild 3) um eine leitende Verbindung mit dem Gehäuse herstellen zu können. Ohne diese ist Verbindung wäre sonst die Schirmung die das Gehäuse bieten würde hinfällig.
Anschließend den Nano und das Funkmodul aufstecken und auf Funktion prüfen. Von den Versuchen auf dem Steckbrett hatte ich noch einen MySensors Sensor mit einem DHT22 rumliegen. So etwas eignet sich hervorragend zum Testen.
Prinzipiell sieht man aber auch bei der Initialisierung des Gateways in der seriellen Konsole ob die Verbindung zum Funkmodul erfolgreich war. Ob der Gateway aber wirklich empfängt lässt sich natürlich nur mit einem zweiten Device wie einem Sensor ermitteln.
Gehäuse
Um die leitende Verbindung zwischen Ground-Abzweig mit dem Kabelschuh und dem Gehäuse herzustellen musste ein bisschen was von dem Teil weggefräst werden in dem später eine der beiden Schraube sitzt, hier links im Bild. Mit einem Dremel und einem für Alu geeigneten Fräser (z.B. Wolfram-Karbid) ist das schnell erledigt.
Die Unterseite der Platine sitzt ja ziemlich fest durch den Einschub in die Nut des Aluprofils und es besteht eher nicht wie Wahrscheinlichkeit dass die Lötpunkte hier das Gehäuse berühren. Auf der Oberseite bin ich mir da nicht ganz so sicher. Deshalb habe ich eine kleine Isolierung in Form von zwei Papierstreifen eingefügt bevor ich das Modul in das Gehäuse geschoben habe. Mag sein dass das überflüssig ist, lässt mich aber ruhiger schlafen :-)
Einbindung in Fhem
Der Gateway kann selber ja noch nicht viel. Um mit dem Gateway Daten auszutauschen muss dieser in eine Hausautomationssoftware, in diesem Beispiel Fhem, eingebunden werden.
Wenn man, wie ich, mehrere Gateways auf Arduinos Basis verwedet die einen CH340 USB nach Seriell Adapter verwenden (die meißten China-Clones tun das), dann muss man das serielle Device, wie hier im Beispiel, mit by-path angeben. Es muss aber darauf geachtet werden, dass die Gateways immer in den selben USB-Ports eingesteckt werden.
Hat man einen Arduino mit einem FT232RL USB nach Seriell Adapter, dann kann/sollte man stattdessendie Variante mit by-id verwenden.
Um also das Device für das neue Gateway zu ermitteln vor und nach dem Einstecken des Gateways folgenden Befehl ausführen:
ll /dev/serial/by-path/
Das Device das beim Einstecken hinzugekommen ist, muss im dem define von Fhem verwendet werden.
define MySensorsGw01 MYSENSORS /dev/serial/by-path/pci-0000:00:1d.1-usb-0:1:1.0-port0@115200
attr MySensorsGw01 autocreate 1
attr MySensorsGw01 first-sensorid 10
attr MySensorsGw01 requestAck 1
attr MySensorsGw01 room 2.5 MySensors
Wenn man jetzt noch einen fertigen Sensor vom Zusammebau hat und diesen mit Strom versorgt, sollte der Sensor automatisch in Fhem als neues Device angelegt werden.