[gelöst] DOIF aus 2 notifies bauen

Begonnen von locodriver, 31 Oktober 2014, 17:12:51

Vorheriges Thema - Nächstes Thema

locodriver

Hallo miteinander, ich möchte aus 2 notifies, welche funzen, ein DOIF machen. Ich finde das übersichtlicher und der Code wird kürzer.

Der 6-fach-Taster von HM ist als Gerät angelegt und die Tasten als Kanäle:

define BD_T6_Btn_01 CUL_HM 21028D01
attr BD_T6_Btn_01 expert 1
attr BD_T6_Btn_01 model HM-PB-6-WM55
attr BD_T6_Btn_01 peerIDs 00000000,33221101,
attr BD_T6_Btn_01 room CUL_HM


Der Peer ist ein virt. Device zur Rückmeldung.

Die notifies sehen so aus und schalten einen Dummy:

define WH_Rolaauto_aus notify BD_T6_Btn_01.Long.1-.* set Rolaautomatik off


define WH_Rolaauto_ein notify BD_T6_Btn_02.Long.1-.* set Rolaautomatik on


Das DOIF habe ich so angelegt (zum Testen in 2 Varianten):

([BD_T6_Btn_01] eq "Long .*")(set Rolaautomatik off)
DOELSEIF
([BD_T6_Btn_02] eq ".Long.*")(set Rolaautomatik on)


Das ist aus der DEF kopiert.

Taste 1 z.B. liefert folgende Events bei aktiviertem notify:

2014-10-31 17:01:59 CUL_HM BD_T6 BD_T6_Btn_01 Long 1-8440- (to Rueckmeldung)
2014-10-31 17:02:00 dummy Rolaautomatik Aus
2014-10-31 17:02:00 CUL_HM BD_T6_Btn_01 Long 1-8440- (to Rueckmeldung)
2014-10-31 17:02:00 CUL_HM BD_T6_Btn_01 trigger: Long_202
2014-10-31 17:02:00 CUL_HM BD_T6_virtuell_Btn_01 trig_BD_T6_Btn_01: long
2014-10-31 17:02:00 CUL_HM BD_T6_virtuell_Btn_01 trigLast: BD_T6_Btn_01 :long
2014-10-31 17:02:00 CUL_HM BD_T6_virtuell_Btn_01 OFF
2014-10-31 17:02:00 CUL_HM BD_T6_virtuell_Btn_01 virtActState: OFF
2014-10-31 17:02:00 CUL_HM BD_T6_virtuell_Btn_01 virtActTrigger: BD_T6_Btn_01
2014-10-31 17:02:00 CUL_HM BD_T6_virtuell_Btn_01 virtActTrigType: long
2014-10-31 17:02:00 CUL_HM BD_T6_virtuell_Btn_01 virtActTrigRpt: 1
2014-10-31 17:02:00 CUL_HM BD_T6_virtuell_Btn_01 virtActTrigNo: 202
2014-10-31 17:02:00 CUL_HM BD_T6 BD_T6_Btn_01 Long 2-8440- (to Rueckmeldung)
2014-10-31 17:02:00 CUL_HM BD_T6_Btn_01 Long 2-8440- (to Rueckmeldung)
2014-10-31 17:02:00 CUL_HM BD_T6_Btn_01 trigger: Long_202
2014-10-31 17:02:00 CUL_HM BD_T6_virtuell_Btn_01 trig_BD_T6_Btn_01: long
2014-10-31 17:02:00 CUL_HM BD_T6_virtuell_Btn_01 trigLast: BD_T6_Btn_01 :long
2014-10-31 17:02:00 CUL_HM BD_T6_virtuell_Btn_01 OFF
2014-10-31 17:02:00 CUL_HM BD_T6_virtuell_Btn_01 virtActState: OFF
2014-10-31 17:02:00 CUL_HM BD_T6_virtuell_Btn_01 virtActTrigger: BD_T6_Btn_01
2014-10-31 17:02:00 CUL_HM BD_T6_virtuell_Btn_01 virtActTrigType: long
2014-10-31 17:02:00 CUL_HM BD_T6_virtuell_Btn_01 virtActTrigRpt: 2
2014-10-31 17:02:00 CUL_HM BD_T6_virtuell_Btn_01 virtActTrigNo: 202


