HA Dashboard Design
Byg smukke dashboards.

Node-RED er et visuelt programmeringsværktøj der gør komplekse automationer overskuelige. Træk nodes, forbind dem med linjer, og byg automationer der ville være umulige (eller meget besværlige) i Home Assistants standard automation editor.
| Feature | HA Automationer | Node-RED |
|---|---|---|
| Læringsurve | Lav | Mellem-høj |
| Visuel editor | Simpel | Avanceret |
| Debugging | Begrænset | Fremragende |
| Loops | ❌ | ✅ |
| Variabler | Begrænset | Flow/Global |
| JavaScript | ❌ | ✅ |
| Genbrug (subflows) | ❌ | ✅ |
| Tidsbaseret logik | Basis | Avanceret |
Brug Node-RED når du har brug for:
Bliv ved HA automationer når:
Gå til Indstillinger → Add-ons
Klik Add-on Store (nederst til højre)
Søg efter “Node-RED”
Vælg Node-RED og klik Installer
Konfigurer add-on:
# Vigtige indstillinger:ssl: false # Sæt til true hvis du har SSLcredential_secret: "din-hemmelige-nøgle"Start add-on og aktiver:
Åbn Node-RED via sidebaren
# docker-compose.ymlversion: '3'services: nodered: image: nodered/node-red:latest container_name: nodered restart: unless-stopped ports: - "1880:1880" volumes: - ./nodered-data:/data environment: - TZ=Europe/CopenhagenI Home Assistant, klik på dit profilbillede (nederst til venstre)
Scroll ned til Langvarige adgangstokens
Klik Opret token
Navngiv den “Node-RED”
Kopier tokenet - du kan kun se det én gang!
Træk en events: state node ind på workspace
Dobbeltklik og klik på blyanten ved siden af Server
Udfyld:
Name: Home AssistantBase URL: http://homeassistant.local:8123Access Token: [din token fra forrige trin]Klik Add og derefter Done
For ekstra funktioner som at aktivere/deaktivere flows fra HA:
Installer via HACS:
Tilføj integration:
┌─────────────────────────────────────────────────────────────┐│ FLOW (Tab) ││ ┌─────────────────────────────────────────────────────┐ ││ │ SEQUENCE (Forbundne nodes) │ ││ │ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │ ││ │ │ NODE │───►│ NODE │───►│ NODE │───►│ NODE │ │ ││ │ └──────┘ └──────┘ └──────┘ └──────┘ │ ││ │ msg.payload sendes mellem nodes │ ││ └─────────────────────────────────────────────────────┘ ││ ││ ┌─────────────────────────────────────────────────────┐ ││ │ ANDEN SEQUENCE │ ││ │ ┌──────┐ ┌──────┐ │ ││ │ │ NODE │───►│ NODE │ │ ││ │ └──────┘ └──────┘ │ ││ └─────────────────────────────────────────────────────┘ │└─────────────────────────────────────────────────────────────┘| Term | Beskrivelse |
|---|---|
| Node | En enkelt byggeklods (trigger, action, logik) |
| Sequence | Forbundne nodes der udgør én automation |
| Flow | Alle sequences på én tab |
| msg | Besked der sendes mellem nodes |
| msg.payload | Standard data-felt i beskeden |
| Scope | Tilgængelig | Brug |
|---|---|---|
| msg | Kun i nuværende sequence | Data mellem nodes |
| flow | Alle nodes på samme tab | Delt data på flow |
| global | Alle nodes overalt | Delt data på tværs |
// Sæt variablerflow.set("myVar", "værdi");global.set("globalVar", 123);
// Læs variablerlet x = flow.get("myVar");let y = global.get("globalVar");| Node | Funktion | Brug |
|---|---|---|
| events: state | Trigger ved tilstandsændring | Start automationer |
| current state | Læs aktuel tilstand | Betingelser |
| call service | Kald HA service | Handlinger |
| wait until | Vent på tilstand | Forsinkelser med betingelse |
| trigger: state | Trigger med flere betingelser | Avancerede triggers |
| api | Generel API-adgang | Alt muligt |
Trigger når en entity ændrer tilstand:
# Konfiguration:Entity: light.stueIf State: "on" # Valgfri: Kun trigger ved denne tilstandFor: 00:00:05 # Valgfri: Kun hvis tilstand holder i 5 sekOutput:
msg.payload = "on"; // Ny tilstandmsg.data.old_state.state // Gammel tilstandmsg.data.entity_id // Entity IDLæs tilstand midt i et flow (trigger ikke selv):
# Konfiguration:Entity: binary_sensor.motion_kitchenIf State: "on"# Hvis tilstand matcher → Output 1# Hvis ikke → Output 2 (eller stop)Udfør handlinger i Home Assistant:
# Eksempel: Tænd lysDomain: lightService: turn_onEntity: light.stueData: {"brightness": 255, "color_temp": 350}[events: state]──►[call service] motion_sensor light.turn_on
[events: state]──►[delay]──►[call service] motion_sensor 2 min light.turn_off (off)Flow JSON:
[ { "id": "motion_on", "type": "server-state-changed", "entity_id": "binary_sensor.motion_stue", "ifstate": "on", "wires": [["light_on"]] }, { "id": "light_on", "type": "api-call-service", "domain": "light", "service": "turn_on", "entity_id": "light.stue" }][events: state]──►[current state]──►[call service] motion sun.sun light.turn_on (below_horizon)Sun entity bruges til at tjekke om det er nat før lyset tændes.
Lys der slukker efter 5 minutter uden bevægelse, men resetter hvis der er ny bevægelse:
[events: state]──►[stoptimer]──►[call service] motion (on) reset (ingenting) │ └──────────►[stoptimer]──►[call service] start 5min light.turn_offTænd/sluk lys baseret på hvilke rum der er bevægelse i:
// Function node til at tracke aktive rumlet activeRooms = global.get("activeRooms") || [];let room = msg.data.entity_id.replace("binary_sensor.motion_", "");
if (msg.payload === "on") { if (!activeRooms.includes(room)) { activeRooms.push(room); }} else { activeRooms = activeRooms.filter(r => r !== room);}
global.set("activeRooms", activeRooms);msg.activeRooms = activeRooms;return msg;Lav dine egne nodes fra en gruppe af nodes:
Vælg de nodes du vil genbruge
Menu → Subflows → Selection to Subflow
Navngiv din subflow
Den nye subflow vises i paletten under “subflows”
Træk den ind hvor du har brug for den
Forbind sequences på tværs af flows uden at trække lange linjer:
Flow 1: Flow 2:[trigger]──►[link out: "alarm"] [link in: "alarm"]──►[action]Test dine flows uden at vente på rigtige triggers:
[inject]──►[resten af dit flow] (manuel trigger via klik)Konfigurer inject node med testdata:
msg.payload = "on";msg.data = { entity_id: "binary_sensor.test", old_state: { state: "off" }};Se hvad der sker i dit flow:
[trigger]──►[debug]──►[action] │ └──► Viser msg i Debug panelTip: Sæt debug til “complete msg object” for at se alt.
Installer via Menu → Manage palette → Install:
| Palette | Beskrivelse |
|---|---|
| node-red-contrib-bigtimer | Avanceret tidsbaseret scheduling |
| node-red-contrib-stoptimer | Start/stop/reset timers |
| node-red-contrib-weekday | Filter på ugedage |
| node-red-contrib-time-range-switch | Routing baseret på tid |
| node-red-contrib-schedex | Solnedgang/solopgang scheduling |
| node-red-dashboard | Byg dashboards i Node-RED |
# Tjek:1. Alle nodes har gyldige forbindelser2. Ingen røde trekanter på nodes (konfigurationsfejl)3. Server connection er konfigureret4. Access token er gyldigTilføj debug node efter trigger
Tjek at entity_id er korrekt
Verificer at “If State” matcher
Tjek Debug panel for output
# Tjek access token:1. Opret ny token i HA2. Opdater server config i Node-RED3. Deploy alle flows4. Genstart Node-RED add-on| Praksis | Beskrivelse |
|---|---|
| Én tab per område | Stue, køkken, soveværelse, etc. |
| Kommentarer | Brug comment nodes til forklaring |
| Navngivning | Giv alle nodes beskrivende navne |
| Subflows | Genbrug logik frem for copy/paste |
# Undgå:- events: all node (bruger mange ressourcer)- Polling i loops (brug triggers i stedet)- Store debug outputs i produktion
# Brug:- "Modified Flows" deploy type- Specifikke entity triggers- Disable debug nodes når ikke i brugNode-RED flows gemmes i:
# Add-on:/config/node-red/flows.json
# Docker:./nodered-data/flows.jsonInkluder denne fil i din Home Assistant backup!
HA Dashboard Design
Byg smukke dashboards.
Første Automation
Start med HA’s built-in automationer.
Sidst opdateret: December 2025