Wat is ESPhome?
ESPhome is een toolchain om gebaseerd op een configuratieomschrijving firmware voor een microcontroller te schrijven. Van oorsprong bedoelt om IoT of "smart" devices mee te maken maar het kan in princiepe ook voor een stand alone toepassing gebruikt worden.
In plaats van code te schrijven benoem je componenten in een gestructureerd yaml-bestand waarmee de tool de werkelijke code maakt. Op de achtergrond wordt de hele configuratie vertaalt naar C++ en daarna gecompileerd en geprogrammeerd. Laatste kan zowel via een kabel of Over The Air ofwel OTA (als er eenmaal firmware op draait).
Voor complexe taken biedt ESPhome nog de mogelijkheid om lambda's te schrijven. Dit zijn stukken C++ code waarmee je direct de achterliggende C++ objecten aan kunt spreken.
ESP only?
De naam geeft het al weg, maar de basis voor ESPhome was de ESP serie van microcontrollers van Espressif. Eerst de "oer-ESP" ESP8266 maar later ook de smaken van de ESP32. Maar ondertussen is ESPhome bruikbaar op meer dan alleen ESP's. Ook de RP2040 van Raspberry Pi, de BK7231T en BK7231N van Beken en de RTL8710BN en RTL8710BX Realtek worden ondersteund. De BK72xx en RTL87xx lopen via het LibreTiny (vroeger LibreTuya) project.HA Only?
ESPhome is als losstaand project ontstaan maar is tegenwoordig onderdeel van Nabu Casa, het bedrijf achter Home Assistant. Voor Home Assistant is dan ook een directe API en integratie beschikbaar waardoor ze makkelijk en uniform te integreren zijn. Maar dit betekend niet dat het niet bruikbaar is om losstaand of met een andere smart home platform te gebruiken.Installeren / draaien
De meest makkelijke manier om ESPhome te draaien is via de ESPhome addon in Home Assistant . Hierdoor krijg je een ESPhome-dashboard in Home Assistant vanaf waar je al je ESPhome devices kunt onderhouden.Daarnaast is er een Docker container beschikbaar maar ook een handmatige installatie (via Python) is mogelijk. Ook via die opties is het mogelijk om het (web) ESPhome Dashboard te draaien.
Quick start
In plaats van via het Dashboard (of commandline) een lege config aa te maken kan je ook een initiële firmware op een device zetten via de Web uploader. Deze upload volledig via de browser Kickstarter firmware waarmee de Wifi ingesteld kan worden en waarna hij beschikbaar komt in het ESPhome Dashboard. Hierna zijn updates via OTA te doen. Voor ESPhome Web is een Chromium browser nodig en alleen ESP of RP2040 zijn ondersteund.Ook zijn er enkele tooltjes die ook al de Kickstart firware kunnen uploaden zoals bijvoorbeeld de Tuya Cloudcutter.
Kookboeken, ideeën en links
- ESPhome Cookbook (Kookboek met algemene voorbeelden)
- ESPHome Device Configuration Repository (kant en klare (maar aanpasbare) configuraties voor bestaande devices)
Helpen?
Zoals je ziet is deze startpost nog redelijk beknopt. Ik wilde vooral een plek buiten het Home Assistant topic maken voor specifiek vragen (en ideeën) rond ESPhome. Dit omdat het toch wel twee losse dingen zijn.Mocht je willen helpen met het uitbreiden van de start post, graag! Neem dan even contact op via DM.
Code delen
Wil je code delen in je post, plaats deze dan tussen YAML-code tags. Gebruik hiervoor [code=yaml]jecode[/code]. Geen plaatjes van code!secrets.yaml
Zeker als je code deelt is het handig als hier geen "geheime" informatie in staat zoals je wifi wachtwoord of je API-key. Hiervoor kent ESPhome een secrets.yaml. Standaard wil ESPhome hier al je Wifi SSID en password in zetten maar dit is uit te breiden naar alles wat je geheim of centraal wilt houden. Hiervoor kun je de secrets.yaml aanpassen zoals:YAML:
1
2
3
4
| wifi_ssid: "Hacker WiFi" wifi_password: "Sup3r S3cr3t!" api_key: "HeIZEX4PlyoVNtZuomxYt89RC+ugqkvwnfhEYa57Glg=" erg_gevoelig: "Dit mag niemand weten" |
Waarna je in een device kunt doen:
YAML:
1
2
3
4
5
6
7
8
| esphome: name: esphome-web-24df1c friendly_name: Super device comment: !secret erg_gevoelig api: encryption: key: !secret api_key |
Enige nadeel van de API key in de secrets.yaml hebben is dat alle devices dan dezelfde key gebruiken.
[ Voor 16% gewijzigd door Septillion op 07-10-2024 18:30 ]