Hallo Zusammen,
ich habe da ein für mich größeres und für euch hoffentlich kleineres Problem.
Kurzversion: Ich möchte bei einer RGB-Lampe den Farbwert zwischenspeichern.
Langversion: Ich habe einen Fibaro Zwischenstecker zum erkennen ob die Waschmaschine im Keller fertig ist.
Dies funktioniert auch bereits alles. Wenn die Waschmaschine fertig ist soll im Wohnzimmer die Lampe auf "grün" wechseln um anzuzeigen, dass die Maschine im fertig ist. Jetzt möchte ich mit meinen Amazon Dashbutton die inzwischen auf grün gewechselte Lampe wieder auf den ursprünglich eingestellten Farbwert stellen.
Notify für Fibaro Zwischenstecker - hier müsste wohl ein Farbcode zwischenspeichern erfolgen?
ZWave_SWITCH_BINARY_3:power:.* {
if (ReadingsNum("ZWave_SWITCH_BINARY_3", "power", 0) > 18 && ReadingsVal("ZWave_SWITCH_BINARY_3", "Waschmaschine", "off") eq "off") {
fhem("setreading ZWave_SWITCH_BINARY_3 Waschmaschine on");
}
if (ReadingsNum("ZWave_SWITCH_BINARY_3", "power", 0) < 10 && ReadingsVal("ZWave_SWITCH_BINARY_3", "Waschmaschine", "off") eq "on") {
fhem("setreading ZWave_SWITCH_BINARY_3 Waschmaschine off");
fhem("set HUEDevice8 rgb 98ff23");
}
}
Notify Dashbutton - hier müsste wohl ein "gespeicherter Farbcode widerherstellen rein"
DashButton01:present set HUEDevice8 toggle
wer kann hier weiterhelfen?
Wäre nicht die einfachste Lösung einen Dummy für die Zwischenspeicherung zu verwenden?
Dazu den aktuellen Farbwert auslesen (kenne mich mit Hue nicht aus, deshalb weiss ich nicht welches Reading das wäre)
Im dashbutton notfy dann den state vom dummy als Wert für das Setzen verwenden
Oder habe ich jetzt was missverstanden?
Achso und eine Kleinigkeit: im zweiten if deines notifys sollte es vermutlich "on" als default wert sein, denn wenn nichts gesetzt ist willst Du ja wohl den korrekten wert setzen:
...
if (ReadingsNum("ZWave_SWITCH_BINARY_3", "power", 0) < 10 && ReadingsVal("ZWave_SWITCH_BINARY_3", "Waschmaschine", "on") eq "on") {
...
setreading HUEDevice8 previousHue ReadingsVal("HUEDevice8", "hue", "XX")
im ersten, und dann set HUEDevice8 hue ReadingsVal("HUEDevice8", "previousHue", "XX")
Mit XX entweder leer, oder mit einer beliebige Hue Farbe
danke euch schonmal :)
habe es wie amenomade gepostet hat versucht aber komme nicht klar.
die einzige schreibweise, wie ich es abspeichern kann ist
ZWave_SWITCH_BINARY_3:power:.* {
if (ReadingsNum("ZWave_SWITCH_BINARY_3", "power", 0) > 18 && ReadingsVal("ZWave_SWITCH_BINARY_3", "Waschmaschine", "off") eq "off") {
fhem("setreading ZWave_SWITCH_BINARY_3 Waschmaschine on");
}
if (ReadingsNum("ZWave_SWITCH_BINARY_3", "power", 0) < 10 && ReadingsVal("ZWave_SWITCH_BINARY_3", "Waschmaschine", "off") eq "on") {
fhem("setreading ZWave_SWITCH_BINARY_3 Waschmaschine off");
fhem "setreading HUEDevice8 previousHue ".(ReadingsVal("HUEDevice8", "hue", "XX"));
fhem("set HUEDevice8 rgb 98ff23");
}
}
funktionieren tut es dann trozdem nicht.
wenn ich versuche
ZWave_SWITCH_BINARY_3:power:.* {
if (ReadingsNum("ZWave_SWITCH_BINARY_3", "power", 0) > 18 && ReadingsVal("ZWave_SWITCH_BINARY_3", "Waschmaschine", "off") eq "off") {
fhem("setreading ZWave_SWITCH_BINARY_3 Waschmaschine on");
}
if (ReadingsNum("ZWave_SWITCH_BINARY_3", "power", 0) < 10 && ReadingsVal("ZWave_SWITCH_BINARY_3", "Waschmaschine", "off") eq "on") {
fhem("setreading ZWave_SWITCH_BINARY_3 Waschmaschine off");
setreading HUEDevice8 previousHue ReadingsVal("HUEDevice8", "hue", "XX");
fhem("set HUEDevice8 rgb 98ff23");
}
}
lässt fhem mich nicht speichern wegen einen syntax error.
leider bin ich noch ein Anfänger und blicke bei fhem noch nicht so recht durch.
Ja mein Schuld. So besser:
fhem ("setreading HUEDevice8 previousHue ".ReadingsVal("HUEDevice8", "hue", "XX"));
sollte aber gehen?
Wenn nicht, zeig bitte ein "list HUEDevice8"
geht leider noch nicht :'(
HUEDevice8
Internals:
CHANGED
DEF 8 IODev=Hue
ID 8
INTERVAL
IODev Hue
NAME HUEDevice8
NR 59
STATE on
TYPE HUEDevice
manufacturername IKEA of Sweden
modelid TRADFRI bulb E27 CWS opal 600lm
name Color light 3
swversion 1.3.002
type Color light
uniqueid 00:0b:57:ff:fe:ab:f0:e1-01
READINGS:
2017-11-11 20:37:08 alert none
2017-11-11 20:37:08 bri 254
2017-11-11 20:37:08 colormode xy
2017-11-11 20:37:08 effect none
2017-11-11 20:37:08 hue 62608
2017-11-11 20:37:08 onoff 1
2017-11-11 20:37:08 pct 100
2017-11-11 20:37:08 reachable 1
2017-11-11 20:37:08 rgb 0000f9
2017-11-11 20:37:08 sat 0
2017-11-11 20:37:08 state on
2017-11-11 20:37:08 xy 0.1321,0.0284
helper:
alert none
bri 254
colormode xy
ct -1
devtype
effect none
hue 62608
pct 100
reachable 1
rgb 0000f9
sat 0
update_timeout 1
xy 0.1321,0.0284
Attributes:
IODev Hue
alias Color light 3
color-icons 2
devStateIcon {(HUEDevice_devStateIcon($name),"toggle")}
model TRADFRI bulb E27 CWS opal 600lm
room 0.0.0 Testing,9.7.1 HUE Devices
subType colordimmer
webCmd hue:rgb:rgb ff0000:rgb 98FF23:rgb 0000ff:toggle:on:off
Auszug ausm Logfile
2017.11.11 20:46:31 3: Keller_Waschmaschine return value: Unknown command {
, try help.
Unknown command }
, try help.
Unknown command fhem, try help.
Unknown command fhem("set, try help.
Unknown command }
}
, try help.
Das hast Du ein anderes Syntaxproblem. Zeig bitte dein gesammtes notify wieder
Internals:
DEF ZWave_SWITCH_BINARY_3:power:.* {
if (ReadingsNum("ZWave_SWITCH_BINARY_3", "power", 0) > 18 && ReadingsVal("ZWave_SWITCH_BINARY_3", "Waschmaschine", "off") eq "off") {
fhem("setreading ZWave_SWITCH_BINARY_3 Waschmaschine on");
}
if (ReadingsNum("ZWave_SWITCH_BINARY_3", "power", 0) < 10 && ReadingsVal("ZWave_SWITCH_BINARY_3", "Waschmaschine", "off") eq "on") {
fhem("setreading ZWave_SWITCH_BINARY_3 Waschmaschine off");
fhem ("setreading HUEDevice8 previousHue ".ReadingsVal("HUEDevice8", "hue", "XX"));
fhem("set HUEDevice8 rgb 98ff23");
}
}
NAME Keller_Waschmaschine
NOTIFYDEV ZWave_SWITCH_BINARY_3
NR 84
NTFY_ORDER 50-n_KU_Spuelmaschine_start
REGEXP ZWave_SWITCH_BINARY_3:power:.*
STATE 2017-11-11 20:52:15
TYPE notify
READINGS:
2017-11-11 20:48:39 state active
Attributes:
room 0.0.0 Testing
Hmmm. Wie genau editierst Du dein notify? External Editor? Klick auf DEF? Rawdef?
Zeig mal bitte ein "list -r Keller_Waschmaschine"
über die Webseite dann im notify auf DEF (habe des Theme Hausautomatisierung.com installiert)
hier des notify
define Keller_Waschmaschine notify ZWave_SWITCH_BINARY_3:power:.* {\
if (ReadingsNum("ZWave_SWITCH_BINARY_3", "power", 0) > 18 && ReadingsVal("ZWave_SWITCH_BINARY_3", "Waschmaschine", "off") eq "off") {\
fhem("setreading ZWave_SWITCH_BINARY_3 Waschmaschine on");;\
}\
\
if (ReadingsNum("ZWave_SWITCH_BINARY_3", "power", 0) < 10 && ReadingsVal("ZWave_SWITCH_BINARY_3", "Waschmaschine", "off") eq "on") {\
fhem("setreading ZWave_SWITCH_BINARY_3 Waschmaschine off");;\
fhem ("setreading HUEDevice8 previousHue ".ReadingsVal("HUEDevice8", "hue", "XX"));;\
fhem("set HUEDevice8 rgb 98ff23");;\
\
}\
}\
\
\
attr Keller_Waschmaschine room 0.0.0 Testing
setstate Keller_Waschmaschine 2017-11-11 21:33:23
setstate Keller_Waschmaschine 2017-11-11 20:48:39 state active
Anscheinend gibt es irgendwelches (Sonder-?)Zeichen am Ende jeder Linie.
Versuch mal bei jeder Zeile (wenn Du auf DEF geklickt hast), das letzte Zeichen zu löschen
ja du hattest recht, da waren wohl noch Leerzeichen oder sowas drin. habe den code nochmal alle Leerstellen gelöscht und neu formatiert.
jetzt funktioniert die Farbänderung auf "grün" und der Wert "previusHue" wird auch gesetzt.
Aber irgendwas passt im notify für den Farbwechsel noch nicht.
2017.11.11 23:19:13 1: PERL WARNING: Argument "ReadingsVal("HUEDevice8"," isn't numeric in addition (+) at ./FHEM/31_HUEDevice.pm line 503.
2017.11.11 23:19:13 1: PERL WARNING: Argument ""previousHue"," isn't numeric in multiplication (*) at ./FHEM/31_HUEDevice.pm line 504.
hier nochmal mein Amazon Dash Button
Internals:
DEF set HUEDevice8 rgb ReadingsVal("HUEDevice8", "previousHue", "XX")
NAME notDashButton01
NR 80
NTFY_ORDER 50-notDashButton01
REGEXP set
STATE active
TYPE notify
READINGS:
2017-11-11 23:16:49 state active
Attributes:
room 0.0.0 Testing
Ja, gleiches Problem wie am Anfang für den anderen.
Ich bin mir nicht mehr sicher, ob notify die Syntax [Device:Reading] akzeptiert, wenn ja:
set HUEDevice8 rgb [HUEDevice8:previousHue]
Wenn nicht:
set HUEDevice8 rgb {ReadingsVal("HUEDevice8", "previousHue", "XX")}
Und wenn immer noch nicht, dann
{fhem ("set HUEDevice8 rgb ".ReadingsVal("HUEDevice8", "previousHue", "XX"))}
ReadingsNum schon probiert?
Die Funktion ReadingsNum() extrahiert einen numerischen Wert aus dem Reading
sehe gerade, du hattest es immer. Aber Num sollte bei Zahlen verwendet werden. Vmtl bei den ganzen probieren abhanden gekommen
Vielen vielen dank für die super hilfe :)
Lösung: habe im notify den Wert auf "rgb" setzen lassen
Internals:
DEF ZWave_SWITCH_BINARY_3:power:.* {
if (ReadingsNum("ZWave_SWITCH_BINARY_3", "power", 0) > 18 && ReadingsVal("ZWave_SWITCH_BINARY_3", "Waschmaschine", "off") eq "off") {
fhem("setreading ZWave_SWITCH_BINARY_3 Waschmaschine on");
}
if (ReadingsNum("ZWave_SWITCH_BINARY_3", "power", 0) < 10 && ReadingsVal("ZWave_SWITCH_BINARY_3", "Waschmaschine", "off") eq "on") {
fhem("setreading ZWave_SWITCH_BINARY_3 Waschmaschine off");
fhem ("setreading HUEDevice8 previousHue ".ReadingsVal("HUEDevice8", "rgb", "XX"));
fhem("set HUEDevice8 rgb 98ff23");
}
}
NAME Keller_Waschmaschine
NOTIFYDEV ZWave_SWITCH_BINARY_3
NR 81
NTFY_ORDER 50-Keller_Waschmaschine
REGEXP ZWave_SWITCH_BINARY_3:power:.*
STATE 2017-11-11 23:54:30
TYPE notify
READINGS:
2017-11-11 23:48:41 state active
Attributes:
room 0.0.0 Testing
im Dash Button Notify
Internals:
DEF set HUEDevice8 rgb [HUEDevice8:previousHue]
NAME notDashButton01
NR 80
NTFY_ORDER 50-notDashButton01
REGEXP set
STATE active
TYPE notify
READINGS:
2017-11-11 23:54:39 state active
Attributes:
room 0.0.0 Testing
Jetzt hab ich nur ein Problem mit meinen Dash Button aber ich denk des hat mit diesen Problem nichts mehr zu tun.
wenn ich direkt set HUEDevice8 rgb [HUEDevice8:previousHue]
funktioniert es wie es sollte.
nochmal DANKE
um kurz über eine hue lampe zu benachrichtigen kann man effect verwenden.
um sich den zustand länger zu merken ist rgb nicht gut geeignet. da colormode und ein/aus verloren gehen. auch die anderen readings sind für sich alleine genommen nicht gut da die aktuelle farbe immer aus mindestens 3 informationen besteht. dazu kommt dann noch der colormode.
um sich den aktuellen zustand zu merken und später wieder her zu stellen bietet sich LightScene an. hier wird auch berücksichtig das die lampe gerade aus sein könnte oder in einen anderen color mode läuft.
einfach eine mit save zwischenspeichern und mit set scene wieder herstellen.