FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: ToM_ToM am 09 Juli 2015, 21:38:20

Titel: [gelöst] DOIF triggert auch ohne Event
Beitrag von: ToM_ToM am 09 Juli 2015, 21:38:20
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
Titel: Antw:DOIF triggert auch ohne Event
Beitrag von: flurin am 10 Juli 2015, 09:40:38
Geräte-Spezifikationen würden helfen, dir zu helfen:

Poste folgende Lists:

list vccu_Btn2
list HUEDevice3
Titel: Antw:DOIF triggert auch ohne Event
Beitrag von: ToM_ToM am 10 Juli 2015, 14:13:29
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
Titel: Antw:DOIF triggert auch ohne Event
Beitrag von: flurin am 10 Juli 2015, 14:39:48
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
Titel: Antw:DOIF triggert auch ohne Event
Beitrag 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


Titel: Antw:DOIF triggert auch ohne Event
Beitrag von: Damian am 10 Juli 2015, 15:37:38
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
Titel: Antw:DOIF triggert auch ohne Event
Beitrag von: ToM_ToM am 10 Juli 2015, 16:26:04
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
Titel: Antw:DOIF triggert auch ohne Event
Beitrag 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...
Titel: Antw:DOIF triggert auch ohne Event
Beitrag von: Damian am 10 Juli 2015, 18:06:37
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
Titel: Antw:DOIF triggert auch ohne Event
Beitrag 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
Titel: Antw:DOIF triggert auch ohne Event
Beitrag von: Damian am 10 Juli 2015, 20:23:23
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
Titel: Antw:DOIF triggert auch ohne Event
Beitrag von: ToM_ToM am 10 Juli 2015, 21:08:19
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! :)