[gelöst] ECMD reading regex instabil

Begonnen von grzbrz, 22 Juni 2020, 20:45:34

Vorheriges Thema - Nächstes Thema

grzbrz

Hallo zusammen,

ich habe das Problem, dass etwa 3 von 10 readings keinen match liefern. Habe mir schon die Augen wund geschaut, mein Latein ist am Ende. Die aktuelle classdef und Log Auszüge habe ich angehängt. Vielleicht sehen andere Augen mehr?

Grüße
Hendrik


params devId
reading temperature match "%devId[^\n]+\n"
reading temperature postproc { /%devId[^T]+T([-+.,0-9]+).+/; $1 }
reading airpressure match "%devId[^\n]+\n"
reading airpressure postproc { /%devId[^P]+P([-+.,0-9]+).+/; $1 }
reading humidity match "%devId[^\n]+\n"
reading humidity postproc { /%devId[^H]+H([-+.,0-9]+).+/; $1 }
state humidity

SerDevDef ist der ECMD
BME280_42356 ist ein ECMDDevice

2020.06.22 13:08:53 0: SerDevDef: read 4 (\064)
2020.06.22 13:08:53 0: SerDevDef: read 2356 T22.32°C P996.19hPa H56.30 (\062\063\065\066\040\124\062\062\056\063\062\302\260\103\040\120\071\071\066\056\061\071\150\120\141\040\110\065\066\056\063\060)
2020.06.22 13:08:53 0: SerDevDef: read %R (\045\122)
2020.06.22 13:08:53 0: SerDevDef: read H\r\n (\110\015\012)
2020.06.22 13:08:53 1: BME280_42356 has new values
2020.06.22 13:19:07 0: SerDevDef: read 4 (\064)
2020.06.22 13:19:07 0: SerDevDef: read 23 (\062\063)
2020.06.22 13:19:07 0: SerDevDef: read 56 (\065\066)
2020.06.22 13:19:07 0: SerDevDef: read  T (\040\124)
2020.06.22 13:19:07 0: SerDevDef: read 23 (\062\063)
2020.06.22 13:19:07 0: SerDevDef: read .0 (\056\060)
2020.06.22 13:19:07 0: SerDevDef: read 2� (\062\302)
2020.06.22 13:19:07 0: SerDevDef: read �C (\260\103)
2020.06.22 13:19:07 0: SerDevDef: read  P (\040\120)
2020.06.22 13:19:07 0: SerDevDef: read 99 (\071\071)
2020.06.22 13:19:07 0: SerDevDef: read 6. (\066\056)
2020.06.22 13:19:07 0: SerDevDef: read 16 (\061\066)
2020.06.22 13:19:07 0: SerDevDef: read hP (\150\120)
2020.06.22 13:19:07 0: SerDevDef: read a  (\141\040)
2020.06.22 13:19:07 0: SerDevDef: read H55 (\110\065\065)
2020.06.22 13:19:07 0: SerDevDef: read .4 (\056\064)
2020.06.22 13:19:07 0: SerDevDef: read 7% (\067\045)
2020.06.22 13:19:07 0: SerDevDef: read RH (\122\110)
2020.06.22 13:19:07 0: SerDevDef: read \r\n (\015\012)
2020.06.22 13:19:07 1: BME280_42356 has new values
2020.06.22 13:29:21 0: SerDevDef: read 4 (\064)
2020.06.22 13:29:21 0: SerDevDef: read 23 (\062\063)
2020.06.22 13:29:21 0: SerDevDef: read 56 (\065\066)
2020.06.22 13:29:21 0: SerDevDef: read  T (\040\124)
2020.06.22 13:29:21 0: SerDevDef: read 22 (\062\062)
2020.06.22 13:29:21 0: SerDevDef: read .7 (\056\067)
2020.06.22 13:29:21 0: SerDevDef: read 1� (\061\302)
2020.06.22 13:29:21 0: SerDevDef: read �C (\260\103)
2020.06.22 13:29:21 0: SerDevDef: read  P (\040\120)
2020.06.22 13:29:21 0: SerDevDef: read 99 (\071\071)
2020.06.22 13:29:21 0: SerDevDef: read 6. (\066\056)
2020.06.22 13:29:21 0: SerDevDef: read 08 (\060\070)
2020.06.22 13:29:21 0: SerDevDef: read hP (\150\120)
2020.06.22 13:29:21 0: SerDevDef: read a H (\141\040\110)
2020.06.22 13:29:21 0: SerDevDef: read 55 (\065\065)
2020.06.22 13:29:21 0: SerDevDef: read .0 (\056\060)
2020.06.22 13:29:21 0: SerDevDef: read 8% (\070\045)
2020.06.22 13:29:21 0: SerDevDef: read RH (\122\110)
2020.06.22 13:29:21 0: SerDevDef: read \r\n (\015\012)
2020.06.22 13:29:21 1: BME280_42356 has new values
2020.06.22 13:39:36 0: SerDevDef: read 4 (\064)
2020.06.22 13:39:36 0: SerDevDef: read 23 (\062\063)
2020.06.22 13:39:36 0: SerDevDef: read 56 (\065\066)
2020.06.22 13:39:36 0: SerDevDef: read  T (\040\124)
2020.06.22 13:39:36 0: SerDevDef: read 22 (\062\062)
2020.06.22 13:39:36 0: SerDevDef: read .2 (\056\062)
2020.06.22 13:39:36 0: SerDevDef: read 2° (\062\302\260)
2020.06.22 13:39:36 0: SerDevDef: read C  (\103\040)
2020.06.22 13:39:36 0: SerDevDef: read P (\120)
2020.06.22 13:39:36 0: SerDevDef: read 995 (\071\071\065)
2020.06.22 13:39:36 0: SerDevDef: read .9 (\056\071)
2020.06.22 13:39:36 0: SerDevDef: read 7h (\067\150)
2020.06.22 13:39:36 0: SerDevDef: read Pa  (\120\141\040)
2020.06.22 13:39:36 0: SerDevDef: read H5 (\110\065)
2020.06.22 13:39:36 0: SerDevDef: read 4.7 (\064\056\067)
2020.06.22 13:39:36 0: SerDevDef: read 7%R (\067\045\122)
2020.06.22 13:39:36 0: SerDevDef: read H\r (\110\015)
2020.06.22 13:39:36 0: SerDevDef: read \n (\012)
2020.06.22 13:39:36 3: SerDevDef: Unknown code
, help me!
2020.06.22 13:49:50 0: SerDevDef: read 4 (\064)
2020.06.22 13:49:50 0: SerDevDef: read 2356 T22.47°C P996.11hPa H55.83%R (\062\063\065\066\040\124\062\062\056\064\067\302\260\103\040\120\071\071\066\056\061\061\150\120\141\040\110\065\065\056\070\063\045\122)
2020.06.22 13:49:50 0: SerDevDef: read H\r (\110\015)
2020.06.22 13:49:50 0: SerDevDef: read \n (\012)
2020.06.22 13:49:50 3: SerDevDef: Unknown code
, help me!

Dr. Boris Neubert

Hallo Hendrik,

bitte alle Infos aus https://forum.fhem.de/index.php/topic,25748.0.html liefern und den Code bitte in Code-Tags einpacken zur besseren Lesbarkeit (#).

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Dr. Boris Neubert

Nachtrag: also nur den oberen Teil oberhalb der generischen Anleitung, bitte.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

grzbrz

File       Rev   Last Change

66_ECMD.pm 16372 2018-03-10 13:09:24Z neubert

f18.js                     21848 2020-05-03 12:18:00Z rudolfkoenig
fhemweb.js                 22094 2020-06-02 10:20:18Z rudolfkoenig
svg.js                     20860 2019-12-31 12:20:15Z rudolfkoenig

File             Rev   Last Change

67_ECMDDevice.pm 12877 2016-12-26 09:15:55Z neubert

Internals:
   DEF        serial /dev/ttyS0@9600
   DeviceName /dev/ttyS0@9600
   FD         11
   FUUID      5eef59c3-f33f-9851-0be3-d733e110ecb48470
   NAME       SerDevDef
   NR         37
   PARTIAL   
   Protocol   serial
   STATE      opened
   TYPE       ECMD
   Helper:
     DBLOG:
       state:
         myDbLog:
           TIME       1592867762.12061
           VALUE      UNKNOWNCODE

   READINGS:
     2020-06-22 15:16:56   state           opened
   fhem:
     classDefs:
       BME280:
         filename   /opt/fhem/BME280.classdef
         params     devId
         state      humidity
         readings:
           airpressure:
             match      %devId[^\n]+\n
             postproc   { /%devId[^P]+P([-+.,0-9]+).+/; $1 }
           humidity:
             match      %devId[^\n]+\n
             postproc   { /%devId[^H]+H([-+.,0-9]+).+/; $1 }
           temperature:
             match      %devId[^\n]+\n
             postproc   { /%devId[^T]+T([-+.,0-9]+).+/; $1 }
         sets:
     partial:
       msg        42356 T19.25°C P997.04hPa H58.84%RH
       ts         1592867762.11744
