Speichern eines Zustandes und wieder abrufen

Begonnen von h-man-kl, 16 Januar 2018, 08:50:05

Vorheriges Thema - Nächstes Thema

h-man-kl

Hallo zusammen, ich hoffe ich bin in der richtigen Rubrik...
seit Tagen versuche ich mich daran folgendes umzusetzen:

Situation 1)
HUE Lampe ist aus,  Bewegungsmelder löst aus => HUE soll rot Blinken und wieder ausgehen das klappt mit set HUEDevice5 on : bri 100 : rgb ED0000;set HUEDevice5 alert lselect; sleep 18; set HUEDevice5 off

Situation 2)
HUE ist z.B weiß oder grün oder irgendwie, Bewegungsmelder löst aus => HUE soll wieder rot Blinken und danach in den vorherigen Zustand gehen.... das klappt nicht weil ich nicht weiß wie ich den Zustand abspeichern kann.
Hatte es schon mit Lightscene probiert und dort mit previos scene, aber das ist ja nur die Scene die in der Tabelle vorher steht und nicht die die zuvor gewählt war .....

Gibt es irgend eine Funktion mit der ich den Zustand für eine spätere verwendung abspeichern kann?

Ich hoffe ich hab mich halbwegs verständlich ausgedrückt....

Gruß aus dem Regen
H-Man
RasPi 3 mit MaxCube für FS20 , HM-Urart, HM-LAN, MiLight, HUE, Lightify, SONOS, Harmony, Unifi, FritzBox 7490... :-)
Ganz nach dem Motto: Normal? Normal is langweilig....

marvin78

Per setreading ein eigenes Reading setzen und danach mit ReadingsVal wieder auslesen.

h-man-kl

Hallo Marvin,
danke für den Hinweis, aber auch nach dem Lesen der Referenz kapier ich nicht was ich mit deiner Zeile anfangen soll....

Kannst du mir das etwas näher erklären?
RasPi 3 mit MaxCube für FS20 , HM-Urart, HM-LAN, MiLight, HUE, Lightify, SONOS, Harmony, Unifi, FritzBox 7490... :-)
Ganz nach dem Motto: Normal? Normal is langweilig....

marvin78

Du liest den aktuellen Zustand (vor dem setzen auf rot) aus und setzt ihn in ein eigenes Reading (bspw. oldState). Dieses liest du dananach wieder aus und nutzt den Wert um in den vorherigen Zustand zurück zu kehren.

Auslesen: ReadingsVal

Setzen eines Readings: setreading

Alternativ kannst du den Wert auch in einem dummy zwischenlagern.

Wenn du mehr Hilfe möchtest, musst du mir schon zeigen, was du versucht hast. Ich rate ungerne.

h-man-kl

Ja ich möchte mehr Hilfe :-)
Ich stehe wohl komplett auf dem Schlauch wie ich ReadingsVal und setreading überhaupt nutzen soll. Wie gesagt, der Einzeiler aus der Ref. bringt mich nicht weiter :-(

mit einem dummy hatte ich auch experimentiert indem ich eine Structure gebildet hatte dann waren bei setzen der structure die Werte auch im dummy aber ich habe keine Idee wie ich die da wieder rausbekommen soll, da es ja auch da nicht "set Lampe1 wie Lampe2" gibt

Gruß
H-Man
RasPi 3 mit MaxCube für FS20 , HM-Urart, HM-LAN, MiLight, HUE, Lightify, SONOS, Harmony, Unifi, FritzBox 7490... :-)
Ganz nach dem Motto: Normal? Normal is langweilig....

marvin78

Da ich es nicht besser erklären kann, als es schon in der commandref steht, hier der Auszug zu setreading:

Zitatsetreading <devspec> <reading> <value>

Der Befehl setzt das Reading <reading> auf den Wert <value> ohne Signale an das betroffene Gerät zu senden, generiert aber Ereignisse und die übliche eventMap und stateFormat Umwandlung wird auch durchgeführt.
Siehe den Abschnitt über Geräte-Spezifikation für Details der <devspec> und die Beschreibung des set Befehls für Ersetzung.

Beispiel:
setreading lampe state on
Achtung: setreading generiert kein Event für ein Gerät X, falls es aus einem notify für Gerät X aufgerufen wurde. In so einem Fall könnte man auf "sleep 0.1; setreading X Y Z" ausweichen.

und der für ReadingsVal()

