event-on-change-reading Problem

Begonnen von Schuetze5, 10 Januar 2017, 12:22:28

Vorheriges Thema - Nächstes Thema

Schuetze5

Guten Morgen,
ich habe einen HM-LC-Sw1PBU-FM Aktor für meine Aussenbeleuchtung.
Mit einem notify bekomme ich eine Meldung geschickt wenn die Beleuchtung ausgeschaltet wird und mit einem anderen wenn er eingeschaltet wird
Das funktioniert auch, jetzt kommt diese Meldung auch wenn die Lampen aus sind und sie nochmal ausgeschaltet werden oder wenn sie eingeschaltet ist und nochmal eingeschaltet wird.
Ich habe es jetzt beim Aktor ein event-on-change-reading state eingerichtet.
Damit sollten die notify doch nur ausgeführt werden wenn sich der state ändert oder habe ich einen Denkfehler?

Vielen Dank
Markus

marvin78

Das kommt stark darauf an, wie du dein notify definiert hast und ob es noch andere Events gibt (event-on-update-reading). Bitte IMMER ein list von den beteiligten Devices beifügen. Angepinnte Beiträge lesen!

Schuetze5

#2
Ok hier list von dem Schalter:
Internals:
   DEF        1BD7BA
   HMLAN1_MSGCNT 40
   HMLAN1_RAWMSG R87C52092,0001,6978B2A2,FF,FFAE,2780021BD7BA272E87010100004D
   HMLAN1_RSSI -82
   HMLAN1_TIME 2017-01-10 10:46:00
   IODev      HMLAN1
   LASTInputDev HMLAN1
   MSGCNT     40
   NAME       AK_Haustuerbeleuchtung
   NOTIFYDEV  global
   NR         87
   NTFY_ORDER 50-AK_Haustuerbeleuchtung
   STATE      off
   TYPE       CUL_HM
   lastMsg    No:27 - t:02 s:1BD7BA d:272E87 010100004D
   peerList   self01,self02,
   protLastRcv 2017-01-10 10:46:00
   protResnd  1 last_at:2017-01-09 22:02:02
   protSnd    39 last_at:2017-01-10 10:45:59
   protState  CMDs_done
   rssi_HMLAN1 avg:-76.53 min:-79 max:-75 lst:-77 cnt:39
   rssi_at_HMLAN1 avg:-81.42 min:-83 max:-80 lst:-82 cnt:40
   Readings:
     2017-01-10 10:46:00   CommandAccepted yes
     2015-08-18 22:46:58   D-firmware      2.1
     2015-08-18 22:46:58   D-serialNr      JExxxxxx
     2016-08-16 06:48:21   PairedTo        0x272E87
     2015-08-18 22:47:09   R-pairCentral   0x272E87
     2015-08-18 22:47:11   R-self01-lgActionType jmpToTarget
     2015-08-18 22:47:11   R-self01-shActionType jmpToTarget
     2015-08-18 22:47:12   R-self02-lgActionType jmpToTarget
     2015-08-18 22:47:12   R-self02-shActionType jmpToTarget
     2015-08-18 22:47:09   R-sign          off
     2016-08-16 06:48:21   RegL_00.        02:81 0A:27 0B:2E 0C:87 15:FF 00:00
     2016-08-16 06:48:21   RegL_01.        00:00
     2016-08-16 06:48:23   RegL_03.self01  02:00 03:00 04:32 05:64 06:00 07:FF 08:00 09:FF 0A:01 0B:64 0C:66 82:00 83:00 84:32 85:64 86:00 87:FF 88:00 89:FF 8A:21 8B:64 8C:66 00:00
     2016-08-16 06:48:24   RegL_03.self02  02:00 03:00 04:32 05:64 06:00 07:FF 08:00 09:FF 0A:01 0B:13 0C:33 82:00 83:00 84:32 85:64 86:00 87:FF 88:00 89:FF 8A:21 8B:13 8C:33 00:00
     2017-01-10 10:46:00   deviceMsg       off (to virtualCCU)
     2017-01-10 10:46:00   level           0
     2017-01-10 10:46:00   pct             0
     2017-01-05 10:30:32   peerList        self01,self02,
     2016-08-16 06:48:16   powerOn         2016-08-16 06:48:16
     2017-01-10 10:46:00   recentStateType ack
     2017-01-10 10:46:00   state           off
     2017-01-10 10:46:00   timedOn         off
   Helper:
     HM_CMDNR   39
     cSnd       11272E871BD7BA0201000000,11272E871BD7BA0201000000
     dlvlCmd    ++A011272E871BD7BA0201000000
     mId        0069
     rxType     1
     Expert:
       def        1
       det        0
       raw        1
       tpl        0
     Io:
       newChn     +1BD7BA,00,00,00
       nextSend   1484041560.12405
       prefIO
       rxt        0
       vccu
       p:
         1BD7BA
         00
         00
         00
     Mrssi:
       mNo        27
       Io:
         HMLAN1     -80
     Prt:
       bErr       0
       sProc      0
       Rspwait:
     Q:
       qReqConf
       qReqStat
     Role:
       chn        1
       dev        1
       prs        1
     Rssi:
       Hmlan1:
         avg        -76.5384615384615
         cnt        39
         lst        -77
         max        -75
         min        -79
       At_hmlan1:
         avg        -81.425
         cnt        40
         lst        -82
         max        -80
         min        -83
