HM Wired - Vierfachmeldung press_short bei unvollständigem peer

Begonnen von efelon, 06 August 2016, 21:21:21

Vorheriges Thema - Nächstes Thema

efelon

Schönen guten Abend zusammen,

kurze Eckdaten:
FHEM 5.7 auf Raspi Jessie
RS485 Hardware: Digitus DA-70157 Seriell Adapter USB 2.0
HM Komponenten: HMW_IO_12_Sw7_DR, HMW_LC_Dim1L_DR

die Vorgeschichte:

  • Nachdem ich die die zwei oben genannten HM Komponenten bekommen habe, wollte ich kurz die Funktion testen und habe einen Eingang (1) vom HMW_IO_12_Sw7_DR mit dem HMW_LC_Dim1L_DR direkt verknüpft, wobei FHEM noch nicht am Bus angeschlossen war. Das hat auch funktioniert.
  • Den HMW_LC_Dim1L_DR habe ich dann, wie in der Anleitung beschrieben, wieder auf Werkseinstellungen zurückgesetzt. (Taster löst kein Schalten mehr aus)
  • Verbinden mit FHEM hat per discovery alles auf Anhieb funktionert. Ich sehe alle HM Komponenten und kann diese auch per Weboberfläche einzeln steuern.

mein Problem:
Wenn ich mit FHEM angeschlossen den Taster am Eingang 1 betätige bekomme ich folgende Ausgabe:
2016-08-06 20:48:48 HM485 HMW_IO_12_Sw7_DR_MEQ******* ACK
2016-08-06 20:48:48 HM485 HMW_IO_12_Sw7_DR_MEQ*******_01 press_short: 12
2016-08-06 20:48:48 HM485 HMW_IO_12_Sw7_DR_MEQ*******_01 press_short_12
2016-08-06 20:48:48 HM485 HMW_IO_12_Sw7_DR_MEQ******* ACK
2016-08-06 20:48:48 HM485 HMW_IO_12_Sw7_DR_MEQ*******_01 press_short: 12
2016-08-06 20:48:48 HM485 HMW_IO_12_Sw7_DR_MEQ*******_01 press_short_12
2016-08-06 20:48:48 HM485 HMW_LC_Dim1L_DR_NEQ******* ACK
2016-08-06 20:48:48 HM485 HMW_LC_Dim1L_DR_NEQ*******_03 direction: none
2016-08-06 20:48:48 HM485 HMW_LC_Dim1L_DR_NEQ*******_03 working: off
2016-08-06 20:48:48 HM485 HMW_LC_Dim1L_DR_NEQ*******_03 level: 0
2016-08-06 20:48:48 HM485 HMW_LC_Dim1L_DR_NEQ*******_03 level_0
2016-08-06 20:48:48 HM485 HMW_IO_12_Sw7_DR_MEQ******* ACK



  • Das doppelte (bzw. 4-fache) Vorkommen von press_short mit der gleichen Numer (12) ist natürlich ein Problem bei der Auswertung.
  • Das der HMW_LC_Dim1L_DR mit antwortet deutet auf eine noch bestehende Verbindung mit dem HMW_IO_12_Sw7_DR hin?
Wenn ich den Taster an Eingang 1 betätige während der HMW_LC_Dim1L_DR keine Spannung mehr hat (aber noch mit am Bus hängt) bekomme ich die Meldungen sogar 4mal:
2016-08-06 21:15:28 HM485 HMW_IO_12_Sw7_DR_MEQ******* ACK
2016-08-06 21:15:28 HM485 HMW_IO_12_Sw7_DR_MEQ*******_01 press_short: 14
2016-08-06 21:15:28 HM485 HMW_IO_12_Sw7_DR_MEQ*******_01 press_short_14
2016-08-06 21:15:28 HM485 HMW_IO_12_Sw7_DR_MEQ******* ACK
2016-08-06 21:15:28 HM485 HMW_IO_12_Sw7_DR_MEQ*******_01 press_short: 14
2016-08-06 21:15:28 HM485 HMW_IO_12_Sw7_DR_MEQ*******_01 press_short_14
2016-08-06 21:15:28 HM485 HMW_IO_12_Sw7_DR_MEQ******* ACK
2016-08-06 21:15:28 HM485 HMW_IO_12_Sw7_DR_MEQ*******_01 press_short: 14
2016-08-06 21:15:28 HM485 HMW_IO_12_Sw7_DR_MEQ*******_01 press_short_14
2016-08-06 21:15:28 HM485 HMW_IO_12_Sw7_DR_MEQ******* ACK
2016-08-06 21:15:28 HM485 HMW_IO_12_Sw7_DR_MEQ*******_01 press_short: 14
2016-08-06 21:15:28 HM485 HMW_IO_12_Sw7_DR_MEQ*******_01 press_short_14
2016-08-06 21:15:28 HM485 HMW_IO_12_Sw7_DR_MEQ******* ACK


