Home Assistant hass

Del 3 – Förstå YAML och skapa sensorer i Hass.io

Vi har nu kommit till en tråkig del i Home Assistant, dvs hur ”kodar” man YAML och vad är det? Vi insåg att det kommer behövas sensor som så många som möjligt har tillgång till för att kunna följa och göra automationer i våra kommande guider. I del ett av vår Home Assistant guide inkluderade vi en Philips Hue brygga, från den kommer vi nyttja en Philips Hue rörelsesensor. Men alla har troligen inte någon Hue, därför hoppas vi att många har Rasberry PI och därigenom kan få sensorer (CPU temperatur & GPU temperatur, disk mm) så fler kan följa steg för steg i guiderna framöver med.

2023-02-26 – När det gäller hantering av Yaml och skapa sensorer i din Home Assistant installation så håller vi nu 2023 på att bygga upp en helt uppdaterad serie från start till mål – Guide För Nybörjare Med Fokus På Home Assistant Och Homey. Vi går igenom steg för steg så du kan bygga upp allt till en riktigt snygg lösning även om du är expert.

Kom igång med Home Assistant på Raberry Pi 4
Guide För Nybörjare Med Fokus På Home Assistant Och Homey.

Vill du förstå YAML och skapa sensorer så kan du även fortsätta i befintligt inlägg, för mycket av informationen är aktuell här med

Genom att göra det hoppas vi att så många som möjligt kan testa de automationer vi kommer skiva om kommande inlägg. Våra guide bygger på HASS.IO, detta för att så många som möjligt lätt ska komma igång och kunna fokusera just på Automation.

  • Vi kommer här gå igenom grunderna för att förstå sig på YAML, och vilka regler som gäller för att använda det till Home Assistant.
  • Förklara hur du installerar Configurator och förklara vad det är och hur den fungerar.
  • Visa steg för steg hur den YAML kod som behövs för att presentera sensorinformationen på bilden nedan.

Vill du se alla delar i vår serie så har vi samlat en övergripande meny här: https://www.automatiserar.se/hass-nyaguider/

Sensorinformation från Rasberry PI 4
När du följt den här guiden klart kommer du kunna presentera följande om du har kör HASS.IO på en Rasberry Pi.

Meny

Vi fortsätter där Del 2 slutade

I den föregående delen av vår guide på Home Assistant skapade vi ett modernt gränssnitt och började presentera sensorer från Philips Hue. Har du följt den så bör du ha ett liknande gränssnitt som filmen nedan visar. Vi kommer nu fortsätta att skapa ännu en flik dedikerad för alla som använder Rasberry PI. Även om du inte använder Rasberry PI för din installation så läs igenom nästa del. Den bygger upp den YAML kod som vi senare kommer dela upp och förklara steg för steg. Och innan du påbörjar en förändring, ta för vana att göra en backup och export av din konfiguration.

Om du följde förra delen i vår Guide så bör du ha ett liknande gränssnitt som filmen visar.

Skapa ett Rasberry PI kort i Lovelace UI

För alla som följer den här guiden och använder en Rasberry PI, följ gärna det här steget med om du vill kunna presentera din Rasberry PI:s driftstatus som vi gjorde på bilden i toppen av inlägget. Vill du inte presentera informationen, utan bara är ute efter att få tillgång till sensorerna så kan du hoppa vidare i guiden. Är du osäker på hur du jobbar med LoveLace UI så kan du läsa den andra delen av vår Home Assistant guide, där fokuserar vi helt på just LoveLace UI

Skapa ett nytt kort
börja med att trycka på de tre punkterna längst uppe till höger och Configure UI, sedan väljer du att trycka ”+” för att skapa ännu en Sida.
Välj här att skapa kortet
Vi väljer här att döpa kortet till ”RPI Info”, namnet är helt valfritt och spelar inte någon roll.

Kom igång med Configurator

För att kunna editera och ändra konfigurationen i Home Assistant utan SSH (fjärrstyrning från en annan dator till HASS) eller SMB shares (utdelad mapp från din HASS) så kommer vi använda ett tillägg som heter Configurator. Den tillåter dej att hantera din Home Assistant konfiguration direkt i webbläsaren, formatet man arbetar med kallas YAML (Ett format som ska vara lättläst enligt WIKI – extern länk). Home Assistant har även en guide på hur man lägger till Configurator (extern länk)

Installera Configurator

Vi kommer att återkomma mer till vad ”Add-ON store i kommande inlägg. Men enkelt förklarat så är det färdigpaketerade tillägg till Home Assistant, all konfiguration samlas sedan till tillägget. Detta gör att kravet på Python och Linux kunskap inte behöver vara lika stor. Det gör även att man snabbt kan komma igång med nya tillägg. Vi kommer skriva en del om just deCONZ framöver med eftersom vi har en Conbee sticka (hårdvara för att prata Zigbee).

Nere till vänäster finns Hass.IO
Öppna Hass.io för att komma vidare till ADD on store.

Vi kommer nytta en färdig paketering av ”Configurator” för att i webbläsaren kunna ändra i regelverket för Hass.io.

Hass.io Configurator
Välj nu ”ADD-ON” store och sedan letar du fram ”Configurator” och klickar på det kortet.
Installation av Configurator
Vi väljer nu att installera Configurator.
Starta configurator och mappa upp
När installationen är klar så väljer vi att få en genväg till vänster genom att aktivare ”Show in sidebar” och att den ska auto uppdatera. När det är gjort så trycker du ”START”

Nu har du installerat ett tillägg till HASS.IO, mycket enkelt och smidigt till skillnad mot hur det har varit tidigare. Kollar man en bit ner i listan i Add-ON store så finns även ett av våra favoritverktyg när det gäller automation i listan, nämligen Node-RED. Vi har här skrivit en kom igång för just Node-Red. Känner du att du redan nu vill testa mer avancerad automation så rekommenderar vi att du testar Node-Red addon:et. Annars kan du avvakta på våra kommande guider, vi kommer skriva mer om Node-Red och kombination med HASS.IO snart.

Så fungerar Configurator

En viktig del när det gäller att hantera HASS.IO är möjligheten att editera .YAML filer, till en början så kommer vi skriva om just hantering via webbläsaren för att hålla det så enkelt som möjligt. Har du följt steget innan så bör du nu ha ”Configurator” till vänster i menyn. Öppna den och klicka sedan på mapp ikonen som vi ringat in med en röd ring. Vill du göra en djupdykning i YAML så har Home Assistants sida en bra guide här (extern länk)

Hass.io öppna Configurator
Börja med att trycka på mapp ikonen som vi markerat med en röd ring ovan.

Vi har fram tills nu inte alls nämnt något om den viktigaste filen ”configuration.yaml”. Den filen är den kanske viktigaste filen i hela Home Assistant ( rätta mig om jag har fel), men ändrar du innehåll i den filen utan att uppfylla reglerna som YAML kräver så startar inte din Home Assistant längre. Därför är det extra viktigt att verifiera att din konfiguration gick rätt till innan du sparar.

Inte för att skärmas, men ha för vana att kopiera ut texten du har i configuration.yaml till anteckningar, skulle du bli osäker på vad du ändrat eller helt vill ångra dig så kan du återställa därifrån sedan. Nu finns det även skydd i Configurator som validerar det du skrivit in innan du sparar. Ska du göra mycket ändringar så kan det även vara på plats att göra en SNAPSHOT via menyn HASS.IO / SNAPSHOT / full snapshot och sedan ladda ner den lokalt.

Börja med att i fil menyn som öppnades välja ”configuration.yaml”, när du väljer den kommer du troligen se ett liknande resultat som den rödmarkerade ringen på bilden nedan. Vi kommer fokusera på den filen till en början för att inte göra det mer komplicerat än det behöver. När vi kommit en bit längre i den här serien så kommer vi börja dela upp och skriva configurationen i egna YAML filer, dvs vi vi börja inte nu med att dela upp det i egna yaml filer för att hålla det så enkelt som möljligt.

Öppna Config.yaml

Lägg till konfiguration för Rasberry PI

För alla som kör sin Hass.IO installation på Rasberry pi så kommer följande steg vara möjligt att utföra, har du valt att köra din installation virtuellt kan du hoppa över att utföra just det här stegen, men läs dom gärna. Vi visar och förklarar hur vi lägger till tillägg för att läsa status från vår Rasberry PI och hur Configurator fungerar.

Vi kommer börja med att lägga till en komponent (integration) som heter ”systemmonitor” (länk till home assistants sida med mer info). Bilden nedan visar hur dokumentationen för en integration ser ut på Home Assistants hemsida. Vi valde den här komponenten eftersom vi googlat oss till att den ska fungera riktigt bra på en Rasberry PI och göra precis det vi vill, vilket är att läsa ledig disk, cpu mm från Rasberry pi och göra dom tillgängliga i Home Assistant. Vi kunde tyvärr inte få allt via den här, så två delar kommer att hämtas via

Home Assistant system monitor
När du hittar en integration så kan du på Home Assistants hemsida läsa mer om dom, just den här är System Montor (extern länk)

Nedan har vi nu lagt till konfiguration för både Systemmonitor och även två script för att läsa ut temperatur från Processor och GPU på Rasberry PI. Vi har där medvetet valt att skriva ”fel” i konfigurationen. All information är helt rätt, men det finns felande mellanslag (vilket är något YAML är mycket noga med!). Configurator ger då en röd varning längst upp till höger att något inte är korrekt skrivit i vår Configuration.yaml

Exempel på felade konfig
Vi har här medvetet skrivit för många mellanslag och därigenom varnar Configurator.

Bilden nedan har vi tagit bort de felande mellanslagen till vänster om ”value_template” på rad 34, vilket gör att den röda cirkeln med en varning nu bytts till en grön cirkel.

Uppdaterad Config
# Automatisear.se:s kod för att få upp alla Rasberry PI sensorer:

# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:
# Uncomment this if you are using SSL/TLS, running in Docker container, etc.
# http:
#   base_url: example.duckdns.org:8123

# Text to speech
tts:
  - platform: google_translate

group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml

sensor:
  - platform: systemmonitor
    resources:
      - type: disk_use_percent
        arg: /home
      - type: memory_free
      - type: memory_use
      - type: last_boot
      - type: processor_use
      - type: load_1m
      - type: swap_use
  - platform: command_line
    name: GPU Temperature
    command: "/opt/vc/bin/vcgencmd measure_temp"
    unit_of_measurement: "°C"
    value_template: '{{ value | replace("temp=", "") | replace("''C", "") }}'
    
  - platform: command_line
    name: CPU Temperature
    command: "cat /sys/class/thermal/thermal_zone0/temp"
    unit_of_measurement: "°C"
    value_template: '{{ value | multiply(0.001) | round(1) }}'
# Klart

Vi kommer förklara mer i detalj vad detta innebär en bit ner, börja med att kopiera in koden ovan och se om du får en grön bockruta i din Home Assistant. Vi har testat den mot vår egna och den verifierades korrekt.

Spara din Configuration.yaml
När du verifierat att det ser ok ut kan du spara dina inställningar med genom att trycka på den röda disketten.

När du gjort ändringar i Configuration.yaml krävs det i regel en omstart av HASS för att få inställningen att tillämpas. upp till höger i din Home Assistant finns ett kugghjul som gör att du kan köra ”relade core” eller ”Restart Hass”. För att slippa felsöka något som helt enkelt inte tillämpats i Home Assistant så brukar jag ha för vana att trycka ”restart HASS”. Då får jag även en kvittens att min konfiguration fungerar även efter en omstart. Risken finnas att ens installation går prefekt tills den startas om, och då uppkommer något problemen.

Starta om din HASS.IO
När du gör ändringar i Configuration.yaml så behöver din Home Assistant starta om för att tillämpas.

Förklaring av YAML

Vi inser själv att det kommer behövas en förklaring om vad YAML är och hur det det används i Home Assistant. Vi kommer utgå från dokumentationen vi läser på Home assistants info om YAML. Vi förenklar och förklara de delar vi använder till en början. Vilket gör att det kan vara värt att gå in på länken och själv skumma igen om du upplever att vi missat att tagit med något viktigt, skulle det vara så skriv gärna en kommentar så försöker vi uppdatera.

En ”komponent” är det som återfinns längst till vänster utan mellanslag, i exemplet ovan är ”tts:”, ”group:”,”automation:”, ”script:”, ”sensor:” komponenter. En komponent är kärnan som logisk funktionalitet till underliggande ”plattformar”.

komponenten ”sensor:” som vi använder för att lyfta fram sensorerna från Raspberry PI är grunden, vi väljer sedan att hämta sensorer från plattformarna ”systemmonitor” och två från plattformen ”command_line”. Det är med hjälp av plattform som mjukvara eller hårdvara anropas. Vi kommer förklara steg för steg hur YAML koden i bilden ovan är uppbyggd om en liten stund.

Regler för att skriva YAML

Som vanligt finns det regler att förhålla sig till, annars kommer HASS att i värsta fall inte starta korrekt om fel YAML sparas, det finns vissa regler i hur formateringen av YAML ska se ut .

  • YAML gör skillnad på stora och små tecken.
  • För att skriva en kommentar och dokumentera YAML kod så används ”#” tecknet längst till vänster på en rad, detta signalerar att det är en kommentar och att det inte ska behandlas som kod av HASS.
  • Den första regeln är att inte använda ”TAB” tecken, den indenteringen till vänster du ser är 2 mellanslag. YAML använder det för av avgöra vilken nivå inställningen skrivits på.
  • En lista (flera av samma typ) i YAML börjar med ett minustecken ( – ), varje samling baserar sig på ”key – value”, dvs en nyckel och värdet för den nyckeln.

Förklaring av vår YAML rad för rad.

Vi skrev i delen ”Lägg till konfiguration för Rasberry PI” en bit upp den YAML kod som vi använder i det här inlägget. Den koden bryter vi nu ner rad för rad och hoppas i och med det ge en inblick i YAML och formateringen. Verkar det konstigt så skriv gärna en kommentar eller tipsa på hur det kan göras bättre. Den första och andra delen av YAML koden är det som HASS kommer med default.

# Första delen av YAML koden:
# Automatisear.se:s kod för att få upp alla Rasberry PI sensorer:

# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:
# Uncomment this if you are using SSL/TLS, running in Docker container, etc.
# http:
#   base_url: example.duckdns.org:8123

Som du ser ovan så börjar alla rader förutom ”default_config” med ett ”#” tecken, detta gör att den enda delen Hass tolkar som kod är ”default_config”. I vårt exempel så har vi inte gjort något alls, men följande laddas in automatiskt: automation, clound, config, frontend, history (och en massa till!, hela listan finns här: Default config Hass hemsida.

Bara genom att ha raden ”default_config” så får vi massor med möjligheter i HASS.

# Andra delen av YAML koden:
# Text to speech
tts:
  - platform: google_translate

group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml

I den andra delen ovan laddas nu tts: in, tts står för Text to Speech. Vilket är möjligheten att få text uppläst, på vår Instagram visade vi ett exempel med Homey tidigare. Vi kommer inte nyttja detta i vårt exempel, utan vi låter det stå kvar i konfigurationen så länge.

# tredje delen av koden

sensor:
  - platform: systemmonitor
    resources:
      - type: disk_use_percent
        arg: /home
      - type: memory_free
      - type: memory_use
      - type: last_boot
      - type: processor_use
      - type: load_1m
      - type: swap_use

# Slut del 3

Under sensor i del 3 har vi flera enheter vi vill använda, därför krävs det att vi nyttjar ett ”-” tecken, dvs – platform: systemmonitor. För att veta vad som är möjligt att göra med just System monitor så behöver man läsa på om integrationen ”System Montitor”. Vi tog relatit mycket som standard från länken och valde att kolla hur många % av disken som används av ”/home”.

System Monitor settings
Vi ser att vi är intresserade av att få veta hur många % disk en sökväg använder, detta gör vi genom att först ange type till disk_use_procent och som argument sätter vi arg till /home

Konfigurationen för att få veta just disk blir då följande i punktlistan nedan. Eftersom vi är ute efter mer än bara disk_use_procent så behöver ”type” börja med ett minustecken ”-type”, detta talar om att det rör sig om fler än en konfiguration.

  • -type: disk_use_percent
  • arg: /home

Vi skriver nu in alla ”-type” vi är intresserad av och sedan fortsätter med nästa plattform. Nu kommer vi köra två ”script” för att få fram temperaturer från vår rasbbery PI 4, orsaken att vi vill ha CPU & GPU temperaturen övervakad är för att värme är ett problem med RPI4 med original firmware.

# Fjärde delen av vår YAML kod
  - platform: command_line
    name: GPU Temperature
    command: "/opt/vc/bin/vcgencmd measure_temp"
    unit_of_measurement: "°C"
    value_template: '{{ value | replace("temp=", "") | replace("''C", "") }}'
    
  - platform: command_line
    name: CPU Temperature
    command: "cat /sys/class/thermal/thermal_zone0/temp"
    unit_of_measurement: "°C"
    value_template: '{{ value | multiply(0.001) | round(1) }}'
# Klart

Åter igen så börjar vi med två mellanslag och ”- platform: command_line”. Command line Sensor (länk till Hass info) gör det möjligt att ta resultat från ett script eller en applikation som ett sensorvärde. Efter lite googlande hittade vi ett bra sätt att få tillbaka korrekta GPU och CPU temperaturer, vi hittade informationen på Home assistants community sida. Detta gjorde att vi inte behövde köra trial and error för att själva komma fram till något likande.

  • name: GPU Temperature – Detta är vad du kommer se som sensornamn i din Home Assistant installation.
  • command: ”/opt/vc/bin/vcgencmd measure_temp” – koden som ska köras när sensorn exekveras.
  • unit_of_measurement: ”°C” – Här säger vi till att vi vill få resultatet precenterat som celcius
  • value_template: ’{{ value | replace(”temp=”, ””) | replace(””C”, ””) }}’ – med hjälp av en template så kan vi beräkna om resultaet och sätta ”°C”

Vi behöver förkara ”unit_of_measurement” mer än vad vi gör här, men snabbt förklarat så är det en ”template sensor” med hjälp av den så kan man använda ”value_template” för att ändra värdet vi fick i ”command” till vårt önskade format.

Normalt så ligger vår RPI 4 nu på ~50 grader utan allt för hård belastning med helt passiv kylning.

Installation av HASS.IO på en Raspberry pi4
Den Raspberry PI 4 vi använder har vi ett Aluminium skal på som kyler CPU & GPU. aluminium skalet fick vi tillågn att testa av M.nu (länk till m.nu & stort tack för möjligheten!)

Nu börjar vår egna YAML kod dyka upp, det är inte något avancerat alls, men med hjälp av formateringen så får vi nu i ett ”Sensor card” (länk till vårt lovelace UI) får vi nu fram last_boot, load_1m, memory_free osv. Alla dessa är nu samlade under ”sensor”, som du ser i listan har vi även tillgång till CPU temperatur och Hue röreselsesensorn.

Sensor Card YAML

För att nu bygga gränssnittet vi presenterar nedan så använder du Sensor Card Configuration och väljer sensorerna i listan ovan. I länken till del 2 i vår serie om Hass ser du hur sensor Card konfigureras.

Sensorinformation från Rasberry PI 4
Nu bör du kunna återskapa följande överblick i din egna HAss installation. dom orangea graferna kommer dyka upp allt eftersom tiden går.

Nu har det blivit en hel del skrivande och den här guiden börjar bli relativt lång, vi väljer därför att avrunda och påbörja nästa del som är automationer i Home Assistant, egentligen skulle det ha varit den här delen, men vi väljer att lägga det som del 4 i vår serie. Hoppas du uppskattar tiden vi lägger på att skriva den här serien 🙂

Hjälpa Automatiserar.se

Vad tyckte du om del 3 av guiden? Missade vi något eller var det saker som du inte höll med på, kanske var steg som inte fungerade för dig? Det kanske finns bättre sätt att göra det på än det vi gjorde? Tipsa i så fall här eller i vår Facebook grupp.

Ä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). Vi har även en Patreon sida (extern länk) för dom som vill supporta oss löpande, eller swisha en slant till en kaffe på 0705470065 medan vi skriver på nästa inlägg om du uppskattade den här guiden.

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

3 reaktioner på ”Del 3 – Förstå YAML och skapa sensorer i Hass.io”

  1. Jätte bra guide

    Vet ni eller någon annan som läser tråden om jag kan skapa en räknare i HA
    Jag skulle vilja räkna hur många gånger en tempraturgivare har varit över 30 grader
    Varför: Tanken är att se hur många gånger jag har eldat i vedspisen 🙂

    Kan jag använda Statistics Sensor samt typ variabel

    Tack för en bra sida

  2. Hej, lite kommentarer från läsare Dan L. Har kopierat ngn text för och ger justerings förslag 🙂
    1. ”- type” i nedan text blir tydligare för läsaren/mig (mellanslaget alltså)
    tlistan nedan. Eftersom vi är ute efter mer än bara disk_use_procent så behöver “type” börja med ett minustecken “-type”, detta talar om att det rör sig om fler än en konfiguration.

    2. Skulle vara intressant att få förklarat varför GPU o CPU temperaturen inte finns som – type under System Monitor utan kräver script, som ju nu blir något nytt för mig/läsaren. Jag inser så klart att det är så HA är uppbyggt men kanske man enkelt kan förklara varför dessa två senare inte ingår…..

    Ja det var det 🙂 Tusen tack för del 3!! Ser fram mot del 4. Vet ni när?
    Mvh
    Dan L

Lämna en kommentar

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