Attributes:
   classdefs  BME280=/opt/fhem/BME280.classdef
   partial    2

Internals:
   DEF        BME280 42356
   FUUID      5eef59c3-f33f-9851-b574-e70bec9794d348d9
   IODev      SerDevDef
   LASTInputDev SerDevDef
   MSGCNT     57
   NAME       BME280_42356
   NR         38
   STATE      T:19.60 P:1019.96 H:57.54
   SerDevDef_MSGCNT 57
   SerDevDef_TIME 2020-06-23 00:45:21
   TYPE       ECMDDevice
   Helper:
     DBLOG:
       airpressure:
         myDbLog:
           TIME       1592865921.73106
           VALUE      997.03
       airpressure_sealevel:
         myDbLog:
           TIME       1592865921.73106
           VALUE      1019.96
       humidity:
         myDbLog:
           TIME       1592865921.73106
           VALUE      57.54
       state:
         myDbLog:
           TIME       1592865921.73106
           VALUE      57.54
       temperature:
         myDbLog:
           TIME       1592865921.73106
           VALUE      19.60
   READINGS:
     2020-06-23 00:45:20   airpressure     997.03
     2020-06-23 00:45:20   airpressure_sealevel 1019.96
     2020-06-23 00:45:20   humidity        57.54
     2020-06-21 23:31:05   pressure        994.45
     2020-06-21 23:31:05   pressure_sealevel 1017.32
     2020-06-23 00:45:20   state           57.54
     2020-06-23 00:45:20   temperature     19.60
   fhem:
     classname  BME280
     cache:
       readings:
         command:
           airpressure { /42356[^P]+P([-+.,0-9]+).+/; $1 }
           humidity   { /42356[^H]+H([-+.,0-9]+).+/; $1 }
           temperature { /42356[^T]+T([-+.,0-9]+).+/; $1 }
         match:
           airpressure 42356[^\n]+\n
           humidity   42356[^\n]+\n
           temperature 42356[^\n]+\n
       specials:
         %NAME      BME280_42356
         %TYPE      ECMDDevice
         %devId     42356
     params:
       devId      42356
Attributes:
   IODev      SerDevDef
   userReadings airpressure_sealevel { sprintf("%.2f", ReadingsVal("BME280_42356","airpressure",0)*1.023); }

Dr. Boris Neubert

Hallo,

bitte Code immer in Code-Tags setzen.

Du hast das partial-Attribut gesetzt, das ist gut. Allerdings zeigt mir das Log aus Deinem ersten Post, dass der reguläre Ausdruck vermutlich nicht matcht (nicht genügend Log gesehen, um das genauer beurteilen zu können). Dadurch wird der über die serielle Schnittstelle empfangene Text nicht erkannt und zusammengebaut. Im list des Devices sieht man den partial match unter partial: msg

Im Beitrag, auf den ich gestern verwiesen habe, stehen Hinweise zum Debugging. Mit mehr Aufwand kannst Du auch die serielle Schnittstelle für den Test durch ein Socket-Verbindung ersetzen und mit netcat am anderen Ende scheibchenweise von Hand den Input reinfüttern und sehen, wie sich Deine Klassendefinition dabei verhält (partial dafür hochdrehen).

Ich habe gerade nochmal nachgelesen, dass alle Readings, deren Regex match, aktualisiert werden. Der grundsätzliche Ansatz, gleiche Matches zu definieren und den jeweiligen Wert über postproc rauszupopeln ist also in Ordnung.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

grzbrz

Hallo Boris,

Entschuldigung für meine Nachlässigkeit, ärgert mich auch immer, wenn sich nicht an gute Gepflogenheiten gehalten wird, ich gelobe Besserung.

ich habe jetzt mal meinen Log-Auszug sortiert und daran wird nichts sichtbar:
read 42356 T22.32°C P996.19hPa H56.30%RH\r\n  (\064\062\063\065\066\040\124\062\062\056\063\062\302\260\103\040\120\071\071\066\056\061\071\150\120\141\040\110\065\066\056\063\060\045\122\110\015\012) BME280_42356 has new values
read 42356 T23.02��C P996.16hPa H55.47%RH\r\n (\064\062\063\065\066\040\124\062\063\056\060\062\302\260\103\040\120\071\071\066\056\061\066\150\120\141\040\110\065\065\056\064\067\045\122\110\015\012) BME280_42356 has new values
read 42356 T22.71��C P996.08hPa H55.08%RH\r\n (\064\062\063\065\066\040\124\062\062\056\067\061\302\260\103\040\120\071\071\066\056\060\070\150\120\141\040\110\065\065\056\060\070\045\122\110\015\012) BME280_42356 has new values
read 42356 T22.22°C P995.97hPa H54.77%RH\r\n  (\064\062\063\065\066\040\124\062\062\056\062\062\302\260\103\040\120\071\071\065\056\071\067\150\120\141\040\110\065\064\056\067\067\045\122\110\015\012) Unknown code
read 42356 T22.47°C P996.11hPa H55.83%RH\r\n  (\064\062\063\065\066\040\124\062\062\056\064\067\302\260\103\040\120\071\071\066\056\061\061\150\120\141\040\110\065\065\056\070\063\045\122\110\015\012) Unknown code

Zuerst hatte ich UTF-8 in Verdacht, gern vergessen bei einer regex, aber spielt hier keine Rolle
Dann ist mir aufgefallen, dass die 3 Gutgehenden als letzten read mehr als nur das \n hatten, wärend die 2 Schlechtgehenden als letzten read nur das \n hatten.
Kann das sein? Kllingt mir recht unglaubwürdig, aber wer weiß. Ich lass jetzt mal die Nacht durch mein Log volllaufen, irgendeine Regelmäßigkeit muss es doch geben.

Ich packe die einzelnen reads nochmal in code ;-)

Grüße, Hendrik

2020.06.22 13:08:53 0: SerDevDef: read 4 (\064)
2020.06.22 13:08:53 0: SerDevDef: read 2356 T22.32°C P996.19hPa H56.30 (\062\063\065\066\040\124\062\062\056\063\062\302\260\103\040\120\071\071\066\056\061\071\150\120\141\040\110\065\066\056\063\060)
2020.06.22 13:08:53 0: SerDevDef: read %R (\045\122)
2020.06.22 13:08:53 0: SerDevDef: read H\r\n (\110\015\012)
2020.06.22 13:08:53 1: BME280_42356 has new values

