Daglicht ‘made ingewikkeld’

Waarom makkelijk doen als het ingewikkeld kan, zeg ik altijd. (Ik zeg dat nooit, maar in dit geval is het toch best ingewikkeld geworden, vind ik.) Hopelijk kan ik het toch simpel uitleggen en belangrijker; heb jij er iets aan.

Wat is het probleem?

Ik wil dat de lichten in huis aan gaan als het donker is. Maar iets preciezer: als het een beetje donker is mogen op donkere plekjes in huis de eerste lampen aan, als het dan iets donkerder wordt, dan gaan er wat meer lampen aan en tenslotte gaat alles wat ik ’s avonds aan wil aan.

Andersom in de ochtend gaan de lampen in de omgekeerde volgorde weer uit.

Ik heb daarvoor vier scenes gemaakt. Een scene is een reeks apparaten, zoals lampen, die je binnen de scene instelt op een bepaalde stand. Dus je plaatst een lamp niet alleen in de scene, je zet hem ook aan, of op een bepaalde stand of kleur, of juist uit. Als de scene wordt gestart, zullen alle apparaten in de scene in de gewenste stand worden gezet.

Ik heb de volgende scenes:

0: Alle lichten uit

1: Alleen lichten aan op donkere plekjes

2: Meer lichten aan of dimmers iets hoger

3: Lichten staan op normale avond/donker stand, meeste lichten aan

‘Lichten mogen aan’

Dus ’s avonds gaan de lichten aan en ’s ochtends weer uit. Nee, ik ben niet de hele nacht wakker, dus er is ook nog iets anders: een (virtuele) schakelaar genaamd “Lichten mogen aan”. Als die schakelaar aan staat, dan MOGEN de lichten (automatisch) aan. Handmatig mogen ze natuurlijk altijd aan. Als die schakelaar uit staat, dan mogen de lichten niet automatisch aan.

Als ‘Lichten mogen aan’ wordt UITgeschakeld, dan start ik scene 0 (zie boven).

Als ‘Lichten mogen aan’ wordt AANgezet, dan bepaal ik welke scene (geen, of 1 t/m 3) wordt gestart.

Er is ook een automatisering die daarbij hoort:

Als de stand verandert in AAN:
(‘In AAN’ opengeklapt)

En als het verandert in UIT:
(‘In UIT’ opengeklapt)

Hier is de Yaml:

alias: "'Lichten mogen aan' verandert"
description: ""
triggers:
  - trigger: state
    entity_id:
      - input_boolean.lichten_mogen_aan
    alias: Wanneer 'Lichten mogen aan' verandert
conditions: []
actions:
  - alias: in AAN
    if:
      - condition: state
        entity_id: input_boolean.lichten_mogen_aan
        state: "on"
        alias: Lichten mogen aan = AAN
    then:
      - if:
          - condition: numeric_state
            entity_id: input_number.daglicht_fase
            below: 1
        then:
          - action: scene.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: scene.fase_3_verlichting_aan_alles
        alias: Als Daglichtfase = 0
      - if:
          - condition: numeric_state
            entity_id: input_number.daglicht_fase
            above: 0
            below: 2
        then:
          - action: scene.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: scene.fase_2_verlichting_aan_meer_plekjes
        alias: Als Daglichtfase = 1
      - if:
          - condition: numeric_state
            entity_id: input_number.daglicht_fase
            above: 1
            below: 3
        then:
          - action: scene.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: scene.fase_1_verlichting_aan_donkerste_plekjes
        alias: Als Daglichtfase = 2
  - alias: in UIT
    if:
      - condition: state
        entity_id: input_boolean.lichten_mogen_aan
        state: "off"
    then:
      - action: scene.turn_on
        metadata: {}
        data: {}
        target:
          entity_id: scene.alle_lichten_uit
mode: single

Daglichtfase

Ik heb een helper “Daglichtfase”, dit is een slider die van 0 tot 4 loopt:

0 betekent: helemaal donker

1 betekent: halfdonker/bijna donker

2 betekent: schemerig

3 betekent: licht

4 betekent: zonnig

De slider wordt automatisch bediend door mijn ESP daglichtsensor, maar dat is een andere post (komt nog!). In principe kun je de slider ook met de hand bedienen, bv om te testen.

Het idee van de slider is dat deze overdag op 3 of 4 staat. Dan als het gaat schemeren gaat die naar 2. Is het al bijna donker, maar je kunt nog wel veel buiten zien dan gaat de slider naar 1. Als het echt donker is staat de slider op 0.

’s Ochtends begint de slider op 0 (donker), dan bij het krieken gaat de slider naar 1, als het bijna licht is gaan we naar “schemeren” (2) en als het helemaal licht is naar 3. Als de zon gaat schijnen (of als het erg licht is) gaat de stand zelfs nog naar 4.

Er is een automatisering die wanneer de slider verandert, de juiste scene wordt ingesteld:

De automatisering werkt alleen als ‘Lichten mogen aan’ AAN staat.

De voorwaardelijke acties (zie afbeelding) zorgen ervoor dat de juiste lichtstand wordt ingeschakeld. Dat wordt bepaald door de slider Daglichtfase. De eerste “voorwaardelijk een actie uitvoeren” zie je hier uitgevouwd:

Lichten uit in de nacht

Wanneer we ’s nachts het licht uit doen, dan zetten we dus de schakelaar “Lichten mogen aan” UIT. Bijvoorbeeld met een knopje. De lichten gaan dan uit en zullen niet aan gaan als de slider Daglichtfase verandert.

’s Ochtends zet ik de schakelaar “Lichten mogen aan” AAN met een bewegingsmelder in de gang. De lichten gaan dan aan op de manier die overeenkomt met de Daglichtfase.