[structure] Idee: save & restore

Begonnen von betateilchen, 10 Februar 2018, 20:19:38

Vorheriges Thema - Nächstes Thema

betateilchen

Eigentlich wäre es prima, wenn man ein

"set <structureName> save"

ausführen könnte, um den Zustand (state) aller in der structure enthaltenen devices speichern und später mit

"set <structureName> restore"

wiederherstellen zu können.


Anwendungsszenario:


  • In meinem Wohnzimmer gibt es mehrere schaltbare Beleuchtungen, die alle in einer structure zusammengefasst sind.
  • Diese structure wird durch einen Bewegungsmelder per notify auf "off" geschaltet, wenn innerhalb von 15 Minuten keine Bewegung im Raum festgestellt wurde.
  • Wird nun der Raum wieder betreten, soll der zuvor vorhandene Zustand der Beleuchtung wieder hergestellt werden. Da nicht zwingend immer alle Leuchten angeschaltet waren, ist ein einfaches "set ... on" nicht zielführend.
  • Das Speichern könnte im einfachsten Fall in irgendeiner Form in den INTERNAL erfolgen.

Vielleicht gibt es das Ganze ja auch jetzt schon irgendwie, aber trotz intensiver Suche und viel Lesen habe ich nichts diesbezüglich gefunden.


-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

justme1968

LightScene macht unter anderem genau das.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

betateilchen

Soweit ich gesehen habe, funktioniert LightScene aber im Gegensatz zu structure nicht recursiv.

Ausserdem bin ich mit structure eigentlich seit Jahren ganz zufrieden :)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

Ich habe saveStructState / restoreStructState implementiert und eingecheckt:
Zitat

       
  • saveStructState <readingName>
    The state reading of all members is stored comma separated in the specified readingName.

  •    
  • restoreStructState <readingName>
    The state of all members will be restored from readingName by calling "set member stateValue".
Da es relativ einfach implementiert ist, kann man damit vermutlich Unsinn treiben.
Ich bin nicht sicher, dass ich jeden Sonderfall sauber abfangen will.

betateilchen

Danke, ich schaue mir das bei Gelegenheit an. Wenn mir was auffällt, melde ich mich :)

Helau!
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Funktioniert :)

Zwar nicht rekursiv, aber das kann ich per "set TYPE=structure saveStructState status" relativ einfach lösen.

Danke!
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!