2020.06.22 13:19:07 0: SerDevDef: read 4 (\064)
2020.06.22 13:19:07 0: SerDevDef: read 23 (\062\063)
2020.06.22 13:19:07 0: SerDevDef: read 56 (\065\066)
2020.06.22 13:19:07 0: SerDevDef: read  T (\040\124)
2020.06.22 13:19:07 0: SerDevDef: read 23 (\062\063)
2020.06.22 13:19:07 0: SerDevDef: read .0 (\056\060)
2020.06.22 13:19:07 0: SerDevDef: read 2� (\062\302)
2020.06.22 13:19:07 0: SerDevDef: read �C (\260\103)
2020.06.22 13:19:07 0: SerDevDef: read  P (\040\120)
2020.06.22 13:19:07 0: SerDevDef: read 99 (\071\071)
2020.06.22 13:19:07 0: SerDevDef: read 6. (\066\056)
2020.06.22 13:19:07 0: SerDevDef: read 16 (\061\066)
2020.06.22 13:19:07 0: SerDevDef: read hP (\150\120)
2020.06.22 13:19:07 0: SerDevDef: read a  (\141\040)
2020.06.22 13:19:07 0: SerDevDef: read H55 (\110\065\065)
2020.06.22 13:19:07 0: SerDevDef: read .4 (\056\064)
2020.06.22 13:19:07 0: SerDevDef: read 7% (\067\045)
2020.06.22 13:19:07 0: SerDevDef: read RH (\122\110)
2020.06.22 13:19:07 0: SerDevDef: read \r\n (\015\012)
2020.06.22 13:19:07 1: BME280_42356 has new values

2020.06.22 13:29:21 0: SerDevDef: read 4 (\064)
2020.06.22 13:29:21 0: SerDevDef: read 23 (\062\063)
2020.06.22 13:29:21 0: SerDevDef: read 56 (\065\066)
2020.06.22 13:29:21 0: SerDevDef: read  T (\040\124)
2020.06.22 13:29:21 0: SerDevDef: read 22 (\062\062)
2020.06.22 13:29:21 0: SerDevDef: read .7 (\056\067)
2020.06.22 13:29:21 0: SerDevDef: read 1� (\061\302)
2020.06.22 13:29:21 0: SerDevDef: read �C (\260\103)
2020.06.22 13:29:21 0: SerDevDef: read  P (\040\120)
2020.06.22 13:29:21 0: SerDevDef: read 99 (\071\071)
2020.06.22 13:29:21 0: SerDevDef: read 6. (\066\056)
2020.06.22 13:29:21 0: SerDevDef: read 08 (\060\070)
2020.06.22 13:29:21 0: SerDevDef: read hP (\150\120)
2020.06.22 13:29:21 0: SerDevDef: read a H (\141\040\110)
2020.06.22 13:29:21 0: SerDevDef: read 55 (\065\065)
2020.06.22 13:29:21 0: SerDevDef: read .0 (\056\060)
2020.06.22 13:29:21 0: SerDevDef: read 8% (\070\045)
2020.06.22 13:29:21 0: SerDevDef: read RH (\122\110)
2020.06.22 13:29:21 0: SerDevDef: read \r\n (\015\012)
2020.06.22 13:29:21 1: BME280_42356 has new values