Wenn ich den Taster an Eingang 2 anschließe bekomme ich die erwartete Ausgabe:
2016-08-06 21:11:17 HM485 HMW_IO_12_Sw7_DR_MEQ******* ACK
2016-08-06 21:11:17 HM485 HMW_IO_12_Sw7_DR_MEQ*******_02 press_short: 58
2016-08-06 21:11:17 HM485 HMW_IO_12_Sw7_DR_MEQ*******_02 press_short_58
2016-08-06 21:11:17 HM485 HMW_IO_12_Sw7_DR_MEQ******* ACK


In dem HM485 HMW_IO_12_Sw7_DR steht:
peer_act_0  channel_01 → HMW_LC_Dim1L_DR_NEQ*******_03

Die PeerList vom entsprechenden channel_03 im HMW_LC_Dim1L_DR ist leer.

Kann mir jemand weiterhelfen, um diese noch bestehende Verknüpfung aufzuheben?

Viele Grüße
Martin

Thorsten Pferdekaemper

Hi,

so ganz 100%ig klar ist mir nicht, was da abgeht. Möglicherweise hat es damit was zu tun, dass Du nur die eine Hälfte des Peering gelöscht hast. Du solltest das Peering mit einem "set HMW_IO_12_Sw7_DR_MEQ*******_01 unpeer HMW_LC_Dim1L_DR_NEQ*******_03" wegbekommen.

Mir ist allerdings nicht ganz klar, wieso Du den HMW_LC_Dim1L_DR zurückgesetzt hast. Das wäre nicht nötig gewesen.

Gruß,
   Thorsten
FUIP

efelon

Danke für Deinen Hinweis Thorsten, inzwischen ist der Eintrag:
peer_act_0  channel_01 → HMW_LC_Dim1L_DR_NEQ*******_03
aus dem HMW_IO_12_Sw7_DR verschwunden. Folgende Schritte hatte ich versucht:

  • Nochmaliges Zurücksetzen auf Werkseinstellungen vom HMW_LC_Dim1L_DR
  • "set ...... reset" in FHEM auf beide beteiligten HM Komponenten

Ich habe mich noch nicht in HM und die Kommandos vertieft. Auf "unpeer" wäre ich alleine nicht gekommen, da es in der Weboberfläche vom HMW_IO_12_Sw7_DR_MEQ*******_01 nicht angeboten wird. Wäre ich hier http://www.fhemwiki.de/wiki/Homematic_Peering_Beispiele zum lesen gut aufgehoben?

Danke für die schnelle Rückmeldung auf jeden Fall, mein Problem hat sich jedenfalls für den Moment aufgelöst.

efelon

Nachdem ich inzwischen mit "peer" und "unpeer" etwas experimentiert und hoffentlich auch verstanden habe (Ein Blick in die Commandref unter HM485 half schon weiter), doch noch eine Folgefrage bezüglich der Vierfachmeldung press_short. Folgende Events werden auch bei erfolgreichem "peer" erzeugt:

2016-08-06 20:48:48 HM485 HMW_IO_12_Sw7_DR_MEQ******* ACK
2016-08-06 20:48:48 HM485 HMW_IO_12_Sw7_DR_MEQ*******_01 press_short: 12
2016-08-06 20:48:48 HM485 HMW_IO_12_Sw7_DR_MEQ*******_01 press_short_12
2016-08-06 20:48:48 HM485 HMW_IO_12_Sw7_DR_MEQ******* ACK
2016-08-06 20:48:48 HM485 HMW_IO_12_Sw7_DR_MEQ*******_01 press_short: 12
2016-08-06 20:48:48 HM485 HMW_IO_12_Sw7_DR_MEQ*******_01 press_short_12
2016-08-06 20:48:48 HM485 HMW_LC_Dim1L_DR_NEQ******* ACK
2016-08-06 20:48:48 HM485 HMW_LC_Dim1L_DR_NEQ*******_03 direction: none
2016-08-06 20:48:48 HM485 HMW_LC_Dim1L_DR_NEQ*******_03 working: off
2016-08-06 20:48:48 HM485 HMW_LC_Dim1L_DR_NEQ*******_03 level: 0
2016-08-06 20:48:48 HM485 HMW_LC_Dim1L_DR_NEQ*******_03 level_0
2016-08-06 20:48:48 HM485 HMW_IO_12_Sw7_DR_MEQ******* ACK



  • Ist es normal das im "gepeertem" Zustand press_short viermal gemeldet wird?
  • Wenn dem so ist muss man sich also entscheiden, ob der Eingang in FHEM verwenden werden soll, oder "nur" in der HomematicUmgebung?

Thorsten Pferdekaemper

Hi,
also bei mir gibt's peer und unpeer in der Oberfläche. Siehe Bild im Anhang.
Von wegen Doku hast Du's ja schon gefunden. Mit einer aktuellen HM485-Version gibt's die Doku in der lokalen commandref.
...oder halt im Detailbild eines Device ganz unten "Device specific help" anklicken.

So, jetzt zum eigentlichen Problem:
Tatsächlich wird das Event nicht viermal gemeldet, sondern nur zweimal. "press_short: 12" ist was anderes als "press_short_12". Das erste ist das Event zum Reading "press_short", das zweite ist das Event zum Reading "state". Ich empfehle normalerweise, in notifies oder so, immer auf das spezifischere Event zu gehen, also das Reading press_short.

Mit der Erklärung sind wir also mal bei zwei Events pro Klick. Ich hatte mich etwas gewundert, da das bei mir nicht auftritt. Das liegt aber daran, dass ich fast nur interne Peerings habe, also die Tastereingänge sind mit Ausgängen desselben Geräts gepeert. Wenn ich das ganze aber mit externen Peerings ausprobiere, dann habe ich denselben Effekt. Gewollt ist das natürlich nicht.
Ich vermute mal, dass FHEM momentan alles als Event anzeigt, auch wenn die Empfängeradresse der Message gar nicht die Zentrale ist (und auch kein Broadcast). D.h. auch die Message des Tasters an den Aktor wird als Event angezeigt.
Das müsste ich mir mal genauer anschauen, was momentan aber schwierig ist.
Könntest Du mal für die beiden betroffenen Devices ein Level 5 Log einschalten und die Ausgabe hier reinstellen?

Ansonsten kannst Du als Umgehungslösung mit event-on-change-reading arbeiten. (Wenn es überhaupt benötigt wird. Oft reicht ein entsprechend konfiguriertes direktes Peering von Tastern mit einem Dimmer aus.)

Ich verwende übrigens direkte Peerings und FHEM-Krams wild durcheinander. Das funktioniert wunderbar.

Gruß,
   Thorsten



FUIP

efelon

#5
Hi Thorsten,

zum dem "peer" und "unpeer" in der Weboberfläche. Das unpeer wird nur angezeigt wenn auch wirklich schon was gepeert ist.

da ich nur an einem Testaufbau arbeite und sonst kaum was läuft habe ich das "global verbose" auf 5 gesetzt. Nur um sicher zu gehen nichts zu verpassen:

