Notify zu 2 abwechselen Event's triggern (Sonoff und IT-FB)

Begonnen von schwatter, 14 Januar 2018, 11:38:23

Vorheriges Thema - Nächstes Thema

schwatter

Hallo zusammen,

ich habe Sonoff's S20 mit meiner IT-Steckdosen FB per Notify verknüpft.

Zitat

Internals:
   DEF        FB_IT_3:.* set Lampe2_WZ $EVENT
   NAME       FB_IT_Three
   NOTIFYDEV  FB_IT_3
   NR         110
   NTFY_ORDER 50-FB_IT_Three
   REGEXP     FB_IT_3:.*
   STATE      2018-01-14 11:18:37
   TYPE       notify
   READINGS:
     2018-01-14 11:16:11   state           active
Attributes:
   room       6. Notify

Schalte ich den IT trigger schaltet auch die S20.

Jetzt hab ich 2 Probleme.

Wird die S20 direkt am Button der Steckdose geschaltet, ändert sich natürlich nicht der Status des IT Devices. Gleiches gilt für andFhem,
dort nutze ich Widgets mit Verknüpfung zum IT Devices, um zu triggern. Leider scheint andFhem mit dem heutigen Update bei mir defekt zu
sein. Ich wollte gerade schauen ob ich die S20 so anpassen kann, das ich sie in andFhem auf ein Widget legen kann. Dann würde aber immer
noch das Problem bestehen, wenn die S20 direkt am Gerätebutton geschaltet wird.

edit:
Schön wäre, wenn das Notify auf beide Events reagiert und jeweils den anderen Status setzt. Oder besser als DOIF mhh.

frank

suche dir die eindeutigen events auf dem eventmonitor und passe die regex an.
vom prinzip etwa so:
(event1|event2)
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

schwatter

#2
Ich bin noch nicht so bewandert in Perl, glaube aber, das ist nicht das, was ich suche. Es ist doch so, das wenn (event1|event2) abgefragt werden, führt dieses dazu,
das ein dritter Event ausgelöst wird. Bei mir geht es aber nur um 2 Devices, die wenn einer eingeschaltet ist, dem anderen sagen muss, schalte dich auch ein.
Quasi ein double toggle ohne das eine Endlosschleife entsteht.

edit:
Ich denke zu kompliziert? Besser ein Dummy mit 2 Notifys als Schalter verwenden, der dann beide triggert?

frank

die regex eines notify löst kein event aus, sondern filtert events, die das notify triggern.

einsteiger.pdf ruhig öfter mal durcharbeiten.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

schwatter

#4
Ok,
verstanden.

Zum $EVENT,da besteht ein Problem. Wie ich oben angegeben habe, nutzte ich folgendes zum triggern:

ZitatFB_IT_3:.* set Lampe2_WZ $EVENT

Drehe ich den Spieß einfach mal um, nur zum testen passiert nichts.

Lampe2_WZ :.* set FB_IT_3 $EVENT

Hier ein List der beiden Devices mit EventMonitor

Internals:
   DEF        00000FF0FF 0F F0
   IODev      myCUL433
   NAME       FB_IT_3
   NR         101
   STATE      off
   TYPE       IT
   XMIT       00000ff0ff
   XMITdimdown 00
   XMITdimup  00
   XMIToff    f0
   XMITon     0f
   CODE:
     1          00000ff0ff
   READINGS:
     2018-01-04 19:43:28   protocol        V1
     2018-01-14 18:57:09   state           off
Attributes:
   IODev      myCUL433
   icon       light_light
   room       IT
   subType    switch


2018-01-14 18:57:04 IT FB_IT_3 on
2018-01-14 18:57:04 CUL myCUL433 raw: is00000FF0FF0F
2018-01-14 18:57:09 IT FB_IT_3 off
2018-01-14 18:57:09 CUL myCUL433 raw: is00000FF0FFF0


Internals:
   IODev      myBroker
   NAME       Lampe2_WZ
   NR         87
   STATE      ON
   TYPE       MQTT_DEVICE
   qos        *:1
   retain     *:1
   READINGS:
     2018-01-14 19:02:03   presence        Online
     2018-01-14 19:01:19   state           ON
     2018-01-14 19:02:03   transmission-state incoming publish received
   message_ids:
   publishSets:
     :
       topic      cmnd/Schreibtisch/POWER
       values:
         On
         Off
   sets:
     Off       
     On         
   subscribe:
     tele/Schreibtisch/LWT
     stat/Schreibtisch/POWER
   subscribeExpr:
     ^tele\/Schreibtisch\/LWT$
     ^stat\/Schreibtisch\/POWER$
   subscribeReadings:
     stat/Schreibtisch/POWER:
       cmd       
       name       state
     tele/Schreibtisch/LWT:
       cmd       
       name       presence
Attributes:
   IODev      myBroker
   devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON Offline:rc_BLUE:OFF
   icon       message_socket
   publishSet On Off cmnd/Schreibtisch/POWER
   qos        at-least-once
   retain     1
   room       3. Wohnzimmer,MQTT
   stateFormat {ReadingsVal($name,"presence","") eq "Offline" ? "Offline" : ReadingsVal($name,"state","")}
   subscribeReading_presence tele/Schreibtisch/LWT
   subscribeReading_state stat/Schreibtisch/POWER
   webCmd     On:Off


2018-01-14 19:03:03 MQTT myBroker connection: active
2018-01-14 19:03:04 MQTT_DEVICE Lampe2_WZ ON
2018-01-14 19:03:04 MQTT_DEVICE Lampe2_WZ transmission-state: outgoing publish sent
2018-01-14 19:03:04 MQTT_DEVICE Lampe2_WZ transmission-state: outgoing publish acknowledged
2018-01-14 19:03:04 MQTT_DEVICE Lampe2_WZ transmission-state: incoming publish received
2018-01-14 19:03:04 MQTT_DEVICE Lampe2_WZ ON
2018-01-14 19:03:14 MQTT_DEVICE Lampe2_WZ OFF
2018-01-14 19:03:14 MQTT_DEVICE Lampe2_WZ transmission-state: outgoing publish sent
2018-01-14 19:03:14 MQTT_DEVICE Lampe2_WZ transmission-state: outgoing publish acknowledged
2018-01-14 19:03:14 MQTT_DEVICE Lampe2_WZ transmission-state: incoming publish received
2018-01-14 19:03:14 MQTT_DEVICE Lampe2_WZ OFF





schwatter

#5
So, erstmal konnte ich mein Problem lösen. Das mit dem $EVENT beschäftigt mich aber noch immer. Was übersehe ich?

Damit es funktioniert, habe ich als erstes wie oben erwähnt ein simples Notify erstellt, um mit der IT-FB die Sonoff S20 zu triggern.

ZitatFB_IT_3 set Lampe2_WZ $EVENT

Damit der Status auch in umgekehrter Weise funktioniert, wenn der Button der Sonoff S20 gedrückt wird, oder im Webinterface geschaltet wird,
habe ich es mit einem DOIF geschafft.

Zitat([Lampe2_WZ:"^OFF$"]) (set FB_IT_3:FILTER=STATE=on off) DOELSEIF  ([Lampe2_WZ:"^ON$"]) (set FB_IT_3:FILTER=STATE=off on)

Gibt es noch einen eleganteren Weg?