ESPHome

Guide: Home Assistant och ESPHome

Som många kanske märkt så har vi under lång tid gillat att skriva egen kod till ESP8266, Arduino, ESP32 osv osv osv… Men för varje gång vi gör det inser vi att det är tid vi skulle kunna lagt på att skapa en automation om det funnits ett färdigt sätt. För det är sällan ett självändamål att skriva koden själv, utan det har varit ett måste för att få in vissa sensorer som vi helt enkelt inte hittat som färdig lösning (i regel).

Vi har även börjat väga in att vi INTE har nog med tid och kanske inte alltid den kunskap som krävs direkt. Utan det kräver att vi läser på en hel del för att lyckas. Men samtidigt är det bra ibland för att få en förståelse hur allt hänger ihop. Därav anledningen till det här inlägget. Vi vet att det finns så otroligt mycket verktyg men i regel har vi saknat något av dessa… Men nu måste vi säga att ESPHome som vi kommer skriva om i det här inlägget som både underlättar vardagen, och dessutom kan möjliggöra en mängd nya automationer utan att kosta stora summor i tid, kod och pengar.

Projektet ESPHome som vi ”hittat” (Vi har fått massor med uppmaningar om att prova det) gör det mycket enkelt att koppla samman egna sensorer med Home Assistant eller MQTT. Tack för tipsen!

Vad är ESPHome?

ESPHome är ett ramverk (byggkloss) som kapar bort i stort sett allt kodande som behövs för att börja använda dom superbilliga WIFI chipen Esp8266 & esp32. Vi har i flera år använt oss av dessa chip i våra projekt, bland annat så byggde vi en en WIFI temperatursensor redan 2016 med ESP8266. Men all kod och hantering fick göras manuellt…

ESPHome hanterar uppdatering, integration, konfiguration och övervakning av sensorn helt automagiskt! Dvs den löser hur kommunikationen med webbgrässnittet ska fungera, den löser hur du över WIFI uppdaterar koden i chipet, och dessutom löser den hur du via en hotspot i ESP:n kan logga in på den och uppdatera koden om ditt WIFI hemma slutar fungera eller byts till ett nytt. Mer än så här kommer vi inte förklara om vad ESPHome just nu, vi hoppas att kommande delar kommer förklara detta bra. Listan nedan är de micro kontrollers som stöds just nu, dvs du kan även använda detta för Sonoff istället för Tasmota (extern länk).

Bilden med listan kommer från https://esphome.io/

För alla som inte vill köra Home Assistant så går det självklart att använda ESPHome även med MQTT, detta kan vara ett bra lösning om du redan är igång med Node-Red.

Vad har vi gjort med ESPHome?

Det behov ESPHome direkt löste för oss var att mäta husets totala energiåtgång och göra det tillgängligt i Home Assitant. Detta löste vi på under 30 minuter totalt från start till mål! Dvs från att vi hittade ESPHome tills att vi såg grafen i Home Assistant och kunde börja automatisera utifrån den!

ESP32 som energimätare
ESP32 som energimätare

Är du inte övertygad om att ESPHome är en lösning som integrerar bra med Home Assistant så spana in vår film nedan eller på instagram. Där styr vi 150st leds individuellt med hjälp av Home Assistant och ESP8266 med ESPHome: https://www.instagram.com/p/CIY_jD-jC8O/ (länk till vårt Instagram konto med film på ledslingan du ser på bilden).

Vad löser ESPHome?

Nu försöker vi besvara vad vi tycker ESPHome löser för oss, kan inte svara på om detta är samma för alla som läser detta.

  1. Vi får all kod centraliserad och slipper dessutom skriva den! vi behöver bara fundera på konfigurationen.
  2. Vi behöver inte hämta in enheterna varje gång vi vill uppdatera den med en ny kod och funktionalitet, vi kan uppdatera dom med OTA via WIFI.
  3. Vi kan använda redan färdiga API:er för att kontrollera debug information i den och integrera den med andra system.
  4. Vi minskar den tid vi behöver lägga på att skriva kod, vi kan istället fokusera på att få ut värdet som sensorerna vi kopplar in ger.
  5. Vi får en mycket bra grund att utgå utifrån där nya sensorer ständigt adderas hos ESPHome utan att vi behöver göra hela jobbet själva.
  6. ESPHome gör att vi inte behöver fokusera på transporten av information på samma sätt som tidigare.

Vi hoppas på att få mängder med exempel i guiden på roliga sensorer vi bygger framöver. Än så länge har vi bara skrapat på ytan men redan mer än nöjda, dessutom inväntar vi nu 10st ESP32 till för att fortsätta bygga ut vårt hem med nya sensortyper på WIFI!

I inlägget kommer du kunna läsa om hur du konfigurerar Home Assistant för att få tillgång till sensorer via ESPHome. Vi går igenom alla steg som behövs för att slippa skriva någon kod i framtiden, men ändå få möjligheten till avancerade ESP8266/ESP32/sonoff sensorer.

Hur kommer jag igång med ESPHome

Allt du behöver för att komma igång finns inbyggt i Home Assistant OM du har en installation som tillåter dig att komma åt USB portarna på enheten den körs på. Gör du inte det så är det inte ett problem. Med hjälp av Python på en dator och tillägget ESPHome där så kan du börja skapa konfiguration och koden som behövs till både en ESP eller Sonoff, men har du tillgång till en Home Assistant så rekommenderar vi att testa pluginet där! Du kan nämligen där göra den första uppdateringen av en sensor med via USB och sedan övergå till OTA (over the air update) WIFI.

Bilden nedan visar hur driftbilden ser ut inne i tillägget ESPHome. Varje sensor du skapar presenteras som nedan, där namnet på sensorn och vilken fil den läser konfigurationen från presenteras under. Det du behöver fokusera på när en sensor sedan är igång är ”EDIT” och ”LOGS”, samt om du ser en grön eller röd linje ovanför sensorn. Skulle sensorn inte vara kontaktbar så får du en röd linje här och Home Assitsant sätter enheten som status ”Ej kontaktbar”, så den funktionen i API:et till ESP sensorn fungerar riktigt bra.

Integrationen mellan Home Assistant och ESPHome är näst in till perfekt enligt oss 🙂

När du sedan skapat en sensor i ESPHome så dyker dessa upp som nya interationer i Home Assistant först när sensorn är nåbar på ditt WIFI, det som sedan behövs för att få lägga till sensorn i Home Assistant är ett lösenord som du satt i konfigurationen när du skapade sensorn, det är lösenordet står under ”api:”, det står även ”Enable Home Assistant API” som en kommentar där, så enkelt att hitta 🙂

Integrationen mellan ESPHome och Home Assitant presenterar sedan sensorerna snyggt.

Installera ESPHome i Home Assistant

För att hållare nere längden på guiden så fokuserar vi på att Home Assistant används, finns intresse så kan vi även visa hur vi gjorde för att initialt flasha enheterna på en dator med Windows 10, men göra konfigurationen i Home Assistant som bilden ovan. Med hjälp av detta så kommer du sedan kunna skapa egna sensorer som vi beskriver längre ner i inlägget eller om du kollar ESPHomes egna hemsida. Vi lärt oss att det är viktigt att läs all informationen som ESPHome ger dig när du sedan skapar sensorer. Bland annat skriver den att vissa tecken inte kommer fungera och att allt måste vara i småa tecken, och det kan vi bekräfta!

Istället för att bra duplicera en redan bra guide på hur du installerar det på dator så rekommenderar jag guiden som ESPHome själv skrivit här: https://esphome.io/guides/getting_started_hassio.html. Vi valde dock att göra en för Home Assistant med några bilder eftersom det var så pass enkelt förfarande, men vi kan inte säkerställa att vi kan hålla den lika upp to date som den på länken 🙂 Men för att hålla ihop vår guide så behövde vi lite mer information.

Installera ESPHome pluginet i Home Assistant

Börja med att logga in i din Home assistant och gör en backup innan (Supervisor \ Snapshots) du börjar med att addera något nytt (bra att ha det som en vana!), så vida du inte har en utvecklings Home Assistant som vi kör här.

Under menyn ”Supervisor \ Add-on Store \ söker du efter tillägget ESPHome och väljer installera. Mer än så är det inte. När detta är klart så väljer du att detta ska starta automatiskt och att det listas i menyn genom att välja ”Show in sidebar”. Gå sedan vidare och välj Open WEB UI

När du installerat ESPHome så kommer du få möjlighet att välja att presnetera den i sidebar och att den ska starta automatiskt, gör det.

Skapa en sensor i ESPHome

Som vi nämnde så är det otroligt enkelt att komma igång, vi är nu klar med all mjukvara som behövs för att börja skapa den första sensorn! Genom att trycka på PLUS tecknet längst ner till höger i ESPHome så kommer guide starta. TÄNK PÅ ATT ANVÄNDA ENDAST GODKÄNDA TECKEN, för använder du andra tecken än de dom skriver där så kommer du sitta och felsöka en mängd olika fel som du inte riktigt kan förklara… Tro oss, det var lättare att ta bort sensorn och sedan skapa en ny med rätt namn om detta skulle ha hänt.

Var även mycket observant på vilken USB enhet du har i din Home Assistant innan du börjar uppdatera något, vi har inte valt fel enhet så vi kan inte säga vad som skulle kunna hända. Men ha extra koll på det när du följer guiden om du ska uppdatera direkt från din Home Assistatant.

Så här ser det ut på den fysiska Home Assistant vi kör, men tänk då på att kontrollera vad du har för USB enheter på /dev/ttyUSB* innan du kopplar in din ESP via USB i Home Assistant, för den enhet som presenteras i litstan där är en Zigbee sticka för Conbee, och den vill vi verkligen inte uppgradera!

Vi kommer i den här guiden använda oss av ”OTA”, vilket inte fungerar på en helt ny sensor. Då behöver du istället välja USB och det enhetsnamn som matchar din ESP sensor. Orsaken är att den installation vi skriver om nedan är virtuell och inte har tillgång till en USB, men hade du valt USB så fungerar alla steg i guiden precis på samma sätt. Och dessutom kan du trycka på UPLOAD efter guden är klar.

Gränssnittet är mycket enkelt, hålla koll på om det är via WIFI eller USB du vill uppdatera sensorn bara innan du trycker upload.

Den här uppmaningen i steg 1 är det värt att följa..

Names must be all lowercase and must not contain any spaces! Characters that are allowed are: a-z0-9 and _.

När du skapar din första enhet tänk till på namnet du sätter, för det kommer du att exponera i Home Assistant under integrationen sedan med dessutom. Vi väljer i exemplet här att nyttja ”bloggen” med litet ”b”.

Åter igen kontrollera en gång extra att du inte har tecken i ditt namn som inte är giltiga, det är ett krav för att det ska fungera.

När du sedan ska skapa din första enhet så behöver du kontrollera vilken enhetstyp du ska konfigurera med ESPHome, den enhet vi kör för energimätning i den här guiden är en Generic ESP32 (WROVER Module) medan den enhet vi kör till fast led ljusslingan är en NodeMCU (esp8266).

Välj de modell av kort du ska flasha / uppdatera som en ESPHome sensor.

