Attribute einer Entität als Variable speichern um das wieder in einer Automation nutzen zu können

Hallo,

ich will folgendes Realisieren:

Die Leuchte neben der Haustür (die mit der Hausnummer) wird jetzt auch smart.
Aber sie soll nicht nur zu Uhrzeit X an- und zu Y ausgehen.
Sie soll mir z.B. anzeigen, dass Post im Briefkasten liegt. Oder, dass das Garagentor aktuell offen steht.
An sich ist das kein Thema, einfach eine Automation mit dem jeweiligen Status als Auslöser und dann die Lampe mit der gewünschten Farbe einschalten.

Hier aber meine 2 Probleme:

  1. Möchte ich am liebsten, dass die Lampe dann in der entsprechenden Farbe (optimal: langsam) blinkt.

  2. Soll die Lampe, wenn der Status nicht mehr gegeben ist (z.B. eben die Garage geschlossen wurde) wieder den Zustand annehmen, den sie vorher hatte.
    Schließlich soll die Lampe an sich ja dann, wenn sie als “normale” Lichtquelle dienen soll auch leuchten, selbst wenn die Garage zwischendurch geöffnet und wieder geschlossen wurde.

Ein “Blinken” habe ich mal bei den Automationen gesehen, aber nie beachtet weil kein Bedarf. Jetzt suche ich es und finde es nicht mehr.
Und für die zweite Fragestellung fehlt mir schlicht das Know-How, oder ich denke viel zu kompliziert.

Hat jemand eine Idee oder sowas schon mal gebaut?

Hallo.
Hier ist mal meine Automation, die ich mir mal gebastelt habe. Bestimmt geht es auch eleganter und sauberer, aber sie funktioniert. Vielleicht ist was brauchbares für Dich dabei:

alias: Waschmaschine, Spülmaschine, Trockner ist fertig, kleine Lampe grün blinken
description: ""
trigger:
  - platform: state
    entity_id:
      - input_boolean.waschmaschine_fertig
    to: "on"
    enabled: true
  - platform: state
    entity_id:
      - input_boolean.trockner_fertig
    to: "on"
  - platform: state
    entity_id:
      - input_boolean.spulmaschine_fertig
    to: "on"
condition: []
action:
  - service: scene.create
    data:
      scene_id: geraete
      snapshot_entities:
        - light.kleine_lampe_2
  - service: timer.start
    data: {}
    target:
      entity_id: timer.timer_20sec_fur_blinken_kleine_lampe
  - repeat:
      sequence:
        - service: light.toggle
          data:
            brightness_pct: 100
            color_name: green
          target:
            entity_id: light.kleine_lampe_2
        - delay:
            hours: 0
            minutes: 0
            seconds: 1
            milliseconds: 0
      until:
        - condition: state
          entity_id: timer.timer_20sec_fur_blinken_kleine_lampe
          state: idle
          enabled: true
  - service: light.turn_on
    data:
      rgb_color:
        - 255
        - 255
        - 255
      brightness_pct: 10
    target:
      entity_id: light.kleine_lampe_2
    enabled: true
  - service: scene.turn_on
    data: {}
    target:
      entity_id: scene.geraete
mode: single

1 „Gefällt mir“

Hab sowas als Template um Wetter Atribute in deutsch umzuwandeln. Hab den Umwandel Teil mal raus genommen.


sensor:
  - name: "Vorhersage Gabriele und Markus"
    state: "{{ ('weather.forecast_gabriele_und_markus') }}"
    attributes:
      temperature: >
        {{state_attr('weather.forecast_gabriele_und_markus', 'temperature')}}
      temperature_unit: >
        {{state_attr('weather.forecast_gabriele_und_markus', 'temperature_unit')}}

Das ist genial. Und wie meistens bei Code (und mir) eigentlich recht simpel, wenn man es dann liest…
Ich hab das angepasst und nur noch mein relevantes Zeug drin. Das klappt super.
Bei der Garage hab ich den Timer weg, sondern wenn die Garage geschlossen ist als Trigger für das Beenden des Blinkens. Beim Briefkasten nehm ich die Timerversion.

Lediglich eine Sache klappt nicht:

Er stoppt bei Ausführen der Automation hier

action:

  • service: scene.create
    data:
    scene_id: Lampenstatus_speichern
    snapshot_entities:
    - light.hausnummernleuchte

Offenbar kann er entweder die Szene nicht erstellen oder die Attribute nicht schreiben. Eine Idee?

Hier einmal mein gesamter Code, falls der Fehler woanders sein sollte:

alias: Hausnummernleuchte blinkt solange Garage offen
description: ""
trigger:
  - platform: state
    entity_id:
      - cover.smart_garage_door_opener_msg100_main_channel
    to: open
condition: []
action:
  - service: scene.create
    data:
      scene_id: Lampenstatus_speichern
      snapshot_entities:
        - light.hausnummernleuchte
  - repeat:
      sequence:
        - service: light.toggle
          data:
            brightness_pct: 100
            color_name: blue
          target:
            entity_id: light.hausnummernleuchte
        - delay:
            hours: 0
            minutes: 0
            seconds: 1
            milliseconds: 0
      until:
        - condition: state
          entity_id: cover.smart_garage_door_opener_msg100_main_channel
          state: closed
          enabled: true
  - service: light.turn_on
    data:
      rgb_color:
        - 255
        - 255
        - 255
      brightness_pct: 10
    target:
      entity_id: light.hausnummernleuchte
    enabled: true
  - service: scene.turn_on
    data: {}
    target:
      entity_id: scene.Lampenstatus_speichern
mode: single

Also mal schauen…

Also wenn Garage aufgeht soll eine Lampe blinken.
Wenn Garage zu dann Licht aus.
Dann hast Du noch eine Szene erstellt. (mit der kenn ich mich net aus leider)
Das Licht geht auch an wenn Garage offen ist?
Kann die Lampe von alleine blinken? Ist das ne Smarte?

cover.smart_garage_door_opener_msg100_main_channel

ist Dein Sensor? Ist der jetzt mit Attribute?
Du hast nur ein Trigger der einschaltet. Wie soll es ausgehen?

Grüße Markus

lass mal die Großbuchstaben weg.

Dadurch geht die Lampe wieder aus, wenn die Garage geschlossen wird. Das klappt auch.
Grundsätzlich klappt alles an der Automation, nur das Schreiben der Szene offenbar nicht.
Ja, die Birne ist smart.

Und wenn Du das Script weglässt.

Hat die Smarte Lampe eine Entität blinken?

Sonst könnte man Trigger ein wenn Garage auf Aktion blinken.
Trigger Garage zu Aktion Lampe aus.

Offenbar kann er entweder die Szene nicht erstellen oder die Attribute nicht schreiben. Eine Idee?

Das ist merkwürdig. Ich habe in diversen Automationen service: scene.create und service: scene.turn_on verbastelt was auch funktioniert.
Hast Du es mal in einer separaten Automation mit anderen Geräten ausprobiert?

Jetzt hab ich es! Vielen Dank!
Problem war der Part, bei dem die Lampe bestimmte Attribute einnehmen sollte, bevor die zuvor createte Szene wieder aufgerufen wurde. Den Part hab ich weggelassen, zack geht es. Ich kann mir nicht erklären warum es bei Dir geht und bei mir nicht, aber das ist bei mir eh nicht relevant, daher passt das.

Hier mal für die Interessierten die Codes.:

Zusammenfassung

Ein mal für den Briefkasten und ein mal für die Garage.
Beim Briefkasten habe ich zwei Türkontakte drin. Einer registriert somit das Einwerfen und einer das Entleeren.
Das Garagentor meldet von sich aus den Status offen oder geschlossen.

Briefkasten - Licht blinkt so lange grün, bis der Briefkasten entleert (die entsprechende Klappe geöffnet) wurde. Gleichzeitig gibt es Pushnachrichten an 2 Handys.

alias: Vorgarten Briefkasten Msg Post ist da
description: ""
trigger:
  - platform: state
    entity_id:
      - binary_sensor.briefkastenkontakt_offnet
    from: "off"
    to: "on"
condition: []
action:
  - service: scene.create
    data:
      scene_id: lampenstatus_speichern
      snapshot_entities:
        - light.hausnummernleuchte
  - service: notify.mobile_app_iphone_katit
    data:
      message: Post ist da
    enabled: true
  - service: notify.mobile_app_olli_13
    data:
      message: Post ist da
    enabled: true
  - repeat:
      sequence:
        - service: light.toggle
          data:
            brightness_pct: 100
            color_name: green
          target:
            entity_id: light.hausnummernleuchte
        - delay:
            hours: 0
            minutes: 0
            seconds: 1
            milliseconds: 0
      until:
        - condition: state
          entity_id: binary_sensor.briefkasten_schliesssensor_offnet
          state: "on"
          enabled: true
  - service: scene.turn_on
    data: {}
    target:
      entity_id: scene.lampenstatus_speichern
mode: single

Und hier der Code für die Garage. Der ist grundsätzlich simpler. Die Lampe soll einfach blau blinken, solange das Tor offen ist, damit man es nicht so leicht vergisst bzw. nen optischen Reminder hat.

alias: Hausnummernleuchte blinkt solange Garage offen
description: ""
trigger:
  - platform: state
    entity_id:
      - cover.smart_garage_door_opener_msg100_main_channel
    to: open
condition: []
action:
  - service: scene.create
    data:
      scene_id: lampenstatus_speichern
      snapshot_entities:
        - light.hausnummernleuchte
  - repeat:
      sequence:
        - service: light.toggle
          data:
            brightness_pct: 100
            color_name: blue
          target:
            entity_id: light.hausnummernleuchte
        - delay:
            hours: 0
            minutes: 0
            seconds: 1
            milliseconds: 0
      until:
        - condition: state
          entity_id: cover.smart_garage_door_opener_msg100_main_channel
          state: closed
          enabled: true
  - service: scene.turn_on
    data: {}
    target:
      entity_id: scene.lampenstatus_speichern
mode: single

Nächstes Projekt in die Richtung ist dann das Aufsetzen einer Alarmanlage über den Status des Nuki und diverser Tür-/Fensterkontakte. So soll man die Analge scharf stellen können und falls einer der Kontakte etwas meldet soll die Lampe vor dem Haus rot blinken, die (steuerbaren) Jalousien sollen herunter fahren, alle ansprechbaren Lautsprecher sollen ein Alarmgeräusch mit voller Lautstärke von sich geben und alle Lampen sollen grundsätzlich ausgehen - eventuell will ich sie alle 5 Sekunden mal rot blinken lassen - natürlich zusätzlich Pushnachricht und damit es nicht untergeht eine per Telegram.

Sehr gut wenn es jetzt bei dir klappt!

Problem war der Part, bei dem die Lampe bestimmte Attribute einnehmen sollte, bevor die zuvor createte Szene wieder aufgerufen wurde

Ich musste den letzten service: light.turn_on-Teil mit den entsprechenden Attributen nochmal aufrufen, da meine Lampe die zuletzt aufgerufene Farbe speichert. Und das auch wenn die scene “Lampe aus” war. Und die Leuchte soll hauptsächlich als normale Lichtquelle dienen :crazy_face:

1 „Gefällt mir“