Werte von Variablen mit Status setzen

Rat und Tat rings um Home Assistant Automationen.


Antworten
Benutzeravatar
Snowrisk
Beiträge: 62
Registriert: Di 16. Aug 2022, 12:26
1
Wohnort: bei Köln
Has thanked: 29 times
Been thanked: 1 time

Werte von Variablen mit Status setzen

Beitrag von Snowrisk »

Hallo,

ich möchte in einer Automatisierung den aktuellen Zustand einer Entität auslesen und in einer Variable speichern. Dann
möchte ich den Zustand ändern und später wieder auf den gespeicherten Zustand der Variable zurücksetzen.

Genauer:

Ich möchte den aktuellen Zeitplan eines Thermostats speichern, einen anderen Zeitplan auf dem gleichen Thermostat
setzen ("Abwesend") und später wieder auf den ursprünglichen Zeitplan (aus der Variable) zurückwechseln.

Es geht um folgende Zustände:

Code: Alles auswählen

  - Normal
  - Urlaub anwesend
  - Homeoffice MoDiDoFr
  - Sparen
  - Sparen Homeoffice MoDiDoFr
  - Abwesend

Die "Speicherung" ist deshalb nötig, da die eingestellten Zeitpläne je nach Jahreszeit oder Anforderung wechseln können und ich nach
einstellen des Zustandes "Abwesend" immer wieder auf den vorher eingestellten Zeitplan zurückkomme....

Wie mache ich das?

Ich hoffe, ich hab jetzt nicht alle verwirrt :mrgreen:

VG
Jens

Viele Grüße
Jens

ZigBee (Zigbee2MQTT/ SONOFF Zigbee 3.0 USB Dongle Plus ZBDongle-P), HomematicIP (raspberrymatic) und Home Assistant in einer VM auf einem NUC

Benutzeravatar
Osorkon
Administrator
Beiträge: 1905
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 60 times
Been thanked: 516 times
Kontaktdaten:

Re: Werte von Variablen mit Status setzen

Beitrag von Osorkon »

Handelst es sich bei der von Dir genannten Entität um ein input_select?

In dem Fall würde ich Snapshot Szenen erstellen und die danach aufrufen.

Damit erstellst Du ein Snapshot vom input_select.zeitplan und speicherst diesen als Szenen ab -> scene.zeitplan_before

Code: Alles auswählen

action:
  - service: scene.create
    data:
      snapshot_entities: input_select.zeitplan
      scene_id: zeitplan_before

Hiermit rufst Du die zuvor erstellte Szene scene.zeitplan_before auf.

Code: Alles auswählen

action:
  - service: scene.turn_on
    data: {}
    target:
      entity_id: scene.zeitplan_before

Gruß
Osorkon

Einer muss ja für Ordnung sorgen. :D
Benutzeravatar
Snowrisk
Beiträge: 62
Registriert: Di 16. Aug 2022, 12:26
1
Wohnort: bei Köln
Has thanked: 29 times
Been thanked: 1 time

Re: Werte von Variablen mit Status setzen

Beitrag von Snowrisk »

Handelst es sich bei der von Dir genannten Entität um ein input_select?

Glaube nicht, zumindest sagt der Name der Entität nur "select":

select.netatmo_thermostat_steuerung

28-10-_2022_07-29-20.jpg
28-10-_2022_07-29-20.jpg (40.26 KiB) 969 mal betrachtet

Hat aber trotzdem funktioniert!

Code: Alles auswählen

service: scene.create
data:
  scene_id: zeitplan_before
  snapshot_entities:
    - select.netatmo_thermostat_steuerung

Code: Alles auswählen

service: scene.turn_on
target:
  entity_id: scene.zeitplan_before
metadata: {}

Ich war etwas verwirrt, weil der Status der Szene immer auf "unknown" steht. Hatte dort den wert der abgefragten Entität erwartet....

Viele Grüße
Jens

ZigBee (Zigbee2MQTT/ SONOFF Zigbee 3.0 USB Dongle Plus ZBDongle-P), HomematicIP (raspberrymatic) und Home Assistant in einer VM auf einem NUC

Frank-Ahrens
Beiträge: 15
Registriert: Fr 24. Mär 2023, 14:04
1
Has thanked: 1 time

Re: Werte von Variablen mit Status setzen

Beitrag von Frank-Ahrens »

Hallo,
ich habe auch versucht mir innerhalb einer Automation einen aktuellen Zustand per Snapshot zu merken, um ihn dann später wieder herzustellen.
Der Zustand der verwendeten Entität ist 20.0. Wenn ich zwischen der Aktion des Erstellens des Snapshot und des "Zurücksetzens" des gespeicherten Snapshots den Wert im Zustand manuell verändere passiert gar nichts.

Code: Alles auswählen

action:
  - service: scene.create
    metadata: {}
    data:
      scene_id: merken
      snapshot_entities:
        - sensor.temperatur_thermostat_eingestellt_ziel
  - service: scene.turn_on
    metadata: {}
    target:
      entity_id: scene.merken

Wenn ich mir, nachdem Lauf der Automatisierung den Zustand der Szene anschaue, steht dort auch nicht die 20.0 drin, sondern der "Zeitstempel" wann die Automatisierung gelaufen ist.
Wie bekomme ich den richtigen Wert erfasst, um ihn dann hinterher, wieder in den Sensor zu schreiben?

Der Grund für dieses "Konstrukt" ist, dass ich mir den IST-Wert der Temperatur-Vorgabe einer laufenden Automatisierung für ein Termostat merken möchte. Ich habe einen "Schalter" mit dem ich die Vorgabe manuell "übersteuere" und möchte einen weiteren Schalter erstellen, der ein Reset auf die Werte/Vorgaben, der zum Zeitpunkt der manuellen Übersteuerung eingestellten Werte zurücksetzt.

Benutzeravatar
Osorkon
Administrator
Beiträge: 1905
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 60 times
Been thanked: 516 times
Kontaktdaten:

Re: Werte von Variablen mit Status setzen

Beitrag von Osorkon »

@Frank-Ahrens Du kannst den Wert eines Sensors nicht setzen/Manipulieren.

Es ist ein Sensor Wert, der von einem Gerät berichtet wird. Das sit einen Einbahnstraße.

Frank-Ahrens hat geschrieben: Di 12. Mär 2024, 15:32

Der Grund für dieses "Konstrukt" ist, dass ich mir den IST-Wert der Temperatur-Vorgabe einer laufenden Automatisierung für ein Termostat merken möchte.

Du meinst bestimmt die Soll-Tempertaur und nicht die Ist-Temperatur, richtig?

Wenn, dann musst Du Dir ein Snapshot der climate Entität erstellen.

Gruß
Osorkon

Einer muss ja für Ordnung sorgen. :D
Antworten