2016.08.08 21:15:40 5 : If_HM485.00: HM485_LAN_parseIncommingCommand: MsgId: 0 Cmd: 101
2016.08.08 21:15:40 4 : If_HM485.00: Event:HASH(0x1ef9078)
2016.08.08 21:15:40 5 : If_HM485.00 dispatch �e�����N~KN
2016.08.08 21:15:40 5 : If_HM485.00: HM485_Parse: MsgId: 0
2016.08.08 21:15:40 5 : If_HM485.00: HM485_Parse: ProcessEvent
2016.08.08 21:15:40 5 : If_HM485.00: HM485_ProcessEvent: hmwId = 00014E7E msgData = 4B00004E
2016.08.08 21:15:40 5 : HMW_IO_12_Sw7_DR_MEQ*******: Device:convertFrameDataToValue: deviceKey = HMW_IO12_SW7_DR_V3_02 valId = counter value1 = 19
2016.08.08 21:15:40 5 : HM485: HM485:Device:dataConversion: retVal = 19
2016.08.08 21:15:40 5 : HMW_IO_12_Sw7_DR_MEQ*******: Device:convertFrameDataToValue: value2 = 19
2016.08.08 21:15:40 5 : HM485: Device:valueToControl: valName = press_short = 19
2016.08.08 21:15:40 5 : HMW_IO_12_Sw7_DR_MEQ*******: HM485_ProcessChannelState: hmwId = 00014E7E Channel = 01 msgData = 4B00004E actionType = frame
2016.08.08 21:15:40 5 : Triggering HMW_IO_12_Sw7_DR_MEQ******* (1 changes)
2016.08.08 21:15:40 5 : Starting notify loop for HMW_IO_12_Sw7_DR_MEQ*******, first event ACK
2016.08.08 21:15:40 5 : statistics Dev.STATISTICS_wetter.wu: Notify.263 Notification of 'HMW_IO_12_Sw7_DR_MEQ*******' received. Device not monitored.
2016-08-08 21:15:40 HM485 HMW_IO_12_Sw7_DR_MEQ******* ACK
2016.08.08 21:15:40 4 : HMW_IO_12_Sw7_DR_MEQ*******_01: HM485_ChannelDoUpdate
2016.08.08 21:15:40 5 : HMW_IO_12_Sw7_DR_MEQ*******_01: HM485_ChannelDoUpdate: valueKey = press_short value = 19 Alter Wert = 18
2016.08.08 21:15:40 4 : HMW_IO_12_Sw7_DR_MEQ*******_01: press_short -> 19
2016.08.08 21:15:40 5 : Triggering HMW_IO_12_Sw7_DR_MEQ*******_01 (2 changes)
2016.08.08 21:15:40 5 : Starting notify loop for HMW_IO_12_Sw7_DR_MEQ*******_01, first event press_short: 19
2016.08.08 21:15:40 5 : statistics Dev.STATISTICS_wetter.wu: Notify.263 Notification of 'HMW_IO_12_Sw7_DR_MEQ*******_01' received. Device not monitored.
2016-08-08 21:15:40 HM485 HMW_IO_12_Sw7_DR_MEQ*******_01 press_short: 19
2016-08-08 21:15:40 HM485 HMW_IO_12_Sw7_DR_MEQ*******_01 press_short_19
2016.08.08 21:15:40 5 : If_HM485.00: HM485_LAN_parseIncommingCommand: MsgId: 0 Cmd: 101
2016.08.08 21:15:40 4 : If_HM485.00: Event:HASH(0x1efef08)
2016.08.08 21:15:40 5 : If_HM485.00 dispatch �eS��N~KL
2016.08.08 21:15:40 5 : If_HM485.00: HM485_Parse: MsgId: 0
2016.08.08 21:15:40 5 : If_HM485.00: HM485_Parse: ProcessEvent
2016.08.08 21:15:40 5 : If_HM485.00: HM485_ProcessEvent: hmwId = 00014E7E msgData = 4B00024C
2016.08.08 21:15:40 5 : HMW_IO_12_Sw7_DR_MEQ*******: Device:convertFrameDataToValue: deviceKey = HMW_IO12_SW7_DR_V3_02 valId = counter value1 = 19
2016.08.08 21:15:40 5 : HM485: HM485:Device:dataConversion: retVal = 19
2016.08.08 21:15:40 5 : HMW_IO_12_Sw7_DR_MEQ*******: Device:convertFrameDataToValue: value2 = 19
2016.08.08 21:15:40 5 : HM485: Device:valueToControl: valName = press_short = 19
2016.08.08 21:15:40 5 : HMW_IO_12_Sw7_DR_MEQ*******: HM485_ProcessChannelState: hmwId = 00014E7E Channel = 01 msgData = 4B00024C actionType = frame
2016.08.08 21:15:40 5 : If_HM485.00: HM485_LAN_parseIncommingCommand: MsgId: 0 Cmd: 101
2016.08.08 21:15:40 4 : If_HM485.00: Event:HASH(0x1fd51d0)
2016.08.08 21:15:40 5 : If_HM485.00 dispatch �eN~�S�i
2016.08.08 21:15:40 5 : If_HM485.00: HM485_Parse: MsgId: 0
2016.08.08 21:15:40 5 : If_HM485.00: HM485_Parse: ProcessEvent
2016.08.08 21:15:40 5 : If_HM485.00: HM485_ProcessEvent: hmwId = 0001539C msgData = 69021B10
2016.08.08 21:15:40 5 : HMW_LC_Dim1L_DR_NEQ*******: Device:convertFrameDataToValue: deviceKey = HMW_LC_DIM1L_DR valId = state_flags value1 = 1
2016.08.08 21:15:40 5 : HM485: HM485:Device:dataConversion: retVal = 1
2016.08.08 21:15:40 5 : HMW_LC_Dim1L_DR_NEQ*******: Device:convertFrameDataToValue: value2 = 1
2016.08.08 21:15:40 5 : HM485: Device:valueToControl: valName = working = 1
2016.08.08 21:15:40 5 : HMW_LC_Dim1L_DR_NEQ*******: Device:convertFrameDataToValue: deviceKey = HMW_LC_DIM1L_DR valId = state_flags value1 = 1
2016.08.08 21:15:40 5 : HM485: HM485:Device:dataConversion: retVal = 1
2016.08.08 21:15:40 5 : HMW_LC_Dim1L_DR_NEQ*******: Device:convertFrameDataToValue: value2 = 1
2016.08.08 21:15:40 5 : HM485: Device:valueToControl: valName = direction = 1
2016.08.08 21:15:40 5 : HMW_LC_Dim1L_DR_NEQ*******: Device:convertFrameDataToValue: deviceKey = HMW_LC_DIM1L_DR valId = level value1 = 27
2016.08.08 21:15:40 5 : HM485: HM485:Device:dataConversion: retVal = 0.14
2016.08.08 21:15:40 5 : HMW_LC_Dim1L_DR_NEQ*******: Device:convertFrameDataToValue: value2 = 0.14
2016.08.08 21:15:40 5 : HM485: Device:valueToControl: valName = level = 0.14
2016.08.08 21:15:40 5 : HMW_LC_Dim1L_DR_NEQ*******: HM485_ProcessChannelState: hmwId = 0001539C Channel = 03 msgData = 69021B10 actionType = frame
2016.08.08 21:15:40 5 : Triggering HMW_IO_12_Sw7_DR_MEQ******* (1 changes)
2016.08.08 21:15:40 5 : Starting notify loop for HMW_IO_12_Sw7_DR_MEQ*******, first event ACK
2016.08.08 21:15:40 5 : statistics Dev.STATISTICS_wetter.wu: Notify.263 Notification of 'HMW_IO_12_Sw7_DR_MEQ*******' received. Device not monitored.
2016-08-08 21:15:40 HM485 HMW_IO_12_Sw7_DR_MEQ******* ACK
2016.08.08 21:15:40 4 : HMW_IO_12_Sw7_DR_MEQ*******_01: HM485_ChannelDoUpdate
2016.08.08 21:15:40 5 : HMW_IO_12_Sw7_DR_MEQ*******_01: HM485_ChannelDoUpdate: valueKey = press_short value = 19 Alter Wert = 19
2016.08.08 21:15:40 4 : HMW_IO_12_Sw7_DR_MEQ*******_01: press_short -> 19
2016.08.08 21:15:40 5 : Triggering HMW_IO_12_Sw7_DR_MEQ*******_01 (2 changes)
2016.08.08 21:15:40 5 : Starting notify loop for HMW_IO_12_Sw7_DR_MEQ*******_01, first event press_short: 19
2016.08.08 21:15:40 5 : statistics Dev.STATISTICS_wetter.wu: Notify.263 Notification of 'HMW_IO_12_Sw7_DR_MEQ*******_01' received. Device not monitored.
2016-08-08 21:15:40 HM485 HMW_IO_12_Sw7_DR_MEQ*******_01 press_short: 19
2016-08-08 21:15:40 HM485 HMW_IO_12_Sw7_DR_MEQ*******_01 press_short_19
2016.08.08 21:15:40 5 : Triggering HMW_LC_Dim1L_DR_NEQ******* (1 changes)
2016.08.08 21:15:40 5 : Starting notify loop for HMW_LC_Dim1L_DR_NEQ*******, first event ACK
2016.08.08 21:15:40 5 : statistics Dev.STATISTICS_wetter.wu: Notify.263 Notification of 'HMW_LC_Dim1L_DR_NEQ*******' received. Device not monitored.
2016-08-08 21:15:40 HM485 HMW_LC_Dim1L_DR_NEQ******* ACK
2016.08.08 21:15:40 4 : HMW_LC_Dim1L_DR_NEQ*******_03: HM485_ChannelDoUpdate
2016.08.08 21:15:40 5 : HMW_LC_Dim1L_DR_NEQ*******_03: HM485_ChannelDoUpdate: valueKey = direction value = up Alter Wert = none
2016.08.08 21:15:40 4 : HMW_LC_Dim1L_DR_NEQ*******_03: direction -> up
2016.08.08 21:15:40 5 : HMW_LC_Dim1L_DR_NEQ*******_03: HM485_ChannelDoUpdate: valueKey = working value = on Alter Wert = off
2016.08.08 21:15:40 4 : HMW_LC_Dim1L_DR_NEQ*******_03: working -> on
2016.08.08 21:15:40 5 : HMW_LC_Dim1L_DR_NEQ*******_03: HM485_ChannelDoUpdate: valueKey = level value = 14 Alter Wert = empty
2016.08.08 21:15:40 4 : HMW_LC_Dim1L_DR_NEQ*******_03: level -> 14
2016.08.08 21:15:40 5 : Triggering HMW_LC_Dim1L_DR_NEQ*******_03 (4 changes)
2016.08.08 21:15:40 5 : Starting notify loop for HMW_LC_Dim1L_DR_NEQ*******_03, first event direction: up
2016.08.08 21:15:40 5 : statistics Dev.STATISTICS_wetter.wu: Notify.263 Notification of 'HMW_LC_Dim1L_DR_NEQ*******_03' received. Device not monitored.
2016-08-08 21:15:40 HM485 HMW_LC_Dim1L_DR_NEQ*******_03 direction: up
2016-08-08 21:15:40 HM485 HMW_LC_Dim1L_DR_NEQ*******_03 working: on
2016-08-08 21:15:40 HM485 HMW_LC_Dim1L_DR_NEQ*******_03 level: 14
2016-08-08 21:15:40 HM485 HMW_LC_Dim1L_DR_NEQ*******_03 level_14
2016.08.08 21:15:40 5 : If_HM485.00: HM485_LAN_parseIncommingCommand: MsgId: 0 Cmd: 101
2016.08.08 21:15:40 4 : If_HM485.00: Event:HASH(0xdae610)
2016.08.08 21:15:40 5 : If_HM485.00 dispatch �e�����N~AMEQ*******
2016.08.08 21:15:40 5 : If_HM485.00: HM485_Parse: MsgId: 0
2016.08.08 21:15:40 5 : If_HM485.00: HM485_Parse: ProcessEvent
2016.08.08 21:15:40 5 : If_HM485.00: HM485_ProcessEvent: hmwId = 00014E7E msgData = 4100120003064D455131373639383330
2016.08.08 21:15:40 5 : HMW_IO_12_Sw7_DR_MEQ*******: HM485_ProcessChannelState: hmwId = 00014E7E No channel
2016.08.08 21:15:40 5 : Triggering HMW_IO_12_Sw7_DR_MEQ******* (1 changes)
2016.08.08 21:15:40 5 : Starting notify loop for HMW_IO_12_Sw7_DR_MEQ*******, first event ACK
2016.08.08 21:15:40 5 : statistics Dev.STATISTICS_wetter.wu: Notify.263 Notification of 'HMW_IO_12_Sw7_DR_MEQ*******' received. Device not monitored.
2016-08-08 21:15:40 HM485 HMW_IO_12_Sw7_DR_MEQ******* ACK
2016.08.08 21:15:43 5 : If_HM485.00: HM485_LAN_parseIncommingCommand: MsgId: 0 Cmd: 101
2016.08.08 21:15:43 4 : If_HM485.00: Event:HASH(0x1f29a60)
2016.08.08 21:15:43 5 : If_HM485.00 dispatch �e�S�i�
2016.08.08 21:15:43 5 : If_HM485.00: HM485_Parse: MsgId: 0
2016.08.08 21:15:43 5 : If_HM485.00: HM485_Parse: ProcessEvent
2016.08.08 21:15:43 5 : If_HM485.00: HM485_ProcessEvent: hmwId = 0001539C msgData = 6902C800
2016.08.08 21:15:43 5 : HMW_LC_Dim1L_DR_NEQ*******: Device:convertFrameDataToValue: deviceKey = HMW_LC_DIM1L_DR valId = state_flags value1 = 0
2016.08.08 21:15:43 5 : HM485: HM485:Device:dataConversion: retVal = 0
2016.08.08 21:15:43 5 : HMW_LC_Dim1L_DR_NEQ*******: Device:convertFrameDataToValue: value2 = 0
2016.08.08 21:15:43 5 : HM485: Device:valueToControl: valName = working = 0
2016.08.08 21:15:43 5 : HMW_LC_Dim1L_DR_NEQ*******: Device:convertFrameDataToValue: deviceKey = HMW_LC_DIM1L_DR valId = state_flags value1 = 0
2016.08.08 21:15:43 5 : HM485: HM485:Device:dataConversion: retVal = 0
2016.08.08 21:15:43 5 : HMW_LC_Dim1L_DR_NEQ*******: Device:convertFrameDataToValue: value2 = 0
2016.08.08 21:15:43 5 : HM485: Device:valueToControl: valName = direction = 0
2016.08.08 21:15:43 5 : HMW_LC_Dim1L_DR_NEQ*******: Device:convertFrameDataToValue: deviceKey = HMW_LC_DIM1L_DR valId = level value1 = 200
2016.08.08 21:15:43 5 : HM485: HM485:Device:dataConversion: retVal = 1.00
2016.08.08 21:15:43 5 : HMW_LC_Dim1L_DR_NEQ*******: Device:convertFrameDataToValue: value2 = 1.00
2016.08.08 21:15:43 5 : HM485: Device:valueToControl: valName = level = 1.00
2016.08.08 21:15:43 5 : HMW_LC_Dim1L_DR_NEQ*******: HM485_ProcessChannelState: hmwId = 0001539C Channel = 03 msgData = 6902C800 actionType = frame
2016.08.08 21:15:43 5 : Triggering HMW_LC_Dim1L_DR_NEQ******* (1 changes)
2016.08.08 21:15:43 5 : Starting notify loop for HMW_LC_Dim1L_DR_NEQ*******, first event ACK
2016.08.08 21:15:43 5 : statistics Dev.STATISTICS_wetter.wu: Notify.263 Notification of 'HMW_LC_Dim1L_DR_NEQ*******' received. Device not monitored.
2016-08-08 21:15:43 HM485 HMW_LC_Dim1L_DR_NEQ******* ACK
2016.08.08 21:15:43 4 : HMW_LC_Dim1L_DR_NEQ*******_03: HM485_ChannelDoUpdate
2016.08.08 21:15:43 5 : HMW_LC_Dim1L_DR_NEQ*******_03: HM485_ChannelDoUpdate: valueKey = direction value = none Alter Wert = up
2016.08.08 21:15:43 4 : HMW_LC_Dim1L_DR_NEQ*******_03: direction -> none
2016.08.08 21:15:43 5 : HMW_LC_Dim1L_DR_NEQ*******_03: HM485_ChannelDoUpdate: valueKey = level value = 100 Alter Wert = 14
2016.08.08 21:15:43 4 : HMW_LC_Dim1L_DR_NEQ*******_03: level -> 100
2016.08.08 21:15:43 5 : HMW_LC_Dim1L_DR_NEQ*******_03: HM485_ChannelDoUpdate: valueKey = working value = off Alter Wert = on
2016.08.08 21:15:43 4 : HMW_LC_Dim1L_DR_NEQ*******_03: working -> off
2016.08.08 21:15:43 5 : Triggering HMW_LC_Dim1L_DR_NEQ*******_03 (4 changes)
2016.08.08 21:15:43 5 : Starting notify loop for HMW_LC_Dim1L_DR_NEQ*******_03, first event direction: none
2016.08.08 21:15:43 5 : statistics Dev.STATISTICS_wetter.wu: Notify.263 Notification of 'HMW_LC_Dim1L_DR_NEQ*******_03' received. Device not monitored.
2016-08-08 21:15:43 HM485 HMW_LC_Dim1L_DR_NEQ*******_03 direction: none
2016-08-08 21:15:43 HM485 HMW_LC_Dim1L_DR_NEQ*******_03 level: 100
2016-08-08 21:15:43 HM485 HMW_LC_Dim1L_DR_NEQ*******_03 working: off
2016-08-08 21:15:43 HM485 HMW_LC_Dim1L_DR_NEQ*******_03 level_100