ZitatReadingsVal(<devicename>,<reading>,<defaultvalue>)
Gibt den Inhalt der "readings" zurück (den Inhalt der in dem "Readings"-Abschnitt von "list device" angezeigt wird)

ReadingsVal ist ggf. nicht notwendig, je nach Verwendung. Dazu ggf. die commandref zu set konsultieren. Da steht, wie man auch ohne ReadingsVal Readings eines Devices bekommt.

Was genau ist daran nicht zu verstehen? Mein Tipp ist, dass die Grundlagen einfach fehlen und du nicht das Einsteiger-PDF gelesen hast. Wenn das der Fall ist, gehe erstmal Schritt für Schritt vor und dann mache etwas komplexere Sachen, wie dieses hier.

Ggf. hilft dir auch OldValue()...je nach Device.

h-man-kl

Danke den Text habe ich gelesen, verstehe aber immer noch nicht wie ich damit die Werte meiner HUE "abspeichern" und später wieder zurückschreiben kann.
Ich habe etliche "komplexe" Szenarien in meinen Systemen und dachte eigentlich, dass das hier was total simples sein müsste.
Naja so definieren eben unterschiedliche Personen komplex :-) Nix für Ungut und danke für deine Hilfe, evtl. hat ja noch jemand ein Beispiel das mir weiterhilft.

Gruß
H-man
RasPi 3 mit MaxCube für FS20 , HM-Urart, HM-LAN, MiLight, HUE, Lightify, SONOS, Harmony, Unifi, FritzBox 7490... :-)
Ganz nach dem Motto: Normal? Normal is langweilig....

CBSnake

Hi,

ich kann dir das "grob" als DOIF zusammentippen, die Feinarbeit musste dann aber selber machen :-) Kommt halt drauf an ob DOIF für dich in Frage kommt :-)

Grüße
Achim
FHEM auf Debian 10, HM-Wlan, JeeLink-Wlan, Wlanduino, ConBee, TP-Link Steckdose, GHoma Steckdosen, Shelly Steckdosen

h-man-kl

Hi Achim,
na klar würde ich mich darüber freuen ein grobes Muster zu erhalten. Im Endeffekt will ich ja kein Copy/Paste machen sondern verstehen.
DOIFs nutze ich auch ....
Wie gesagt, entweder hab ich hier einen völlig falschen Denkansatz, oder ich bin doof.
Ich hoffe nicht, dass es letzteres ist.
Mal sehen was du "lieferst" :-)

Im Moment bastel ich gerade an einem notify das einen Dummy bestückt und somit dann auch wieder den echten Aktor bestücken kann, aber das gefällt mir noch nicht so ganz.

Gruß
H-Man
RasPi 3 mit MaxCube für FS20 , HM-Urart, HM-LAN, MiLight, HUE, Lightify, SONOS, Harmony, Unifi, FritzBox 7490... :-)
Ganz nach dem Motto: Normal? Normal is langweilig....

sinus61


setreading HUEDevice5 rgbstore [HUEDevice5:rgb]


So hat du z.b. den aktuellen rgb Wert in rgbstore gespeichert und kannst den danach wieder auslesen und setzen. Kannst auch statt des Readings ein dummy nehmen.

justme1968

oder mit lightscene den aktuellen zustand speichern und danach wieder herstellen. beispiele gibt es im forum.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

h-man-kl

@sinus61: sorry aber wenn ich das beispiel von dir umsetze bekomme ich zwar neue readings, die sich auch schön ändern wenn ich z.b. die farbe änder aber, den vorhergehenden wert bekomme ich nicht, da steht immerdas selbe:
Aktuell ist die Lampe BLAU, das ROT davor ist nicht erkennbar.

