Homekit Wetterstation mit ESP8622 und BME280

Irgendwie hatte ich mal wieder Lust, mit Elektrokram zu experimentieren. Der Default-Anwendungsfall für solche Projekte scheint eine Wetterstation zu sein. Noch genauer, eine autarke Wetterstation. Ich begab mich auf eine Oddysee.

Update vom 14.02.2021: Ich habe Teile aus der Homekidd Anleitung übernommen und ein Case für den 3D-Drucker verlinkt.

Der Grundgedanke war, dass ich gerne irgendetwas haben möchte, was einfach existiert und Informationen liefert. Ich habe keine Lust auf Akkus und Steckdosen. Ich finde die Idee, ein eigenständiges Gerät zu bauen, welches sogar ganz alleine in der Natur überleben könnte, irgendwie total verrückt romantisch.

Im Moment bin ich noch in der Experimentierphase und bin auf ein Projekt gestoßen, welches den ESP8622 für Homekit Einsatzzwecke fertig macht. Daher dreht sich dieser erste Post um eine einfache Homekit-Wetterstation mit Homekidd.

Die Einkaufsliste

Ein ESP8266 und ein BME280 auf einem Steckboard
  • Ein ESP8622. Zum Beispiel ein D1 Mini oder ein DEBO JT
  • Ein BME280 Sensor von Adafruit. Gibt es auch in günstiger, habe ich aber noch nicht getestet.
  • Ein Steckboard, falls ihr alles nur einmal testen möchtet.
  • Irgendeine Stromzufuhr. In meinem Fall über Micro-USB
  • Ein Lötkolben

Der Aufbau

Mein erster Fehler war, die mitgelieferten Steckkontakte vom BME280 nicht an den Sensor zu löten. Ich dachte immer, es würde auch nur mit angesteckten Kabeln genügend Kontakt vorhanden sein. Stimmt nicht. Danke an Peter für den Tipp.
Also einmal alles verlöten.

Hier sieht man die Verbindungen zwischen ESP8622 und BME280

Disclaimer: Großartig erklären, wofür die Pins stehen, werde ich hier nicht.
Wie oben im Bild zu sehen ist, verbindet ihr die Pins wie folgt:
VIN geht an 3V3
GND geht an GND
SDI geht an D2
SCK geht an D1
Achtung: Wenn ihr einen BME280 von Adafruit habt, geht auf dem Board SDO auf GND
Die LED im Bild ist einfach nur eine LED, die mir zeigt, ob Strom fließt.

Um die Software auf den Chip zu bekommen, benötigt ihr esptool.py (oder für Windows Espressif). Ansonsten habe ich mich an die Installationsanweisungen von Homekidd gehalten. Bitte beachtet, dass ich die Version ohne Display nutze und daher die Installation ohne OTA, mit der main.bin aus der Version 1.0.4 gewählt habe.

Das ganze Schritt für Schritt:

Ihr ladet euch espressif mit PIP runter:

$ pip install esptool

Danach ladet ihr euch die Dateien rboot.bin blank_config.bin und main.bin aus dem Release V1.0.4 runter und legt sie in einem Ordner ab. Navigiert im Terminal in diesen Ordner, steckt den ESP an, findet seine USB-Portnummer raus (Beispielsweise wird dieser in der Arduino IDE angezeigt) und löscht ihn einmal mit:

$ esptool.py -p /dev/<your_ESPPort> erase_flash

Danach installiert ihr die Software mit:

$ esptool.py -p /dev/<your_ESPPort> --baud 115200 write_flash -fs 4MB -fm dio -ff 40m \ 
0x0 rboot.bin 0x1000 blank_config.bin 0x2000 main.bin

Folgt danach den Setup Anweisungen. Im Grunde sucht ihr in eurem WLAN nach einem Homekidd Gerät und verbindet euch, dass Passwort ist 12345678. Um das Gerät in euer Home hinzuzufügen, scannt ihr mit eurem iPhone den QR-Code auf der Setup Seite.

Fertig 🎉
Ihr solltet jetzt einen Feuchtigkeits- und Temperatursensor in eurem Homekit haben.

Ein Case aus dem 3D-Drucker

Um den ganzen eine Würdige Verpackung zu geben, habe ich mir dann noch das Case „Wemos Indoors Weather Station“ gedruckt.

Überlegungen für die Zukunft

Ich experimentiere gerade ein wenig mit der Stromzufuhr herum. Für diese Version reicht wahrscheinlich eine kleine Powerbank, die ab und zu mal aufgeladen werden muss. Der Heilige Gral ist aber eigentlich eine Wetterstation, die autark mit Solar betrieben wird. Leider wird das nicht mit Homekit funktionieren, da das System einen konstanten Datenfluss erwartet und somit einen hohen Stromverbrauch hat.
Die Reise geht also weiter, wenn ich mich von Homekit abgewandt und eine solabetriebene Wetterstation habe, die wenig Strom verbraucht und an irgendeinen Server die Daten schickt. Der Server wird dann irgendwas mit den Daten machen. Vielleicht zeigt ja dann ein zweiter ESP8622 mit eInk-Display die Daten an und das ganze hängt dann in einem Bilderrahmen?

Bei Fragen, Anmerkungen oder Kritik könnt ihr mich gerne bei Mastodon oder Twitter ansprechen.