Licht schalten Bewegungsmelder & Schalter

Weil wahrscheinlich die ID fehlt. Beim ersten Trigger hast du die ID gesetzt. Beim 2. wahrscheinlich nicht.

Die geünschte Logik einmal zusammengefasst, soweit ich das verstehe:

  • Bewegung erkannt nach Sonnenuntergang → Licht ein
  • Wenn 2,5 Minuten keine Bewegung mehr erkannt wurde UND das Licht über den Bewegungsmelder eingeschaltet wurde → Licht aus
  • Wenn das Licht manuell eingeschaltet wurde: Anlassen, bis manuell ausgeschaltet wird.

Dazu muss in jedem Fall irgendwie festgestellt werden, ob das Licht automatisiert oder manuell eingeschaltet wurde. Dazu gibt es meines Wissens nach aber keine Entität, also müssen wir uns diese selber schaffen, z.B. durch einer Helfer (Wahrheitswert / Boolean) Variable. Ich würde es dann z.B. in 3 Automationen nach folgender Logik umsetzen:

  1. Licht automatisiert einschalten
    Auslöser: Bewegung erkannt
    Bedingungen: Es ist nach Sonnenuntergang UND Licht ist aktuell ausgeschaltet
    Aktionen: Licht einschalten UND Helfer auf “true” setzen

  2. Licht ausschalten
    Auslöser: Seit 2,5 Minuten keine Bewegung mehr erkannt
    Bedingungen: Licht ist eingeschaltet UND Helfer ist auf “true” gesetzt
    Aktionen: Licht ausschalten und Helfer als “false” setzen

  3. Helfer zurücksetzen
    Auslöser: Licht wurde ausgeschaltet (egal durch wen)
    Bedingungen: Keine
    Aktionen: Helfer auf “false” setzen

Erklärung:
Der Helfer gibt an, ob das Licht automatisiert eingeschaltet wurde. Nur wenn dies der Fall ist, darf es auch automatisiert ausgeschaltet werden. Wenn es bereits manuell eingeschaltet wurde, darf 1. natürlich nicht zusätzlich automatisiert einschalten. Wird das Licht in 1.aber automatisiert eingeschaltet, so wird dies durch den Helfer mit “true” gespeichert. Und nur dann kann in 2. nach 2,5 Minuten auch automatisiert ausgeschaltet werden. Wird das Licht manuell eingeschaltet, so verbleibt der Helfer auf false und 1. kann ihn nicht automatisiert zusätzlich einschalten, 2. kann nicht automatisiert ausschalten.
3. wird benötigt, sollte das Licht automatisiert eingeschaltet, aber manuell ausgeschaltet worden sein. In diesem Fall muss der Helfer resettet werden.

Mögliche Schwachstellen:
Wenn der Schalter so positioniert ist, dass du im Bereich des Bewegungsmelders bist, kann es noch zu blöden Effekten kommen. z.B. könntest du manuell ausschalte, würdest direkt als Bewegung erkannt und das Licht geht automatisiert wieder an. Das müsste dann gesondert abgefangen werden, nur so als Gedanke…

Ich versuche mich mal am Yaml-Code zum genannten Beispiel (ich hoffe er ist so lauffähig, kann ihn bei mir leider nicht testen da ich weder einen Switch noch Bewegungsmelder integriert habe. Irgendwas ist sicherlich falsch :sweat_smile:):

Helfer Variable, z.B. in config.yaml:

input_boolean:
  licht_wurde_automatisch_eingeschaltet:
    name: "Licht wurde automatisch eingeschaltet"
    icon: mdi:lightbulb-on
  1. Licht automatisiert einschalten:
- alias: "Licht einschalten"
  description: "bei Bewegung, nach Sonnenuntergang, wenn aktuell ausgeschaltet"
  mode: single
  trigger:
    - type: occupied
      device_id: <<ID Bewegungsmelder>>
      entity_id: <<ID Entität>>
      domain: binary_sensor
 condition:
  - condition: sun
    after: sunset
  - condition: state
    entity_id: <<ID Sonoff Schalter>>
    state: "off"
  action:
    # 1) Switch/Licht einschalten
    - type: turn_on
      device_id: <<ID Sonoff Schalter>>
      domain: switch
      entity_id: <<ID Entität>>
    # 2) Helfer-Variable auf "on" setzen
    - service: input_boolean.turn_on
      data: {}
      target:
        entity_id: input_boolean.licht_wurde_automatisch_eingeschaltet
  1. Licht ausschalten
- alias: "Licht ausschalten"
  description: "2,5 Min ohne Bewegung, nur wenn Licht zuvor automatisch eingeschaltet wurde"
  mode: single
  trigger:
    - type: not_occupied
      device_id: <<ID Bewegungsmelder>>
      entity_id: <<ID Entität>>
      domain: binary_sensor
      for:
        hours: 0
        minutes: 2
        seconds: 30
  condition:
    # Nur ausführen, wenn das Licht via Automation eingeschaltet wurde
    - condition: state
      entity_id: input_boolean.licht_wurde_automatisch_eingeschaltet
      state: "on"
  action:
    # 1) Switch/Licht ausschalten
    - type: turn_off
      device_id: <<ID Sonoff Schalter>>
      domain: switch
      entity_id: switch.<<ID Entität>>
    # 2) Helfer-Variable zurücksetzen
    - service: input_boolean.turn_off
      data: {}
      target:
        entity_id: input_boolean.licht_wurde_automatisch_eingeschaltet
  1. Helfer zurücksetzen
- alias: "Helfer zurücksetzen"
  description: "Immer dann, wenn das Licht ausgeht"
  mode: single
  trigger:
    - type: turned_off
      device_id: <<ID Sonoff Schalter>>
      domain: switch
      entity_id: switch.<<ID Entität>>
  condition: []
  action:
    - service: input_boolean.turn_off
      data: {}
      target:
        entity_id: input_boolean.licht_wurde_automatisch_eingeschaltet

Kurze Anmerkung: Der Helfer wird bei automatischem Ausschalten sowohl in 2. als auch 3. zurückgesetzt. Das sollte aber nicht stören, ansonsten z.B. in 2. weglassen.

Hoffe es funktioniert :wave: