Automation von Node-Red in Home Assistant basteln - Anwesenheitssimulation

Ich versuche seit geraumer Zeit eine bestehende Node Red Automation in Home Assistant Automation umzuwandeln / einzupflegen.


Hier mal etwas kompliziert dargestellt.

In HA habe ich aktuell:
Auslöser 1) ist jemand zu Hause => aus
Auslöser 2) Sonnenuntergang +40 Minuten

Bedingung 1) Ist jemand zu Hause => aus
Bedingung 2) Sonnenuntergang +40 Minuten

Nur wie bekomme ich jetzt die Aktionen 3x 2 parallel am Laufen?
Da hört bei mir der Freigeist auf und ich brauche ein bisschen Unterstützung von euch.

Vielen Dank.

Bei mir hört’s bei NR auf… Was sind die „Aktionen 3x 2“?

1 „Gefällt mir“

Damit ist nicht Node-Red gemeint, sondern die Automationen in HA.
Ich möchte 3 Automationen parallel, mit 2 verschiedenen Verzögerungen durchlaufen, daher 3x2.

Beispiel:
Verzögerung 60-95 Minuten für EG
Verzögerung 60-95 Minuten für OG1
Verzögerung 60-95 Minuten für OG2

Die 3 einzelnen Aktionen sollen so lange durchlaufen werden, bis “ist jemand zuhause” auf on steht.

Hast du dir das vielleicht mal angeguckt?

1 „Gefällt mir“

Dafür gibt es die Funktion repeat_until

1 „Gefällt mir“

Vielen lieben Dank für den Hinweis.
Ja das Video kenne ich bereits. Nur ist bei mir das “Problem”, dass die Lichter, die ich schalten möchte, wenn ich abwesend bin, nur Deko Lichter sind. Diese also “nie” eingeschaltet werden und entsprechend keine 7 Tage Historie haben.
Deshalb muss ich den “manuellen” Weg gehen.

Das stimmt, da hakt es bei mir auch aktuell.
Siehe dazu die Automation.

alias: OG1
repeat:
  sequence:
    - delay: 00:{{ (range(60, 95)|random|int) }}:00
    - if:
        - condition: state
          entity_id: binary_sensor.ist_jemand_zuhause
          state: "off"
      then:
        - action: light.turn_on
          metadata: {}
          data: {}
          target:
            entity_id: light.bulb_og1_di_zigbee_licht
    - delay: 00:{{ (range(10, 50)|random|int) }}:00
    - action: light.turn_off
      metadata: {}
      data: {}
      target:
        entity_id: light.bulb_og1_di_zigbee_licht
    - delay: 00:{{ (range(125, 185)|random|int) }}:00
    - if:
        - condition: state
          entity_id: binary_sensor.ist_jemand_zuhause
          state: "off"
      then:
        - action: light.turn_on
          metadata: {}
          data: {}
          target:
            entity_id: light.bulb_og1_di_zigbee_licht
    - delay: 00:{{ (range(10, 50)|random|int) }}:00
    - action: light.turn_off
      metadata: {}
      data: {}
      target:
        entity_id: light.bulb_og1_di_zigbee_licht
  until:
    - condition: state
      entity_id: binary_sensor.ist_jemand_zuhause
      state: "on"

Das obige Skript schaltet ein Lampe 2x hintereinander ein - wozu?
Was hast du dir als Trigger vorgestellt?

Die Lampe wird pro Verzögerung eingeschaltet und ausgeschaltet. Es sind zwei unterschiedliche Verzögerungen, deshalb wird die Lampe ein- und ausgeschaltet.

In Home Assistant sind das die Trigger:

Okay, da hatte ich wohl noch gepennt, Verzeihung.

Ich denke, aufgrund der langen Delay-Zeiten würde ich wie folgt das Thema angehen:

Skript:


sequence:
  - delay: 00:{{ range(60, 95)|random }}:00
  - repeat:
      count: 2
      sequence:
        - action: light.turn_on
          target:
            entity_id: light.DEINELAMPE
        - delay: 00:{{ range(10, 50)|random }}:00
        - action: light.turn_off
          target:
            entity_id: light. DEINELAMPE
        - delay: 00:{{ range(125, 185)|random }}:00

