IoT-Plattform auf Basis von ESPHome
(esphome.io)- ESPHome ist eine Plattform, die Boards wie ESP32, ESP8266, BK72xx und RP2040 in Smart-Home-Geräte verwandelt und Geräte per YAML-Konfiguration statt mit C++ einrichtet
- Unterstützt lokale Steuerung und drahtlose Updates, verringert so die Abhängigkeit von der Cloud und ermöglicht durch die Kombination von Sensoren, Displays und Komponenten den Bau verschiedenster Geräte
- Die Zielgruppe ist breit gefächert – von DIY-Nutzern über professionelle Integratoren bis hin zu Herstellern, die Made for ESPHome-zertifizierte Produkte entwickeln
- Zu den unterstützten Umgebungen gehören Espressif ESP32·ESP8266, Raspberry Pi RP2040, Nordic Semiconductor nRF52, Realtek RTL87xx, Beken BK72xx sowie für einige Komponenten auch die host-Plattform
- Für den Einstieg ist der Weg über Home Assistant am einfachsten; fortgeschrittene Nutzer können mit der Kommandozeilen-Anleitung oder vorkonfigurierten Projekten beginnen
Lokale Smart-Home-Geräte mit YAML konfigurieren
- ESPHome wandelt ESP32, ESP8266, BK72xx, RP2040 und andere unterstützte Boards in Smart-Home-Geräte um
- Geräte werden mit YAML-Konfigurationsdateien statt mit komplexem C++-Code eingerichtet
-
Hauptfunktionen
- Konfiguration ohne Programmierung: Verwendet einfache YAML-Konfigurationen statt komplexem C++
- Drahtlose Updates: Updates sind möglich, ohne physisch auf das Gerät zugreifen zu müssen
- Modulares Design: Unterstützt Hunderte von Sensoren, Displays und weiteren Komponenten
- Lokale Steuerung: Funktioniert lokal ohne Abhängigkeit von der Cloud
-
Zugehörige Ressourcen
Nutzergruppen und Einstiegswege
-
Wer nutzt es?
- DIY-Nutzer: Erstellen Sensoren, Schalter und Displays für spezifische Anforderungen
- Smart-Home-Hobbyisten: Erweitern ihre Heimautomatisierung mit günstigen, individuell angepassten Geräten
- Professionelle Integratoren: Stellen lokal steuerbare Smart-Geräte für Kunden bereit
- Hersteller: Produzieren mit standardisierter Firmware Made for ESPHome-zertifizierte Produkte
-
Unterstützte Mikrocontroller und Laufzeitumgebungen
- Espressif ESP32·ESP8266: Unterstützt die in vielen IoT-Projekten eingesetzten Mikrocontroller ESP32 und ESP8266
- RP2040: Unterstützt den RP2040-Mikrocontroller von Raspberry Pi
- Weitere Chips: Unterstützt Nordic Semiconductor nRF52, Realtek RTL87xx und Beken BK72xx
- Desktop-host-Plattform: Viele ESPHome-Komponenten können auch auf Desktop-Computern ausgeführt werden
-
Erste Schritte
- Der einfachste Einstieg erfolgt über die Home-Assistant-App: Home Assistant Guide
- Fortgeschrittene Nutzer, die die Kommandozeile bevorzugen, können eine separate Anleitung nutzen: Command Line Guide
- Für typische Anwendungsfälle kann man mit vorkonfigurierten Projekten starten: Browse Projects
1 Kommentare
Meinungen auf Hacker News
Ich bin einer der Leute, die ESPHome leiten. Wenn ihr Fragen habt, sagt einfach Bescheid.
Letzten Samstag haben wir bekannt gegeben, dass ESPHome jetzt der Open Home Foundation gehört.
Die Open Home Foundation ist eine Organisation, die Privatsphäre, Wahlfreiheit und Nachhaltigkeit für das Smart Home und alle Menschen, die darin leben, schützen will: https://www.openhomefoundation.org/blog/announcing-the-open-...
Ein günstiger Mikrocontroller lässt sich direkt im Browser in einen Sprachassistenten, Bluetooth-Proxy oder Media Player verwandeln.
Ich hatte mich tief in das Espressif SDK eingearbeitet und einen drahtlosen Schalter mit Temperatursensor und MQTT fast komplett umgesetzt, aber sobald ich ESPHome entdeckt hatte, war die ganze bisherige Arbeit überflüssig.
Alle Funktionen, die ich geschrieben hatte, waren schon vorhanden, plus noch viel mehr.
Es scheint einige Geräte von Espressif mit Zigbee-Funktionalität zu geben, und ich frage mich, ob es künftig einen Weg geben wird, direkt Zigbee-Geräte zu bauen.
Was ich mir allerdings wünsche: Ich weiß nicht genau, ob das in den Umfang von ESPHome fällt oder ob es sich sauber umsetzen lässt, aber ich würde gern schnelle Feedback-Loops und komplexere Onboard-Algorithmen direkt auf den Geräten ausführen können.
Zum Beispiel soll ein Helligkeitssensor eine Glühbirne steuern, die Helligkeit kontinuierlich mit kaum wahrnehmbaren kleinen Änderungen nachregeln und mit etwas wie einem Kalman-Filter je nach Tageszeit eine konstante Beleuchtungsstärke und Farbtemperatur halten.
Auch Luftreiniger, Lüftung, Heizung, Befeuchtung, Entfeuchtung und Kühlung möchte ich laufend steuern, um Umgebung und Stromverbrauch zu optimieren. Lüftung senkt CO2/TVOC, bringt aber PM2.5 und Außentemperatur herein, und Heizen/Kühlen, Lüftung und Luftfeuchtigkeit hängen komplex zusammen.
Zusatzheizungen sind viel teurer als die normale Heizung, an sehr kalten Tagen aber nötig; wenn niemand zu Hause ist, ändern sich die Prioritäten, sodass ich bei Anwesenheit eine erträgliche Luftfeuchtigkeit und bei Abwesenheit möglichst geringe Feuchtigkeit möchte.
Zweitens wäre es schön, wenn man mit ESPHome nicht nur Wi-Fi-, sondern auch Zigbee-Geräte bauen könnte.
Logs über Wi-Fi anzusehen ist fast schon unverschämt einfach.
Ich habe einen kleinen Infrarot-Empfänger/-Sender gebaut, um mein Audiosystem mit der TV-Fernbedienung zu steuern; die Einrichtung war sehr einfach und die Home-Assistant-Integration ist hervorragend.
Ich betreibe mehr als 20 Geräte mit ESPHome; etwa drei Viertel davon hängen im Home-Assistant-Netzwerk, und rund sechs laufen eigenständig, wobei ESPHome per MQTT mit anderen Dingen kommuniziert.
Ich überwache eine günstige chinesische Wetterstation, deren Innenleben ich durch einen ESP32 ersetzt habe, außerdem Regenwassertanks, Bodenfeuchte im Gewächshaus, Temperatur und Luftfeuchtigkeit an verschiedenen Stellen im Haus sowie die Luftqualität in Küche und Kinderzimmern.
ESPHome ist wirklich ein unterschätztes Projekt. Im wahrsten Sinne des Wortes kann man mit 5 Minuten, Hardware für 10 Dollar und ohne Programmierung eigene IoT-Geräte fürs Haus bauen und überall auf dem Grundstück Echtzeitdaten erhalten.
Es ist eine enorme Freiheit, Hardware in Reichweite zu haben, sobald einem eine Idee kommt.
Sie sind überraschend stabil, und Module wie ein Sprinkler-Controller lassen sich so programmieren, dass sie eigenständig laufen und einfach weiterarbeiten, solange Strom da ist.
Ich habe erst Monate später gemerkt, dass die microSD-Karte meines Home Assistant kaputt war, weil meine Hydroponik-Anlage weiter normal lief.
Am meisten Zeit hat es gekostet, einen DC/DC-Wandler zu verdrahten, um in einer wasserdichten Sockitbox Relais anzusteuern.
Breakout-Boards mit Schraubklemmen in der Nähe zu haben ist ebenfalls sehr nützlich: https://www.amazon.com/whiteeeen-Development-Expansion-ESP-W...
CloudFree ist auch gut, um fertige IoT-Komponenten zu bekommen, die sich mit ESPHome neu programmieren lassen: https://cloudfree.shop/
Früher habe ich ESPHome mit einem Wittycloud ESP8266 für 3 Dollar genutzt, um Daten aus der Solaranalyse abzugreifen und den Verbrauch in Home Assistant zu sehen.
Aber abgesehen von USB-Adaptern habe ich noch keine elegante Stromversorgung gefunden. Für Außensensoren wäre eine saubere Batterielösung schön.
Es scheint ein ziemlich hochwertiger Chip verwendet zu werden.
Wenn man noch mehr sparen will, bekommt man den ESP8266 teils schon für 4 Dollar, was wirklich erstaunlich ist.
Zum Beispiel für den Fall, dass jemand in mein vermietetes Haus kommt, ohne Einbruchsspuren zu hinterlassen.
In der Dokumentation gibt es mehrere Optionen, aber ich weiß nicht, ob ich eher auf Bewegungs-/Anwesenheitserkennung oder auf einen binären Anwesenheitssensor setzen sollte. Mich interessiert, welcher Sensor besser und kosteneffizienter ist.
Das Beste an ESPHome ist die starke und aktive Community.
Für unseren Open-Source-Hardware-Luftqualitätsmonitor [1] hat ein Community-Mitglied eine ausgefeilte ESPHome-Integration [2] entwickelt.
Diese Integration enthält alle Funktionen der standardmäßigen Open-Source-Firmware, und manchmal war sie bei der Umsetzung neuer Features sogar schneller als wir.
In gewisser Weise hat uns dieser Open-Source-Wettbewerb geholfen und motiviert, unsere Software-Version besser zu machen.
[1] https://www.airgradient.com/
[2] https://github.com/MallocArray/airgradient_esphome
Als verwandte Ressource gibt es eine Sammlung von ESPHome-Gerätekonfigurationen für kommerzielle Hardware: https://devices.esphome.io/
Außerdem gibt es eine Sammlung von Tasmota-Konfigurationen für Geräte, auf denen oft auch ESPHome läuft: https://templates.blakadder.com/
Etwas off-topic, aber ich mag ESPHome und habe es für einige IoT-basierte Temperatursensoren im Haus verwendet.
Der Punkt, an dem es beim WAF, also der Akzeptanz durch die Ehefrau, immer hakt, ist aber, ESP32, Sensoren und Kabelsalat in ein ansehnliches Gehäuse zu packen und zu verstecken.
Ich frage mich, was ihr alle verwendet, um Elektronikbauteile zu verbergen.
Die Produkte von Apollo sind ziemlich unauffällig gestaltet: https://apolloautomation.com/products/sensor-stand?pr_prod_s...
Bei Temperatursensoren wähle ich normalerweise Fertigprodukte, die von dieser Firmware unterstützt werden: https://github.com/pvvx/ATC_MiThermometer
Als Bonus laufen sie mit Batterie über ein Jahr.
Mit Glasschalen oder transparenten Kunststoffprodukten bleiben die Bauteile sauber, und man kann trotzdem hineinsehen.
Bei der Wandmontage schraubt man die Platine innen am Deckel fest und befestigt diesen Deckel an der Wand. Dann kommt man leicht heran, indem man einfach den Behälter vom Deckel abnimmt.
Der Nachteil ist, dass es hässlich aussehen kann, wenn es an einer gut sichtbaren Stelle steht.
Meist suche ich auf Thingiverse nach einem vorhandenen Design, das ungefähr passt. Wenn man gängige Bauteile verwendet, ist die Chance hoch, auch ein exakt passendes Modell zu finden.
Ich habe eine Frage, auf die ich per Suche keine Antwort gefunden habe.
Ich habe ein Alarmierungssystem für die Klärgrube, bei dem ein akustischer und visueller Alarm aktiviert wird, wenn ein Schwimmerschalter erkennt, dass der Tank zu 3/4 voll ist.
Es gibt ein Paar NO-potenzialfreier Kontakte, die schließen, wenn der Alarm ausgelöst wird.
Ich frage mich, wie ich überwachen soll, ob dieser Kontakt geschlossen oder offen ist. Ein GPIO-Pin müsste eigentlich reichen, aber ich konnte per Suche keine brauchbare Antwort finden.
Ich überlege, aufzugeben und mit einem RIB01BDC-[0]-Koppelrelais einen Raspberry Pi einzuschalten, der dann eine E-Mail sendet, wenn der Kontakt der Klärgrube schließt.
[0] https://www.functionaldevices.com/product/rib01bdc/
Lässt man den Mikrocontroller den GPIO-Pin periodisch auslesen, bedeutet High: Kontakt offen und kein Alarm; Low bedeutet: Kontakt geschlossen und Alarm aktiv.
Die GPIO/Kontakt/Widerstand/VCC-Konfiguration wirkt als Pull-up-Schaltung, die eine Seite der Schaltung auf einen hohen Logikpegel zieht, während der Widerstand den Strom begrenzt, wenn der Kontakt geschlossen ist.
Wenn der Mikrocontroller eine interne Pull-up-Konfiguration für GPIO-Pins unterstützt, kann man den Pin auch ohne zusätzliche Hardware direkt mit dem Kontakt verbinden.
Umgekehrt kann man es bei interner Pull-down-Konfiguration umdrehen, indem man VCC mit dem Kontakt verbindet und GPIO direkt mit der anderen Seite. Welche Funktionen verfügbar sind und welche Strombegrenzungen gelten, steht in der Dokumentation des Mikrocontrollers.
Je nachdem, welche Informationen man bei der Überwachung der Klärgrube haben möchte, könnte das ebenfalls eine nützliche Option sein.
Ich habe mit ESPHome und M5StickC eine Stempeluhr für Arbeitsbeginn und Feierabend gebaut.
Wenn ich Kommen/Gehen stempeln, sendet Home Assistant die Zeit an ein Google Sheet, und das läuft sehr zuverlässig.
Ein interessanter Punkt: Der ESP32 unterstützt auf einigen Pins kapazitive Berührungserkennung, sodass man leitfähige Oberflächen in Smart-Home-Tasten oder Eingabegeräte verwandeln kann.
Das wird auch von ESPHome gut unterstützt: https://esphome.io/components/binary_sensor/esp32_touch.html
Es gibt ein kleines Projekt, das ich angehen wollte
Ich möchte die Ankunftszeiten der Busse an einer Haltestelle in der Nähe meines Hauses über die lokale Verkehrs-API abfragen und die Zeiten der drei wichtigsten Busse entweder auf einem großen Display oder auf drei kleinen Displays, eines pro Bus, anzeigen
Es muss keine hohe Auflösung haben, aber groß und hell genug sein, damit die Familie es auch aus der Entfernung auf einen Blick sehen kann. Zum Beispiel mit einer 7-Segment-Anzeige, die die dreistellige Busnummer und vier Ziffern für die verbleibenden Minuten bis zur Ankunft zeigt
Es sollte per Wi-Fi aktualisierbar sein, und es wäre in Ordnung, wenn ein stromsparendes Gerät wie Arduino/Raspberry Pi daran hängt. Noch besser wäre es, wenn es mit AA-Batterien laufen könnte
Den ersten Teil kann ich, vom zweiten habe ich überhaupt keine Ahnung, und gelötet habe ich auch noch nie. Es wäre schön, wenn jemand mit Erfahrung mir die Richtung weisen könnte
Man kann Dinge kombinieren wie die display-Komponente zum Zeichnen auf einem Pixelraster https://esphome.io/components/display/, einen Text-Renderer, den addressable_light-Platform, die auf Basis eines adressierbaren LED-Treibers https://esphome.io/components/light/neopixelbus eine Anzeigematrix erstellt https://esphome.io/components/display/addressable_light, sowie günstige 8x32-LED-Panels https://www.google.com/search?q=8x32+ws2812b
Wenn du mehr Platz brauchst, kannst du mehrere davon bauen oder Panels aneinanderhängen
Natürlich musst du das Rad nicht neu erfinden, sondern kannst auch einer Anleitung wie dieser folgen: https://community.home-assistant.io/t/led-matrix-with-esphom...
Besonders wenn du vorhandene Hardware wie Ulanzi wiederverwendest, ist nicht viel Löten nötig; entscheidend sind die richtige Datenverbindung und die Stromversorgung
Einen ESP32 kannst du mit Arduino programmieren, und die gewohnten Bibliotheken sowie die Wi-Fi-Verarbeitung unverändert nutzen
Bei Adafruit kannst du RGB-Matrizen kaufen, und sie verkaufen auch ESP32-Boards, die diese direkt ansteuern können. Das ist praktisch Plug-and-play und erfordert kaum Hardwarewissen
Wenn du es selbst bauen möchtest, aber Anleitung brauchst, schau dir dieses Projekt an, das ein Wi-Fi-verbundenes Textanzeigegerät, das dem Gewünschten ähnelt, sowohl hardware- als auch softwareseitig dokumentiert: https://github.com/BlueAndi/esp-rgb-led-matrix
Ich nutze es persönlich nicht, aber es wirkt wie eine wirklich großartige Idee
Früher habe ich Sensorboards gebaut und die Firmware selbst geschrieben; ich sollte prüfen, ob sich ESPHome leicht einrichten und auf diesen Boards ausführen lässt
Allerdings ist eine Funktion, die in meiner Firmware bereits steckt und für mich unverzichtbar ist, Pull-basierte OTA-Updates
Derzeit kopiere ich die Firmware in einen Ordner, und alle Sensoren im Haus aktualisieren sich automatisch über einen HTTP-Server auf diese Firmware
Bei ESPHome muss man das Update für jeden Sensor einzeln pushen, was bei Dutzenden Geräten lästig ist
Es schien einfacher und schneller, selbst Firmware zu schreiben, die mit einem simplen Backend kommuniziert
Ich frage mich auch, wie der Code für ESP32-Geräte hineinpasst. Wenn man auf einem Gerät mit 4 MB Flash OTA möchte, liegt das praktische Programmlimit bei etwa 1 MB
Schon ein einfaches Programm, das nur GPIO, ADC, UART, Wi-Fi, HTTPS, einen HTTPS-Server, Interrupts, FreeRTOS, MQTT, NVS, Chip-Informationen, Logs, OTA und Standardbibliotheksfunktionen aufruft, überschreitet dieses 1-MB-Limit. Allein ein scanf verbraucht 30 KB
Wenn man alle Logs abschaltet und kompiliert, kann man es auf ungefähr ein 800-KB-Programm reduzieren, aber selbst ohne Programmlogik ist man schon ziemlich nah am Limit
Wenn ich das nächste Mal ein Gerät für Remote-Monitoring brauche, werde ich es mir noch einmal ansehen
Wenn es ein Gerät gibt, das ich nicht aktualisieren möchte, füge ich vorübergehend ein unerwartetes Schlüsselwort in die YAML-Datei ein, sodass Kompilierung und Update fehlschlagen
Ich habe im ganzen Haus einige ESP-Geräte mit Temperaturfühlern, und ich bin gerade dabei, sie auf ESPHome umzustellen, damit weniger Code zu warten ist
Besonders gut ist, dass man anfangs im Browser flashen und später drahtlos aktualisieren kann