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
Per setreading ein eigenes Reading setzen und danach mit ReadingsVal wieder auslesen.
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?
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.
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
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.
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
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
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
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.
oder mit lightscene den aktuellen zustand speichern und danach wieder herstellen. beispiele gibt es im forum.
@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
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
@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
genau.
Hallo zusammen,
nochmals Danke an alle die mir bei der Umsetzung geholfen haben! Mein Vorhaben funktioniert jetzt problemlos.
Hier ein Beispiel:
HM_46AAC4:motion {fhem ("set LS.97.HUE save SPEICHERMICH; set HUEDevice4 on : bri 100 : rgb ED0000; set HUEDevice4 alert lselect; sleep 20; set LS.97.HUE scene SPEICHERMICH")}
Beim auslösen des Bewegungsmelders wird der Zustand von HUEDevice4 ind der LightScene LS.97.HUE als Scene SPEICHERMICH gespeichert, dann auf rot gesetzt und blinken gelassen und anschließend wird der alte Zustand wieder eingestellt.