Krams aus dem NOC

Hardware, Software und all so was

Ein Xiaomi Temperator und Luftfeuchtigkeitssensor

Von Bluetooth zu Zigbee (Xiaomi LYWSD03MMC)

Ich möchte Euch heute noch schnell erklären, wie ich es geschafft habe einen Xiaomi Temperatur und Luftfeuchtigkeit (LYWSD03MMC) Bluetooth Sensor aus der Xiaomi-Cloud zu befreien und in ein Zigbee Gerät zu verwandeln, welches sich dann problemlos in Zigbee2MQTT und somit in den Home Assistant einbinden lässt.

Das Problem, was ich hatte war, dass meine Geräte ab Werk mit einer zu neuen Firmware ausgeliefert worden waren, so dass der „normale“ Weg, wie er auf einigen Webseiten beschrieben ist, nicht mehr funktioniert.

Genau handelt es sich um die Firmware Version 2.1.1_0159 – und jetzt kommts: Es gibt davon anscheinend mehrere Revisionen (WTF?) und nicht alle lassen sich dann problemlos auf eine Custom Firmware und im Nachgang dann auf Zigbee umflashen.

Aber es gibt eine Lösung – und ich beschreibe Euch jetzt einen Weg – es gibt sicher auch andere Wege, aber dieser hier hat für mich bei mehreren Sensoren sehr gut funktioniert:

Also… wir packen den Sensor erst einmal aus. Das war der leichte Teil

Jetzt müssen wir den Sensor (leider!) erst einmal in der Xiaomi Home App (via Bluetooth) anlernen bzw. anmelden. Keine Sorge, wir löschen den da auch bald wieder raus.

Als nächstes besorgen wir uns ein Tool mit dem wir die später benötigten Infos aus dem Xiaomi-Konto extrahieren können.
Den „Token Extractor“ findet ihr hier:
https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor
Es gibt dort die Version für Linux und auch Windows.
Ich habe beide Versionen getestet und es klappt wunderbar.

Wir starten das Tool, fügen dort unsere Anmeldedaten unseres Xiaomi-Accounts ein, wählen dann die entsprechende Region (de) und dann erscheinen folgende Informationen:

Infos des Mi Account Extractors

Jetzt müssen wir einen Browser starten, der auf Chrome basiert. Der Einfachheit halber habe ich hier tatsächlich Chrome verwendet.

Jetzt geben wir in der Adresszeile folgendes ein:
chrome://flags/#enable-experimental-web-platform-features
Diese Funktion muss aktiviert werden, damit wir ein Bluetoothgerät mit dem Browser verbinden und dann damit arbeiten können.
Danach muss man den Browser einmal neu starten.

enable-experimental-web-platform-features

Mit den Informartionen aus dem Token Extrator von vorhin gehen wir nun zur folgenden Webseite:
https://atc1441.github.io/TelinkFlasher.html

Dort wird auf „Connect“ geklickt und sich dann mit dem Sensor via Bluetooth verbunden.

Im Log ist dann auch direkt zu sehen, dass die unsägliche Firmware 2.1.1_0159 installiert ist.

Ein Log der Webseite, wo zu sehen ist, dass die Verbindung geklappt hat, aber eine bestimmte Firware installiert ist,

Das ist auch weiter oben schon in rot vermerkt und wir werden aufgefordert uns die richtige passende Firmware herunter zu laden.

Flasher Webseite mit Warnung, dass man eine bestimmte Firmware flashen soll

Diese findet ihr hier:
https://github.com/atc1441/ATC_MiThermometer/blob/master/Stock_fw_2.1.1_0159.bin

Jetzt brauchen wir den Token und die BLE-ID von vorhin und tragen sie bei Mi Token und Mi Bind Key ein und wir klicken auf „Do via Login
Steht im Prinzip ja auch schon unter Status, aber ich hab das anfangs nicht so ganz verstanden, was damit gemeint war. Auch, dass mit der BLE-Key die Bind-ID ist musste ich quasi erraten.
„Connected, the current Firmware needs you to supply the Mi Token and Bind key and do a Login to flash the Exploit Firmware!!!“

So… dann lassen wir mal die Aktivierung durch laufen… Das dauert nur ein paar Sekunden.

Ich habe um zu sehen, was da passiert die Entwickertools in Chrome eingeschaltet.

Nun flashen wir die Firmware, die uns ermöglicht den nächsten Schritt zu gehen. Also die Datei auswählen, die wir vorhin von Github geladen haben und dann auf „Start Flashing“ drücken.
In den Dev Tools und auf der Webseite seht ihr dann den Fortschritt.

Ein Blick in die DevTools des Browsers, wo man sehen kann, dass eine Firmware via OTA geflasht wird

Das Ganze dauert dann ca. 2-3 Minuten und der Sensor startet danach neu.

Nun kommen wir zum wichtigen Werkzeug, denn wir wollen sicher gehen, dass der Sensor nun auch wirklich bereit ist eine Custom Firmware aufzunehmen.

Die Büroklammer *trommelwirbel*

Eine Büroklammer auf einem Stück Holz