2020.06.22 13:39:36 0: SerDevDef: read 4 (\064)
2020.06.22 13:39:36 0: SerDevDef: read 23 (\062\063)
2020.06.22 13:39:36 0: SerDevDef: read 56 (\065\066)
2020.06.22 13:39:36 0: SerDevDef: read  T (\040\124)
2020.06.22 13:39:36 0: SerDevDef: read 22 (\062\062)
2020.06.22 13:39:36 0: SerDevDef: read .2 (\056\062)
2020.06.22 13:39:36 0: SerDevDef: read 2° (\062\302\260)
2020.06.22 13:39:36 0: SerDevDef: read C  (\103\040)
2020.06.22 13:39:36 0: SerDevDef: read P (\120)
2020.06.22 13:39:36 0: SerDevDef: read 995 (\071\071\065)
2020.06.22 13:39:36 0: SerDevDef: read .9 (\056\071)
2020.06.22 13:39:36 0: SerDevDef: read 7h (\067\150)
2020.06.22 13:39:36 0: SerDevDef: read Pa  (\120\141\040)
2020.06.22 13:39:36 0: SerDevDef: read H5 (\110\065)
2020.06.22 13:39:36 0: SerDevDef: read 4.7 (\064\056\067)
2020.06.22 13:39:36 0: SerDevDef: read 7%R (\067\045\122)
2020.06.22 13:39:36 0: SerDevDef: read H\r (\110\015)
2020.06.22 13:39:36 0: SerDevDef: read \n (\012)
2020.06.22 13:39:36 3: SerDevDef: Unknown code
, help me!

2020.06.22 13:49:50 0: SerDevDef: read 4 (\064)
2020.06.22 13:49:50 0: SerDevDef: read 2356 T22.47°C P996.11hPa H55.83%R (\062\063\065\066\040\124\062\062\056\064\067\302\260\103\040\120\071\071\066\056\061\061\150\120\141\040\110\065\065\056\070\063\045\122)
2020.06.22 13:49:50 0: SerDevDef: read H\r (\110\015)
2020.06.22 13:49:50 0: SerDevDef: read \n (\012)
2020.06.22 13:49:50 3: SerDevDef: Unknown code
, help me!


Dr. Boris Neubert

Hallo Hendrik,

zum einen fällt mir auf, dass die 2-Byte-Unicode-Darstellung des °-Zeichens auch zersäbelt ist. Das führt zu den Falsche-Zeichen-Markern, ist aber aufgrund des Regex kein Problem.

Dein Hinweis scheint mir auf eine denkbare Ursache hinzudeuten: Regex ist greedy, aber ich sehe noch nicht, warum das einen Unterschied macht.

Kannst Du bitte nochmal ein Log zeigen mit attr SerDevDef verbose 5?

Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

grzbrz

Hallo Boris,

gern, Log ist die letzten 24 Stunden gelaufen, knapp 10 000 Zeilen zu EMCD, ist im Anhang.

Da am Ende mit nur dem \n hat's was.
Typische Eintragsfolge:
read 6 T (\066\040\124)
Spontaneously received 6 T (\066\040\124)
dispatch 6 T
merging partial message 4235 (\064\062\063\065) and 6 T (\066\040\124)
trying to match message 42356 T (\064\062\063\065\066\040\124)
partial message 42356 T (\064\062\063\065\066\040\124) kept

immer weiter bis:
read \r\n (\015\012)
Spontaneously received \r\n (\015\012)
dispatch \r\n
merging partial message 42356 T19.69°C P999.27hPa H42.43%RH (\064\062\063\065\066\040\124\061\071\056\066\071\302\260\103\040\120\071\071\071\056\062\067\150\120\141\040\110\064\062\056\064\063\045\122\110) and \r\n (\015\012)
trying to match message 42356 T19.69°C P999.27hPa H42.43%RH\r\n (\064\062\063\065\066\040\124\061\071\056\066\071\302\260\103\040\120\071\071\071\056\062\067\150\120\141\040\110\064\062\056\064\063\045\122\110\015\012)
42356 T19.69°C P999.27hPa H42.43%RH\r\n (\064\062\063\065\066\040\124\061\071\056\066\071\302\260\103\040\120\071\071\071\056\062\067\150\120\141\040\110\064\062\056\064\063\045\122\110\015\012) matches regex 42356[^\n]+\n for reading humidity of device BME280_42356 with class BME280
42356 T19.69°C P999.27hPa H42.43%RH\r\n (\064\062\063\065\066\040\124\061\071\056\066\071\302\260\103\040\120\071\071\071\056\062\067\150\120\141\040\110\064\062\056\064\063\045\122\110\015\012) matches regex 42356[^\n]+\n for reading airpressure of device BME280_42356 with class BME280
42356 T19.69°C P999.27hPa H42.43%RH\r\n (\064\062\063\065\066\040\124\061\071\056\066\071\302\260\103\040\120\071\071\071\056\062\067\150\120\141\040\110\064\062\056\064\063\045\122\110\015\012) matches regex 42356[^\n]+\n for reading temperature of device BME280_42356 with class BME280
BME280_42356 has new values

Hurra.
Bei den reads, bei denen es dann fehlschlägt, sieht der letzte read wie folgt aus
read \n (\012)
Spontaneously received \n (\012)
dispatch \n
Unknown code, help me!

Kein merging
Kein trying
Ein partial message kept gibt es nach dem \n nie, ist ja auch ok

Ein einzelnes Zeichen wird typischerweise gelesen, dispatched, merged, tried, kept, ein einzelnes \n wird, zumindest in meinem Fall, nicht mehr merged.

Grüße, Hendrik

Dr. Boris Neubert

Danke für Log. Quelle des Problems vermutlich identifiziert, Lösung offen. Siehe https://forum.fhem.de/index.php?topic=112399.new#new
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

grzbrz

Oje, in einer Routine, die vermutlich von vielen genutzt wird .. sowas riecht typischerweise nach Seiteneffekten, nicht gut.

Danke jedenfalls, ich habe schon gedacht ich verstehe die regex nicht mehr.

Meine Gedanken fangen an zu kreisen..
Wenn das dispatching durch fhem gemacht wird, warum steht dann im Log, dass ECMD es getan hätte?
Wäre es nicht grundsätzlich besser im Log steht das jeweils für die erzeugte Zeile verantwortliche Modul?
Dann wird das merging, matching und partial aufbewaren mit der dispatchten Nachricht vom ECMDDevice gemacht? Im Log ebenfalls ECMD.
Vermutlich wird auch das splitting vom device gemacht.
Wenn das alles zutrifft , gehören die attr partial und split dann nicht ins device?
Wozu braucht ECMD dann Kenntnis von der/den class definition? Dort stehen quasi die Angaben zum jeweiligen Device.

Sorry, bin vermutlich innervierend, lass mich links liegen, wenns nervt





grzbrz

Hallo Boris,

habe jetzt als Zwischenlösung den match auf "%devId[^\n\r]+[\n\r]+" gesetzt. Das produziert zwar bei einem einzelnen "\n" zwei einträge, Wert unmittelbar gefolgt von help me, aber ich habe Werte. Wenn ich die help me noch unterdrücken könnte, hätte ich eine funktionierende Lösung ohne Fehlermeldung.

Grüße, Hendrik

Dr. Boris Neubert

Hallo,

Rudi hat fhem.pl angepasst. Kannst Du bitte mal mit Deiner ursprünglichen Konfiguration testen, ob es jetzt vollständig funktioniert?

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

grzbrz

Hallo Boris,

gerade auf "%devId[^\n]+\n" zurückgestellt, update, shutdown restart, logTraffic und verbose auf 5 .. jetzt muß ich auf ein einzelnes "\n" warten .. melde mich dann.

Grüße, Hendrik

grzbrz

Hallo Boris,

passt ! Das war die Lösung, Danke ! Gelöst !

Grüße, Hendrik

PS: in https://wiki.fhem.de/wiki/ECMD habe ich ein Beispiel eingestellt, vielleicht noch einmal drüber schauen. Und .. wie kennzeichne ich dieses Thema als gelöst ?


Dr. Boris Neubert

Vielen Dank, Hendrik, für die positive Rückmeldung und dafür, dass Du zum Wiki beigetragen hast!

Das Thema kannst Du als gelöst kennzeichnen, indem Du Deinen ersten Beitrag in diesem Thema editierst und ein [gelöst] vor den Betreff stellst.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!