IODev      EG.HUE.Bridge
   IODevMissing 1
   IODevName  HUEBridge
   NAME       Haustuer.RGB.01
   NR         32
   STATE      on
   TYPE       HUEDevice
   desired    1
   manufacturername Philips
   modelid    LCT003
   name       Haustuer RGB 01
   swversion  5.105.0.21536
   type       Extended color light
   uniqueid   00:17:88:01:10:35:82:45-0b
   READINGS:
     2018-01-15 20:45:29   alert           lselect
     2018-01-16 18:54:09   bri             254
     2018-01-16 18:54:09   bri::           254
     2018-01-16 18:54:09   colormode       xy
     2018-01-16 19:08:39   ct              153 (6535K)
     2018-01-14 11:17:25   effect          none
     2018-01-16 19:08:39   hue             47104
     2018-01-16 19:08:39   hue::           47104
     2018-01-16 19:34:33   onoff           1
     2018-01-16 19:34:33   onoff::         1
     2018-01-16 19:34:33   pct             100
     2018-01-16 19:34:33   pct::           100
     2018-01-16 19:06:33   reachable       1
     2018-01-16 19:35:38   rgb             0000f9
     2018-01-16 19:35:39   rgb::           0000f9
     2018-01-16 19:33:42   rgbstore        0c00f9
     2018-01-16 19:33:42   rgbstore::      0c00f9
     2018-01-16 19:08:39   sat             254
     2018-01-16 19:08:39   sat::           254
     2018-01-16 19:34:33   state           on
     2018-01-16 19:35:38   xy              0.1321,0.0284
   helper:
     alert      lselect
     bri        254
     colormode  xy
     ct         153
     devtype   
     effect     none
     hue        47104
     pct        100
     reachable  1
     rgb        0000f9
     sat        254
     update_timeout -1
     xy         0.1321,0.0284
Attributes:
   IODev      HUEBridge
   alias      Haustür RGB 01
   color-icons 2
   devStateIcon {(HUEDevice_devStateIcon($name),"toggle")}
   group      Beleuchtung
   icon       light_wall_2
   model      LCT003
   room       Außenbereich,HUEDevice
   subType    extcolordimmer
   userattr   lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0
   verbose    0
   webCmd     on:off:hue:rgb ff0000:rgb DEFF26:rgb 0000ff:ct 490:ct 380:ct 270:ct 160


@justme
Lightscen benutze ich recht oft für verschiedene Aufgaben, aber ich wüsste nicht wo ich dort zur zuvor eingestellten Scene wechseln kann (s.o.) previous scene geht ja nur eine Szene in der "Liste" zurück Diesen Gedanken hatte ich als erstes auch, hat aber ncht funktioniert.
Zumal ich dann ja zig szenen anlegen müsste. :-(

Nochmal zur Verdeutlichung:

Ich habe eine Lampe die heute den Wert morgen den und in 2min den hat kommt eben drauf an welches licht mir gerade gefällt (oder von einem anderen Trigger eingestellt wurde)
nun löst z.B. mein Bewegungsmelder aus und dannn soll eben diese Lampe rot Blinken und danach in genau den Zustand zurückkehren den sie vorher hatte....

etwa so: (klappt so natürlich nicht wirklich)
#define n_blink notify Melder.on {fhem("set SpeicherWerteHUEDevice5; set HUEDevice5 on : bri 100 : rgb ED0000;set HUEDevice5 alert lselect; sleep 18; set HUEDevice5 AufAlteWerte")}

Damit wäre es egal was für eine Einstellung HUEDevice5 hat und woher die kommen aber bei der Aktion Melder.on wird erst gespeichert und dann blinken gelassen......

Gruß
H-Man
RasPi 3 mit MaxCube für FS20 , HM-Urart, HM-LAN, MiLight, HUE, Lightify, SONOS, Harmony, Unifi, FritzBox 7490... :-)
Ganz nach dem Motto: Normal? Normal is langweilig....

justme1968

previous und next hat doch nichts damit zu tun.

du speicherst mitset <name> save meinGespeicherterZustand und stellst es später wieder her mit
set <name>scene meinGespeicherterZustand
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

h-man-kl

@justme1968:
aaaaaaaahhhhh! ich glaube jetzt wird ein Schuh draus!
wenn ich das jetzt richtig sehe, mache ich folgendes:
1) ich lege mir mit Lighscene für "HUEDevice5" erstmal ein Lightscene Device (LS.HUEDevice5) an
2) die Lampe bekommt durch eine Fernbedienung, einen Taster, oder was auch immer einen Wert
3) der Trigger löst aus und führt folgendes aus: set  LS.HUEDevice5 save speichermich
4) Lampe entsprechend blinken lassen
5) set LS.HUEDevice5 scene speichermich

3, 4,5 sind in einem doif oder notify zusammengefasst und funktionieren immer wieder

Korrekt?!

Gruß
H-man
RasPi 3 mit MaxCube für FS20 , HM-Urart, HM-LAN, MiLight, HUE, Lightify, SONOS, Harmony, Unifi, FritzBox 7490... :-)
Ganz nach dem Motto: Normal? Normal is langweilig....

justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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