Falls Du noch etwas brauchst, melde Dich einfach. Nur nochmal dass ich es richtig verstanden habe: Um nur für z.b. HMW_IO_12_Sw7_DR_MEQ******* das log level auf 5 zu stellen reicht die Zeile:
attr HMW_IO_12_Sw7_DR_MEQ******* verbose 5
Damit landen die Debug ausgaben in dem fhem*.log. Ein evtl. zugeordnetes "FileLog" device kann man nicht beeinflussen?

Viele Grüße
Martin

efelon

Nach kurzem Testen hier für mich die praktikabelste Lösung, die das Duplizieren bisher zuverlässig verhindert:

attr HMW_IO_12_Sw7_DR_MEQ.*_(0[0-9]|1[0-2]) event-min-interval press_short:0.1,state:0.1
attr HMW_LC_Dim1L_DR_NEQ.*_0[12] event-min-interval press_short:0.1,state:0.1


Kurz übersetzt:

  • Setzte "event-min-interval press_short:0.1,state:0.1" für die Kanäle 00 - 12 von allen "HMW_IO_12_Sw7_DR_MEQ".
  • Setzte "event-min-interval press_short:0.1,state:0.1" für die Kanäle 01 und 02 von allen "HMW_LC_Dim1L_DR_NEQ".

