ECMD auslesen der seriellen Schnittstelle

Begonnen von otto, 05 Januar 2016, 14:29:07

Vorheriges Thema - Nächstes Thema

otto

so:
reading foobar match ".*\015\012\015\012"


Gruß otto
Fhem 1 wire Adapter mit FT232RL&DS2480B Raspberry PI HMLAN HM485LAN HM-LC-Sw4-PCB   HMW-IO-12-SW7-DR Funkhandsender
FRITZ!Powerline 546E

Dr. Boris Neubert

Ich versuche das bei mir mal nachzustellen. Ich bin aber gerade mit was anderem befasst. Es kann dauern, bis ich mich melde, ggf. auch erst nächste Woche.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

otto

#17
Sorry hab jetzt mal die  emsmessages.classdef so geschrieben:
(keine Ahnung warum verstehe die Zeichen leider nicht)
reading foobar match "'^^^^^^.*\015\012\015\012"
da kommt dann so was raus im  Log:
016.01.09 11:07:02 5: Seriell: read "00479: Sam 09-Jan-16 10:37:46:   ZENTRALE ZUR�CKSETZEN (FBF)\r\n\r\n"
2016.01.09 11:07:02 5: Seriell: Spontaneously received "00479: Sam 09-Jan-16 10:37:46:   ZENTRALE ZUR�CKSETZEN(FBF)\r\n\r\n"
2016.01.09 11:07:02 5: Seriell dispatch 00479: Sam 09-Jan-16 10:37:46:   ZENTRALE ZUR�CKSETZEN (FBF)

vielleicht hilft es ?
ist leider irgenwie komisch geht nur manchmal was ich aber noch dazu sagen muss
das beim Empfang kleine Pausen sein können.
Gruß Otto
Fhem 1 wire Adapter mit FT232RL&DS2480B Raspberry PI HMLAN HM485LAN HM-LC-Sw4-PCB   HMW-IO-12-SW7-DR Funkhandsender
FRITZ!Powerline 546E

otto

