Introduktion: Sådan bruger du Node-RED til dine automatiseringer
I denne guide vil jeg forsøge at beskrive, hvad Node-RED er. Jeg vil også forklare, hvordan det kan bruges sammen med Home Assistant (HA).
Guiden er først og fremmest henvendt til dem, som skal i gang med at lave de første automatiseringer i Node-RED.
Der er forhåbentligt også inspiration at hente for dem, der allerede bruger Node-RED sammen med HA. Jeg viser således eksempler på automatiseringer, som jeg selv anvender til dagligt.
Guiden beskriver ikke, hvordan Node-RED installeres eller al dens funktionalitet. Den fokuserer derimod på de elementer, som man oftest vil have behov for at anvende til at begynde med.
Se følgende links for vejledning i installationen af Node-RED som et tilføjelsesprogram i HA:
Hvad er Node-RED?
Node-RED er et såkaldt flow-baseret programmeringsværktøj, som er udviklet af IBM til brug for programmering af primært Internet of Things (IoT) systemer.
I modsætning til traditionelle programmeringsværktøjer er Node-RED kendetegnet ved, at de handlinger, som f.eks. en automatisering skal udføre, laves visuelt ved at knytte forskellige elementer (noder) sammen i en samlet proces (flow). Dette er vist her i eksemplet:
Det viste flow består af tre noder, som hver time kontrollerer batteristatus på et batteritryk (f.eks. en Hue Dimmer Switch eller IKEA TRÅDFRI fjernbetjening) og i tidsrummet 7-22 sender en notifikation til en mobiltelefon, hvis der er mindre end 30% batteri tilbage.
De enkelte noder, der er anvendt i eksemplet ovenfor, vil blive beskrevet i det næste afsnit, men først en kort introduktion til brugergrænsefladen i Node-RED.
Node-RED afvikles i en browser og ser således ud, når det er installeret som addon i HA:
Node palette
I venstre side af skærmen findes en oversigt (palette) med de forskellige noder, som man kan bruge til at bygge sin automatisering med. Hver node er beregnet til at gennemføre en eller flere specifikke handlinger, f.eks. hente værdien fra en enhed i HA (eksempelvis om en person er hjemme eller ej) eller starte en service i HA (tænd lys, spil musik mv.).
Hvis du har installeret Node-RED addon til HA, vil du øverst i paletten allerede have de nødvendige noder til at kunne bygge automatiseringer, der styrer dine enheder i HA. Du kan også installere en masse andre noder i menuen under “Manage palette“. Det kan være nødvendigt, hvis du importerer et flow fra en anden bruger, som har brugt noder, du ikke har installeret.
En node kan ses lidt som en byggeklods for din automatisering, hvor man sætter flere handlinger sammen i et flow for at opnå det ønskede resultat.
Hver node vil som udgangspunkt bestå af følgende dele:
Input | Parametre | Output |
Et input, som modtager en eller flere værdier fra en foregående node i flowet f.eks. værdien af en ændring til en enhed i HA. | En eller flere parametre. Parametre bruges til at angive, hvilke enhed i HA, som en given handling skal udføres for, eller hvilken værdi, som skal behandles af noden og sendes videre til de efterfølgende noder | Et eller flere output, som sender en værdi eller besked videre til den næste node i flowet |
Det er ikke alle noder, som f.eks. har et input. Noder uden input vil typisk være dem, du starter med i dit flow. Det kan f.eks. være en node, der reagerer på en specifik hændelse i HA på samme måde, som en trigger fungerer i HA’s automatiseringer.
Der findes også få noder, som ikke har et output og de vil således afslutte et flow, men man kan også afslutte flows med noder, der har output, men som bare ikke forbindes med en ny node.
Forskellige noder fungerer således som henholdsvis triggers, conditions og actions, som du måske kender fra dine automatiseringer i HA.
I et flow kan du have lige så mange noder, som du ønsker, og derfor kan du bruge mange forskellige triggers og conditions i det samme flow og samle relaterede automatiseringer i ét flow. Det giver dig et godt samlet overblik over f.eks. al din lysstyring.
Flow designer
Den midterste del af skærmen benyttes til at designe automatiseringer i forskellige flows, der vises i hver sin fane. Man kan tilføje et nyt flow ved at klikke på ”+” ikonet.
Man trækker de nødvendige noder ind fra node paletten i venstre side og forbinder de enkelte noders input og output ved at trække pile mellem dem.
Konfigurationen af den enkelte node foretages ved at dobbeltklikke på noden. Herefter kan man indtaste de parametre¸ som er nødvendige for at bestemme, hvordan handlingen skal udføres.
Nedenstående eksempel er fra den første node i flowet, som er vist i Figur 1 ovenfor. Det er en Poll State node, der henter en værdi fra et batteritryk i HA hver time:
Figur 3: Eksempel på poll state node
I denne node, er der angivet følgende:
- Hvilken enhed i HA, der skal hentes værdi (state) fra. Navne på enheder hentes fra HA, så man kan vælge dem på en liste, hvis man starter med at skrive navnet på enheden, f.eks. ”sensor.”
- Hvor ofte værdien skal hentes fra HA
- Hvilken betingelse, der skal være opfyldt, før at output sendes videre og flowet fortsætter
Deploy
I højre side af skærmbilledet er der øverst en Deploy knap, som man bruger til at aktivere sin automatisering, når flowet er klar til at blive testet. Ændringerne gælder med det samme, så du slipper for at genstarte HA eller genindlæse dine automatiseringer, hvis de er lavet i YAML.
Menu og sidebar
Ved siden af knappen findes menuen, hvor man bl.a. kan eksportere og importere flows, så man kan hente inspiration fra eller dine sine automatiseringer med andre brugere.
Man kan også installere flere paletter (under menupunktet Manage palette) med ekstra noder med yderligere funktionalitet, f.eks. for at integrere med Sonos, DeCONZ mv. direkte i Node-RED.
Under menuen findes et sidepanel (sidebar), hvor man bl.a. kan få vejledning til brugen af de forskellige noder samt et debug vindue, som man kan bruge til fejlsøgning. Mere om dette senere.
De mest anvendte noder
Dette afsnit beskriver de noder, som bruges til integrationen med HA samt øvrige relevante noder, som man ofte vil bruge i sine flows. I beskrivelsen er det endvidere angivet, om noden er demonstreret i et eller flere af de efterfølgende eksempler på automatiseringer.
Home Assistant noder
HA’s Node-RED addon indeholder i alt 14 forskellige noder, som man kan anvende til at bygge automatiseringer, der anvender enheder og funktionalitet i HA.
Hver node er kort beskrevet nedenfor med eksempler på, hvornår de kan bruges:
Node | Beskrivelse | Eksempel på anvendelse |
---|---|---|
Events: all noden anvendes til at reagere på en hvilken som helst hændelse i HA. BEMÆRK: Der bør altid angives en ”event_type”, da noden ellers vil reagere på alle HA hændelser, hvilket kan overbelaste HA og Node-RED. | Noden kan f.eks. benyttes til at reagere på en hændelse i DeCONZ, Hue, ZHA eller tilsvarende og benyttes ofte til at opfange tryk på knapper på forskellige batteritryk. Noden er anvendt i efterfølgende eksempel #1 og 2 | |
Events: state noden anvendes til at reagere, når en HA enhed har haft en given status i en nærmere defineret periode. | Dette kan f.eks. benyttes til at starte et flow, der slukker lyset 5 minutter efter sidste bevægelse er registreret af en bevægelsessensor. | |
Trigger: state noden anvendes som navnet antyder som trigger, når en eller flere enheder i HA skifter værdi (state). Der kan tilføjes en eller flere betingelser, som skal være opfyldt, før flowet fortsætter. Det kan f.eks. være state værdien for enheden før ændring og efter ændringen eller en hvilken som helst anden værdi (attribut) for enheden. | Noden kan f.eks. benyttes til at reagere på, at en sensor (f.eks. en dørsensor) skifter værdi til åben. Noden er anvendt i efterfølgende eksempel #1 | |
Poll state noden anvendes til løbende at hente en værdi fra en HA enhed efter et nærmere defineret tidsinterval. | Noden kan f.eks. benyttes til at hente gps koordinater fra en tracker hvert 5. minut og bruge dem i en automatisering til at beregne, hvor langt væk hjemmefra en given person er. | |
Webhook noden anvendes til at reagere på HA webhook hændelser. | Noden kan f.eks. benyttes til at integrere med eksterne websider, som kan sende data til HA såsom IFTT servicen. | |
Zone noden anvendes til at reagere på, at én eller flere personer ankommer til eller forlader en given zone. | Noden kan f.eks. benyttes til at starte en automatisering når en person forlader arbejdet eller ankommer til hjemme zonen. | |
Call service noden anvendes til at starte en hvilket som helst service i HA på samme måde som actions i en HA automatisering. | Noden kan f.eks. benyttes til at tænde lys eller sende en besked til en mobiltelefon og alt andet, som er udstillet som en service i HA. Noden er anvendt i efterfølgende eksempel #1, 2 og 3 | |
Entity noden anvendes til at oprette en ny eller ændre en eksisterende enhed (sensor) med tilhørende værdier i HA. | Noden kan f.eks. benyttes til at lave en ny sensor med data, som hentes fra en web-side. Noden er anvendt i efterfølgende eksempel #4 | |
Fire event noden anvendes til at sende en hændelse til HA, som kan anvendes som trigger i en HA automatisering eller et andet Node-RED flow. | Noden kan f.eks. benyttes til at starte et Node-RED flow fra et andet flow ved at sende en hændelse om f.eks. at en værdi er ændret for en HA enhed. Samme effekt kan opnås ved at ændre værdien med en entity node. | |
Current state noden anvendes på samme måde som poll state noden til at hente data fra en given HA enhed, men current state noden har både et input og output og kan derfor bruges overalt i et flow til at hente værdier for en HA enhed. | Noden kan f.eks. anvendes til at hente data om solens stilling på himlen og bruge den oplysning i et flow til at vælge, om og hvor meget lys, der skal tændes ved registrering af bevægelse. Noden er anvendt i efterfølgende eksempel #2 | |
Get entities noden anvendes til at hente værdier fra flere forskellige HA enheder, f.eks. enheder af en bestemt type. Den kan også benyttes til at tælle antallet af enheder i HA, der opfylder bestemte betingelser, f.eks. antallet af åbne døre og vinduer. | Noden kan f.eks. anvendes til at hente batteristatus for alle batteridrevne enheder og bruge det i et flow til at sende besked om enheder med lavt batteri. Noden er anvendt i efterfølgende eksempel #3 | |
Get template noden kan bruges til at afvikle Jinja2 template kode og bruge resultatet i en Node-RED automatisering. | Noden kan f.eks. anvendes, hvis du ønsker at konvertere en eksisterende HA automatisering, der bruger templates, til Node-RED. | |
Wait until noden kan anvendes til at sætte dit flow på pause indtil en bestemt betingelse er opfyldt. | Noden kan f.eks. anvendes til at vente med at starte en automatisering indtil en mobilenhed er tilkoblet til Wi-Fi, når en person kommer til hjemmezonen. | |
API noden kan anvendes til at kommunikere direkte med HA’s API service og benytte funktionalitet, der ellers ikke findes en HA standard service til. | Noden kan f.eks. anvendes til at hente data fra HA’s konfigurationsfiler eller fejlbeskeder fra logfilen. Se evt. mere i HA udvikler dokumentationen: https://developers.home-assistant.io/docs/api/rest |
Øvrige noder
Ud over de HA specifikke noder indeholder Node-RED en lang række andre noder, som man kan anvende i sine automatiseringer. Der er mange at vælge imellem, men dem, som man ofte vil have brug for, er beskrevet her:
Ofte kan det ønskede resultat i et flow opnås på flere forskellige måder, så der er ingen rigtig eller forkert måde at opbygge sine flows på. I det efterfølgende afsnit med eksempler, vil jeg vise, hvordan jeg har valgt at bruge de fleste af ovenstående noder i mine egne automatiseringer til styring af lys, dørklokke, sende notifikation ved lavt batteriniveau og hente data fra en webside.
Node | Beskrivelse | Eksempel på anvendelse |
---|---|---|
Inject noden anvendes til at starte et flow på et givet tidspunkt eller indsætte en værdi, der sendes til den næste node i flowet. | Noden kan f.eks. anvendes til starte en automatisering hver dag på et bestemt tidspunkt eller efter et defineret interval af antal enten timer, minutter eller sekunder. Noden er anvendt i efterfølgende eksempel #3 og 4 | |
Change noden anvendes til at ændre indhold af input, f.eks. ved at flytte, slette eller ændre data i det modtagne input inden det sendes videre til den næste node i flowet. | Noden kan f.eks. anvendes til at flytte en værdi fra inputtet til et nyt output, så den oprindelige data ikke bliver overskrevet eller fjerne dele af inputtet, f.eks. ved at søge og erstatte tekst. Noden er anvendt i efterfølgende eksempel #4 | |
Template noden anvendes til definere output, så det følger et specifikt format. | Noden kan f.eks. benyttes til at kombinere værdier fra flere forskellige HA enheder i et samlet output, der kan anvendes af de efterfølgende noder til f.eks. at sende en notifikation. Den kan også bruges til at lave en JSON liste med variabler, der skal anvendes på et senere tidspunkt i automatiseringen. Noden er anvendt i efterfølgende eksempel #2 og 3 | |
Switch noden har som funktion som et sporskifte for et tog. Noden kan have mange forskellige output, så et flow kan fortsætte i forskellige retninger alt afhængigt af hvilken værdi, der modtages som input. | Den kan f.eks. benyttes til at lave forskellige handlinger, når der er nogle hjemme og når alle er ude. Eller til at udføre forskellige handlinger alt afhængigt af hvilken knap, der trykkes ned på et batteritryk. Noden er anvendt i efterfølgende eksempel #1 og 2 | |
Time range noden anvendes til kontrollere, om den aktuelle tid ligger indenfor et defineret tidsinterval. | Noden kan f.eks. anvendes til at lave forskellige automatiseringer om aftenen og om dagen. Noden er anvendt i efterfølgende eksempel #2 | |
Stoptimer noden anvendes til stoppe udførelsen af det efterfølgende flow i en nærmere defineret periode angivet i enten antal timer, minutter eller sekunder. Nedtællingen starter forfra, hvis noden modtager et nyt input inden nedtællingen er færdig, f.eks. hvis en ny hændelse registreres. | Noden kan f.eks. benyttes til at slukke lyset efter en nærmere fastsat periode uden registrering af bevægelse. Noden er anvendt i efterfølgende eksempel #1 | |
Function noden anvendes til at køre JavaScript kode, der kan anvendes til at behandle, formatere og ændre data inden det sendes videre til næste node. | JavaScript er et selvstændigt programmeringssprog, så der er næsten uanede muligheder, hvis man i forvejen kender til det eller finder eksempler på kode, som kan genbruges / tilrettes. Læs evt. mere om JavaScript på W3Schools. Noden er anvendt i efterfølgende eksempel #4 | |
Debug noden anvendes til at sende output til debug vinduet, så man kan f.eks. se hvilke data, der sendes som output og lave fejlsøgning. | Noden er rigtig god at benytte, mens man bygger sine flows, så man kan se, hvilke data, som sendes videre fra én node til en anden. Det gør det meget lettere at finde og rette evt. fejl i automatiseringen. Noden er anvendt i efterfølgende eksempel #1 og 4 | |
Comment noden anvendes til at tilføje kommentarer til dit flow. | Noden kan være relevant at anvende i større flows, der f.eks. indeholder flere forskellige triggere, så man hurtigt kan se, hvad formålet er med den enkelte del af flowet. Man bør også tilføje overordnede kommentarer til hele flowet til kort at beskrive formål og funktion. Noden er anvendt i efterfølgende eksempel #1 og 4 |
YAML versus JSON
Nu bliver det en lille smule teknisk, men det er vigtigt for at kunne forstå, hvordan man f.eks. kan konvertere en eksisterende HA automatisering til Node-RED.
Automatiseringer i HA er skrevet i det kodesprog, der hedder YAML. Node-RED bruger derimod JSON til f.eks. at angive data parametre i en call service node.
Hvis du har brugt YAML kode før, er du nok vant til, at holde styr på indrykninger i din kode og bruge bindestreger til at lave lister med forskellige værdier osv. I JSON skal koden skrives lidt anderledes. Det er vist i nedenstående eksempel, hvor der sættes en farvekode og lysstyrke for en pære i hhv. YAML og JSON format:
YAML kode | JSON kode | |
brightness: 33 rgb_color: - 255 - 27 - 44 | { "brightness": 33, "rgb_color": [ 255, 27, 44 ] } |
Der findes heldigvis online værktøjer, der kan hjælpe med at konvertere en kode fra YAML til JSON eller omvendt. Så det behøver ikke være så svært, som der ser ud. Brug f.eks. Code Beautify, der også farvekoder YAML og JSON koden.
Eksempler på automatiseringer
Dette afsnit indeholder eksempler på flows, som jeg anvender til forskellige formål. Eksempelvis til styring af lys, dørklokke, sende notifikation ved lavt batteri-niveau eller hente data fra en webside.
Eksemplerne er udvalgt for at demonstrere brugen af de forskellige noder. Der er i slutningen af hvert eksempel indsat link til Pastebin. Her kan du hente hvert flow. Så kan du selv teste og bygge videre på eksemplerne.
Du kan hente og importere et flow ved at følgende nedenstående trin:
- Klik på linket for at åbne Pastebin
- Klik på raw knappen
- Tryk på Ctrl+A og Ctrl+C for at vælge alt indhold og kopiere
- Åbn Node-RED
- Vælg menupunktet Import i menulinjen
- Tryk Ctrl+V for at indsætte det kopierede flow
- Type på Import knappen
Du skal derefter bare tilrette de enkelte noder med navne på dine HA enheder. Så skulle det gerne virke i din HA installation.
Eksempel #1: Lysstyring
Dette flow er et eksempel på, hvordan flere forskellige automatiseringer til kan samlet i et samlet flow. Flowet indeholder to forskellige automatiseringer til lysstyring. Den første automatisering benyttes til at reagere på tryk på en IKEA Trådfri fjernbetjening. Den anden automatisering reagerer på bevægelse fra en bevægelsessensor med indbygget lysmåler (lux):
Den første automatisering består af følgende noder:
- En events: all node reagerer på hændelser fra DeCONZ (kan ændres til Hue, ZHA eller hvad du ellers bruger som gateway til dine smart enheder)
- To switch noder tjekker hvilken enhed og hvilken knap, der blev trykket på
- En debug node viser hvilke data, der modtages, når der trykkes på en knap på fjernbetjeningen
- Fire call service noder benyttes til at tænde og slukke samt skrue op eller ned for lysstyrken på forskellige lys afhængigt af hvilken knap, der blev trykket på
Den anden automatisering består af følgende noder:
- En Trigger: state node reagerer på registrering af bevægelse fra en bevægelsessensor. Der er indsat en betingelse, så automatiseringen kun kører ved lavt lysniveau.
- En call service node tænder lyset
- En stoptimer node pauser automatiseringen i 1 ½ minut. Hvis der registreres ny bevægelse inden tiden er gået, starter der en ny nedtælling.
- En call service node slukker lyset igen
Hent flow på Pastebin: https://pastebin.com/vcHNuJwD
Eksempel #2: Ringklokke med lyd over Sonos højtaler
Dette flow benyttes til automatisering af ringklokke, der:
- spiller ringklokke og besked på Sonos, hvis der er nogen hjemme mellem kl. 7.00 – 19.00
- og ellers sendes notifikation til mobil
Flowet består af følgende noder:
- En events: all node reagerer på hændelser fra DeCONZ (kan ændres til Hue, ZHA eller hvad du ellers bruger som gateway til dine smart enheder)
- To switch noder tjekker hvilken enhed og hvilken knap, der blev trykket på
- En current state node henter status for en gruppe af person
- En switch node tjekker om der er nogen hjemme eller ej
- En call service node sender besked ved at benytte HA’s notify service
- En time range node tjekker om den nuværende tid er mellem kl. 07.00 – 19.00
- En template node benyttes til at angive variabler, som skal bruges af Sonos noder til afspilning af lyd, herunder navn på Sonos højtaler og lydstyrke
- En række call service noder (afbrudt af to delay noder) benyttes til at spille lyd over en Sonos højtaler. Der spilles en dørklokkelyd samt bruges TTS til at sige, at der er gæster.
Hent flow på Pastebin: https://pastebin.com/x4ehBLL9
Eksempel #3: Notifikation ved lavt batteriniveau
Dette flow benyttes til at sende en notifikation hver aften, hvis en eller flere batteridrevne enheder i HA har et lavt batteri-niveau. Flowet består af følgende noder:
- En inject node starter flowet alle dage kl. 20.00
- En get entities node henter alle enheder, hvor ”device_class” er ”battery” og batteriniveuaet er mindre end 30%.
- En template node laver tekst med navn på enhed og batteriprocent
- En string node fjerner teksten ”battery level” eller ”battery state” fra navnet
- En join node samler alle enheder med lavt batteri-niveau i én samlet besked
- En call service node sender beskeden ved at benytte HA’s notify service
Hent flow på Pastebin: https://pastebin.com/gmGwAqzG
BEMÆRK
Du skal muligvis installere string noden (node-red-contrib-string) under menupunktet “Manage Palette” for at kunne bruge dette eksempel.
Eksempel #4: Hent data fra webside
Dette flow henter hver time det forventede nedbør for den næste time i København fra Met.no (YR). Værdien gemmes i en sensor i HA. Flowet består af følgende noder:
- En inject node starter flowet hver time
- En function node definerer header og parametre (længde- og breddegrader for lokation for vejrudsigten) til brug for webkald til Met.no’s API service
- En http request node foretager webkald til Met.no’s API service
- En json node konverterer de modtagne JSON data til et array objekt
- En change node henter den ønskede værdi fra objektet
- En entity node gemmer værdien (det forventede nedbør i mm i den næste time) i en ny HA sensor entitet, så den kan vises i HA dashboardet eller bruges i en HA automatisering
- To debug noder viser værdien af det fulde objekt samt en udtrukne værdi
Hent flow på Pastebin: https://pastebin.com/xdKb15c6
Tips og tricks
Dette afsnit indeholder generelle tips og råd til brugen af Node-RED.
Organiser dine flows
Sørg for at samle automatiseringer med samme formål i hvert deres flow. Eksempelvis ét flow til lysstyring, ét andet til styring af robotstøvsugeren og ét helt tredje til at sende notifikationer.
Indsæt kommentarer
Indsæt en beskrivelse af hvert flow ved at dobbeltklikke på flowets navn. Beskriv formålet og funktionaliteten af flowet samt evt. forudsætninger for at det virker. Du kan også indsætte evt. links til kilder, som du har hentet inspiration fra, så du altid kan finde tilbage til udgangspunktet. Endeligt kan du lave en simpel versionsstyring, så du kan huske, hvornår du har ændret i et flow.
Du kan indsætte kommentarer i de enkelte flow for hurtigt at kunne læse, hvad de enkelte dele af flowet gør.
Brug den indbyggede hjælpefunktion
Brug den indbyggede hjælp ved at vælge en node og klikke på ikonet i sidebar i højre side af skærmen. Så kan du få vist vejledning til brug af noden. Eksempelvis information om input, output og parametre til konfiguration af den valgte node.
Deploy ændringer løbende
Husk at trykke på Deploy knappen undervejs, når du arbejder med dit flow. Node-RED gemmer kun, når du laver et deploy og du risikerer derfor at miste ændringer, hvis din browser lukker ned.
Brug inject node til at teste
Når du tester et flow, kan du med fordel indsætte en eller flere inject noder. En inject node kan bruges til at starte dit flow fremfor f.eks. at vente på at en given state ændres. Inject noden kan bruges til at sende det forventede output (payload) videre til næste node i flowet. Eksempelvis hvert minut mens du tester eller, når du klikker på den firkantede knap på noden:
Disable noder under test
Du kan deaktivere en eller flere noder i dit flow, mens du tester det. På den måde kan du teste én del af et flow ad gangen. Det kan f.eks. være en fordel at vente med at sende beskeder til mobiler før man er helt sikker på at flowet fungerer som forventet. Derfor kan du enten vente med at indsætte eller linke en call service node til resten af flowet eller blot deaktivere den ved at vælge disable.
Brug debug noder til udvikling og fejlsøgning
Du kan indsætte debug noder på udvalgte steder i dit flow, mens du tester. Så kan du se det output, som en node leverer til den næste node i dit flow i debug vinduet i sidebar i højre side af skærmen.
Du finder debug vinduet ved at klikke på -ikonet:
TIP: Du kan bruge funktionen Copy path til at kopiere stien på data du har markeret (i eksemplet payload.properties.timeseries[0].data.next_1_hours.details.precipitation_amount) i stedet for at skrive det selv.
Debug vinduet vil også vise eventuelle fejl i afviklingen af dit flow med beskrivelse af fejlen, så du kan identificere den node, som fejler og den mulige årsag til fejlen.
Opsummering
Vi har nu set på, hvordan Node-RED kan anvendes til automatiseringer til styring af HA enheder og gennemgået nogle konkrete eksempler på flows.
Guiden har dog kun beskæftiget sig med et lille udsnit af de muligheder, som Node-RED tilbyder for at bygge automatiseringer til styring af HA enheder.
Er du stadig i tvivl om Node-RED er det rigtige valg til dine automatiseringer? Så kan denne oversigt over fordele og ulemper ved automatiseringer i både HA og Node-RED måske hjælpe til en beslutning:
Platform | Fordele | Ulemper |
Der er fordele og ulemper ved automatiseringer i både YAML og Node-RED, og kun du kan bestemme, hvad der er den rigtige løsning for dig.
Selvom det kan virke uoverskueligt at sætte sig ind i to forskellige måder at lave automatiseringer på, vil jeg dog anbefale dig, at prøve at lave den samme automatisering i både YAML og Node-RED. På den måde kan du finde ud af, hvad der virker mest logisk og lettest at gå til for dig.
Node-RED automatiseringen fra eksempel #3 kan f.eks. også laves med følgende YAML kode i HA:
- id: low_battery_warning
alias: Low battery notification
description: Low battery notification example
trigger:
- platform: time
at: "20:00:00"
condition:
- condition: template
value_template: >
{{ states | selectattr('attributes.device_class', 'eq', 'battery') |
selectattr('state', 'lt', '30') | map(attribute='attributes.friendly_name') |
list | count > 0 }}
action:
- service: notify.mobile_app_myphone
data_template:
message: >-
En eller flere enheder har lavt batteri:
{{ states | selectattr('attributes.device_class', 'eq', 'battery') |
selectattr('state', 'lt', '30') | map(attribute='attributes.friendly_name') |
list | join(', ') | replace(' battery level', '') | replace(' Battery Level', '') | replace(', ', '\n') }}
Du bør oplade eller skifte batteriet.
mode: single
Det er måske mindre visuelt overskueligt, hvad automatiseringen rent faktisk gør, da der er brugt Jinja2 templates. Omvendt er det meget nemt at kopiere ind og bruge i HA.
Uanset hvad du måtte foretrække, så husk, at du ikke behøver at anvende Node-RED i stedet for dine eksisterende HA’s automatiseringer. Du kan sagtens bruge Node-RED som et supplement til dine automatiseringer i HA.
Det kunne f.eks. være, at du foretrækker at holde de mest kritiske eller de mere simple automatiseringer i YAML og så lave de mere komplekse automatiseringer med mange forskellige mulige udfaldsrum (switch noder) eller betingelser i Node-RED.
Yderligere inspiration
Hvis du har fået mod på, at lære mere om Node-RED, er her nogle links med mere inspiration til brug af Node-RED sammen med HA i form af:
- videoer ()
- flow-eksempler ()
- guides ( )
En rigtig god introduktion til Node-Red. Jeg fik tilføjet udviklingsværktøjet til HA og igang med at forstå brugen i forbindelse med automation. Jeg synes stadigt det kræver mere indsigt fra min side, førend jeg forstår at integrere Node-Red automation med andre måder at automatisere i HA. Hvordan f.eks en Node-Red automation bruges i Automations & Scenes i HA.
Tak Ken,
Du skal se Node-RED som et alternativ (eller supplement) til at bruge automatiseringer i HA.
Så du har ikke behov for at integrere eller kombinere de to, men kan vælge den metode, der passer dig bedst.
Automatiseringer i HA er blevet meget bedre og mere brugervenlige end da jeg startede med at bruge HA, så det meste vil kunne laves begge steder.
Personligt kan jeg godt lide den visuelle præsentation i NR og så er det bedre til mere komplekse automatisering, hvor der hentes data fra websider eller databaser.
Men det giver også et ekstra komponent, som give fejl og kræver lidt ekstra ressourcer (CPU og hukommelse) end automatiseringer direkte i HA…
Mvh.
Anders
Tak for svar 🙂
Jeg er for nogle måneder siden starte med Philips Hue og Zigbee og den tilhørende App. Da jeg for et par uger siden begyndte med HA kan jeg godt de at HA har “fundet” alt det jeg har oprettet med App’en. Jeg kan godt se at der er nogle konflikter mellem App’en og HA – Betyder det at jeg helt skal stoppe med at brugge HUE App’en?