Hallo,
ich verzweifle mal wieder an ein Problem. Was ich versuche, ist über einen Taster eine HUE - Lampe anzusteuern und dort die Farbe zu wechseln.
Es soll so sein, dass wenn ich den Taster drücke, die Lampe ausgeht sofern sie an ist und wenn sie nicht an ist, dann soll sie in einer orangenen Farbe leuchten.
define SZ_Lampe_OFF DOIF ([vccu_Btn2:?ON|OFF] and [vccu_Btn2:virtActTrigType] eq "short_Release" and [HUEDevice3:onoff] == 1) (set HUEDevice3 off ) DOELSE (set HUEDevice3 rgb fa6400)
attr SZ_Lampe_OFF event-on-change-reading e_HUEDevice3_rgb
attr SZ_Lampe_OFF room Schlafzimmer
Was derzeit mit dem obigen Code passiert ist, dass ich die Lampe ausschalte und sie dann nach ca. einer Minute von ganz allein wieder angeht und in dem oben angegebenen Farbton leuchtet.
Wie kann ich denn so einem DOIF beibringen dass es nur dann etwas tun soll, wenn ich den Schalter auch erneut gedrückt habe...? Eigentlich sollte das doch laut Commandref so gehen...
Danke schon mal!
Viele Grüße
Thomas
Geräte-Spezifikationen würden helfen, dir zu helfen:
Poste folgende Lists:
list vccu_Btn2
list HUEDevice3
Hallo flurin
anbei die Spezifikationen. Ich hoffe, du kannst damit was anfangen.
Zitatlist vccu_Btn2
Internals:
DEF 2BACEE02
NAME vccu_Btn2
NR 43
NTFY_ORDER 50-vccu_Btn2
STATE OFF
TYPE CUL_HM
chanNo 02
device vccu
peerList HM_2B4476_Btn_02,
CHANGETIME:
Helper:
Dblog:
State:
Logdb:
TIME 1436469985.85203
VALUE OFF
Triglast:
Logdb:
TIME 1436469985.85203
VALUE HM_2B4476_Btn_02:short
Trig_hm_2b4476_btn_02:
Logdb:
TIME 1436469985.85203
VALUE short
Virtactstate:
Logdb:
TIME 1436469985.85203
VALUE OFF
Virtacttrigno:
Logdb:
TIME 1436469985.85203
VALUE 2
Virtacttrigrpt:
Logdb:
TIME 1436469985.85203
VALUE 1
Virtacttrigtype:
Logdb:
TIME 1436469985.85203
VALUE short_Release
Virtacttrigger:
Logdb:
TIME 1436469985.85203
VALUE HM_2B4476_Btn_02
Readings:
2015-07-09 21:25:54 peerList HM_2B4476_Btn_02,
2015-07-09 21:26:25 state OFF
2015-07-09 21:26:25 trigLast HM_2B4476_Btn_02:short
2015-07-09 21:26:25 trig_HM_2B4476_Btn_02 short
2015-07-09 21:26:25 virtActState OFF
2015-07-09 21:26:25 virtActTrigNo 2
2015-07-09 21:26:25 virtActTrigRpt 1
2015-07-09 21:26:25 virtActTrigType short_Release
2015-07-09 21:26:25 virtActTrigger HM_2B4476_Btn_02
Helper:
trgLgRpt 0
Role:
chn 1
vrt 1
Attributes:
alias vccu_Wandtaster1_Btn02
model virtual_4
peerIDs 2B447602,
webCmd press short:press long
Zitatlist HUEDevice3
Internals:
DEF 3
ID 3
INTERVAL 60
IODev hueBridge1
NAME HUEDevice3
NR 123
STATE unreachable
TYPE HUEDevice
manufacturername Philips
modelid LCT001
name Spot 1
swversion 66013452
type Extended color light
uniqueid 00:17:88:01:00:fa:9f:a9-0b
CHANGETIME:
Helper:
Dblog:
Alert:
Logdb:
TIME 1436469967.88548
VALUE none
Bri:
Logdb:
TIME 1436470443.20373
VALUE 249
Colormode:
Logdb:
TIME 1436469967.88548
VALUE xy
Ct:
Logdb:
TIME 1436470105.76482
VALUE 500 (2000K)
Effect:
Logdb:
TIME 1436469967.88548
VALUE none
Hue:
Logdb:
TIME 1436470503.20626
VALUE 7189
Onoff:
Logdb:
TIME 1436470045.76096
VALUE 1
Pct:
Logdb:
TIME 1436470443.20373
VALUE 98
Reachable:
Logdb:
TIME 1436471103.28474
VALUE 0
Rgb:
Logdb:
TIME 1436530296.54508
VALUE ff610d
Sat:
Logdb:
TIME 1436470105.76482
VALUE 254
State:
Logdb:
TIME 1436471103.28474
VALUE unreachable
Xy:
Logdb:
TIME 1436470503.20626
VALUE 0.6003,0.3771
Readings:
2015-07-09 21:26:07 alert none
2015-07-09 21:34:03 bri 249
2015-07-09 21:26:07 colormode xy
2015-07-09 21:28:25 ct 500 (2000K)
2015-07-09 21:26:07 effect none
2015-07-09 21:35:03 hue 7189
2015-07-09 21:27:25 onoff 1
2015-07-09 21:34:03 pct 98
2015-07-09 21:45:03 reachable 0
2015-07-10 14:11:36 rgb ff610d
2015-07-09 21:28:25 sat 254
2015-07-09 21:45:03 state unreachable
2015-07-09 21:35:03 xy 0.6003,0.3771
Helper:
alert none
bri 249
colormode xy
ct 500
devtype
effect none
hue 7189
percent 98
reachable 0
sat 254
update_timeout 0
xy 0.6003,0.3771
Attributes:
IODev hueBridge1
alias Spot 1
color-icons 2
devStateIcon {(HUEDevice_devStateIcon($name),"toggle")}
model LCT001
room HUEDevice
subType extcolordimmer
webCmd rgb:rgb ff0000:rgb DEFF26:rgb 0000ff:ct 490:ct 380:ct 270:ct 160:toggle:on:off
Ohne Devices kann ich es nicht testen. So könnte es aber funktionieren:
define SZ_Lampe DOIF ([vccu_Btn2:?ON] and [?HUEDevice3:onoff] eq "0") (set HUEDevice3 rgb fa6400)
DOELSEIF ([vccu_Btn2:?OFF] and [?HUEDevice3:onoff] eq "1") (set HUEDevice3 off)
Gruss
flurin
Hi Flurin,
ich möchte aber dass er immer das Event ausführt wenn ich den Schalter drücke. Also unabhänging ob ON oder OFF.
Das mit vccu_Btn2 war nur eine einfache Form von dem was auch nicht geht.
Es soll dann später noch ein Farbwechsel für den ersten Button implementiert werden dass jedes Mal wenn ich drauf drücke, eine andere Farbe erscheint.
Also so:
define SZ_Lampe_ON DOIF ([vccu_Btn1:?ON|OFF] and [vccu_Btn1:virtActTrigType] eq "short_Release" and [HUEDevice3:onoff] == 0) (set HUEDevice3 on : rgb 0e0d09) DOELSEIF ([vccu_Btn1:?ON|OFF] and [HUEDevice3:onoff] == 1 and [vccu_Btn1:virtActTrigType] eq "short_Release" and [HUEDevice3:rgb] eq "0e0d09") (set HUEDevice3 rgb ff610d) DOELSEIF ([vccu_Btn1:?ON|OFF] and [HUEDevice3:onoff] == 1 and [vccu_Btn1:virtActTrigType] eq "short_Release" and [HUEDevice3:rgb] eq "ff610d") (set HUEDevice3 rgb 0000f9)
... und so weiter.
Das Problem ist hier nur dass er immer nur die letzte Farbe anzeigt. Anscheinend arbeitet er die DOELSEIF sofort ab nachdem die Farbe gewechselt wurde und wartet nicht erst auf erneuten Tastendruck.
Viele Grüße
Thomas
Zitat von: ToM_ToM am 10 Juli 2015, 15:06:55
Hi Flurin,
ich möchte aber dass er immer das Event ausführt wenn ich den Schalter drücke. Also unabhänging ob ON oder OFF.
Das mit vccu_Btn2 war nur eine einfache Form von dem was auch nicht geht.
Es soll dann später noch ein Farbwechsel für den ersten Button implementiert werden dass jedes Mal wenn ich drauf drücke, eine andere Farbe erscheint.
Also so:
define SZ_Lampe_ON DOIF ([vccu_Btn1:?ON|OFF] and [vccu_Btn1:virtActTrigType] eq "short_Release" and [HUEDevice3:onoff] == 0) (set HUEDevice3 on : rgb 0e0d09) DOELSEIF ([vccu_Btn1:?ON|OFF] and [HUEDevice3:onoff] == 1 and [vccu_Btn1:virtActTrigType] eq "short_Release" and [HUEDevice3:rgb] eq "0e0d09") (set HUEDevice3 rgb ff610d) DOELSEIF ([vccu_Btn1:?ON|OFF] and [HUEDevice3:onoff] == 1 and [vccu_Btn1:virtActTrigType] eq "short_Release" and [HUEDevice3:rgb] eq "ff610d") (set HUEDevice3 rgb 0000f9)
... und so weiter.
Das Problem ist hier nur dass er immer nur die letzte Farbe anzeigt. Anscheinend arbeitet er die DOELSEIF sofort ab nachdem die Farbe gewechselt wurde und wartet nicht erst auf erneuten Tastendruck.
Viele Grüße
Thomas
HM-Komponenten sind sehr gesprächig (manchmal mehr als einem lieb ist). "on" bzw. "off" kommt mehrfach vor (siehe Eventmonitor). Ich frage bei mir ein "LongRelease" wie folgt ab:
([Alarm_Button] =~ "LongRelease")(....)
Das sollte auch bei ShortRelease funktionieren.
Gruß
Damian
Hi Damian,
ich habe jetzt fast eine Stunde lang versucht, deine Technik in allen Variationen umzusetzen. Aber leider letzten Endes erfolglos.
Es wird immer noch alles durchgetriggert. Ich muss es irgendwie hinbekommen dass das DOIF die Füsse still hält bis das nächste Mal der Taster gedrückt wird. So wie beim notify.
Viele Grüße
Thomas
Dieser einfache DOIF schaltet mir die Lamp sofort aus, ohne dass ich überhaupt den Schalter betätigen muss.
define SZ_Lampe_OFF DOIF ([vccu_Btn2:virtActTrigType] eq "short_Release" and [HUEDevice3:onoff] == 1) (set HUEDevice3 off )
Dabei verwende ich hier kein do always. Somit dürfte die Lampe doch gar nicht automatisch schalten, sondern erst bei Zustandsänderung...
Zitat von: ToM_ToM am 10 Juli 2015, 17:31:51
Dieser einfache DOIF schaltet mir die Lamp sofort aus, ohne dass ich überhaupt den Schalter betätigen muss.
define SZ_Lampe_OFF DOIF ([vccu_Btn2:virtActTrigType] eq "short_Release" and [HUEDevice3:onoff] == 1) (set HUEDevice3 off )
Dabei verwende ich hier kein do always. Somit dürfte die Lampe doch gar nicht automatisch schalten, sondern erst bei Zustandsänderung...
Dann drücke auf deinen vccu_Btn2, schneide es mit Eventmonitor und poste hier die Aktion.
Gruß
Damian
Hi Damian,
anbei das Eventlog:
2015-07-10 18:07:31 HUEDevice HUEDevice1 rgb: ffc698
2015-07-10 18:07:33 CUL_HM HM_2B4476 battery: ok
2015-07-10 18:07:33 CUL_HM HM_2B4476 CMDs_done
2015-07-10 18:07:33 CUL_HM HM_2B4476 HM_2B4476_Btn_02 Short
2015-07-10 18:07:33 CUL_HM HM_2B4476_Btn_02 Short (to vccu)
2015-07-10 18:07:33 CUL_HM HM_2B4476_Btn_02 trigger: Short_37
2015-07-10 18:07:33 CUL_HM HM_2B4476_Btn_02 trigger_cnt: 37
2015-07-10 18:07:42 CUL_HM vccu_Btn2 ON
2015-07-10 18:07:42 CUL_HM vccu_Btn2 trigLast: HM_2B4476_Btn_02:short
2015-07-10 18:07:42 CUL_HM vccu_Btn2 trig_HM_2B4476_Btn_02: short
2015-07-10 18:07:42 CUL_HM vccu_Btn2 virtActState: ON
2015-07-10 18:07:42 CUL_HM vccu_Btn2 virtActTrigNo: 37
2015-07-10 18:07:42 CUL_HM vccu_Btn2 virtActTrigRpt: 1
2015-07-10 18:07:42 CUL_HM vccu_Btn2 virtActTrigType: short_Release
2015-07-10 18:07:42 CUL_HM vccu_Btn2 virtActTrigger: HM_2B4476_Btn_02
2015-07-10 18:07:42 HUEDevice HUEDevice3 rgb: f52604
2015-07-10 18:07:42 HUEDevice HUEDevice2 rgb: ffc698
Zitat von: ToM_ToM am 10 Juli 2015, 18:08:41
Hi Damian,
anbei das Eventlog:
2015-07-10 18:07:31 HUEDevice HUEDevice1 rgb: ffc698
2015-07-10 18:07:33 CUL_HM HM_2B4476 battery: ok
2015-07-10 18:07:33 CUL_HM HM_2B4476 CMDs_done
2015-07-10 18:07:33 CUL_HM HM_2B4476 HM_2B4476_Btn_02 Short
2015-07-10 18:07:33 CUL_HM HM_2B4476_Btn_02 Short (to vccu)
2015-07-10 18:07:33 CUL_HM HM_2B4476_Btn_02 trigger: Short_37
2015-07-10 18:07:33 CUL_HM HM_2B4476_Btn_02 trigger_cnt: 37
2015-07-10 18:07:42 CUL_HM vccu_Btn2 ON
2015-07-10 18:07:42 CUL_HM vccu_Btn2 trigLast: HM_2B4476_Btn_02:short
2015-07-10 18:07:42 CUL_HM vccu_Btn2 trig_HM_2B4476_Btn_02: short
2015-07-10 18:07:42 CUL_HM vccu_Btn2 virtActState: ON
2015-07-10 18:07:42 CUL_HM vccu_Btn2 virtActTrigNo: 37
2015-07-10 18:07:42 CUL_HM vccu_Btn2 virtActTrigRpt: 1
2015-07-10 18:07:42 CUL_HM vccu_Btn2 virtActTrigType: short_Release
2015-07-10 18:07:42 CUL_HM vccu_Btn2 virtActTrigger: HM_2B4476_Btn_02
2015-07-10 18:07:42 HUEDevice HUEDevice3 rgb: f52604
2015-07-10 18:07:42 HUEDevice HUEDevice2 rgb: ffc698
OK. Wenn das alles war, was von vccu_Btn2 kommt, dann liegt es wahrscheinlich an der Selbsttriggerung ausgelöst von (set HUEDevice3 off)
In diesem Fall darfst du keinen Trigger HUEDevice3 angeben, das kannst du mit Fragezeichen beeinflussen (siehe Commandref zu DOIF, dort ist auch genau diese Problematik erklärt), also:
define SZ_Lampe_OFF DOIF ([vccu_Btn2:virtActTrigType] eq "short_Release" and [?HUEDevice3:onoff] == 1) (set HUEDevice3 off )
Gruß
Damian
Hey Damian,
mit deiner Lösung hat es leider nicht geklappt, aber du hast mich auf den richtigen Weg geführt. :) Vielen Dank dafür.
Hier die Lösung:
define SZ_Lampe_OFF DOIF ([vccu_Btn2:?ON|OFF] and [?vccu_Btn2:virtActTrigType] eq "short_Release" and [?HUEDevice3:onoff] == 1) (set HUEDevice3 off )
attr SZ_Lampe_OFF do always
Jetzt klappt es auch sauber mit dem DOELSEIF
define SZ_Lampe_OFF DOIF ([vccu_Btn2:?ON|OFF] and [?vccu_Btn2:virtActTrigType] eq "short_Release" and [?HUEDevice3:onoff] == 1) (set HUEDevice3 off ) DOELSEIF ([vccu_Btn2:?ON|OFF] and [?vccu_Btn2:virtActTrigType] eq "short_Release" and [?HUEDevice3:onoff] == 0) (set HUEDevice3 rgb fa6400)
attr SZ_Lampe_OFF do always
Vielen Dank und ein schönes Wochenende! :)