Attributes:
   IODev      HMLAN1
   alias      Haustürbeleuchtung
   autoReadReg 4_reqStatus
   devStateIcon on:light_outdoor@orange:off off:light_outdoor@black:on
   event-on-change-reading state
   expert     2_full
   firmware   2.1
   fp_EG      504,407,0,
   group      Schalter
   icon       light_outdoor
   model      HM-LC-Sw1PBU-FM
   peerIDs    00000000,1BD7BA01,1BD7BA02,
   room       Flur
   serialNr   JExxxxxxx
   subType    switch
   userattr   lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0 room_map structexclude
   webCmd     on:off


Und ein notify ( das für ein ist genauso) :
Internals:
   CFGFN
   DEF        AK_Haustuerbeleuchtung:off set Telegram message @xxxxxxxx Beleuchtung Aus
   NAME       Bel_Aus
   NOTIFYDEV  AK_Haustuerbeleuchtung
   NR         5049
   NTFY_ORDER 50-Bel_Aus
   REGEXP     AK_Haustuerbeleuchtung:off
   STATE      2017-01-10 10:46:00
   TYPE       notify
   Readings:
     2017-01-10 07:58:04   state           active
Attributes:
   room       Flur


Ich hoffe das man das so erkennen kann.

marvin78

Hast du mal in den Event-Monitor geschaut, was für Events kommen, wenn du den Schalter schaltest (in allen Fällen - Aus->An, An->An, Aus->Aus,An->Aus)?

Schuetze5

Event Monitor:
2017-01-10 12:51:38 CUL_HM AK_Haustuerbeleuchtung set_off
2017-01-10 12:51:38 TelegramBot Telegram message @xxxxxx Beleuchtung Aus
2017-01-10 12:51:38 CUL_HM AK_Haustuerbeleuchtung off

und die Nachrichten kommen auch an, bei zweimal off hintereinander kommen zwei Nachrichten ( bei ein genauso ).

Schuetze5

2017-01-10 15:34:32 CUL_HM AK_Haustuerbeleuchtung set_off
2017-01-10 15:34:32 TelegramBot Telegram message @xxxxxxx Beleuchtung Aus
2017-01-10 15:34:32 CUL_HM AK_Haustuerbeleuchtung off
2017-01-10 15:34:32 TelegramBot Telegram sentMsgResult: SUCCESS
2017-01-10 15:34:32 TelegramBot Telegram sentMsgId: 43
2017-01-10 15:34:32 TelegramBot Telegram sentMsgPeerId: xxxxxxx

2017-01-10 15:34:38 CUL_HM AK_Haustuerbeleuchtung set_off
2017-01-10 15:34:38 TelegramBot Telegram message @xxxxxx Beleuchtung Aus
2017-01-10 15:34:38 CUL_HM AK_Haustuerbeleuchtung off
2017-01-10 15:34:38 TelegramBot Telegram sentMsgResult: SUCCESS
2017-01-10 15:34:38 TelegramBot Telegram sentMsgId: 44
2017-01-10 15:34:38 TelegramBot Telegram sentMsgPeerId: xxxxxx

