Forum: Haus & Smart Home M-Bus < USB > Raspberry Pi


von Mujir87 (Gast)


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

von Walter (Gast)


Lesenswert?

Port auf 2400, 8E1?

Gruß,

Walter

von Mujir87 (Gast)


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

von Walter (Gast)


Lesenswert?

Mujir87 schrieb:
> wie würde ich den die Baudrate für den M-Bus Zähler einstellen?

setserial war glaube ich, dafür.

Zum Rumtesten - kennst Du:

http://www.relay.de/de/produkte/software/mbsheet.html

Gruß,

Walter

von Mujir87 (Gast)


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.

von Walter (Gast)


Lesenswert?

Mujir87 schrieb:
> stty -F /dev/ttyUSB0 2400 cs8 parenb -parodd -cstopb

Steht -parodd wirklich für even parity?

Schickt mbsheet denn exakt das Gleiche zum Zähler?

cutecom wäre auch noch ein Terminalprogramm f. Linux zum Testen.

Gruß,

Walter

von Timmo H. (masterfx)


Lesenswert?

Wieso sendest du über /dev/USB0 und nicht über /dev/ttyUSB0?

von Mujir87 (Gast)


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

von temp (Gast)


Lesenswert?

Mujir87 schrieb:

versuch mal:
echo -e \\x10 \\x40 \\xFE \\x3E \\x16 >test.txt

und sie dir an was dann in der Datei landet. Sieht bei mir so aus:

00000000 10 20 40 20 │ FE 20 3E 20 │ 16 0A

das ist sicher nicht das was du wolltest.

von temp (Gast)


Lesenswert?

So sollte das wie gewollt gehen:

echo -n -e "\\x10\\x40\\xFE\\x3E\\x16" >/dev/ttyUSB0

von Mujir87 (Gast)


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

von Walter (Gast)


Lesenswert?

Du könntest mal RX und TX am RS232 verbinden, dann siehst Du, ob Du das 
raussendest, was Du raussenden möchtest.

Gruß,

Walter

von Markus (Gast)


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!

von Martin (Gast)


Lesenswert?

Hallo.

googled mal nach fhem und m-bus


Martin

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.