När du valt enheten så är det dags att ange vad du har för WIFI som enheten ska koppla upp på. Här kan det vara idé att lägga upp ett extra wifi hemma för IOT, detta för att kunna segmentera bort enheterna från andra enheter och begränsa vad som får åtkomst till sensorerna. Men det är så klart möjligt att koppla det mot det vanliga WIFI nätet med, så länge det är ett 2.4Ghz WIFI. OTA lösenordet är de lösenord som sedan används för att tillåta enheten att uppdateras över ditt wifi nät.

Ange här ditt WIFI lösnord, tänk på att enheterna ESP32, ESP8266, SONOFF kräver att det är ett 2.4 Ghz wifi och inte ett 5Ghz wifi du använder.

Detta var allt som behövdes för att du skulle få åtkomst och uppdatera en enhet via wifi.

Klart! nu har du en sensor som inte gör något alls, förutom att koppla upp på ditt wifi, ta emot kod trådlöst. Bara här är det så otroligt mycket kod du sluppit skriva för att hantera enheten.

När detta är gjort så kommer du få en upp enheten med de namn du satt som bilden nedan

Här är den sensor du just skapade.

Väjer vi nu EDIT på den här enheten så kommer du mötas av ditt WIFI lösenord och andra lösenord i klartext, så tänk på vem du tillåter access till både mappen där .yaml filen ligger och ESPHome gränssnittet i Home Assitstant. Så det du ser nedan är det gränssnitt som du sedan ställer in din konfiguration med, så för alla som hållit på med Home Assistant så kanske det känns igen till 100% 🙂

Så här ser konfigurationen ut för din ESP som just skapades.

Ovan ser du konfigurationen uppdelad i följande delar:

  • name = det namn du satte på enheten
  • platform = den typ av ESP du valt ( ESP32, ESP8266 ).
  • board = den modell av ESP kort som används.
  • AP:
    • ssid = namnet på den accesspunkt som skapas om enheten inte kan koppla upp på ditt wifi
  • api = Det här lösenordet kopierar du och använder när du lägger till en ny enhet under integration i Home Assistant
  • ota = Det lösenord som ska används för att få uppdatera enheten trådlöst.

För att kontrollera hur sensorn mår och aktuell status på sensorer mm så är det bara att öppna LOGS (om sensorn är grön i ESPHome). Då kommer du få en debug skärm med mycket bra information. När du kommit så långt att du kopplat på första sensorerna så är den här loggen guld värd eftersom du ser precis hur dina GPIO (pinnar) på sensorn är konfigurerade och med vilken frekvens de kommer uppdatera sig.

Informationen här är från Debug från den ESP32 som kör pulsräkaren och visar aktuell elförbrukning hemma.

Integrationen mellan Home Assitant och ESPHome på chippen gör att du kan konfigurera och skapa enheterna på en ESPHome och sedan ta in dom på en annan Home Assistant. Som bilden nedan visar så är det en sensor vi kör i den skarpa Home Assistant som vår utvecklings Home Assistant nu har upptäckt. Du kommer dock inte se någon sensor i Home Assistant förens dom blivit grön i ESPHome.

När en ny enhet sedan konfigurerats och dyker upp på samma wifi som din Home Assistant så får du upp dom på följande sätt. Där anger du sedan OTA passwordet du angivit i konfigurationen.

Så nu kommer vi inte nämna mer i själva installationen, för detta är allt som behövs för att få igång en ESP sensor i ESPHome. Längre ner i guiden kommer vi visa exempel på olika sensorer vi adderat till en ESPHome och hur vi gjorde det. Vill du fördjupa dig i alla möjliga sensorer så kan du läsa listan på ESPHome här: https://esphome.io/index.html#sensor-components (extern länk).

Mäta effektförbrukning med ESPHome