Hallo mal noch ne Frage zu:
reading foobar match ".*\015\012\015\012"
was bedeutet zB.:015 usw bzw.
wo find ich so was ?`

GRuß otto
Fhem 1 wire Adapter mit FT232RL&DS2480B Raspberry PI HMLAN HM485LAN HM-LC-Sw4-PCB   HMW-IO-12-SW7-DR Funkhandsender
FRITZ!Powerline 546E

Dr. Boris Neubert

Hallo Otto,

ich habe Dich nicht vergessen, konzentriere mich aber derzeit ausschließlich auf den Release des neuen Calendar-Moduls.

In der Zwischenzeit kannst Du Perl lernen, Abschnitt "Reguläre Ausdrücke" und "Escape-Sequenzen".

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

Dr. Boris Neubert

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

otto

Hallo,
noch mal gibt es die Möglichkeit dass das Modul im utf-8 ins log schreibt.
weil Telegramm es nicht versendet.

Gruß Otto
Fhem 1 wire Adapter mit FT232RL&DS2480B Raspberry PI HMLAN HM485LAN HM-LC-Sw4-PCB   HMW-IO-12-SW7-DR Funkhandsender
FRITZ!Powerline 546E

Dr. Boris Neubert

Hallo,

Zitat von: otto am 31 Oktober 2020, 16:15:34
noch mal gibt es die Möglichkeit dass das Modul im utf-8 ins log schreibt.
weil Telegramm es nicht versendet.

ich bekomme Log und Telegramm nicht zusammen.

Das Modul schreibt die über die serielle Schnittstelle empfangenen Zeichen in der empfangenen Kodierung in das Protokoll. Wenn also der Text z.B. in latin1 empfangen wird, werden die Bytes so ins Log geschrieben.

Umkodieren ginge mit einer benutzerdefinierten Funktion im Postprocessing, bevor die Werte in ein Reading kommen.

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

jensdipo

Hallo Zusammen,
@Otto bist du hier eigentlich weitergekommen?
Hatte schonmal vor einiger Zeit den gleichen Gedanken, habe es aber jetzt noch mal aufgegriffen.
Bei uns wäre es eine Brandmeldeanlage von Esser, von der ich gerne E-Mails an uns senden möchte.
bei mir sieht das Logfile aber so aus:

2023.01.25 18:22:24 5: Seriell: read     (\040\040\040)
2023.01.25 18:22:24 5: Seriell: Spontaneously received     (\040\040\040)
2023.01.25 18:22:24 5: Seriell: dispatch   
2023.01.25 18:22:24 5: Seriell: trying to match message     (\040\040\040)
2023.01.25 18:22:24 5: Seriell: partial message     (\040\040\040) kept
2023.01.25 18:22:24 5: Seriell: read  \r\nBEDIENSTUFE g (\040\015\012\102\105\104\111\105\116\123\124\125\106\105\040\147)
2023.01.25 18:22:24 5: Seriell: Spontaneously received  \r\nBEDIENSTUFE g (\040\015\012\102\105\104\111\105\116\123\124\125\106\105\040\147)
2023.01.25 18:22:24 5: Seriell: dispatch  \r\nBEDIENSTUFE g
2023.01.25 18:22:24 5: Seriell: merging partial message     (\040\040\040) and  \r\nBEDIENSTUFE g (\040\015\012\102\105\104\111\105\116\123\124\125\106\105\040\147)
2023.01.25 18:22:24 5: Seriell:     \r\nBEDIENSTUFE g (\040\040\040\040\015\012\102\105\104\111\105\116\123\124\125\106\105\040\147) split into 2 parts
2023.01.25 18:22:24 5: Seriell: trying to match message     \r\n (\040\040\040\040\015\012)
2023.01.25 18:22:24 5: Seriell:     \r\n (\040\040\040\040\015\012) matches regex .*\r\n for reading foobar of device bmaclient with class bma_messages
2023.01.25 18:22:24 5: Seriell: trying to match message BEDIENSTUFE g (\102\105\104\111\105\116\123\124\125\106\105\040\147)
2023.01.25 18:22:24 5: Seriell: partial message BEDIENSTUFE g (\102\105\104\111\105\116\123\124\125\106\105\040\147) kept
2023.01.25 18:22:24 5: Seriell: read e�ndert     10: (\145\204\156\144\145\162\164\040\040\040\040\040\061\060\072)
2023.01.25 18:22:24 5: Seriell: Spontaneously received e�ndert     10: (\145\204\156\144\145\162\164\040\040\040\040\040\061\060\072)
2023.01.25 18:22:24 5: Seriell: dispatch e�ndert     10:
2023.01.25 18:22:24 5: Seriell: merging partial message BEDIENSTUFE g (\102\105\104\111\105\116\123\124\125\106\105\040\147) and e�ndert     10: (\145\204\156\144\145\162\164\040\040\040\040\040\061\060\072)
2023.01.25 18:22:24 5: Seriell: trying to match message BEDIENSTUFE ge�ndert     10: (\102\105\104\111\105\116\123\124\125\106\105\040\147\145\204\156\144\145\162\164\040\040\040\040\040\061\060\072)
2023.01.25 18:22:24 5: Seriell: partial message BEDIENSTUFE ge�ndert     10: (\102\105\104\111\105\116\123\124\125\106\105\040\147\145\204\156\144\145\162\164\040\040\040\040\040\061\060\072) kept
2023.01.25 18:22:24 5: Seriell: read 48:49 01.01.\r\n  (\064\070\072\064\071\040\060\061\056\060\061\056\015\012\040)
2023.01.25 18:22:24 5: Seriell: Spontaneously received 48:49 01.01.\r\n  (\064\070\072\064\071\040\060\061\056\060\061\056\015\012\040)
2023.01.25 18:22:24 5: Seriell: dispatch 48:49 01.01.\r\n
2023.01.25 18:22:24 5: Seriell: merging partial message BEDIENSTUFE ge�ndert     10: (\102\105\104\111\105\116\123\124\125\106\105\040\147\145\204\156\144\145\162\164\040\040\040\040\040\061\060\072) and 48:49 01.01.\r\n  (\064\070\072\064\071\040\060\061\056\060\061\056\015\012\040)
2023.01.25 18:22:24 5: Seriell: BEDIENSTUFE ge�ndert     10:48:49 01.01.\r\n  (\102\105\104\111\105\116\123\124\125\106\105\040\147\145\204\156\144\145\162\164\040\040\040\040\040\061\060\072\064\070\072\064\071\040\060\061\056\060\061\056\015\012\040) split into 2 parts
2023.01.25 18:22:24 5: Seriell: trying to match message BEDIENSTUFE ge�ndert     10:48:49 01.01.\r\n (\102\105\104\111\105\116\123\124\125\106\105\040\147\145\204\156\144\145\162\164\040\040\040\040\040\061\060\072\064\070\072\064\071\040\060\061\056\060\061\056\015\012)
2023.01.25 18:22:24 5: Seriell: BEDIENSTUFE ge�ndert     10:48:49 01.01.\r\n (\102\105\104\111\105\116\123\124\125\106\105\040\147\145\204\156\144\145\162\164\040\040\040\040\040\061\060\072\064\070\072\064\071\040\060\061\056\060\061\056\015\012) matches regex .*\r\n for reading foobar of device bmaclient with class bma_messages
2023.01.25 18:22:24 5: Seriell: trying to match message   (\040)
2023.01.25 18:22:24 5: Seriell: partial message   (\040) kept
2023.01.25 18:22:24 5: Seriell: read    Zentr. : 01   (\040\040\040\132\145\156\164\162\056\040\072\040\060\061\040\040)
2023.01.25 18:22:24 5: Seriell: Spontaneously received    Zentr. : 01   (\040\040\040\132\145\156\164\162\056\040\072\040\060\061\040\040)
2023.01.25 18:22:24 5: Seriell: dispatch    Zentr. : 01 
2023.01.25 18:22:24 5: Seriell: merging partial message   (\040) and    Zentr. : 01   (\040\040\040\132\145\156\164\162\056\040\072\040\060\061\040\040)
2023.01.25 18:22:24 5: Seriell: trying to match message     Zentr. : 01   (\040\040\040\040\132\145\156\164\162\056\040\072\040\060\061\040\040)
2023.01.25 18:22:24 5: Seriell: partial message     Zentr. : 01   (\040\040\040\040\132\145\156\164\162\056\040\072\040\060\061\040\040) kept
2023.01.25 18:22:24 5: Seriell: read           STAND (\040\040\040\040\040\040\040\040\040\040\123\124\101\116\104)
2023.01.25 18:22:24 5: Seriell: Spontaneously received           STAND (\040\040\040\040\040\040\040\040\040\040\123\124\101\116\104)
2023.01.25 18:22:24 5: Seriell: dispatch           STAND
2023.01.25 18:22:24 5: Seriell: merging partial message     Zentr. : 01   (\040\040\040\040\132\145\156\164\162\056\040\072\040\060\061\040\040) and           STAND (\040\040\040\040\040\040\040\040\040\040\123\124\101\116\104)
2023.01.25 18:22:24 5: Seriell: trying to match message     Zentr. : 01            STAND (\040\040\040\040\132\145\156\164\162\056\040\072\040\060\061\040\040\040\040\040\040\040\040\040\040\040\040\123\124\101\116\104)
2023.01.25 18:22:24 5: Seriell: partial message     Zentr. : 01            STAND (\040\040\040\040\132\145\156\164\162\056\040\072\040\060\061\040\040\040\040\040\040\040\040\040\040\040\040\123\124\101\116\104) kept
2023.01.25 18:22:24 5: Seriell: read ARD     \r\n\r\n (\101\122\104\040\040\040\040\040\015\012\015\012)
2023.01.25 18:22:24 5: Seriell: Spontaneously received ARD     \r\n\r\n (\101\122\104\040\040\040\040\040\015\012\015\012)
2023.01.25 18:22:24 5: Seriell: dispatch ARD     \r\n\r\n
2023.01.25 18:22:24 5: Seriell: merging partial message     Zentr. : 01            STAND (\040\040\040\040\132\145\156\164\162\056\040\072\040\060\061\040\040\040\040\040\040\040\040\040\040\040\040\123\124\101\116\104) and ARD     \r\n\r\n (\101\122\104\040\040\040\040\040\015\012\015\012)
2023.01.25 18:22:24 5: Seriell:     Zentr. : 01            STANDARD     \r\n\r\n (\040\040\040\040\132\145\156\164\162\056\040\072\040\060\061\040\040\040\040\040\040\040\040\040\040\040\040\123\124\101\116\104\101\122\104\040\040\040\040\040\015\012\015\012) split into 2 parts
2023.01.25 18:22:24 5: Seriell: trying to match message     Zentr. : 01            STANDARD     \r\n (\040\040\040\040\132\145\156\164\162\056\040\072\040\060\061\040\040\040\040\040\040\040\040\040\040\040\040\123\124\101\116\104\101\122\104\040\040\040\040\040\015\012)
2023.01.25 18:22:24 5: Seriell:     Zentr. : 01            STANDARD     \r\n (\040\040\040\040\132\145\156\164\162\056\040\072\040\060\061\040\040\040\040\040\040\040\040\040\040\040\040\123\124\101\116\104\101\122\104\040\040\040\040\040\015\012) matches regex .*\r\n for reading foobar of device bmaclient with class bma_messages
2023.01.25 18:22:24 5: Seriell: trying to match message \r\n (\015\012)
2023.01.25 18:22:24 5: Seriell: \r\n (\015\012) matches regex .*\r\n for reading foobar of device bmaclient with class bma_messages

und mein Device so:
Internals:
   DEF        serial /dev/ttyUSB0@9600
   DeviceName /dev/ttyUSB0@9600
   FD         8
   FUUID      63ce6dc7-f33f-d1b0-5b94-9499b896696e5ccc
   NAME       Seriell
   NR         43
   PARTIAL   
   Protocol   serial
   STATE      opened
   TYPE       ECMD
   eventCount 1
   READINGS:
     2023-01-25 18:18:39   state           opened
   fhem:
     classDefs:
       bma_messages:
         filename   /opt/fhem/bma.classdef
         readings:
           foobar:
             match      .*\r\n
     partial:
       msg       
       ts         1674667355.97959
Attributes:
   classdefs  bma_messages=/opt/fhem/bma.classdef
   logTraffic 5
   partial    1
   requestSeparator ?
   split      \n
   userReadings *.*
   verbose    5

Habe aber auch keine Ahnung wie ich das anpacken sollte/könnte.
Kann man sich da Irgendwie einlesen?
MFG
Jens



Dr. Boris Neubert

Zitat von: jensdipo am 25 Januar 2023, 18:33:00
Habe aber auch keine Ahnung wie ich das anpacken sollte/könnte.

Die Frage ist recht allgemein, ich kann daher nur eine ähnlich allgemeine Antwort geben.

Die Aufgabe zerfällt in drei Teile:
1. Die von der BMA über die serielle Schnittstelle kundgetanen Zustände der BMA mittels ECMD in ein entsprechendes Device packen.
2. Auf Events, die durch die Änderung bestimmter in Readings hinterlegter Zustände (z.B. Status: OK -> Feuer) ausgelöst werden, mit einem Notify reagieren.
3. Das Notify löst die E-Mail aus, mit einem der Mechanismen in FHEM (z.B. MSG).

Aufgabenteil 1 besteht nun in der Kunst, den Datenstrom von der BMA als einzelne Aussendungen zu verstehen, über reguläre Ausdrücke zu isolieren (match), und die Informationen in einer Aussendung in ein oder mehr Readings zu packen.

Im Wiki ist ein Beitrag zu ECMD.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!