Aber zuerst öffnen wir das Gehäuse vom Sensor, um dann folgendes zu sehen – ich hoffe ihr könnt diese zwei kleinen Kontakte oberhalb der Batterie erkennen. Diese müssen wir nun für ca. 10 Sekunden (nur um sicher zu gehen) miteinander verbinden.

Dazu verdengeln (ein wahrlich professioneller Akt) wir eine Büroklammer so sehr, dass wir das bewerkstelligen können. Wenn es getan ist, dann haben wir einen astreinen und perfekten Werksreset des Geräts durchgeführt.

Offenes, weißes Gehäuse, wo man oberhalb der CR2032 Batterie zwei Kontakte sehen kann

Wir gehen in die Xiaomi Home App am Handy, – löschen den Sensor wieder raus und verbinden den erneut – ich find das auch umständlich, ehrlich.

Wieder zurück zum Token Extractor nachdem das erledigt ist und dann nochmal die Daten ziehen, damit wir jetzt endlich zum wichtigen Teil kommen.

Nun springen wir mit dem Chrome-Browser auf diese Webseite:
https://pvvx.github.io/ATC_MiThermometer/TelinkMiFlasher.html

Dort akvieren wir das Kästchen bei „Get Advertising MAC“ und verbinden unseren Sensor wieder mit „Connect“ via Bluetooth.

Dann füllen wir das Formular mit den eben extrahierten Daten inkl. Device known ID ein und klicken auf Login.

Vorbereitung für das Flashen dert Custom Firmware.

Jetzt klicken wir auf „Custom Firmware: ATC_v49.bin“ und dann unten auf „Start Flashing“

Die Auswahl, welche Firmware geflasht werden soll... hier nehmen wir die "ATCxxxx"

Im DevTools gehts wieder rund und wir sehen, dass die Firmware aktualisiert wird.

Danach startet der Sensor wieder neu und wir wenden uns unserem alten Freund der Büroklammer *trommelwirbel zu – und resetten den Sensor erneut.

Jetzt wirds einfacher und wir sind fast fertig:

Auf der gleichen Seite verbinden wir uns erneut mit dem Sensor, dieses Mal hat er schon eine andere Kennung, die mit „ATC“ beginnt.

Eine Auswahl der verschiedenen Bluetoothgeräte im Browser - hier wählen wir ATCxxxx

Nun können wir die experimentelle Zigbee-Firmware auswählen und flashen. Es erscheint dann noch eine entsprechende Warnung, dass die Firmware experimentell ist, aber davon lassen wir uns natürlich nicht beirren und klicken dann wagemutig auf das blaue „Start Flashing“. YOLO!

Hier wählen wir die Zigbee-Firmware und starten dann den Flashvorgang

Nach weiteren zwei Minuten ist das dann auch erledigt und das Gerät schaltet sich nach dem Neustart in den Kopplungsmodus.
(Ich habe in Zigbee2MQTT schon während des Flashens auf der Zigbee-Firmware den Anlernmodus aktiviert – und das hat bei mir bei allen Sensoren soweit gut geklappt)

In Zigbee2MQTT sieht das dann so aus:

Oberfläche von Zigbee2MQTT, wo ein neues Gerät - nämlich unser Sensor - erkannt wird

Fertig! Nun haben wir uns eine Waffel oder was anderes leckeres verdient.

PS: Den Sensor in der Xiaomi-App könnt ihr ruhig wieder löschen, denn der wird da nicht mehr gebraucht.

Es geht weiter

kurz und schmerzlos:

Nach Jahren der Löffellosigkeit und großer Kein-Bock-Mehrisitis habe ich mich entschlossen diesen Blog doch wieder zu aktivieren.

Ich weiß nicht, ob das jetzt nur ein kurzes Aufflackern ist oder ob ich doch wieder regelmäßiger schreiben möchte – zumal ich ja noch meinen privaten und auch den 3D-Druck-Blog mit Freunden betreibe.

Naja… Demnächst schreibe ich dann mal wieder was technisches.

Rolling home…

Nachdem ich auf eigenen Cloud-Servern von Hetzner wieder ein wenig mehr „Chef“ der Maschinen war, habe ich mit Yunohost wirklich tolle Erfahrungen sammeln können.

Insgesamt ist es herrlich einfach ein paar Domains inklusive Mails usw. zu adminstrieren. Auch das leichte Einspielen von neuer Software und so ist wirklich einfach geworden, wenn ich da an Zeiten zurück erinnere wo ich noch selbst irgendwelche Apache oder Nginx-Module per Hand installiert und aktiviert habe.

Aber irgendwdie muss ich ein wenig auf mich acht geben und so schön es auch ist einen eigenen Server zu haben, ist es auch sehr schön, wenn man das meiste einfach abgeben kann.

Also wechsele ich derzeit wieder zurück zu all-inkl.com – für mich der beste Hoster, den man finden kann.

Falls es also hier und da noch ein wenig ruckelt, so möge man mir dies entschuldigen.

Seite 1 von 11

Präsentiert von WordPress & Theme erstellt von Anders Norén