Forum: Mikrocontroller und Digitale Elektronik eHZ Stromzähler von EHM metering auslesen


von Klaus R. (klara)


Angehängte Dateien:

Lesenswert?

Hallo,
ich habe seit 2012 schon zwei eHZ Zähler für meine Photovoltaikanlage in 
Betrieb. Jetzt habe ich von Westnetz einen eHZ Zähler für 
Wärmepumpenstrom bekommen.
1
Hersteller: EMH metering GmbH & Co. KG
2
Typ       : eHZB, Elektronischer Basiszähler

Ich lese die Zähler mittels IR-Lesekopf und RS232 Verbindung aus. Die 
Verarbeitung erfolgt mit VB.NET.

Ich will den Wert für den verbrauchten Strom auslesen. In der 
Gebrauchsanleitung stehen auch einige OBIS-T-Kenzahlen.

Die Kennzahl ist die "01 00 01 08 00 FF", Zählwerk positive Wirkenergie 
tariflos. In der Datei LogDatei.png habe ich die Log-Auszüge von drei 
Werten wiedergegeben.

Die Zählerstände betrugen 108 kWh, 114 kWh und 117 kWh. Man sieht in der 
Sequenz zum Schluß 8 Stellen. Die 8. Stelle zeigt den Zählerstand an, 
Stelle 1 bis 7 sind 00.

Man sollte vermuten das beim Überlauf dann in der 7. Stelle weiter 
geschrieben wird. Wenn dem so sein sollte, dann wäre meine Frage schon 
gelöst.

Jedenfalls läuft das Auslesen in bei den eHZ aus dem Jahr 2012 etwas 
anders aus.

bStartsequenz = New Byte() {&H1B, &H1B, &H1B, &H1B, &H1, &H1, &H1, &H1}
bEndsequenz = New Byte() {&H1B, &H1B, &H1B, &H1B, &H1A}
b_1_8_0 = New Byte() {&H77, &H7, &H1, &H0, &H1, &H8}
b_2_8_0 = New Byte() {&H77, &H7, &H1, &H0, &H2, &H8}

Die wichtigsten Sequenzen sind gleich geblieben. Die Suche nach den 
Zählerstand läuft über eine 6 stellige OBIS-T-Kenzahl. An der 8. Stelle 
befindet sich ein Wert der offensichtlich als Zeiger für den Beginn der 
Zählerwerte im String dient. Dort kommen wohl die Hex-Werte für Dezmal 
98, 99 und 100 vor.

Ich finde an dieser Stelle bei mir Hex 64, das wären Dez 100.
Bei dem neuen Zähler fängt die Sequenz an der 26. Stelle an. Es folgen 
zur Zeit 7 x 00 und an der achten Stelle ein Hex Wert für den 
Zählerstand.
1
'1.8.0
2
i = BytesSuchen(bData, b_1_8_0, 0)
3
4
If i = -1 Then
5
    If blnAllesProtokollieren Then
6
        cText = "1.8.0 nicht gefunden"
7
        WrProtokoll(cText)
8
    End If
9
Else
10
    If Convert.ToInt64(bData(i + 8)) = 98 Then
11
        i = i + 17
12
    ElseIf Convert.ToInt64(bData(i + 8)) = 99 Then
13
        i = i + 18
14
    ElseIf Convert.ToInt64(bData(i + 8)) = 100 Then
15
        i = i + 19
16
    Else
17
        cText = "Lesefehler bei 1.8.0."
18
        WrProtokoll(cText)
19
        blnRet = False
20
        Exit Do
21
    End If
22
    Zählerstand = Convert.ToInt64(bData(i))
23
    Zählerstand = Zählerstand * 256 + Convert.ToInt64(bData(i + 1))
24
    Zählerstand = Zählerstand * 256 + Convert.ToInt64(bData(i + 2))
25
    Zählerstand = Zählerstand * 256 + Convert.ToInt64(bData(i + 3))
26
    d180Ausgelesen = Zählerstand / 10000
27
End If

Ich muß zum Code sagen, diesen Kern hatte ich irgendwo her und er 
funktionierte. Im neuen Zähler liegt zur Zeit der kleinste Wert an 8. 
Stelle. Bei den alten Zählern ist es offensichtlich andersherum.

Für mich sieht es so aus das jeder Hersteller seine eigenen 
Vorstellungen umsetzt und nur die OBIS-T-Kennzahlen genormt sind. Aber 
selbst die Kennzahl für den Hersteller hat sich geändert. Ich mußte 
tatsächlich die OBIS-T-Kennzahl aus der Gebrauchsanleitung des 
Herstellers entnehmen um die entsprechende Stelle zu finden. Der alte 
Code wurde nicht gefunden.

Liege ich mit der Vermutung richtig, daß beim neuen Zähler der kleinste 
Wert an 8. Stelle liegt und liegen bleibt?
mfg Klaus

von Klaus R. (klara)


Lesenswert?

Hallo,
mein Zähler steht jetzt auf 205 kWh. Ich bin mir aber sicher, der erste 
Überlauf landet auf Byte 7. Das heißt, Byte 8 bleibt das Low - Byte und 
Richtung Byte 1 werden die Stellen höhenwertiger.

