Forum: Mikrocontroller und Digitale Elektronik Smartmeter auslesen


von Filth (Gast)


Lesenswert?

Hallo,

ich versuche meinen Smartmeter auszulesen. Dazu habe ich diese Schaltung

http://gonium.net/blog/2010/10/24/smart-meter-datenkabel-selbst-gemacht--libehz/

mit dem BPW82 nachgebaut. Allerdings ist der R3 bei mit ein 5.5k statt 
4.7k wie in der Schaltung. Schaltung wird mit 3.3v versorgt und es hängt 
ein Arduino dran. Ganz simples Programm:
1
String inputString = ""; 
2
boolean stringComplete = false;
3
4
// the setup routine runs once when you press reset:
5
void setup() {  
6
  Serial.begin(9600);
7
  inputString.reserve(200);
8
9
 Serial.println("boot....");
10
11
}
12
13
void serialEvent() {
14
  while (Serial.available()) {
15
    char inChar = (char)Serial.read(); 
16
    inputString += inChar;
17
    if (inChar == '\n') {
18
      stringComplete = true;
19
    } 
20
  }
21
}
22
23
void loop() {
24
  if(stringComplete) {    
25
    Serial.println(inputString);                
26
    inputString = "";
27
    stringComplete = false;
28
  }
29
}

Ich kann zwar Daten empfangen, allerdings nur kryptische Zeichen.

Kann mir jemand helfen?

Danke!

von Helfer (Gast)


Lesenswert?

Hallo Filth,

>Mit einem USB-TTL-Adapter kann man sich nun den Klartext in einer Terminal 
>anschauen. Ich verwende dafür einen Kermit mit folgenden Einstellungen (in der 
>.kermrc, 9600 7N1)

steht ein bisschen im Gegensatz zu :

>Serial.begin(9600);
Mit dem Standard 8N1

Probier mal: Serial.begin(9600, SERIAL_7N1);

Liebe Grüße

Helfer

von Filth (Gast)


Lesenswert?

Oh das hab ich überlesen - angepasst, in hterm auf 9600 7N1 umgestellt - 
leider trotzdem wie vorher.

Das "boot" kommt noch lesbar, danach nur noch Zeichensalat

von Filth (Gast)


Lesenswert?

Hier die Ausgabe:

http://pastebin.com/EzLCZR0r

von Helfer (Gast)


Lesenswert?

Hallo Filth,
mit was ließt du nun die Daten aus? Mit dem obigen Arduino Programm (und 
nur einer seriellen Schnittstelle) oder HTERM ohne Arduino?


Gruß

von Filth (Gast)


Lesenswert?

Hallo Helfer,

mein Aufbau ist wie folgt:
Die obere Schaltung hängt am RX vom Arduino. Der Arduino per USB am 
Rechner, dort im hterm sehe ich Ausgabe von meinem Arduino.

Gruß

von Helfer (Gast)


Lesenswert?

Bei den meisten Arduino Boards liest du die Serielle Schnittstelle über 
den USB Anschluss aus. Somit schreibt der Arduino gleichzeitig mit dem 
Smartmeter auf die Serielle Schnittstelle und du empfängst natürlich nur 
Blödsinn.
Versuche doch erstmal nur, wie auf der Projektseite beschrieben, das 
Smartmeter nur mit einem TTL-USB Wandler auszulesen. Wenn du damit die 
Funktion deines Aufbaus getestet, kannst du die Auswertung mittels eines 
Aurduinos übernehmen.

Gruß

von Filth (Gast)


Lesenswert?

Hmm gerade getestet: direkt an einem TTL-USB Wandler kommt nichts. Am 
Arduino zusammen mit dem Blinken der IR-LED (durch Handycam gesehen) 
kommt der Datensalat an.

Bist du sicher, dass der Arduino gleichzeitig mit dem Smartmeter 
schreibt? Die Schaltung der IR LED hängt ja am RX Pin des Arduino und 
dieser schreibt auf dem TX Pin (ist ein arduino micro, also ohne USB 
Port)

von Helfer (Gast)


Lesenswert?

Achso, entschuldige, da habe ich gerade einen Knoten im Kopf gehabt.

So wie du es beschreibst ist es schon ok. Hast du auch die 7N1 
Einstellung im Arduino geändert?

von Filth (Gast)


Lesenswert?

Ja, das ist wirksam geändert - sehe ich daran, dass ohne passende 7N1 
Einstellung im Hterm das "boot" nicht lesbar ankommt.

Auf der Seite von der Schaltung steht, dass diese für 5v entworfen ist, 
kann das das Problem sein? Ich betreibe das Ganze ja mit 3.3v.

Ansonsten ist nur noch der R3 anders - ich habe 5.5k statt 4.7k, evtl 
hier das Problem?

von Harald W. (wilhelms)


Lesenswert?

Filth schrieb:

> Ansonsten ist nur noch der R3 anders - ich habe 5.5k statt 4.7k, evtl
> hier das Problem?

Du solltest das Signal direkt am Eingang des Arduinos messen;
am besten mit einem Oszi. Wenn das Signal dort schon schlecht
ist, kann es durch den µC nicht besser werden. Übrigens, 5,5kOhm
Widerstände gibt es normalerweise nicht; vielleicht ist dort ein
völlig falscher Wert verbaut?
Gruss
Harald

von :-) (Gast)


Lesenswert?