Das geht natürlich nur im Moment, weil ich die von FHEM automatisch angelegten Tastereingänge noch nicht umbenannt habe. Den regulären Ausdruck in der devspec (http://www.fhem.de/commandref.html#devspec) muss jeder auf seine Verhältnisse anpassen. Außerdem muss man darauf achten diese Zeilen in der fhem.cfg (oder seiner eigenen .cfg) nach den betroffenen "defines" zu platzieren. Ob die Zeit von 0.1s für jeden Fall lang genug ist kann ich nicht sagen.

Viele Grüße
Martin

Thorsten Pferdekaemper

...und was hast Du gegen event-on-change-reading?
Gruß,
   Thorsten
FUIP

Ralf9

Ich habe dies bei mir so gelöst:
Ich habe in der "10_HM485.pm" bei der "sub HM485_ProcessEvent($$)" die folgenden Änderungen vorgenommen.
Damit werden die press_short/long Nachrichten die nicht zur Zentrale gehen verworfen.
sub HM485_ProcessEvent($$) {
my ($ioHash, $msgData) = @_;

my $msgCmd = '';
my $targetId = substr( $msgData, 0, 8);
my $hmwId = substr( $msgData, 10, 8);
$msgData  = (length($msgData) > 17) ? substr($msgData, 18) : '';
if (length($msgData) > 1) {
$msgCmd = substr($msgData, 0, 2);
}
if ($msgCmd eq '4B' && $targetId ne 'FFFFFFFF' && substr($targetId, 0, 6) ne '000000') {
HM485::Util::Log3( $ioHash, 5, 'HM485_ProcessEvent: hmwId = ' . $hmwId . ' targetId = ' . $targetId . ' msgData = ' . $msgData . ' dropped');
return;
} else {
HM485::Util::Log3( $ioHash, 5, 'HM485_ProcessEvent: hmwId = ' . $hmwId . ' targetId = ' . $targetId . ' msgData = ' . $msgData);
}

if ($msgData) {



Hier ist ein Auszug aus dem log:
2016.08.13 09:47:23 4 : HM485_LAN: RX: fd0f3865ffffffffde00003e954b000082
2016.08.13 09:47:23 5 : HM485_LAN: HM485_LAN_parseIncommingCommand: MsgId: 56 Cmd: 101
2016.08.13 09:47:23 4 : HM485_LAN: Event: I[3](2,Y,F,B)(DE) 00003E95 -> FFFFFFFF [4] 4B(K) 00
2016.08.13 09:47:23 5 : HM485_LAN: HM485_ProcessEvent: hmwId = 00003E95 targetId = FFFFFFFF msgData = 4B000082
2016-08-13 09:47:23 HM485 HMW_IO_12_GEQ_01_TaLic_Treppenh_UG press_short: 32

2016.08.13 09:47:23 4 : HM485_LAN: RX: fd0f396500008c695800003e954b000080
2016.08.13 09:47:23 5 : HM485_LAN: HM485_LAN_parseIncommingCommand: MsgId: 57 Cmd: 101
2016.08.13 09:47:23 4 : HM485_LAN: Event: I[0](2,F,B)(58) 00003E95 -> 00008C69 [4] 4B(K) 00
2016.08.13 09:47:23 5 : HM485_LAN: HM485_ProcessEvent: hmwId = 00003E95 targetId = 00008C69 msgData = 4B000080 dropped

2016.08.13 09:47:23 4 : HM485_LAN: RX: fd0f3a6500003e959c00008c696900c840
2016.08.13 09:47:23 5 : HM485_LAN: HM485_LAN_parseIncommingCommand: MsgId: 58 Cmd: 101
2016.08.13 09:47:23 4 : HM485_LAN: Event: I[2](0,Y,F,B)(9C) 00008C69 -> 00003E95 [4] 69(i) 00
2016.08.13 09:47:23 5 : HM485_LAN: HM485_ProcessEvent: hmwId = 00008C69 targetId = 00003E95 msgData = 6900C840
2016-08-13 09:47:23 HM485 HMW_IO_12_JEQ_01_Licht_Treppenh_UG on_time

2016.08.13 09:47:23 4 : HM485_LAN: RX: fd1b3b65ffffffffda00003e9541001b00030047455130323534343130
2016.08.13 09:47:23 5 : HM485_LAN: HM485_LAN_parseIncommingCommand: MsgId: 59 Cmd: 101
2016.08.13 09:47:23 4 : HM485_LAN: Event: I[1](2,Y,F,B)(DA) 00003E95 -> FFFFFFFF [16] 41(A) 001B0003004745513032353434
2016.08.13 09:47:23 5 : HM485_LAN: HM485_ProcessEvent: hmwId = 00003E95 targetId = FFFFFFFF msgData = 41001B00030047455130323534343130

2016.08.13 09:47:25 4 : HM485_LAN: RX: fd0f3c65000000019e00008c696900c840
2016.08.13 09:47:25 5 : HM485_LAN: HM485_LAN_parseIncommingCommand: MsgId: 60 Cmd: 101
2016.08.13 09:47:25 4 : HM485_LAN: Event: I[3](0,Y,F,B)(9E) 00008C69 -> 00000001 [4] 69(i) 00
2016.08.13 09:47:25 5 : HM485_LAN: HM485_ProcessEvent: hmwId = 00008C69 targetId = 00000001 msgData = 6900C840
2016-08-13 09:47:25 HM485 HMW_IO_12_JEQ_01_Licht_Treppenh_UG on_time


Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

efelon

Zitat von: Thorsten Pferdekaemper am 11 August 2016, 22:36:42
...und was hast Du gegen event-on-change-reading?
Gruß,
   Thorsten

Erst einmal nichts.  ;) Es ging mir nur um den Aufwand. Wenn ich press_short und state zu event-on-change-reading hinzufüge, schicken die anderen Readings kein Notify mehr. Dafür müsste ich noch eine Zeile mit event-on-update-reading schreiben und dort alle Anderen auflisten um Notifys zu erhalten (z.b. bei Änderung der der long_press_time). press_long soll sich außerdem weiterhin so verhalten, das es mit dem selben Wert regelmäßig ein Notify schickt solange der Taster gedrückt ist.

Gruß
Martin