In der Gebrauchsanleitung des Zählers steht folgendes:
1
Diese unidirektionale Infrarot-Datenschnittstelle sendet jede Sekunde automatisch entweder einen reduzierten oder vollständigen Datensatz.
2
3
Der reduzierte Datensatz enthält keinen Wert für die Momentanwirkleistung, die Zählwerksstände werden ohne Nachkomma-Stellen in vollen kWh ausgegeben.
4
5
Über das Menü InF wird der Datensatz festgelegt (nach korrekter PIN-Eingabe).
6
7
InF on = Vollständiger Datensatz
8
InF OFF = Reduzierter Datensatz

Ich habe es heute geschafft dem Zähler seine PIN einzugeben. Im 
Zählerfenster wird jetzt wie zuvor der Zählerstand ohne Dezimalstellen 
angezeigt und in der zweiten Zeile die Leistung in Watt. Das ist ja 
schon einmal ein Erfolg.

Im Datenstrom für den Bezug müßte man jetzt im Leerlauf der Wärmepumpe 
ständig 9, 10 oder 11 Watt finden können, bzw. die Dezimalstellen dazu. 
Der Zähler liefert jede Sekunde ein Datenpaket.

1
Bezug 1.0.8                                                                                                                   CD = 205 kWh
2
3
77-07-01-00-01-08-00-FF-
4
5
64-1C-81-04-72-62-01-65-00-6B-33-2A-62-1E-52-03-69-00-00-00-00-00-00-00-CD-01-
6
                                                                        CD = 205
7
8
Einspeisung 2.0.8
9
10
77-07-01-00-02-08-00-FF-
11
12
01-72-62-01-65-00-6B-33-2A-62-1E-52-03-69-00-00-00-00-00-00-00-00-01-01-01-63-63-48-00-76-05-01-41-52-A1-62-00-62-00-72-63-02-01-71-01-63-0E-65-00-00-00

Ich hoffe, mir kann hier jemand helfen. Zu diesem Zähler gibt es noch 
nicht viel konkretes auf dieser Ebene. Die OBIS-T-Kennzahlen sind 
halbwegs dokumentiert, zum Format der Datenablage findet man nichts. 
Meine eHZ Zähler aus dem Jahr 2012 waren leichter zu lesen und lieferten 
auch ohne PIN Dezimalstellen.

mfg Klaus

von 1N 4. (1n4148)


Lesenswert?

Also ein einfacher IR-Lesekopf mit Tasmota oder ESPHome dekodiert die 
Daten sauber, vielleicht dort mal im SML-Code spicken?

von Klaus R. (klara)


Lesenswert?

Hallo,
ich denke es liegt am Zähler. Der Zähler ist mit der PIN freigeschaltet 
worden und man sieht unter dem Zählerstand auch jetzt die aktuelle 
Leistung. Der Zähler liefert trotzdem noch den reduzierten Datensatz.

Ich habe die OBIS-T-Kennzahl für die Leistung gefunden.

77-07-01-00-0F-07-00-FF  = Leistung total, OBIS 1-0:15.7.0*255

Sie ist im Datenpaket nicht vorhanden. So ist es eben. Aber ...

Der Zähler hat auch noch eine sogenannte Prüf-LED.
1
Prüf-LED
2
3
Die Prüf-LED dient ausschließlich der Ausgabe von energieproportionalen Wirkenergieimpulsen zur metrologischen Prüfung. Die Anzeige erfolgt im IR (Infrarot)-Bereich.
4
5
Die Impulskonstante beträgt 10 000 Imp./kWh mit einer Impulslänge von 2 ms.
6
7
Misst der Zähler keinen oder einen Strom unterhalb seiner Anlaufschwelle, befindet er sich im Stillstand. In diesem Fall sendet die Prüf-LED einen Dauerimpuls.

Einen Impulszähler habe ich noch im März dieses Jahres sogar für 4 
Kanäle und mit einem WEMOS-D1-Mini erstellt und zum Laufen gebracht. 
Eine Platine ist noch da. Da dürfte ein weiterer Impulszähler kein 
Problem sein.

Eins ärgert mich doch, 2012 war es kein Problem aus einem eHZ Zähler 
brauchbare Daten zu erhalten. Eine Pin gab es damals auch aber man 
erhielt den Zählerstand mit Dezimalzahl auch ohne PIN.🤐
Die Eingabe der PIN mit Taschenlampe war eine echte Zumutung. Zum Glück 
war eine der vorhandenen Taschenlampen dafür geeignet. Nach ca. 20 
Anläufen hat es auch funktioniert. Der Datenschutz klappt wirklich gut!😠
Westnetz, das hast Du gut gemacht.

Also laßt euch diesen Zähler nicht installieren. Ausser ihr wollt nur 
Ganzahlen sehen.

Hersteller: EMH metering GmbH & Co. KG
Typ       : eHZB, Elektronischer Basiszähler

mfg Klaus

: Bearbeitet durch User
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.