Automation:


triggers:
  - id: "on"
    trigger: state
    entity_id: binary_sensor.ist_jemand_zuhause
    from: "on"
    to: "off"
  - id: "on"
    trigger: sun
    event: sunset
    offset: "00:40:00"
  - id: "off"
    trigger: state
    entity_id: binary_sensor.ist_jemand_zuhause
    from: "off"
    to: "on"

conditions:
  - condition: sun
    after: sunset

actions:
  - action: script.turn_{{ trigger.id }}
    target:
      entity_id: script.DEINSKRIPT

1 „Gefällt mir“

Vielen lieben Dank.
Wieso würdest du hier bevorzugt mit einem Skript arbeiten?

1 „Gefällt mir“

Die repeat-Sequenz lässt sich sonst nicht abbrechen, und bei den langen Verzögerungszeiten sehe ich die Gefahr, dass du im Dunkeln stehst, obwohl du zuhause bist. Das Skript dagegen lässt sich bequem abbrechen mittels script.turn_off.

Ist nur ein Vorschlag. Vielleicht hat ja noch jemand eine Idee, es eleganter zu lösen.

1 „Gefällt mir“

Ein guter Vorschlag, davon lebt ja die Community.

Ich glaube mittlerweile auch, dass ich die zweite Verzögerung gar nicht benötige, da die Automation eh so lange läuft, bis wieder jemand zu Hause ist. Da würde die Verzögerung ja eh wiederholt werden.

So könnte ich mir eine Schleife sparen, oder?

Ohne Schleife läuft die Automation 1x durch.

1 „Gefällt mir“

Kann ich dann nicht ein “BIS” nehmen, also BIS jemand wieder zu Hause ist?

Sicher.
Bei einer solchen Dauerschleife würde ich allerdings dein System im Auge behalten (CPU, Temperatur). Ich kenne ja deine Hardware nicht, bei mir läuft HA auf einem Uralt-Laptop, der mag nicht so, wenn lange Schleifen laufen. Nachteil von langen Schleifen und Verzögerungen ist zudem, dass, wenn dein HA ungewollt neustartet, die Automation natürlich beendet wird.

1 „Gefällt mir“

Das ist wahr. Was gibt es da allerdings für Alternativen, um das zu umgehen?
Ich habe einen ausgedienten Firmenrechner - miniPC. Da ist die Leistung völlig in Ordnung, bisher.

Man könnte auch mit einem time_pattern - Trigger arbeiten und/oder unterschiedlichen -/+ Offsets. Ich hatte mal eine Automation gesehen, die ich ganz charmant fand. Dort wurden mehrere Lampen in eine Gruppe gepackt und dann deren Mitglieder per Zufallsprinzip an- und ausgeschaltet.
Gehts hier um längere Abwesenheiten wie Dienstreise oder Urlaub, oder soll die Bude abends nicht dunkel sein, wenn keiner zuhause ist?

Das ist in erster Linie die Priorität.

Und diese Automation war dann mit trigger: time_pattern minutes: /15 als Beispiel?

Ja, genau.

++++++++++

P.S.: Jemand schrieb mal, dass sich Bösewichte von beleuchteten Wohnungen abschrecken lassn, und dass es unwahrscheinlich sei, dass die über Tage mit Stoppuhr im Gebüsch lauern, um zu kontrollieren, wann welche Lampen angehen,

1 „Gefällt mir“

Könntest du dazu mal eine Beispiel Automation zusammen bauen?

Ich glaube ja, wenn die irgendwo hinein wollen, kommen und gehen sie auch hinein.
Mit solchen Simulationen kann man zumindest einiges ausschließen und kann sagen, dass man es versucht hat. Könnte eventuell mal bei einer Versicherung wichtig sein. Ganz nach dem Motto; Sie haben Smarthome, haben Sie die Anwesenheit simuliert? :man_shrugging: