ECMD auslesen der seriellen Schnittstelle

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

Vorheriges Thema - Nächstes Thema

otto

Hallo  versuchte mit dem Modul ECMD die serielle Schnittstelle einet BMA
auszulesen und zwar so:

define Seriell ECMD serial /dev/ttyUSB0@9600
attr Seriell logTraffic 5
define FileLog_Seriell FileLog ./log/Seriell.txt Seriell attr
FileLog_Seriell logtype text bekomme als log:

2015-12-31_17:53:25 Seriell UNKNOWNCODE 00
2015-12-31_17:53:26 Seriell UNKNOWNCODE 272: Don 31-Dez-15 17:24:54:   
ZENTRALE ZURšCKSETZEN
2015-12-31_20:31:14 Seriell UNKNOWNCODE 002
2015-12-31_20:33:26 Seriell UNKNOWNCODE 73: Don 31-Dez-15 20:02:42:> Akustische Signale AB (FBF)

kann ich das irgendwie als Readings bekommen,
und wie bekomm ich das Datum und den Zusatz weg :
2015-12-31_20:31:14 Seriell UNKNOWNCODE 002
2015-12-31_20:33:26 Seriell UNKNOWNCODE 73:

Hab mir das Modul zwar schon mal angeschaut aber leider versteh ich dazu zu wenig ::) bzw nichts :D
kann mir da einer helfen ?
Hätte hier schon mal gefragt aber leider ohne Erfolg:
http://forum.fhem.de/index.php/topic,13346.msg305250.html#msg305250

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

Lorenz

Hallo Otto,

ich bin auch nicht der ECMD Profi, habe aber damit meine Heizung angebunden und entsprechende Readings erzeugt. Aber es wird bei Dir nicht ohne intensive Einarbeitung in die Nutzung des Moduls gehen (war bei mir auch so  ;) ). Vielleicht hilft Dir mein Beispiel der Heizungsanbindung, um das Prinzip und den Umgang mit dem Modul zu verstehen:

Hier der letzte funktionierende Stand:
http://forum.fhem.de/index.php/topic,25688.msg201010.html#msg201010

Ansonsten half mir commandref und das Stöbern mit der Suche durchs Forum.
Das Attribut logTraffic 5 hast Du ja schon gefunden - ohne dem geht´s garnicht weiter.


LG

Lorenz
. . . . . .
Fhem auf NUC7i3BNH, Raspberry Pi B und B+, Raspberry Pi 2 B, Peripherie: FB7490, 1-Wire, Homematic, FS20, Lampen, Briefkasten, Klingel, Sonos, GardenaSmart, Unifi, Gaszähler an GPIO, Stromzähler EFR SGM-C4, Heizung Buderus GBH 172, Alarmanlage EMA und BMA von Bosch

Dr. Boris Neubert

Zitat von: otto am 05 Januar 2016, 14:29:07
kann mir da einer helfen ?

Bitte den angehefteten Beitrag vollumfänglich beachten.

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

otto

#3
Wenn ich das richtig Verstehe wird mir der classdef alles Ausgefiltert was über die Schnittstelle gesendet wird ?
wie kann ich die richtig erstellen das einfach alles in die Readings geschrieben wird ?
reading systemtime match "systemtime (\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d)"
reading systemtime postproc { s/systemtime (\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d)/$1/;; $_ }
eines von denen ist ja warscheinlich   Datum/Uhrzeit
kommt aber leider bei mir so an:Don 31-Dez-15 20:02:42:   Akustische Signale AB (FBF)
und den Text kann ich nicht beeinflussen jedesmal was anderes bräuchte einfach nur alles ?
hab mal deine emsmessages.classdef mit drangehängt
jetzt schreibt es kein log mehr (./log/Seriell.txt )außer nach einem set Seriell reopen:
2016-01-06_01:34:52 Seriell CONNECTED

und im Logfile steht jetzt:
2016.01.06 01:08:57 5: Seriell: read "0"
2016.01.06 01:08:57 5: Seriell: Spontaneously received "0"
2016.01.06 01:08:57 5: Seriell dispatch 0
2016.01.06 01:08:57 5: Seriell: read "0429: Mit 06-Jan-16 "
2016.01.06 01:08:57 5: Seriell: Spontaneously received "0429: Mit 06-Jan-16 "
2016.01.06 01:08:57 5: Seriell dispatch 0429: Mit 06-Jan-16
2016.01.06 01:08:57 5: Seriell: read "00:40:00:   Akustisc"
2016.01.06 01:08:57 5: Seriell: Spontaneously received "00:40:00:   Akustisc"
2016.01.06 01:08:57 5: Seriell dispatch 00:40:00:   Akustisc
2016.01.06 01:08:57 5: Seriell: read "he Signale"
2016.01.06 01:08:57 5: Seriell: Spontaneously received "he Signale"
2016.01.06 01:08:57 5: Seriell dispatch he Signale
2016.01.06 01:08:57 5: Seriell: read " AN (FBF)\r\n\r\n"
2016.01.06 01:08:57 5: Seriell: Spontaneously received " AN (FBF)\r\n\r\n"
2016.01.06 01:08:57 5: Seriell dispatch  AN (FBF)
Die echte Ausgabe wäre hier:
0429: Mit 06-Jan-16  Akustische Signale AN (FBF)
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

Enden die Übertragungen immer mit einem oder zwei CRLF, also \r\n?

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

otto

#5
Wenn ich es richtig verstehe geht´s um Zeilenvorschub ?
und das sind nach jeder Zeile 2.
(aber das heißt nicht das sie endet, können auch mal 2/3 Zeilen sein aber immer mit 2 Leerzeilen.)

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

Setze bitte das partial-Attribut und stelle in die classdef folgendes ein:


reading foobar match "^.*\015\012\015\012$"


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

otto

OK jetzt kommt im Log:
2016.01.08 23:04:26 5: Seriell: read "004"
2016.01.08 23:04:26 5: Seriell: Spontaneously received "004"
2016.01.08 23:04:26 5: Seriell dispatch 004
2016.01.08 23:04:26 5: Seriell: read "69: Fre 08-Jan-16 22:35:14:   ZENTRALE ZUR�CKSETZEN (FBF)\r\n\r\n"
2016.01.08 23:04:26 5: Seriell: Spontaneously received "69: Fre 08-Jan-16 22:35:14:   ZENTRALE ZUR�CKSETZEN (FBF)\r\n\r\n"
2016.01.08 23:04:26 5: Seriell dispatch 69: Fre 08-Jan-16 22:35:14:   ZENTRALE ZUR�CKSETZEN (FBF)

..das so an, wie bekomme ich jetzt ein Reading da raus ?
Sorry steh da leider total auf der Leitung :-[

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

bitte poste mal den output von

list seriell

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

otto

Hallo (list Seriell) sieht so bei mir aus hab es 1:1 übernommen:
http://forum.fhem.de/index.php/topic,25688.msg201010.html#msg201010

Internals:
   DEF        serial /dev/ttyUSB0@9600
   DeviceName /dev/ttyUSB0@9600
   FD         11
   NAME       Seriell
   NR         27
   PARTIAL
   Protocol   serial
   STATE      opened
   TYPE       ECMD
   Readings:
     2016-01-08 23:03:54   state           opened
   Fhem:
     Classdefs:
       Ems_messages:
         filename   /opt/fhem/emsmessages.classdef
         params     ww_currenttemp heater_currenttemp returnflow_currenttemp outdoor_temp heaterpump_currentmodulation ww_targettemp heater_targettemp warmwaterpreparationactive zirkpumpactive flameactive heateractive ignitionactive heater_pumpactive 3wayonww ww_daymode burner_targetmodulation burner_currentmodulation flamecurrent heater_maintenancedue systemtime
         Gets:
         Readings:
           3wayonww:
             match      3wayonww (on|off)
             postproc   { s/3wayonww (on|off)/$1/;; $_ }
           Burner_currentmodulation:
             match      burner currentmodulation (\d+)
             postproc   { s/burner currentmodulation (\d+)/$1/;; $_ }
           Burner_targetmodulation:
             match      burner targetmodulation (\d+)
             postproc   { s/burner targetmodulation (\d+)/$1/;; $_ }
           Flameactive:
             match      flameactive (on|off)
             postproc   { s/flameactive (on|off)/$1/;; $_ }
           Flamecurrent:
             match      flamecurrent (\d+)
             postproc   { s/flamecurrent (\d+)/$1/;; $_ }
           Foobar:
             match      ^.*\015\012\015\012$
           Heater_currenttemp:
             match      heater currenttemperature (\d+.\d)
             postproc   { s/heater currenttemperature (\d+.+)/$1/;; $_ }
           Heater_maintenancedue:
             match      heater maintenancedue (no|yes)
             postproc   { s/heater maintenancedue (no|yes)/$1/;; $_ }
           Heater_pumpactive:
             match      heater pumpactive (on|off)
             postproc   { s/heater pumpactive (on|off)/$1/;; $_ }
           Heater_targettemp:
             match      heater targettemperature (\d+)
             postproc   { s/heater targettemperature (\d+)/$1/;; $_ }
           Heateractive:
             match      heateractive (on|off)
             postproc   { s/heateractive (on|off)/$1/;; $_ }
           Heaterpump_currentmodulation:
             match      heaterpump currentmodulation (\d+)
             postproc   { s/heaterpump currentmodulation (\d+)/$1/;; $_ }
           Ignitionactive:
             match      ignitionactive (on|off)
             postproc   { s/ignitionactive (on|off)/$1/;; $_ }
           Outdoor_temp:
             match      outdoor currenttemperature (\d+.\d)
             postproc   { s/outdoor currenttemperature (\d+.+)/$1/;; $_ }
           Returnflow_currenttemp:
             match      returnflow currenttemperature (\d+.\d)
             postproc   { s/returnflow currenttemperature (\d+.+)/$1/;; $_ }
           Systemtime:
             match      systemtime (\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d)
             postproc   { s/systemtime (\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d)/$1/;; $_ }
           Warmwaterpreparationactive:
             match      warmwaterpreparationactive (on|off)
             postproc   { s/warmwaterpreparationactive (on|off)/$1/;; $_ }
           Ww_currenttemp:
             match      ww currenttemperature (\d+.\d)
             postproc   { s/ww currenttemperature (\d+.+)/$1/;; $_ }
           Ww_daymode:
             match      ww daymode (on|off)
             postproc   { s/ww daymode (on|off)/$1/;; $_ }
           Ww_targettemp:
             match      ww targettemperature (\d+.\d)
             postproc   { s/ww targettemperature (\d+.+)/$1/;; $_ }
           Zirkpumpactive:
             match      zirkpumpactive (on|off)
             postproc   { s/zirkpumpactive (on|off)/$1/;; $_ }
         Sets:
     Partial:
       msg       

       ts         1452290666.87819
Attributes:
   classdefs  ems_messages=/opt/fhem/emsmessages.classdef
   logTraffic 5
   partial    1
   requestSeparator ?
   split      \n
   userReadings *.*
   verbose    5


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

Ok, danke. Und jetzt bitte erst einmal die Classdef eindampfen auf mein foobar-Reading und dann nochmal die Kommunikation anwerfen und das Log posten. Bitte der Vollständigkeit halber auch die Definition des Device (inkl. Attribute) und die Classdef im selben Beitrag einstellen (in code-Tags).

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

otto

#11
Hoffe alles richtig verstanden zu haben  :-[


Log:
2016.01.09 10:35:07 5: Seriell: read "00"
2016.01.09 10:35:07 5: Seriell: Spontaneously received "00"
2016.01.09 10:35:07 5: Seriell dispatch 00
2016.01.09 10:35:07 5: Seriell: read "471: Sam 09-Jan-16 10:05:52:   ZENTRALE ZUR�CKSETZEN (FBF)\r\n\r\n"
2016.01.09 10:35:07 5: Seriell: Spontaneously received "471: Sam 09-Jan-16 10:05:52:   ZENTRALE ZUR�CKSETZEN (FBF)\r\n\r\n"
2016.01.09 10:35:07 5: Seriell dispatch 471: Sam 09-Jan-16 10:05:52:   ZENTRALE ZUR�CKSETZEN (FBF)

fhem.cfg:
define Seriell ECMD serial /dev/ttyUSB0@9600
attr Seriell classdefs ems_messages=/opt/fhem/emsmessages.classdef
attr Seriell logTraffic 5
attr Seriell partial 1
attr Seriell requestSeparator ?
attr Seriell split \n
attr Seriell userReadings *.*
attr Seriell verbose 5
define FileLog_Seriell FileLog ./log/Seriell.txt Seriell
attr FileLog_Seriell logtype text

define EMSClient ECMDDevice ems_messages
attr EMSClient IODev Seriell
attr EMSClient userReadings *.*

emsmessages.classdef:
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

Hallo,

entferne bitte mal ^ und $ aus dem match. Das lautet dann:

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

Wenn alle Datagramme mit 00471 beginnen, kannst Du auch gleich

reading foobar match "00471.*\015\012\015\012"

verwenden. Classdef neu laden, dann bitte wieder einen Auszug aus dem Log schicken.

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

otto

Hallo, die Zahlen ist ein Zähler :
Log jetzt:
2016.01.09 10:54:37 5: Seriell: read "0047"
2016.01.09 10:54:37 5: Seriell: Spontaneously received "0047"
2016.01.09 10:54:37 5: Seriell dispatch 0047
2016.01.09 10:54:37 5: Seriell: read "7: Sam 09-Jan-16 10:25:22:   ZENTRALE ZUR�CKSETZEN (FBF)\r\n\r\n"
2016.01.09 10:54:37 5: Seriell: Spontaneously received "7: Sam 09-Jan-16 10:25:22:   ZENTRALE ZUR�CKSETZEN (FBF)\r\n\r\n"
2016.01.09 10:54:37 5: Seriell dispatch 7: Sam 09-Jan-16 10:25:22:   ZENTRALE ZUR�CKSETZEN (FBF)

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

Wie sieht denn jetzt Dein Eintrag in der Classdef aus?
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!