FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Schuetze5 am 10 Januar 2017, 12:22:28

Titel: event-on-change-reading Problem
Beitrag von: Schuetze5 am 10 Januar 2017, 12:22:28
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
Titel: Antw:event-on-change-reading Problem
Beitrag von: marvin78 am 10 Januar 2017, 12:24:16
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!
Titel: Antw:event-on-change-reading Problem
Beitrag von: Schuetze5 am 10 Januar 2017, 12:41:48
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.
Titel: Antw:event-on-change-reading Problem
Beitrag von: marvin78 am 10 Januar 2017, 12:50:06
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)?
Titel: Antw:event-on-change-reading Problem
Beitrag von: Schuetze5 am 10 Januar 2017, 12:54:12
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 ).
Titel: Antw:event-on-change-reading Problem
Beitrag von: Schuetze5 am 10 Januar 2017, 15:40:24
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.
Titel: Antw:event-on-change-reading Problem
Beitrag von: Schuetze5 am 11 Januar 2017, 11:29:39
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
Titel: Antw:event-on-change-reading Problem
Beitrag von: marvin78 am 11 Januar 2017, 11:34:13
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.
Titel: Antw:event-on-change-reading Problem
Beitrag von: CoolTux am 11 Januar 2017, 11:37:31
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
Titel: Antw:event-on-change-reading Problem
Beitrag von: automatisierer am 11 Januar 2017, 11:49:06
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...
Titel: Antw:event-on-change-reading Problem
Beitrag 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.
Titel: Antw:event-on-change-reading Problem
Beitrag von: Schuetze5 am 11 Januar 2017, 12:10:13
Vielen Dank für die Hilfe, mit den vorschlägen kann ich jetzt ein bisschen spielen.  :D
Titel: Antw:event-on-change-reading Problem
Beitrag von: automatisierer am 11 Januar 2017, 12:17:30
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... ???
Titel: Antw:event-on-change-reading Problem
Beitrag von: marvin78 am 11 Januar 2017, 12:18:13
Noch einen Schalter aus versehen falsch gedrückt?
Titel: Antw:event-on-change-reading Problem
Beitrag von: Schuetze5 am 11 Januar 2017, 13:28:24
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.
Titel: Antw:event-on-change-reading Problem
Beitrag von: automatisierer am 11 Januar 2017, 13:36:27
Zitat von: automatisierer am 11 Januar 2017, 11:49:06
wenn man die regex verbessert, kann man das set_off ja raus bekommen.

da hab ich übrigens mal schwachsinn geschrieben, das notify triggert ja eh nur auf die genaue regex. also bei 'device:on' auch wirklich nur auf 'on' und nicht auf 'set_on'

wenn duu bei notify bleiben willst, dann musst du ein anderes event raussuchen, wie es CoolTux schon schrieb. eines bei dem nur on > off oder off > off kommt und nicht on > set_off > off oder on > set_on > on