Wenn "boot" ankommt und dies vom Smartmeter ist, läuft die 
Kommunikation! Nur das der Inhalt für Neugierige wohl verschlüsselt ist! 
Immerhin soll ja nur der Energieversorger wissen wann Du deinen Toast 
machst und nicht Du selber, weil Du ja keinen Nutzen von deinem eigenen 
Bewegungsprofil hast (PS: mein Energieversorger will deshalb die Anzahl 
der Mitbewohner wissen obwohl es nur ein Konto gibt ;-) ) Ich habe 
sicherheisthalber mal 10 Leute angegeben.

von Filth (Gast)


Lesenswert?

Hallo Harald,

hmm mein Multimeter zeigt mir 5.56kOhm an. Falsch?
Wie kann ich das Signal ohne Oszi messen? Habe nämlich leider keinen zur 
Verfügung.

Gruß
Alex

von Frank W. (wesoft) Benutzerseite


Lesenswert?

:-) schrieb:
> Wenn "boot" ankommt und dies vom Smartmeter ist, läuft die
> Kommunikation!

Scheint so, als ob der TO das 'boot ...' selbst schreibt :

Filth schrieb:
> // the setup routine runs once when you press reset:
> void setup() {
>   Serial.begin(9600);
>   inputString.reserve(200);
>
>  Serial.println("boot....");
>
> }

von Filth (Gast)


Lesenswert?

Ja, das "boot" kommt von mir selbt.

Habe R3 probehalber mal durch einen 2.6k Widerstand ersetzt, jetzt sieht 
man den Datensalat auch ohne Arduino, also direkt am TTL-USB Wandler. 
Aber immernoch keine lesbaren Daten

von Frank W. (wesoft) Benutzerseite


Lesenswert?

Filth schrieb:
> Hmm gerade getestet: direkt an einem TTL-USB Wandler kommt nichts. Am
> Arduino zusammen mit dem Blinken der IR-LED (durch Handycam gesehen)
> kommt der Datensalat an.

Solange da nix ankommt, kann Dein Ardunio auch nix sinnvolles liefern.

von Filth (Gast)


Lesenswert?

Wie kann man denn sinnvoll die Schaltung ohne Oszi "debuggen" oder sich 
dem Fehler näheren?

von Frank W. (wesoft) Benutzerseite


Lesenswert?

Filth schrieb:
> Habe R3 probehalber mal durch einen 2.6k Widerstand ersetzt, jetzt sieht
> man den Datensalat auch ohne Arduino, also direkt am TTL-USB Wandler.
> Aber immernoch keine lesbaren Daten

Das spricht dafür, daß die Schaltung nicht sonderlich gut für 3.3V 
geeignet ist.

Unter 
http://wiki.volkszaehler.org/hardware/controllers/ir-schreib-lesekopf-ttl-ausgang 
findest Du eine Schaltung, die wohl auch für 3,3V geeignet ist.

von Frank W. (wesoft) Benutzerseite


Lesenswert?

Filth schrieb:
> Wie kann man denn sinnvoll die Schaltung ohne Oszi "debuggen" oder sich
> dem Fehler näheren?

Schwierig ... ohne Oszi kannst Du die vorhanden Pegel nicht ordentlich 
einschätzen.

von Frank W. (wesoft) Benutzerseite


Lesenswert?

Filth schrieb:
> Hier die Ausgabe:
>
> http://pastebin.com/EzLCZR0r

Kannst Du sagen, in welchem Zeitraum Du die Daten empfangen hast?

von Filth (Gast)


Lesenswert?

Die kamen in ca 1sek - Abständen. Also das wird ein Zeitraum von etwa 
~10 Sek. gewesen sein. Es kam jeweils einer von den Blöcken.

von Filth (Gast)


Lesenswert?

Eigentlich kann man da auch fast eine Regelmäßigkeit erkennen. Jeder von 
den Blöcken enthält einen ähnlichen String:

<22>bww<7>
<22>cww<7>
<22>eww<7>

usw.

Warum fragst du?

von Frank W. (wesoft) Benutzerseite


Lesenswert?

Filth schrieb:
> Warum fragst du?

Genau diese Regelmäßigkeit habe ich auch gesehen. Könnte eine falsche 
Baudrate sein. Stell Dein Terminal mal auf 300 baud 7E1 ein, dann klappt 
das vielleicht.

von Filth (Gast)


Lesenswert?

Hab alle möglichen Konstellationen was die Baudrate angeht 
durchprobiert, ohne Erfolg. Man sieht wiederkehrende Zeichen, aber 
lesbar ist das Ganze nicht.

von Frank W. (wesoft) Benutzerseite


Lesenswert?

Dann wird es schwierig mit derm Remote-Helfen.

Hier nochmal meine Tipps:

1. Laß den Ardunio erstmal weg
2. Finde heraus, welches die tatsächlichen Übertragungsparameter sind 
(Hersteller)
3. Schau Dir die Pegel an (Oszi)

Mehr können wir hier wohl nicht für Dich tun.

Einen Tipp habe ich noch: Eventuell ist noch der Pegel des TTL-Signals 
invertiert. Du kannst mal probieren, ob eine Invertierung des Signals 
Dich weiterbringt.

Ansonsten bleibt mir nur viel Erfolg zu wünschen.

von bkd (Gast)


Lesenswert?

Hallo Filth!

hast du das Problem dann gefunden ?

Grüße
bkd

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.