bei DOIF:

2014-10-31 17:03:51 CUL_HM BD_T6 BD_T6_Btn_01 Long 1-8440- (to Rueckmeldung)
2014-10-31 17:03:51 CUL_HM BD_T6_Btn_01 Long 1-8440- (to Rueckmeldung)
2014-10-31 17:03:51 CUL_HM BD_T6_Btn_01 trigger: Long_204
2014-10-31 17:03:51 CUL_HM BD_T6_virtuell_Btn_01 trig_BD_T6_Btn_01: long
2014-10-31 17:03:51 CUL_HM BD_T6_virtuell_Btn_01 trigLast: BD_T6_Btn_01 :long
2014-10-31 17:03:51 CUL_HM BD_T6_virtuell_Btn_01 OFF
2014-10-31 17:03:51 CUL_HM BD_T6_virtuell_Btn_01 virtActState: OFF
2014-10-31 17:03:51 CUL_HM BD_T6_virtuell_Btn_01 virtActTrigger: BD_T6_Btn_01
2014-10-31 17:03:51 CUL_HM BD_T6_virtuell_Btn_01 virtActTrigType: long
2014-10-31 17:03:51 CUL_HM BD_T6_virtuell_Btn_01 virtActTrigRpt: 1
2014-10-31 17:03:51 CUL_HM BD_T6_virtuell_Btn_01 virtActTrigNo: 204
2014-10-31 17:03:51 CUL_HM BD_T6 BD_T6_Btn_01 LongRelease 2-A040- (to Rueckmeldung)
2014-10-31 17:03:51 CUL_HM BD_T6 CMDs_done
2014-10-31 17:03:51 CUL_HM BD_T6_Btn_01 LongRelease 2-A040- (to Rueckmeldung)
2014-10-31 17:03:51 CUL_HM BD_T6_Btn_01 trigger: Long_204
2014-10-31 17:03:51 CUL_HM BD_T6_virtuell_Btn_01 trig_BD_T6_Btn_01: long
2014-10-31 17:03:51 CUL_HM BD_T6_virtuell_Btn_01 trigLast: BD_T6_Btn_01 :long
2014-10-31 17:03:51 CUL_HM BD_T6_virtuell_Btn_01 OFF
2014-10-31 17:03:51 CUL_HM BD_T6_virtuell_Btn_01 virtActState: OFF
2014-10-31 17:03:51 CUL_HM BD_T6_virtuell_Btn_01 virtActTrigger: BD_T6_Btn_01
2014-10-31 17:03:51 CUL_HM BD_T6_virtuell_Btn_01 virtActTrigType: long_Release
2014-10-31 17:03:51 CUL_HM BD_T6_virtuell_Btn_01 virtActTrigRpt: 2
2014-10-31 17:03:51 CUL_HM BD_T6_virtuell_Btn_01 virtActTrigNo: 204


Ich habe im Laufe der Zeit einige Varianten ausprobiert, die Taste abzufragen, aber der Dummy ließ sich nicht zum Umschalten bewegen.

readings des DOIF:

e_BD_T6_Btn_01_STATE

LongRelease 3-A040- (to Rueckmeldung)

2014-10-31 17:06:31
e_BD_T6_Btn_02_STATE

LongRelease 3-A040- (to Rueckmeldung)

2014-10-31 17:06:43


Wie muss die Abfrage umgeformt werden, damit sie funzt - die 1:1-Übernahme aus dem notify funzt ja leider nicht?

Danke für richtungweisende Ideen. Schönes (verlängertes) WE.

Uwe
fhem 6.0 auf Rpi3 Bookworm
HM-LAN-CFG (FW 0.965), HM-MOD-UART, 2x HM-TC-IT-WM-W-EU, 4x HM-Sec-RHS und 3x HM-CC-RT-DN, 6x HM-LC-Bl1-FM mit je 1x Somfy-Motor,
2x HM-LC-SW2-FM für Licht und Lüfter, 2x HM-PB-6-WM55, Alexa, Jeelinkcross, CUL, CUNO2, IR-Blaster

