Hemma/borta/sov med Home Assistant och Node-Red – Del 1

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.

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

  1. Spåra en persons mobiltelefon.
  2. Skapa lista över vilka ”states” som huset kan vara i.
  3. Automatiseringen i Node-Red
  4. Skapa en knapp för att sätta huset i Sovläge.

People, är någon hemma?

People i Home Assistant

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

input_select.house_state

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.

VadVärdeKommentar
NameHouse stateDetta bör vara något så DU förstår
IconKan vara tom, jag använder mdi:house. Vi kommer ändra detta senare.
Optionshome, away, sleepObservera att det INTE är några versaler. Endast små bokstäver.
Entity IDinput_select.house_stateJag kommer hänvisa till detta ID i senare kod. Se till att ändra/kontrollera till detta ID.
Lista över input_select.house_state konfuguration

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:

  1. Kolla om jag är hemma eller borta.
  2. Om jag är borta, sätt huset till away.
  3. 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”}

InputVärde
Domaininput_select
Serviceselect_option
Entity IDinput_select.house_state
Data{”option”:”home”} / {”option”:”away”}
Node-Red, service node, input_select

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

Vad näst?
Tipsa i kommentarerna nedan, på Facebook eller annat lämpligt sätt där jag finns.

2 Comments

  1. […] Vi behöver en helper för att kunna välja vilket läge huset ska vara i. Nedan får du uppsättningen på helpern, är du osäker HUR man skapar den så kan du läsa mer i detta lite äldre inlägget: http://frosenlind.se/hemautomation/hemma-borta-sov-med-home-assistant-och-node-red-del-1/ […]

  2. […] detta inlägget: http://frosenlind.se/hemautomation/hemma-borta-sov-med-home-assistant-och-node-red-del-1/ gjorde vi en knapp för att ändra husets status till “sleep”. Vi ska nu fräscha upp […]

Leave a Reply

Denna webbplats använder Akismet för att minska skräppost. Lär dig hur din kommentardata bearbetas.