M-Bus < USB > Raspberry Pi

Gast #3877504
Lesenswert?

Hallo,

ich versuche nun schon seit einem Monat einen Stromzähler über M-Bus 
auszulesen. Die Stecke sieht wie folgt aus: Zähler - M-Bus Master - 
Pegelwandler über USB - Raspberry PI.

Der Pegelwandler der am RPI hängt wird erkannt, doch jetzt möchte ich 
über das Linux Terminal irgendwie ein Lebenszeichen bekommen, was mit 
dem M-Bus Telegramm 10 40 FE 3E 16 erreicht werden sollte.

Es kommt aber leider keine Antwort.

ich hab es mit:

sudo echo -e \\x10 \\x40 \\xFE \\x3E \\x16 > /dev/USB0
versucht.
Und im Hintergrund lasse ich:

cat < /dev/USB0

laufen.

Hat jemand von euch eine Idee was ich noch Versuchen könnte bzw. was ich 
falsche mache?

MfG
Mujir
Gast #3877570
Lesenswert?

Hallo Walter,

Walter schrieb:
> Port auf 2400, 8E1?

USB0 ist auf 2400 eingestellt, mittels:

sudo stty 2400 -F /dev/ttyUSB0

wie würde ich den die Baudrate für den M-Bus Zähler einstellen?
Bzw. glaube ich das 2400 die default Einstellung ist. Über ein 
Auslesetool für Windows wurden 2400 baud angeben, wobei ich nicht weiss 
ob das Byte extra gesendet wurde/werden muss.

MfG
Mujir
Gast #3877907
Lesenswert?

Hallo Walter,

danke für den Link :)

setserial hat bei mir leider nicht funktioniert.
Dafür aber:

stty -F /dev/ttyUSB0 2400 cs8 parenb -parodd -cstopb

USB0 steht jetzt auf 2400 Baud und 8E1.

Mit MBSheet konnte ich meinen Zähler finden, aber keinen Hinweis auf die 
Lösung meines Problems.

Das Linux Terminal gibt nichts zurück. Mit meinem Perl-Programm 
funktioniert es ebensowenig. Irgendwas mache ich falsch bei der 
Übertragung des Telegrammes.
Gast #3879031
Lesenswert?

Hallo Walter und Timmo H. ,

Walter schrieb:
> Steht -parodd wirklich für even parity?

Laut http://wiki.linpert.de/index.php?title=Serielle_Schnittstelle

steht der Bindestrich vor parodd dafür das es sich um even parity 
handelt.

Walter schrieb:
> Schickt mbsheet denn exakt das Gleiche zum Zähler?

das Prgroamm liest den Zähler erfolgreich aus, nachdem die genau Zähler 
Addresse gefunden wurde.
Hat mich aber unter Linux nicht weiter gebracht, vielleicht hab ich was 
übersehen?

Walter schrieb:
> cutecom wäre auch noch ein Terminalprogramm f. Linux zum Testen.

Funktioniert sehr gut. Mit Cutecom kann ich den Zähler auslesen ;)
Danke für den spitzen Tipp Walter

Jetzt interessiert mich noch wie Cutecom das macht. Wo bzw. wie kann ich 
den Quellcode einsehen?

Timmo H. schrieb:
> Wieso sendest du über /dev/USB0 und nicht über /dev/ttyUSB0?

Da hast du Recht "/dev/ttyUSB0" ist natürlich richtig und wurde auch so 
von mir genutzt, da hab ich mich hier im Forum vertippt.

MfG
Mujir
Gast #3880244
Lesenswert?

Hallo temp,

temp schrieb:
> So sollte das wie gewollt gehen:
>
> echo -n -e "\\x10\\x40\\xFE\\x3E\\x16" >/dev/ttyUSB0

Das ist ein sehr interssanter Tipp, habe ich natürlich direkt 
ausprobiert aber leider bekomme ich so über das Linux Terminal immer 
noch keine Rückmeldung ,mittels "cat" Befehl, von meinem Zähler

Meine manuell konfigurierte ttyUSB0 Schnittstelle scheint genauso 
eingestellt zu sein wie die, die von Cutecom eingestellte ttyUSB0 
Schnittstelle.

Über Cutecom kann ich den Zähler wunderbar auslesen, nur wie Cutecom das 
macht interessiert mich noch.

MfG
Mujir
Gast #4247724
Lesenswert?

Hallo,

ich plane auch demnächst meinen Haus-Wasserzähler, der eine Samson HRI 
DataUnit bekommt, über M-Bus mit einem RPI auszulesen.

Du schreibst oben, dass da ein "M-Bus Master" dazwischen hängt.

Braucht es dass denn unbedingt?? Ich hatte gehofft, dass ich die Daten 
bzw. das Protokoll direkt an den RPI an einen GPIO Pin geben kann (über 
einen Pegelwandler).
Was macht der Master denn noch? Und wo bekommt man denn so einen M-Bus 
Master?

Danke!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren