ECMD: serielle Schnittstelle initialisieren => wie?

Begonnen von willybauss, 06 Februar 2016, 10:33:46

Vorheriges Thema - Nächstes Thema

willybauss


Ich habe einen Stromzähler, der unaufgefordert und permanent OBIS-Daten in Klarschrift sendet, also (leider) nicht SML. Diese möchte ich mit einem Lesekopf aus dem Volkszählerprojekt auslesen. Aus dem dortigen Forum weiß ich schon, dass ich auf der Kommandozeile die Daten lesen kann nach vorheriger Initialisierung mit



pi@raspberrypi ~ $ stty -F /dev/ttyUSB2 1:0:9ad:0:3:1c:7f:15:4:5:1:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0
pi@raspberrypi ~ $ cat /dev/ttyUSB2
/EMH5----eHZ-E0028E

1-0:0.0.0*255(20836181)
1-0:1.8.1*255(009260.0705)
1-0:2.8.1*255(027030.6495)
1-0:96.5.5*255(82)
0-0:96.1.255*255(0002477555)
!



In FHEM habe ich es folgendermaßen versucht:



define mySerialDevice ECMD serial /dev/ttyUSB2@9600
attr mySerialDevice classdefs eHZ=/opt/fhem/FHEM/eHZ.classdef
define Hausstrom_Zaehler ECMDDevice eHZ
attr Hausstrom_Zaehler IODev mySerialDevice
attr Hausstrom_Zaehler room Stromzaehler



und



# eHZ.classdef
set init cmd {"stty -F /dev/ttyUSB2 1:0:9ad:0:3:1c:7f:15:4:5:1:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0\n"}



Leider erfolglos, auch nach



Hausstrom_Zaehler init
set mySerialDevice reopen



kommt nur



2016-02-05_22:46:41 mySerialDevice UNKNOWNCODE



Was mache ich falsch bzw. wie mache ich es richtig?
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

Dr. Boris Neubert

Hallo,

das stty-Kommando ist kein Perl. Du musst es in

system()

einschließen.

Dann lautet das Kommando in FHEM

set Hausstrom_Zaehler init

Um dann die Antworten zu parsen, brauchst Du readings etc.

Im übrigen bitte http://forum.fhem.de/index.php/topic,25748.0.html beachten.

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

Icinger

Ich meld mich morgen mal bei dir. Das ganze ust in prinzip schon fix&fertig. Habe das für meinen Voltcraft-Zähler und brauche da ja nur mehr das Init anpassen. Siehe "OBIS"-Thred hier um Forum.

Lg, Stefan

Gesendet von meinem SM-N9005 mit Tapatalk

Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

willybauss

#3
Hi,
besten Dank für die Hilfe, aber es bleibt leider bei dem Ergebnis, auch mit "attr global verbose 5":


2016-02-06 16:51:26 ECMD mySerialDevice UNKNOWNCODE
2016-02-06 16:51:33 ECMD mySerialDevice UNKNOWNCODE
2016-02-06 16:51:45 ECMD mySerialDevice UNKNOWNCODE
2016-02-06 16:51:47 ECMD mySerialDevice UNKNOWNCODE
2016-02-06 16:51:57 ECMD mySerialDevice UNKNOWNCODE


Mit "attr mySerialDevice LogTraffic 5" dasselbe:



2016-02-06 17:11:29 ECMD mySerialDevice UNKNOWNCODE
2016-02-06 17:11:30 Global global ATTR mySerialDevice logTraffic 5
2016-02-06 17:11:35 ECMD mySerialDevice UNKNOWNCODE
2016-02-06 17:11:41 ECMD mySerialDevice UNKNOWNCODE


Weder "shutdown restart" noch "set Hausstrom_Zaehler init" ändern was am Ergebnis. Auch "set mySerialDevice reopen" hilft nicht.
Das Einzige, was passiert ist, dass der Raspi sofort in den Turbomodus verfällt und warm wird, wenn ich den Lesekopf an den Zähler hänge und somit den Datenstrom erzeuge. Damit meine ich: der Kopf hängt permanent am USB-Port, aber mechanisch nehme ich ihn weg vom Zähler, solange ich nicht teste, damit der Raspi nicht so viele Mülldaten verarbeiten muss.

Hier nochmal die Konfig:


attr global verbose 5
...
define mySerialDevice ECMD serial /dev/ttyUSB2@9600
attr mySerialDevice classdefs eHZ=/opt/fhem/FHEM/eHZ.classdef
attr mySerialDevice logTraffic 5
attr mySerialDevice verbose 5
define Hausstrom_Zaehler ECMDDevice eHZ
attr Hausstrom_Zaehler IODev mySerialDevice
attr Hausstrom_Zaehler room Stromzaehler
attr Hausstrom_Zaehler verbose 5




# eHZ.classdef
set init cmd {system("stty -F /dev/ttyUSB2 1:0:9ad:0:3:1c:7f:15:4:5:1:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0\n")}


Ich könnte natürlich auch auf die ANtwort von Icinger warten, aber interessieren würde es mich schon  :) .
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

Dr. Boris Neubert

Na, Dein ECMDDevice weiß ja gar nicht, was es mit dem Datenstrom tun soll.

Bitte lies die Commandref und schaue Dir Beispiele im Wiki und Forum an, wie man eine Classdef baut, die den Datenstrom in Readings füttert.

Mindestanforderung: Kenntnisse zu regulären Ausdrücken.

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

willybauss

Problem ist gelöst. Mit dem OBIS-Modul ist das deutlich einfacher zu lösen als mit ECMD. Hier steht's.
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS