(Ja, ich weiß, dass ich diesen Sommer über sehr träge bin... ;))
In diesem Artikel der kleinen Sommerserie meines „Smarthome“-Projektes soll es zunächst erst einmal um das „Gateway“ gehen. Wie bereits zuvor erklärt kam für mich ein Gerät von der Stange nicht in Frage, da ich hier ein Gerät erhalte, dem ich nicht vertrauen möchte. Insbesondere dann, wenn es seine Daten irgendwo von einer chinesischen Cloud bezieht auf die ich keine Kontrolle habe. Gerade die steigende Anzahl an Echos und Siris in dieser Welt zeigen, dass ich da scheinbar ein wenig spezieller bin ;)
Trotzdem gibt es insbesondere von Xiaomi einige sehr interessante Smarthome-Komponenten, die gerade preislich unschlagbar sind. Doch was tut man in einem solchen Dilemma? Der Vorteil der Komponenten ist, dass diese alle auf den Funkstandard „Zigbee“ (https://de.wikipedia.org/wiki/ZigBee) aufbauen. Wir haben also eine eher „stumpfe“ Komponente, die ihre Daten zu einem Gateway überträgt, dass dann alles in die Cloud lädt und darüber eine Steuerung z.B. via Smartphone ermöglicht.
Was wäre also, wenn wir es schaffen, dass die Geräte nicht mit dem Gateway kommunizieren für das sie vorgesehen sind, sondern wir ein eigenes Gateway bauen an das sie brav ihre Daten schicken und das sich vollständig in unserer Hand befindet? Zu kompliziert? Keineswegs! Denn Gott sei Dank gibt es soviele Chinesen auf der Welt und was uns der eine nicht liefert, dass beschafft einem der Andere :)
Wir brauchen zunächst einen „Zigbee CC2531 Sniffer“ (z.B. https://de.aliexpress.com/item/32852226435.html?spm=a2g0s.9042311.0.0.96ec4c4dG1pYv1). Hierbei handelt es sich eigentlich um eine Analyse-Hardware, die dazu dienen soll Zigbee-Kommunikation mitzuschneiden. Ein kleines Stück Hardware, dass über USB an den eigenen Rechner angeschlossen werden kann. Im Prinzip also ein WLAN-Stick... nur eben nicht für WLAN, sondern für Zigbee.
Bei weniger als 4€ ist dies recht günstig. Schließen wir dies an einen beliebigen Rechner an, erhalten wir damit ein spottbilliges eigenes Gateway. Der Sniffer ist für sich genommen sehr primitiv und für sich genommen völlig nutzlos. Damit wir es sinnvoll verwenden können, müssen wir ihm eine Anleitung mitgeben, eine Firmware, die ihm erst ein wenig Intelligenz einhaucht.
Damit wir diese draufspielen können, benötigen wir einen „CC2531 Programmer“ (https://de.aliexpress.com/item/32853531081.html?spm=a2g0s.9042311.0.0.4fad4c4dZFItRQ). Dieser schlägt mit ca. einem weiteren Euro zu Buche und die benötigten Kabel sind bereits enthalten. Mit diesem können wir dann den Sniffer verbinden.
Zu guter Letzt wird auch noch ein CC Debugger (https://de.aliexpress.com/item/32976509073.html?spm=a2g0s.9042311.0.0.57c04c4d4Qhrpe) benötigt, der nochmals mit ca. 9€ oben drauf kommt. Dieser stellt die Brücke zwischen dem Rechner und den Programmer dar und erlaubt am Ende dann unsere Firmware auf den Sniffer zu übertragen. Die beiden letzten Komponenten sind dabei eher als „Basistools“ anzusehen und können auch für andere Anwendungsfälle genutzt werden. Bauen wir ein solches System also für Freunde oder Familie, brauchen die am Ende nur den Sniffer!
Gerade der Hacker im nächsten Dorf hat vielleicht solche Hardware bereits auf Lager und kann diese ausleihen oder einem behilflich sein. Aber bei den Preis, kann man sich auch dafür eindecken. Ich selbst habe mich für eine Variante mit Aufschrift „Texas Instruments“ entschieden. Es gibt auch noch welche für ein paar Cent günstiger, die vermutlich am Ende doch das Selbe in grün sind. Ich will aber in 30 Jahren auch noch Wissen, was das für ein Ding ist. :)
Die Bestellung dauerte ca. 3 Wochen bis das Ganze seinen Weg von China bei mir ins Postfach gefunden hat. Meist wird die Lieferzeit mit bis zu 3 Monaten angegeben, aber solche Teile kommen üblicherweise leicht verpackt als Air Mail angetrudelt.
Hat man alles zusammen, muss man nur noch die Teile zusammenfügen. Dies ist im Prinzip sehr einfach und fast idiotensicher. Aber ich würde die Freunde aus Fernost nicht so sehr schätzen, würden diese sich nicht immer wieder kleine Gemeinheiten einfallen lassen ... ;)
Das USB-Kabel des CC-Debuggers anzuschließen ist absolut selbsterklärend. Auch das kleine 10-pollige Kabel, dass ein wenig wie eine Miniatur eines alten IDE-Kabels anmutet, ist recht einfach. Ähnlich wie dieser alten Festplattennase gibt es nämlich eine kleine „Nase“, so dass man es nur in eine Richtung hineinstecken kann. Gleiches gilt auch für die andere Seite am Programmer.
Als wesentlich trickreicher erwies sich das kleinere Kabel. Früher war es eigentlich normal, dass das die rote Seite des Kabels Pin 1 ist. Hier war es allerdings die graue Seite... scheinbar macht man das auf der anderen Seite der Welt etwas anderes. Man kann aber eben ein wenig rumspielen... die Kombinationen sind eben endlich und wenn es falsch ist, dann klappt eben die Verbindung nicht. Je mehr man die Hand verrenken muss und je unnatürlicher sich das Kabel dreht, umso richtiger ist es. Halt ganz so wie früher beim guten alten IDE-Kabel (Hat man den Entwickler davon eigentlich inzwischen gefasst und zur Rechenschaft gezogen?!?).
Nun schließt man den Sniffer und den CC-Debugger beide am Rechner an. Der CC-Debugger leuchtet eventuell mit einer roten LED und zeigt damit, dass er kein Gegenstück gefunden hat. In dem Fall drückt man einfach den „Reset“-Knopf. Im Idealfall erscheint die LED in grün. Klappt dies nicht, ist irgendwo das Kabel falsch gedreht und ihr solltet nochmal alles überprüfen. (gerade das Kleine!)
Hier noch einmal meine Anschlüsse in Groß, aber mich würde es nicht wundern, wenn dies bei einer anderen Charge auch wieder anders ist ;)
Nun können wir uns der Software widmen, die wir zum Flashen der Software brauchen. Ich arbeite hier auf einem aktuellen Fedora 30-Systems. Andere Linux-Systeme werden analog funktionieren und ja sicherlich wird es auch unter Windows irgendwie gehen. Aber dann könnt ihr ja auch gleich von Chinesen das Gateway kaufen ;)
Mit folgendem Befehl installiert ihr die benötigten Abhängigkeiten. Daumen hoch, wenn er bei Euch nichts installieren muss und ihr bereits alles drauf habt:
dnf install dh-autoreconf boost-devel libusb1-devel gcc-c++
Die eigentliche Software gibt es dann wie folgt und lässt sich auch gleich übersetzen und kompilieren:
git clone https://github.com/dashesy/cc-tool.git
cd cc-tool
./bootstrap
./configure
make
Damit haben wir das Tool mit dem wir einen binären Blob auf unseren Sniffer laden können. Doch was wollen wir eigentlich genau hochladen? Nun im Opensource-Bereich gibt es glücklicherweise für fast jeden sinnvollen Einsatzzweck bereits eine fertige Lösung.
So habe ich bereits eine fertige Firmware vom Projekt zigbee2mqtt (zigbee2mqtt.io) gefunden. Wie der Name bereits verrät handelt es sich hierbei um eine Brücke vom Zigbee-Protokoll auf MQTT.
Hierbei handelt es sich um eine Art hierachischen Bus, der gerade im Bereich Smarthome einer großen Beliebtheit erfreut. So kann jedes Gerät als eine Adresse wie z.B. „home/schlafzimmer/mydevice“ angesteuert werden. Die Firmware erlaubt es also Zigbee-Geräte anzusteuern und dessen Inhalte auf einen MQTT-Server zu schieben.
Wo kriegen wir nun aber einen MQTT-Server her? Teuer aus China kaufen... oder halt direkt vom Fedora ;)
dnf install mosquitto
systemctl enable mosquitto
systemctl start mosquitto
Ja, als Linux-Nutzer hat man entgegen der landläufigen Meinung ein sehr komfortabeles Leben. Kein lästiges Weiter-Klicken, man holt sich einfach was man will ;)
Nun kann es aber wirklich losgehen. Wir laden noch schnell die Firmware runter und laden diese hoch:
wget https://github.com/Koenkk/Z-Stack-firmware/raw/master/coordinator/Z-Stack_Home_1.2/bin/default/CC2531_DEFAULT_20190608.zip
unzip CC2531_DEFAULT_20190608.zip
./cc-tool -e -w CC2531ZNP-Prod.hex
Der Vorgang dauert einige Sekunden und wir die Bestätigung, dass alles geklappt hat. Wir haben somit nun eine Brücke zwischen der Zigbee-Welt und MQTT.
Wer nur wenig Ahnung von Computern hat, wird vermutlich an einigen Stellen ein wenig die Augen verdreht haben und sich fragen, wovon ich da eigentlich rede. Wer jedoch ein wenig z.B. in der Linux-Welt unterwegs ist, wird hoffentlich überall leicht folgen können und es leicht an seine Umgebung anpassen können.
Wir halten nun einen Zigbee-Sniffer mit MQTT-Support für netto 4€ in der Hand. Ob wir damit auch wirklich die Xiaomi-Komponenten ansteuern können und was wir damit machen können? Das gibt es im nächsten Artikel der Serie ;)
damn, bist ja richtig am freenerden :D
Ich wette dein Artikel könnte @schlafhacking gefallen! ;)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Cooles Projekt. Ich bin gespannt.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Alles richtig gemacht, weiter viel Erfolg...
Du hast ein kleines Upvote vom German-Steem-Bootcamp erhalten.
Du findest uns im Discord unter https://discord.gg/HVh2X9B
Aktueller Kurator ist @don-thomas
Du möchtest keine Upvotes (mehr) von uns erhalten? Eine kurze Mittelung unter diesen Kommentar reicht.
Dem Upvote von uns folgt ein Trail der weitere Upvotes von unseren Unterstützern beinhaltet. Hier kannst du sehen wer diese sind und auch erfahren wie auch du uns und somit die deutschsprachige Community unterstützen kannst.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Möglicherweise könnte man für eine ‚Ausser Haus‘-Ansteuerung einen Telegram-Bot oder dergleichen verwenden.
Posted using Partiko iOS
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Wir denken in die gleiche Richtung ;)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit