Jag kommer i några inlägg beskriva hur du i Home Assistant tillsammans med Node-Red kan styra ditt hus genom att sätta det till hemma, borta eller sovläge samt i ett senare skede även semester. Detta går självklart att bygga ut i all oändlighet.
Vill du inte lära dig något utan bara kopiera kod så finns detta längst ner i inlägget.
OBS! Detta är en artikel som ursprungligen var publicerad på frosenlind.se den 7 november 2020.
Länkar i inlägget som hänvisar till gamla sidan kommer inte att fungera!
Förutsättningar
- Du har installerat Home Assistant, när detta skrivs är aktuell version 0.117.4, jag kör själv 0.116.4
- Du har installerat Node-Red och det är konfigurerat med Home Assistant. Jag kör version 1.2.2-12 av Node-Red.
Målbild
När vi är klara så stället huset själv in sig om vi är borta eller hemma samt vi har möjlighet att ställa huset i sovläge.
Genomförande
- Spåra en persons mobiltelefon.
- Skapa lista över vilka ”states” som huset kan vara i.
- Automatiseringen i Node-Red
- Skapa en knapp för att sätta huset i Sovläge.
People, är någon hemma?
Först vill vi se till att du finns och att vi trackar din mobiltelefon. I mitt exempel kopplar vi bara min mobiltelefon via GPS positionering men om du har ex. Ubiquiti UniFi integrationen så är det synnerligen lätt att koppla på att även spåra om du är uppkopplad mot Wifi.
Gå till Configuration -> People och se till att din mobiltelefon läggs in som ”Track Device”. Hittar du inte din telefon i listan så kanske du har glömt att ladda hem Home Assistents app?
Kontrollera även att Home Assistant vet var du bor. Configuration -> General. Se till att kartmarkören är på rätt plats.
Om du trackar flera devices till en person kan du läsa följande för att bättre förstå vilken prioritet de olika sätten har: https://www.home-assistant.io/integrations/person/
House state, en input_select
Nu vill vi skapa en lista med de alternativ som huset ska kunna vara i. Gå till Configuration -> Helpers och skapa sedan en ”Dropdown” genom att trycka på plusset nere till höger.
Vad | Värde | Kommentar |
---|---|---|
Name | House state | Detta bör vara något så DU förstår |
Icon | Kan vara tom, jag använder mdi:house. Vi kommer ändra detta senare. | |
Options | home, away, sleep | Observera att det INTE är några versaler. Endast små bokstäver. |
Entity ID | input_select.house_state | Jag kommer hänvisa till detta ID i senare kod. Se till att ändra/kontrollera till detta ID. |
Node-Red
Innan du gör något annat: starta om Node-Red.
Nu ska vi göra logiken. Vad vi vill åstadkomma är följande:
- Kolla om jag är hemma eller borta.
- Om jag är borta, sätt huset till away.
- Om jag är hemma, sätt huset till home, men bara om huset inte är i sleep.
Först drar vi in noden ”poll state” och lägger in vår person som entitet. Denna noden hämtar sedan positionen på vår person så ofta som du bestämmer, ett bra värde brukar vara att den hämtas en gång varje minut. I ”if state” så skriver du home. Din nod har nu två outputs, en om du är hemma och en om du inte är hemma.
Dra in noden ”current state” och i Entity ID skriver du vår input_select.house_state. I ”if state” skriver du sleep. Denna noden har nu också två outputs, en om huset är i sovläge och en om den inte är i sovläge.
Dra in två ”call service” noder. Det är med dessa noder vi manipulerar vår input_select så den får det värde vi vill.
I den övre noden, den som kommer efter ”sleep-noden” skriver vi {”option”:”home”} i fältet Data. I den undre noden skriver vi {”option”:”away”}
Input | Värde |
---|---|
Domain | input_select |
Service | select_option |
Entity ID | input_select.house_state |
Data | {”option”:”home”} / {”option”:”away”} |
Du borde nu ha ett flödesschema som ser ut som detta.
Återställa huset till Home
Innan vi lämnar Node-Red ska vi se till att huset återgår till läge Home på morgonen. Vi vill att huset återgår till läge Home varje dag klockan 06:00.
Dra in en ”Inject”-nod och ta bort eventuell payload som finns i noden. Längst ner så ändrar du till ”at a specific time” och väljer därefter vilka dagar och vilken tid du vill att noden ska aktiveras.
Kopiera därefter vår ”call service”-nod med option: home och länka ihop dessa två noder.
Våra två sequences i Node-Red
Aktivera sovläge från Home Assistant
Nu ska vi göra en enkel knapp i Home Assistant för att sätta huset i sovläge.
I skrivande stund kan man inte göra detta endast med det grafiska verktyget, av den anledningen gör jag det lätt för er och bifogar hela koden för knappen.
Vad vi gör är i princip samma sak som vi gjorde från Node-Red, vi gör ett service call och väljer sleep från vår input_select.house_state.
- Tryck på ”add card”-plusset i en lovelace view.
- Välj button card
- Längst ner står det ”SHOW CODE EDITOR”, tryck där och klistra därefter in följande YAML.
type: button
tap_action:
action: call-service
service: input_select.select_option
service_data:
option: sleep
entity_id: input_select.house_state
hold_action:
action: none
entity: input_select.house_state
show_state: true
Sammanfattning
Du har nu gjort följande:
- Du kan från Home Assistant trycka på en knapp för att aktivera ”Sleep mode”
- Klockan 06:00 varje morgon så ändras huset från ”Sleep mode” till ”Home”
- Om ingen är hemma sätts huset i ”Away”
Koden för knappen i HA hittar du strax ovanför detta.
Vill du kopiera in Node-Red flödena så hittar du koden för det här: https://gist.github.com/frosenlind/97536b33866a13753b9f871af03a49c3
Tackar för den utförliga förklaringen.
Tack för din kommentar Jonas! Lycka till med ditt smarta hem!
[…] Hemma/borta/sov med Home Assistant och Node-Red – Del 1 […]