2017-01-10 15:37:25 CUL_HM AK_Haustuerbeleuchtung set_off
2017-01-10 15:37:25 TelegramBot Telegram message @xxxxxxxx Beleuchtung Aus
2017-01-10 15:37:25 CUL_HM AK_Haustuerbeleuchtung off
2017-01-10 15:37:25 TelegramBot Telegram sentMsgResult: SUCCESS
2017-01-10 15:37:25 TelegramBot Telegram sentMsgId: 45
2017-01-10 15:37:25 TelegramBot Telegram sentMsgPeerId: xxxxxxx


Nochmal dreimal hintereinander aus geschaltet und immer den gleichen Eintrag im Event Monitor.
Die drei Nachrichten sind auf dem Handy angekommen.

Schuetze5

Wenn ich mit dem notify erst einen Dummy ein bzw aus schalte und dann auf den Dummy reagiere, dann kommt die Meldung erst beim ändern des reading state.
Kann es sein das bei einem Aktor immer state geändert wird egal ob event-on-change-reading state eingetragen wurde?
Also über den Umweg mit dem Dummy funktioniert es und damit kann ich leben, die zweite Frage ist nur zum verständnis für mich .

Danke

marvin78

#7
Es wird wohl daran liegen, dass im HM-Device immer zwischenzeitlich set_on,set_off gesetzt wird und das auch ein "change" des Readings auslöst auslöst. Ich nutze in allen Aktoren ein userReading "status" welches nur auf on oder off gesetzt wird und entsprechend  dann mit event-on-change-reading auch nur ein Event auslöst.

Edit: event-min-interval könnte auch eine Lösung für das Problem sein.

CoolTux

Das event-on-change-reading macht genau was es soll. Einen Event auslösen bei Veränderung. Dein state Reading verändert sich ja schließlich. Von set_off auf off.

Vielleicht ein anderes Reading zum triggern wählen. pct oder so.



Edit: Marvin war schneller
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

automatisierer

wenn man die regex verbessert, kann man das set_off ja raus bekommen.
aber es ging ja darum, dass bei erneutem Schalten auch wieder ein Event kommt. Das bekommt man dann mit event-on-change-reading nicht weg... und mit anderer Regex auch nicht...

DOIF wäre eine Lösung...

define Bel_MSG DOIF
([AK_Haustuerbeleuchtung:"^on$"]) (set Telegram message @xxxxxxxx Beleuchtung An)
DOELSEIF
([AK_Haustuerbeleuchtung:"^off$"]) (set Telegram message @xxxxxxxx Beleuchtung Aus)


das ganze ohne 'do always'!
triggert nicht auf 'set_on' 'set_off' und das ganze auch nur jeweils ein mal...

marvin78

Wie immer,gibt es viele Lösuingen. Wie oben gesagt, benötigt man dafür aber kein DOIF.

Schuetze5

Vielen Dank für die Hilfe, mit den vorschlägen kann ich jetzt ein bisschen spielen.  :D

automatisierer

Zitat von: marvin78 am 11 Januar 2017, 11:50:26
Wie immer,gibt es viele Lösuingen. Wie oben gesagt, benötigt man dafür aber kein DOIF.

na klar gibt es viele Lösungen. Und wenn es nur darum geht das beim einschalten 2 Meldungen kommen, wegen set_on und on, dann geht das ganz klar auch ohne DOIF.

Zitatjetzt kommt diese Meldung auch wenn die Lampen aus sind und sie nochmal ausgeschaltet werden oder wenn sie eingeschaltet ist und nochmal eingeschaltet wird
das hatte ich als das eigentliche Problem verstanden, das bekommt man bestimmt auch ohne DOIF in den griff - aber bestimmt nicht so easy wie mit DOIF... 8)

Wobei ich auch nicht verstehe, warum man eine Lampe die aus ist, nochmal aus schaltet... ???

marvin78

Noch einen Schalter aus versehen falsch gedrückt?

Schuetze5

Die Lampe wird per at um 22:00 Uhr ausgeschaltet und zusätzlich habe ich einen Zentralausschalter den ich drücke wenn ich ins Bett gehe. Dieser Zentralaus schaltet die Lampe auch aus, deswegen wird ausgeschaltet und nochmal ausgeschaltet.