Xiaomi Temperatur Sensor mit ZigBee Firmware flashen
Ich zeige dir, wie du auf einem Xiaomi Temperatur Sensor eine Open-Source Firmware installierst, welche den Sensor ZigBee-fähig macht.

Der Xiaomi Temperatur Sensor, welcher ca. 5 CHF pro Stück kostet und standardmässig über Bluetooth funkt, kann mit einer Open-Source Firmware überspielt und damit ZigBee fähig gemacht werden. Dadurch kann dieser leicht in ein bestehendes ZigBee Setup, beispielsweise in Home Assistant, integriert werden.
Vorteile durch den Einsatz der offenen Firmware
Ich werde in meiner Anleitung die Open-Source Firmware von pvvx verwenden. Diese bietet folgende Vorteile:
- Längere Batterielaufzeit
- Genauere Messwerte (zwei Nachkommastellen)
- ZigBee statt Bluetooth für die Verbindung
- Verschlüsselte Verbindung
- Mehr Einstellungsmöglichkeiten als mit der Standard-Firmware (Offet/Korrektur der Messwerte, Smiley aus-/einblenden, etc.)
Ich verwende den Xiaomi Temperature Sensor 2:

Xiaomi Temperatur Sensor
Messwerte: Temperatur, Luftfeuchtigkeit
Preis: CHF 5-10.-
Von der Open-Source-Firmware, werden jedoch noch viele weitere, ähnliche Temperatursensoren unterstützt.

Eigene Firmware flashen
Folgendermassen kann die Open-Source-ZigBee-Firmware von pvvx auf deinem Temperatursensor installiert werden:
- Packe zuerst den Temperatursensor aus
- Installiere die App "Xiaomi Home" (Android, iOS) auf deinem Smartphone und melde dich bei deinem Xiaomi Account an oder erstelle einen Neuen, falls du noch keinen hast.
- Klicke in der "Xiaomi Home"-App auf das "Plus"-Icon

- Auf "Gerät hinzufügen" klicken
- Wenn die App Berechtigungen hat um Bluetooth Geräte anzuzeigen, wird automatisch der Thermometer vorgeschlagen. Ansonsten unten auf "Temperatur- und Feuchtigkeitssensor" klicken und das entsprechende Modell auswählen. Ggf. musst du nun noch den Zugriff auf Bluetooth-Geräte zulassen.

- Die Suche nach einem neuen Gerät wird gestartet
- Wenn das Gerät gefunden wurde, müssen die Bedingungen akzeptiert werden

- Anschliessend stellt das Smartphone eine Verbindung zum Sensor her (kurz abwarten, bis die Verbindung erfolgreich hergestellt wurde).
- Nach der Verbindung kann ein Raum für den Sensor festgelegt werden. Da wir später eine neue Firmware flashen, spielt der ausgewählte Raum keine Rolle.
- Anschliessend kann ein Name für den Sensor festgelegt werden. Damit kannst du den Sensor später, beim Export der Tokens, leichter wiedererkennen.

- Danach müssen erneut Bedingungen akzeptiert werden

- Schlussendlich landet man auf dem Gerät und sieht die aktuelle Temperatur & Luftfeuchtigkeit. Diese sollten mit dem Display des Sensors übereinstimmen.

- Wenn du mehrere Thermometer hast, kannst du die Schritte 3-12 für alle weiteren Sensoren wiederholen.
Nun kann am PC/Notebook fortgefahren werden. Du kannst hierfür einen Windows-PC, macOS oder Linux-Gerät verwenden. Dein PC benötigt ein Bluetooth-Modul und Python muss installiert sein.
Zuerst müssen die Tokens aus der Xiaomi Cloud extrahiert werden, bevor die eigene Firmware installiert werden kann. Die Tokens werden benötigt, um den Sensor, für die Installation der eigenen Firmware, freizuschalten.
- Terminal öffnen und in einen beliebigen Ordner navigieren
- Git Repository klonen
Befehl:git clone https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor.git
Alternativer Befehl ohne Git:wget https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor/archive/refs/heads/master.zip
- Ins entsprechende Verzeichnis navigieren:
cd Xiaomi-cloud-tokens-extractor
(bzw.cd master
ohne Git) - Neue virtuelle Python-Umgebung erstellen
macOS/Linux:python3 -m venv venv/
Windows:py -m venv venv\
- Virtuelle Umgebung aktivieren:
macOS/Linux:source venv/bin/activate
Windows:venv\Scripts\activate
- Python Requirements installieren:
pip3 install -r requirements.txt
- Python Skript ausführen:
python3 token_extractor.py
- Nun werden deine Anmeldeinformationen für die Xiaomi Cloud abgefragt. Gebe diese ein. Wenn du die 2-Faktor-Authentifizierung aktiviert hast, erscheint ein Link, welchen du in deinem Browser öffnen musst, um die 2FA-Aufforderung zu bestätigen. Führe diesen Schritt auf demselben Gerät aus, auf welchem du das Skript auch ausführst.
- Wähle nun einen Xiaomi Cloud Server aus. Wenn du in Europa lebst, ist dies wahrscheinlich
de
. Alternativ kannst du auch keinen Server angeben, dann werden alle Server ausprobiert. - Anschliessend bist du angemeldet und es wird eine Liste mit allen Geräten und den zugehörigen Tokens angezeigt. Kopiere die Ausgabe, damit du die Tokens später noch zur Hand hast.
Folgendermassen sind die Sensoren in der Ausgabe aufgelistet:
---------
NAME: Wohnzimmer
ID: <ID>
BLE KEY: <BLE-KEY>
MAC: <MAC-ID>
TOKEN: <TOKEN>
MODEL: miaomiaoce.sensor_ht.t2
---------
Aufbau Ausgabe der Sensor-Tokens
- Nun kannst du die virtuelle Python-Umgebung wieder deaktivieren.
Befehl macOS/Linux/Windows:deactivate
- Das Verzeichnis mit dem geklonten Git-Repository kann nun gelöscht werden, da dieses nicht mehr benötigt wird. Wenn du künftig weitere Sensoren anschaffen willst, kannst du den Ordner auch behalten.
Nun sind wir fertig mit den Schritten im Terminal und können im Browser mit dem Flashen der eigenen Firmware beginnen.
- Öffne diesen Link, in einem Chromium-basierten Browser.

- Auf "Connect" klicken

- Es sollte nun ein PopUp erscheinen, um ein Bluetooth Gerät in der Nähe auszuwählen. Wenn bei dir das PopUp nicht erscheint, musst du ggf. zuerst das Flag #enable-experimental-web-platform-features aktivieren. Hierzu kannst du in deinem Browser chrome://flags#enable-experimental-web-platform-features (funktioniert auch auf anderen chromium-basierten Browser) öffnen und den Status auf "Aktiviert" ändern. Anschliessend musst du deinen Browser neu starten.

- Suche in der Liste nach einem Eintrag wie "LYWSD03MMC" und klicke auf "Pairing durchführen". Wenn du mehrere Sensoren hast, kannst du bei allen, bis auf Einem, die Batterie entfernen, um den richtigen in der Liste zu erwischen.

- Wenn die Verbindung hergestellt wurde, siehst du die aktuelle Temperatur auf deinem Bildschirm.

- Fülle nun die Felder "Device know id", "Mi Token" & "Mi Bind Key" mit den entsprechenden Werten, des Sensors, aus. Die Angaben findest du in der Ausgabe, des zuvor ausgeführten Skriptes. Klicke anschliessend auf "Login".

- Es erscheint eine Meldung, wenn die Anmeldung erfolgreich war.

- Nach der Anmeldung siehst du die verfügbaren Firmwares, für den Sensor.

- Klicke dort auf den blauen Knopf "Custom Firmware: ATC_vXX.bin" und anschliessend auf "Start Flashing" um den Flashvorgang zu starten.

- Der Flashing-Prozess der neuen Firmware beginnt und du sieht oben den aktuellen Stand. Warte ab, bis der Prozess abgeschlossen ist (100%).

- Wenn der Prozess fertig ist, wechselt der Status automatisch auf "Disconnected". Klicke nun auf "Reconnect", um dich erneut mit dem Sensor zu verbinden. Wenn das nicht geht, musst du wieder auf "Connect" klicken und den Sensor in der Liste raussuchen.

Nach der Verbindung sollten dir mehr Einstellungsmöglichkeiten angezeigt werden. Wenn du kein ZigBee sondern lediglich eine offene Firmware willst, kannst du nun bereits aufhören. Ansonsten kannst du mit den nächsten Schritten fortfahren, um die ZigBee-Firmware zu installieren.

- Nun sollte dir die "Zigbee Firmware" zur Auswahl angezeigt werden. Klicke darauf und starte den Flashvorgang anschliessend mit "Start Flashing".

- Bestätige die Warnungen, die angezeigt werden, mit "OK".


Warnungen bestätigen
- Anschliessend startet bereits der Flashvorgang der ZigBee-Firmware. Während dem Flashvorgang können auf dem Display des Sensors Striche oder Kreise angezeigt werden. Dies ist soweit normal.



Display des Sensors während dem Flashvorgang
- Wenn der Prozess fertig ist, wird wie zuvor, die Verbindung getrennt und auf dem Display wieder die Temperatur angezeigt. Von nun an ist keine Verbindung mehr über den Telink Flasher möglich und die Verbindung läuft ausschliesslich über ZigBee.
Nun kannst du den Sensor mit Home Assistant, oder einem beliebig anderem ZigBee Hub, verbinden. Starte dazu die Suche nach einem neuen ZigBee-Gerät. Nach einigen Sekunden bis Minuten, sollte der Temperatursensor gefunden werden.

Wenn dies nicht der Fall ist, entferne die Batterie aus deinem Sensor und setze sie wieder ein. Es kann gut und gerne 30-60 Sekunden dauern, bis der Sensor gefunden und hinzugefügt wurde. Wenn das Gerät hinzugefügt wurde, kannst du es, wie jedes andere ZigBee Gerät, verwenden.
In Home Assistant (oder deinem ZigBee Hub) siehst du nun sowohl die Messwerte, als auch die vorhandenen Einstellungsmöglichkeiten. Du kannst dort beispielsweise die Schwellwerte für das angezeigte Smiley auf dem Display anpassen oder das Smiley ganz deaktivieren. Du kannst auch einen Offset für die Korrektur der Messwerte festlegen.

Tipps & Fehlerbehebung
- Der Sensor kann auf der Rückseite geöffnet werden, um die Batterie zu wechseln oder einen Reset durchzuführen. Beim Öffnen des Sensor vorsichtig vorgehen. Ich habe einen meiner Sensoren, beim Öffnen, fast kaputt gemacht (war halb auseinander und hat kein Bild mehr angezeigt).

- Oberhalb der Batterie gibt es zwei Pins (Gnd & Reset). Durch das Verbinden dieser Pins kann ein Neustart ausgelöst werden. Wenn die Pins für mehrere Sekunden gleichzeitig verbunden werden, kann ein Hard Reset ausgeführt werden.
- Um die Pins miteinander zu verbinden, habe ich ein kurzes Kabel verwendet, welches ich zu Hause rumliegen hatte.

- Wenn die Verbindung per ZigBee nicht möglich ist, die Batterie entfernen und erneut probieren. Ansonsten einen Hard Reset ausführen.
- Manchmal brauchen diese Sensoren einige Minuten Zeit, bis eine Verbindung möglich ist. Nicht gleich aufgeben, wenn es nicht auf Anhieb geht.
- Das Aktualisieren der Firmware über die Xiaomi Home App sollte vermieden werden, um Komplikationen mit neueren Firmware-Versionen zu vermeiden.
- Wenn die Daten vom Sensor nicht gesendet werden, kann in Home Assistant die Verbindung neu konfiguriert werden. Danach wurden bei mir jeweils die Daten wieder korrekt gesendet. Wenn du die Sensoren umplatzierst, kannst du diesen Schritt ebenfalls durchführen, um das ZigBee Binding zu optimieren.

- Wenn du mehrere Sensoren gleichzeitig konfigurierst, kannst du die Batterien aus den Sensoren entfernen, mit denen du gerade nichts machst, um Verwechslungen zu vermeiden. Ich hatte beispielsweise den Fall, dass ich dachte, dass der Sensor falsche Messwerte schickt, obwohl ich lediglich zwei Sensoren vertauscht hatte.