locodriver

... Dann will ich gleich mal noch die (meine) Lösung posten. Ich hatte eben noch eine Eingebung  :).

([BD_T6_Btn_01] =~ m"Long")(set Rolaautomatik off)
DOELSEIF
([BD_T6_Btn_02] =~ m"Long")(set Rolaautomatik on)


Evtl. braucht das ja noch jemand...

Uwe
fhem 6.0 auf Rpi3 Bookworm
HM-LAN-CFG (FW 0.965), HM-MOD-UART, 2x HM-TC-IT-WM-W-EU, 4x HM-Sec-RHS und 3x HM-CC-RT-DN, 6x HM-LC-Bl1-FM mit je 1x Somfy-Motor,
2x HM-LC-SW2-FM für Licht und Lüfter, 2x HM-PB-6-WM55, Alexa, Jeelinkcross, CUL, CUNO2, IR-Blaster

Damian

#2
Zitat von: locodriver am 31 Oktober 2014, 17:59:14
... Dann will ich gleich mal noch die (meine) Lösung posten. Ich hatte eben noch eine Eingebung  :).

([BD_T6_Btn_01] =~ m"Long")(set Rolaautomatik off)
DOELSEIF
([BD_T6_Btn_02] =~ m"Long")(set Rolaautomatik on)


Evtl. braucht das ja noch jemand...

Uwe

Das m vor dem Anführungszeichen kannst du weglassen.

es reicht also:

([BD_T6_Btn_01] =~ "Long")(set Rolaautomatik off)
DOELSEIF
([BD_T6_Btn_02] =~ "Long")(set Rolaautomatik on)


Gruß

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

locodriver

@Damian: das ist dann die "Krönung" des Optimierens! :D
Ganz großes Dankeschön für DOIF: ich denke, das ist das universellste und mächtigste Modul von fhem...

Noch eine Frage zum Verständnis:
Wenn der Dummy "Rolaautomatik" noch von anderer Stelle bedient werden kann (Web-IF), dann stimmt ja der akt. Zustand nicht mehr mit der internen Verwaltung von DOIF überein. Um trotzdem eine weitere Verarbeitung aller Events bzw. Zeiten im DOIF zu erzwingen, ist dann "doalways" zu setzen - oder? Sonst "denkt" DOIF, der Zustand ist z.B. immer noch "on" obwohl er extern auf "off" geschaltet wurde und reagiert nicht auf einen neuen "on"-Befehl.

Danke und noch einen schönen sonnigen Sonntag!

Uwe
fhem 6.0 auf Rpi3 Bookworm
HM-LAN-CFG (FW 0.965), HM-MOD-UART, 2x HM-TC-IT-WM-W-EU, 4x HM-Sec-RHS und 3x HM-CC-RT-DN, 6x HM-LC-Bl1-FM mit je 1x Somfy-Motor,
2x HM-LC-SW2-FM für Licht und Lüfter, 2x HM-PB-6-WM55, Alexa, Jeelinkcross, CUL, CUNO2, IR-Blaster

Damian

Zitat von: locodriver am 02 November 2014, 10:30:40
Noch eine Frage zum Verständnis:
Wenn der Dummy "Rolaautomatik" noch von anderer Stelle bedient werden kann (Web-IF), dann stimmt ja der akt. Zustand nicht mehr mit der internen Verwaltung von DOIF überein. Um trotzdem eine weitere Verarbeitung aller Events bzw. Zeiten im DOIF zu erzwingen, ist dann "doalways" zu setzen - oder? Sonst "denkt" DOIF, der Zustand ist z.B. immer noch "on" obwohl er extern auf "off" geschaltet wurde und reagiert nicht auf einen neuen "on"-Befehl.

Genauso ist es, wie am ersten Beispiel mit Garagentor-Fernbedienung in der Commandref von DOIF erklärt.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF