Automatisch weten wie er thuis is, slapen, nachtdienst én verlichting aanpassen

Veel automatiseringen beginnen simpel: “als iemand thuis komt, doe de lamp aan”. Maar zodra je twee bewoners, gasten, nachtwerk en telefoons die opladen erbij krijgt, wordt aanwezigheid al snel ingewikkeld.

In deze blog bouwen we een compleet systeem dat:

  • bijhoudt of 0, 1 of 2 personen thuis zijn
  • een helper bijwerkt met dat aantal
  • een simpel “iemand aanwezig”-signaal maakt voor andere automatiseringen
  • slapen aan/uit zet
  • nachtmodus voor verlichting inschakelt met Adaptive Lighting
  • rekening houdt met nachtwerk (nachtdienst)
  • een gasten/oppas override heeft
  • de woonkamer automatisch uitschakelt wanneer iedereen weg is

Alles draait in Node-RED, met Home Assistant als basis.


1. Wat heb je nodig?

1.1 Home Assistant

  • Home Assistant Core / OS
  • Twee person entities, bijvoorbeeld:
    • person.bewoner_1
    • person.bewoner_2

(Je vervangt deze later in de flow door je eigen person entiteiten.)

1.2 Node-RED

Je hebt Node-RED draaiend naast Home Assistant nodig, bijvoorbeeld via de add-on.

In Node-RED gebruik je onder andere:

  • node-red-contrib-home-assistant-websocket
  • node-red-contrib-bool-gate (AND/OR-gates)
  • node-red-contrib-time-range-switch

2. Helpers aanmaken in Home Assistant

We beginnen in Home Assistant met het aanmaken van een paar helpers. Deze worden door de flow gebruikt en bijgewerkt.

Ga naar:
Instellingen → Apparaten & services → Helpers → Helper toevoegen

2.1 Aantal personen thuis

Type: Getal (Number)
Entity-id: input_number.iemand_thuis

  • Minimale waarde: 0
  • Maximale waarde: 2
  • Stapgrootte: 1

Deze helper geeft straks aan:

  • 0 = niemand thuis
  • 1 = één persoon thuis
  • 2 = twee personen thuis

2.2 Boolean: iemand aanwezig

Type: Schakelaar (Toggle / Boolean)
Entity-id: input_boolean.iemand_aanwezig

Deze gebruiken we als “simpel signaal” voor andere automatiseringen:
iemand aanwezig = ja/nee.


2.3 Boolean: gasten of oppas aanwezig

Type: Schakelaar
Entity-id: input_boolean.gasten_oppas_aanwezig

Met deze override kun je aangeven dat er iemand thuis is, ook als de telefoons/person entities het nog niet goed doorhebben (bijvoorbeeld oppas, logés).


2.4 Boolean: slapen

Type: Schakelaar
Entity-id: input_boolean.slapen

Deze wordt door de flow gebruikt als centrale “slaapstand” voor het huis:

  • on = huis in slaapstand
  • off = normaal

2.5 Boolean: nachtdienst

Type: Schakelaar
Entity-id: input_boolean.nachtdienst

Deze helper wordt automatisch aan/uit gezet op basis van locatie/werk en tijd. Handig als één van de bewoners onregelmatige diensten heeft.


3. Basis aanwezigheidslogica: 0, 1 of 2 personen thuis

Nu gaan we naar Node-RED.

De basis is:

  • kijk naar person.bewoner_1
  • kijk naar person.bewoner_2
  • tel hoeveel er op “home” staan
  • schrijf dit naar input_number.iemand_thuis

3.1 Triggers

In de flow zitten meerdere server-state-changed nodes die luisteren naar:

  • person.bewoner_1
  • person.bewoner_2
  • input_number.iemand_thuis

Zodra iemand thuiskomt of weggaat, wordt de flow geactiveerd.

3.2 Tellen van personen

Met een combinatie van:

  • OR-gates (check of iemand op “home” staat)
  • AND-gates (kijk of beide op “home” staan)
  • een klein function-blok (zet 0/1/2 om naar een getal)

wordt bepaald:

  • 0 personen thuis
  • 1 persoon thuis
  • 2 personen thuis

3.3 Wegschrijven naar helper

Het resultaat wordt in een call service node naar Home Assistant gestuurd:

  • Service: input_number.set_value
  • Entity: input_number.iemand_thuis
  • Value: 0, 1 of 2 (afhankelijk van de logica)

Vanaf nu heb je in Home Assistant een nette helper die altijd het aantal personen thuis bijhoudt.


4. Simpel signaal: iemand thuis ja/nee

De volgende stap is een boolean: iemand aanwezig.

Hiervoor gebruikt de flow:

  • de waarde van input_number.iemand_thuis
  • de override input_boolean.gasten_oppas_aanwezig

Logica in stappen

  1. Als input_number.iemand_thuis gelijk is aan 1 of 2
    → input_boolean.iemand_aanwezig wordt aangezet
  2. Als input_number.iemand_thuis gelijk is aan 0 én er geen gasten/oppas aan staan
    → input_boolean.iemand_aanwezig wordt uitgezet
  3. Als input_boolean.gasten_oppas_aanwezig op on staat
    → wordt iemand_aanwezig geforceerd op on, ook al zijn de bewoners officieel “weg”

Op deze manier heb je:

  • een numerieke helper (0–2)
  • én een simpele boolean (aanwezig ja/nee)

Andere automatiseringen in Home Assistant kunnen dus gewoon kijken naar input_boolean.iemand_aanwezig.


5. Thuis en opladen: telefoons als extra signaal

In de flow worden ook telefoons gebruikt als signaal. Bijvoorbeeld:

  • smartphone van bewoner 1 aan het opladen
  • smartphone van bewoner 2 aan het opladen

De gedachte is: als iemand thuis is én de telefoon ligt aan de oplader, dan is dat vaak een moment om:

  • naar bed te gaan
  • nachtmodus in te schakelen
  • bepaalde routines te starten (zoals “koffie klaarzetten” voor de volgende dag)

Wat doet de flow?

Per bewoner:

  1. Node die luistert naar de batterijstatus / chargertype (bijvoorbeeld “charging” of “ac”)
  2. OR-gate die combineert:
    • “bewoner is thuis”
    • en “telefoon wordt opgeladen”
  3. AND/OR-gates die deze status doorgeven als:
    • “bewoner thuis en opladen”

Dit wordt later gebruikt voor slaaplogica en nachtstand.


6. Slapen en nachtmodus voor verlichting

De centrale schakelaar is:
input_boolean.slapen

Die kan je handmatig bedienen (via een knop/scene in Home Assistant), maar óók automatisch door de flow.

6.1 Wat gebeurt er als slapen AAN gaat?

De flow voert meerdere acties uit:

  1. input_boolean.slapen wordt op on gezet
  2. De nachtstand van Adaptive Lighting wordt aangezet voor de relevante ruimtes:
    • bijvoorbeeld badkamer, gang, keuken, woonkamer, zolder, werkkamer, etc.
      (in de flow via switch.adaptive_lighting_sleep_mode_*)

Hierdoor wordt:

  • licht zachter
  • kleur warmer
  • het huis “nachtvriendelijk”

6.2 Wat gebeurt er als slapen UIT gaat?

Als de flow bepaalt dat het huis niet meer in slaapstand moet zijn (bijvoorbeeld omdat er iemand actief is, of een tijdvenster voorbij is), doet hij:

  1. input_boolean.slapen → off
  2. Alle switch.adaptive_lighting_sleep_mode_* → off

Het huis gaat dan weer naar de normale lichtinstellingen.


7. Nachtdienst: anders omgaan met aanwezigheid

Voor huishoudens met onregelmatig werk (zoals nachtdiensten) is er een aparte helper:

input_boolean.nachtdienst

7.1 Wanneer gaat nachtdienst AAN?

De flow kan bijvoorbeeld kijken naar:

  • de locatie van een bewoner (bijvoorbeeld een werkadres)
  • of een bepaald tijdstip (start van een nachtdienst)

In jouw flow wordt dit via een combinatie van:

  • een server-state-changed node (person op bepaalde locatie)
  • een current-state check
  • een call-service node om input_boolean.nachtdienst op on te zetten

7.2 Wat doet nachtdienst met de rest?

Als input_boolean.nachtdienst = on:

  • wordt slapen en nachtlicht anders behandeld
  • kan nachtstand langer of op andere tijden blijven
  • voorkom je dat automatiseringen tegenwerken (bijvoorbeeld woonkamer uit terwijl iemand laat thuis komt)

7.3 Wanneer wordt nachtdienst uitgezet?

Er zitten twee vaste momenten in de flow:

  • een inject rond 01:00 om te controleren of nachtdienst nog klopt
  • een inject rond 15:30 om input_boolean.nachtdienst automatisch uit te zetten

Zo blijft deze helper nooit per ongeluk de hele dag aan.


8. Gasten of oppas: override voor aanwezigheid

Met input_boolean.gasten_oppas_aanwezig kun je het systeem vertellen:

Er is iemand in huis, ook als onze eigen telefoons/locaties dat niet zien.

De flow gebruikt deze boolean om:

  • te voorkomen dat input_number.iemand_thuis effectief ‘0’ gedrag triggert
  • input_boolean.iemand_aanwezig op on te houden
  • verlichting niet automatisch uit te schakelen

Als de oppas/gasten weg zijn, zet je deze helper weer handmatig uit.


9. Woonkamer automatisch uit als niemand thuis

Een praktisch onderdeel van de flow:
de woonkamerverlichting gaat automatisch uit als niemand meer aanwezig is.

Stappen:

  1. De AND/OR-logica bepaalt: niemand thuis
  2. De flow checkt of light.woonkamer_lampen nog aan staat
  3. Er zit een korte vertraging (bijvoorbeeld 10 seconden) om te voorkomen dat de lampen uitgaan als iemand net wegloopt
  4. Daarna stuurt een call-service node:
    • Service: light.turn_off
    • Entity: light.woonkamer_lampen

Resultaat:
je vergeet nooit meer de woonkamer uit te zetten als iedereen weg is.


10. Hoe gebruik je deze flow in jouw eigen setup?

  1. Importeer de JSON-flow in Node-RED (via Menu → Import).
  2. Pas de entity-id’s aan naar jouw eigen situatie:
    • person.bewoner_1 / person.bewoner_2
    • telefoonsensoren (battery_state / charger_type)
    • lampgroep woonkamer
    • adaptive lighting sleep mode schakelaars
  3. Controleer of alle Home Assistant helpers bestaan:
    • input_number.iemand_thuis
    • input_boolean.iemand_aanwezig
    • input_boolean.gasten_oppas_aanwezig
    • input_boolean.slapen
    • input_boolean.nachtdienst
  4. Deploy in Node-RED.
  5. Kijk in Home Assistant hoe de helpers reageren als je:
    • thuis wegklikt
    • telefoons oplaadt
    • gasten-override aanzet
    • nachtdienst boolean test

Vanaf dat moment heb je een robuust aanwezigheidssysteem waar je al je andere automatiseringen op kunt bouwen.