Vi börjar med att visa vad som fick oss att helt fundera på att överge Arduino sensorerna vi just byggt. När vi började att bygga en mjukvarutermostat för att effektivisera uppvärmningen hemma och göra nytta i samhället så insåg vi att vi även behöver bättre koll på hushållets totala strömförbrukning. Då vi tidgare har byggt två varianter så var tanken att åter använda någon av dessa. Men för tillfället hade vi inte någon dator i närheten av elämataren och saknade de komponenter som behövdes i Daniels lösning med en Raspberry PI. Därav föll valet på en ESP32 som vi hade liggande. Fördelen med att använda just en ESP32 och inte en ESP8266 är att den har en del i hårdvaran som gör pulsräknare (extern länk) mer exakt än vad ESP8266 är.

Redan efter 30 minuter så hade vi gått från ide till en färdig effektmätare på en esp32, allt vi behövde var en ldr (ljusmotstånd), 10K ohm, esp32 och för tillfället lite tejp för att fästa ldr:en över effekt led:en. När detta var gjort så kopplade vi ldr:en på en pinne och laddade upp följande yaml till esphome.

ESP32 som effektmätare till huset.
Den ESP32 som du ser på bilden är för tillfället i drift och mäter husets totala elförbrukning utan problem.

Vill du ha mer detaljer så har vi utgått från det här: https://esphome.io/cookbook/power_meter.html (extern länk)

Så med hjälp av en två komponenter till förutom ESP32, dvs ett motstånd och en LDR så får vi följande resultat i Home Assistant utan att skriva någon riktig kod helt rapporterat via WIFI till Home Assistant.

Komponenter som behövs för pulsräknaren:

  • 1st – LDR ( Light Decreasing Resistance ) – Motstånd som ändrar resistans baserat på ljus.
  • 1st – 10.000 (10k) ohm:s motstånd att koppla mellan plus och ena benet på LDR.
  • 1st – ESP32 alternativt Esp8266 (dock så är esp32 att föredra på grund av en dedikerad funktion i hårdvara för att läsa pulser)

Koppla din pulsmätare:

Nu hade vi inte tillgång till fritzing så det fick bli en tillfällig skiss tyvärr. Men principen bör framgå 🙂

Yaml konfigurationen för att få fram informationen om realtidsförbrukning är följande:

Så den totala konfigurationen som behöver skrivas för att få fram effektförbrukningen i ditt hushåll är följande (om kortet är esp32 och wifi har det här namnet):

När raderna ovan är uppdaterat på ESP32:an så är det bara att öppna integrationer i Home Assistant och kontrollera om det finns en ny tillgänglig enhet med namnet ”demo” ange API nyckeln. När detta är klart så kommer du få en ny enhet och en ny entitet som bilden nedan visar.

Pulsmätaren i Home Assitant.

Nu är allt klart för att presentera din pulsmätare i Home Assistant som bilderna nedan visar, vi blev själva mycket imponerande över hur mycket jobb som lagts av dessa projekt för att göra detta möjligt. Så nu har vi ett bra sätt att få koll på realtidsförbrukningen (vi har kört var 60 sekund grupperat).

Nuvarande förbrukning som vi ser i Home Assistant är enligt följande (Vi håller på att förändra vår förbrukning!)
Energiförbrukning i vårt hem under 12 timmar rapporterat med ESP32 sensorn via ESPHome.

För att sedan söka fram sensorn kan du välja att gå in på entitet under integrationen för ESPHome (tre bilder upp), där kan du välja att öppna den som en enhet för att se vart den används (bilden nedan)

Listar vi enheterna och söker efter ”demo” så hittar vi vår sensor och vart den idag används.

Väljer du att öppna entiteter så ser du däremot namnet på sensorn som du sedan vill lägga på minnet för att presentera i ditt Home Assistant gränssnitt.

Så i vår ”produktions” home assistant har vi valt att bara integrera mot ”demo” sensorn och då får vi upp en ny entitet med entites-id Sensor.power_meter_house

Vad är det som får oss att skriva om esphome? Det finns ju en mängd andra lösningar med, där den närmaste här är touya.

Mäta temperaturer med ESPHome

Med hjälp av en esp32 och temperatursensorn ds18b20 (dallas sensor) så kunde vi börja mäta temperaturer i pannrummet. Jämför vi detta med de jobb vi lagt tidigare på den här ethernet kopplade arduinon så är det säkert mer än en hel dags kodande som vi helt sluppit, nu har vi för visso gjort ett gränssnitt till våra arduinos som används på tre olika arduinos.

Med en OneWire (dallas / ds18b20) så få vi effektivt in temperaturen in i Home Assistant.

För att läsa in en DS18B20 sensor så behöver vi först göra konfigurationen ”dallas:” samt pin sätta vilken GPIO sensorn kopplas på, vi har valt GPIO23 och sagt att temperaturen ska uppdateras var 30:e sekund. För att sedan få fram det id som du ser under sensors så behöver du kontrollera Loggen efter du laddat upp den första koden.

Mer info kommer inom kort här med, men fram tills dess så finns det allt som behövs på ESPHome:s hemsida här: https://esphome.io/components/sensor/dallas.html

Snödjupsmätare med esphome

Vi har tidigare fått en fråga om att göra en snödjupsmätare, det har länge legat på listan över saker att göra. Men vi har inte haft tid och kunnat prioritera upp det. Men nu med esphome så går det snabbt att både testa och skapa en. Den första varianten vi gjorde var för att mäta pelletsnivån. vi löser det med hjälp av en pingsensor.

Redan nu har vi börjat testa att mäta Pellets, men inom kort ska vi testa att göra en sensor för att mäta snödjup på motsvarande sätt.
Vi håller på att testa att använda en ESP32 för att mäta avståndet via ”ping” sensor. Dvs den skickar ut ett ljud och mäter tiden det tar för att få svar. Sensorn längst ner till vänster är det som genererar grafen ovan.

För att gör en sensor som mäter avståndet så behöver du tillgång till en pingsensor, vi kommer inom kort uppdatera det här steget med mer information. Vi har inte fått alla delar på plats.

Vad kan du använda ESPHome till?

Om du inte ovan fått idéer så säg till, vi ser oändliga möjligheter med ESPHome eftersom detta nu kortar ner startsträckan i projekten. Vi kommer nu ersätta två av de Arduino projekt vi publicerat om på vår Instagram med ESPHome, både på grund av underhållet av koden och formfaktorn. Detta kommer dock kräva att vi tänker till mer på den wifi som nu kommer få ännu mer kritisk funktionalitet i vårt smarta hem 🙂

Om innan annat så är formfaktorn och funktionerna som ESP8266 och ESP32 erbjuder mycket bättre utifrån formfaktorn jämfört med Arduino med motsvarande funktionalitet…

Ser du något mer som saknas, eller vill veta mer om det? gå in på någon av våra sociala medier eller skriv en kommentar nedan så försöker vi svara så fort vi hinner med 🙂

Hjälpa Automatiserar.se?

Är du intresserad av att se vad som händer mellan våra inlägg så kan du följa oss på vårt Instagram (länk till vårt Instagram konto), där försöker vi dela vad som händer och är på gång. Är du intresserad av att diskutera eller få tips från andra så kan du gå med i vår Facebook grupp (länk till Facebook gruppen) som riktar sig till alla som tycker det är roligt med smarta hem och automation. Följ och gilla gärna vår sida på Facebook med (länk till automatiserar på Facebook).

Tycker du att du har nytta av denna blogg och alla inlägg som du läser helt utan reklam? Du kanske vill bjuda på en kopp kaffe medans vi skriver nästa inlägg? Vi tar gärna en Swish kopp kaffe0705470065 i så fall 🙂

Vi försöker tipsa hur du själv kommer igång och automatiserar. Vi kör sidan helt på fritiden och är helt oberoende och gör detta för att det är roligt, vill du hjälpa Automatisear.se, dela, gilla och följer sidan så får vi motivation att göra ännu mer 🙂

// Markus

Lämna en kommentar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *