« Elektrotechnik & Smarthome  |

DIY Auslesen eines SmartMeter über lokale Kundenschnittstelle

 
Teilen: facebook    whatsapp    email
Zusammenfassung anzeigen (Beta)
 1  2  3 ...... 4 
  •  chrismo
  •   Gold-Award
21.7.2020 - 4.11.2023
70 Antworten | 18 Autoren 70
3
73
Hallo.

Ich habe jetzt mit den Infos bzw. der Software, die ich hier gefunden habe: https://www.photovoltaikforum.com/thread/139837-siemens-im350/

meinen Siemens Smart Meter der KNG (Kärnten) über die Kundenschnittstelle ausgelesen. So kann ich den aktuellen Energieverbrauch bzw. den aktuellen Zählerstand direkt ins SmartHome-System integrieren und muss dazu nicht die 15min-Auslesung des Netzbetreibers aktivieren. Die Daten werden alle paar Sekunden (ich glaube 5s) aktualisiert, daher ist eine genauere Auswertung möglich.

Die KNG bietet selbst derzeit noch kein Produkt an, um die Kundenschnittstelle zu nutzen. Ich glaube auch die anderen Stromnetzbetreiber sind noch nicht so weit. Aber man kann sich die Schnittstelle freischalten lassen und bekommt dann einen Code zum Entschlüsseln der Daten. Das Auslesen selbst mache ich mit einem Serial-USB Konverter und einem Raspberry PI Zero (ähnlich wie im oben verlinkten Thread beschrieben).

Leider herrscht in Österreich ziemlicher Wildwuchs und die Betreiber verwenden unterschiedliche SmartMeter bzw. haben selbst beim gleichen Gerät unterschiedliche Ausführungen. Bei manchen Betreibern ist die Schnittstelle optisch mit IR-Kopf auszulesen, bei anderen über eine RJ12-Schnittstelle. Im oben verlinkten Thread findet man Infos zu unterschiedlichen Bundesländern (z.B. Kärnten, oder OÖ).

Wenn jemand konkret an Details zum Auslesen eines Siemens IM350 der KNG interessiert ist, kann ich gerne hier noch ein paar Infos posten, aber eigentlich steht alles auch im verlinkten Thread.


2020/20200721646163.png

von berhan, dyarne, heisl91, owall

  •  mk89
25.5.2021  (#21)

zitat..
cnbnjn schrieb: Hi, 
ich habe so ein Gerät für mich gebaut und würde es auch fix und fertig verkaufen.
Es liefert die entschlüsselten Werte des Kelag Zählers im Sekundentakt über eine http Schnittstelle (Jason, Influx line db) und eine Kurzzeitgrafik auch im Browser. (Zugriff über WLAN)
Kosten: Komplett mit Gehäuse und Kabel 90,- Euro. Noch benötigt wird ein USB Netzteil.
lg
chris


Hallo!
Ich wäre an einem Schnittstellenadapter interessiert, kann dir jedoch leider keine PN schreiben.

LG
Michael

1
  • ▾ Anzeige
    Energiesparhaus.at ist Teilnehmer des Amazon-Partnerprogramms, das zur Bereitstellung eines Mediums für Webseiten konzipiert wurde, mittels dessen durch die Platzierung von Partner-Links zu Amazon.de Entgelte verdient werden können.
Hallo chrismo,
hier gibt es dazu Erfahrungen und Preise: DIY Auslesen eines SmartMeter über lokale Kundenschnittstelle

  •  cnbnjn
30.5.2021  (#22)
Hi,
kannst mich gerne unter cnbnjn (at) gmail.com kontaktieren.
lg
chris


1
  •  michlb1003
22.4.2022  (#23)
hallo und guten morgen, ich bin durch zufall auf diesen post gestossen, da das genau das ist was ich bruache bzw. suche, hab einen Smartmeter und lese den mit dem TEKT5400S-ASZ und RPI aus, funkt auch schon so weit, ich bekomme daten - verschlüsselt, den schlüssel hab ich auch... hab jetzt den szreader installiert, die config entsprechend bearbeitet und dann das ganze ding mal per sudo python szreader.py gestartet und dann bekomm ich einen Fehler:
Traceback (most recent call last):
Fiel szreader.py", line8, in <module> from pathlib import Path Importerror: no Module named pathlib

bin kein programmierer sonder nur ein bastler... versteh daher nicht recht wo das modul path herkommt...bzw wie ich diesen fehler berichtigen kann...

hat jemand eine Lösung bzw auch diese Problem?

danke für eure Hilfe!
lg michl

EDIT:
hab das mit dem pathlib hinbekommen dafür bekomm ich jetzt einen anderen fehler: 
File szreader.py, line14 in module from management.Controller import Controller file /home/pi/szreader/management/controller.py line 64, def _source_callback(self, sender: iDataSource, data: str): invalid Syntax

1
  •  chrismo
  •   Gold-Award
22.4.2022  (#24)

zitat..
michlb1003 schrieb: und dann das ganze ding mal per sudo python szreader.py gestartet

Probier mal: sudo python3 szreader.py

(und falls du wieder Fehlermeldungen wegen fehlender Libs bekommst, dann die entsprechenden python3 Versionen installieren. Also statt sudo pip... sudo pip3 ...)


1
  •  Peter2
  •   Silber-Award
24.4.2022  (#25)
Grundsätzlich ein Tipp:
sudo chmod szreader.py 777
Und dann ./szreader.py

Wenn du über ./ Das Skript ausführst nimmt er automatisch die richtige Python Version.

Chmod setzt die Berechtigung für das Skript. 777 heißt jeder unser darf es bearbeiten ausführen und kopieren/löschen.

Skript wenn nicht unbedingt notwendig nicht als su ausführen. Vor allem nicht wenn die Quelle auch nur ansatzweise nicht vertrauenswürdig ist. Wenn du es als su ausführst hat das Skript Zugriff auf alles was der su darf. Also wirklich alles.

Mfg
Peter

1
  •  michlb1003
24.4.2022  (#26)
hallo 
danke für die tips, das funkt soweit dass sich das script als service starten lässt, bekomme auch die mqtt meldung wenn das abbricht, aber sonst kommt da nix rein... kann ich irgendwie prüfen was der abfragt / ausgelesen bekommt? ich hab schon mit "cat /dev/ttyUSB0 | od -tx1" bzw. " hexdump -C /dev/ttyAMA0" bekomm ich einen haufen zahlen usw... aber was bekommt szreader? und die einstellungen  stty -F /dev/ttyAMA0 9600 cs8 -parenb -ixon -cstopb -echo hab ich auch vorgenommen, also ich seh die daten halt nur verschlüsselt... und hab aber den schlüssel in der config hinterlegt...

1
  •  chrismo
  •   Gold-Award
24.4.2022  (#27)
Was hast du in der Konfig als Parameter für die serielle Schnittstelle eingestellt (Pfad, Baud)? 

Hat der User, der das Skript ausführt, die Rechte, auf die serielle Schnittstelle zuzugreifen?

Du kannst ja das szreader-Skript auch in eine lokale Datei schreiben lassen (habe vorne beschrieben, wie das geht). Das würde ich als erstes mal testen, bevor dann MQTT oder andere Datensenken probiert werden.


1
  •  taliesin
  •   Gold-Award
24.4.2022  (#28)
Starte szreader mit -v DEBUG, dann siehst du im log mal etwas.

Wenn du das gleich im service (systemd) testen möchtest:

 • sudo systemctl edit --full der_Name_des_services_das_szreader_aufruft
 • dort in ExecStart das -v DEBUG hinzufügen
 • speichern
 • sudo systemctl restart der_Name_des_services_das_szreader_aufruft
 • journalctl -u der_Name_des_services_das_szreader_aufruft -f

dann solltest du sehen was szreader bekommt.

Alle anderen Beiträge bleiben natürlich wahr:
 • besser vorher nicht als service testen (den aber abstellen 'systemctl stop ...')
 • Rechte des scripts prüfen --> plugdev group?

zitat..
Peter2 schrieb: Wenn du über ./ Das Skript ausführst nimmt er automatisch die richtige Python Version.

Es wird nur das ausgeführt was im shebang steht. Wenn da /usr/bin/python (wie bei szreader) steht hast Pech gehabt emoji


1
  •  michlb1003
24.4.2022  (#29)
sorry leute, ich komm da nicht weiter... 
ich hab hier einen link zur Log https://1drv.ms/u/s!AlnX2lcFBF9Oi9YaMWmAyMMF4hcvng?e=cENO5x

ich bekomm da nix raus... 
wenn ich als erstes das " sudo stty -F /dev/ttyAMA0 1:0:8bd: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" ausführe und danach die "cat /dev/tty... und hexdump" mache... sonst seh ich nur kaudawelsch...

hab jetzt den dienst entfernt... und auch mqtt aus der config. aber die textdatei bleibt leer... ev. falsche endung??? .txt? 

leider bin ich da viel zu schwach was das programmieren und so anbelangt... 
es tut mir wirklich leid, eure zeit so sehr in anspruch zu nehmen....
dafür möcht ich mich recht herzlich bedanken!


2022/20220424838126.png

1
  •  taliesin
  •   Gold-Award
24.4.2022  (#30)
Laut deinem log bekommt szreader Daten von der seriellen, aber du hast das logging nicht auf DEBUG gestellt (so wie ich weiter oben geschrieben habe).
Der Fehler sagt, dass der input nicht als XML geparst werden kann.

Also nochmal:
1. den service ausschalten
2. szreader aus der shell direkt starten (so wie das im service file passiert), aber mit -v DEBUG
3. den output hier wieder reinstellen.

zitat..
michlb1003 schrieb: es tut mir wirklich leid, eure zeit so sehr in anspruch zu nehmen.

Wenn ich keine Lust hätte zu schreiben, würd' ich's lassen emoji


1
  •  michlb1003
24.4.2022  (#31)
hab das mal versucht also, das programm so gestartet wie im script nur mit -v DEBUG wie geschrieben, ein paar minuten laufen lassen und beendet... das einzige was sich geändert hat war die log. die hab ich wieder auf die drive gestellt .... https://1drv.ms/u/s!AlnX2lcFBF9Oi9YaMWmAyMMF4hcvng?e=Fgquoz

off hab das richtige erwischt... emoji
danke nochmal

sorry, bin manchmal etwas " auf der Leitung stehend"....

1
  •  taliesin
  •   Gold-Award
24.4.2022  (#32)
Du stellst immer den ganzen log ein, es würde der letzte Versuch reichen emoji

Der log um 20:24 sagt, dass ein Fehler beim Dekodieren der Daten auftritt:

2022-04-24 20:24:32,935 - datasource.SerialDataSource - DEBUG - Starting serial connection...
2022-04-24 20:24:32,939 - datasource.SerialDataSource - DEBUG - Started serial connection
2022-04-24 20:24:32,943 - management.Controller - DEBUG - Sources started
2022-04-24 20:24:32,945 - datasource.TextFileDataSource - INFO - Got data: 00000000  e2 7c 00 66 ce ff 02 02  30 bd e6 c6 92 4c 47 10  |.|.f....0....LG.|
2022-04-24 20:24:32,947 - management.Controller - DEBUG - Got Data from source textin1
2022-04-24 20:24:32,948 - management.Decoder - DEBUG - Decrypting message "00000000  e2 7c 00 66 ce ff 02 02  30 bd e6 c6 92 4c 47 10  |.|.f....0....LG.|" with key "240F9EC06C0C28E56B20510ACBD80774" ...
2022-04-24 20:24:32,959 - management.Controller - ERROR - Error decoding data

Also:

1. serielle Daten werden gelesen
2. die Daten werden dekodiert, der Schlüssel steht im Logfile
3. die Daten werden nicht vernünftig dekodiert
4. später werden wieder Daten gelesen und nach der Dekodierung kommt kein XML raus, der parser scheitert folglich

Ich sehe folgende potentielle Fehler:
1. die Daten werden fehlerhaft eingelesen, ev. sind die Einstellungen wie baudrate, parity, handshake falsch (szreader lässt nur baudrate konfigurieren, deine hardware braucht ev. andere Einstellungen als 8n1 = 8bit, no parity, 1 stop bit)
2. der Schlüssel ist falsch, damit entsteht Mist nach der Dekodierung.

Welche HW benutzt du an welchem Zähler? Ev. muss da noch ein Inverter rein? Einfach nur die IR-Empfänger an einem RPi pin?

1
  •  chrismo
  •   Gold-Award
24.4.2022  (#33)
Ich habe nur mal kurz ins Log geschaut. Aber der Zähler liefert auf jeden Fall Daten (Nachrichten beginnen/enden immer richtig mit 7e), aber szreader kann diese nicht dekodieren. Da könnte die Entschlüsselung schief gehen. Vergleiche mal den Schlüssel, den du zugeschickt bekommen hast, mit dem, der in der Konfiguration eingetragen ist, evt. hast ihn falsch abgetippt.

Du könnstest auch mal die empfangenen Daten aus dem Log zusammen mit deinem Schlüssel mit diesem Tool entschlüsseln lassen und schauen, ob da was richtiges rauskommt:
https://www.photovoltaikforum.com/thread/139837-siemens-im350/?postID=2108785#post2108785

1
  •  taliesin
  •   Gold-Award
24.4.2022  (#34)

zitat..
chrismo schrieb: (Nachrichten beginnen/enden immer richtig mit 7e)

Ok, dann fällt Fehlermöglichkeit 1 aus --> Schlüssel.

1
  •  michlb1003
25.4.2022  (#35)
guten morgen, den schlüssel hab ich direkt vom smartmeter-portal kopiert... also ein falsch abtippen ist somit ziemlich ausgeschlossen...
das tool hab ich probiert - alles was ich rausbekomme, wenn ich diese nachrichten eingebe zb. 7e0066ceff030230bde6e70092004c475a46620050ef4f000010d0558070ccce5064bd00f285493a1200806d71980c20f8c5918f08e64a7810ca8600abfd55400030229d73480832e65b4c60306ec1c21f0600d79444382070916d171044e0985c16c000384c838d7c7e ist mein decryption key... und der passt zu dem was ich da bekommen hab... 
aber ich nehm an dass ich diese tool sicher nicht richtig verwende... habs auch mit dem DLMS translator versucht, da passiert gar nix...

langsam zweifel ich echt an mir selbst..

zur Hardware:
ich hab nen pi-zero, direkt an den GPIOs nen TEKT5400S-ASZ inkl Pullup (glaub 3,3K oder 10k), die Anbindung ist per Ethernet (ENC28J60)... und halt den SZReader installiert (aber da hab ich mich ja auch schon wie der erste mensch angestellt .... ), Zähler ist ein Landis&GYR 

die konstellation hab ich in diversen foren gefungen... zu mind. das TEKT5400S weil zum BWdings040 hab ich keinen zugang...

irgendwie komm ich da nicht weiter, verstehs aber nicht... sollte doch klappen.. in den anleitungen funktioniert das immer ..

eigentlich möcht ich ja nur die Smartreader-Daten in mein Loxone reinbekommen ohne 100e € für irgendwelche zusätzliche hardware ausgeben zu müssen...

1
  •  taliesin
  •   Gold-Award
25.4.2022  (#36)
Also ich mal szreader gecloned und deine Daten und deinen Schlüssel in  decoder_test.py eingebaut und das wird definitiv nicht richtig dekodiert.

Interessanterweise bekomme ich aus dem Decoder mit den Originaldaten (des Tests) und deinem Schlüssel zumindest XML raus, aber mit deinen Daten einfach nur einen Leerstring.

Das lässt eher darauf schließen, dass doch etwas an den Daten nicht stimmt.
Bisserl verreckt das Problem ... mir fällt jetzt gerade nichts mehr, was man tun könnte.

Außer mit dem Oszi das Signal am GPIO-pin anschauen, ev. ist das vermurkst.

1
  •  michlb1003
25.4.2022  (#37)
also das übersteigt meine fähigkeiten bei weitem... 😰 scheinbar solls nicht sein.... 

1
  •  michlb1003
26.4.2022  (#38)
guten morgen / Mahlzeit...

scheinbar funktioniert das aber doch....
https://1drv.ms/u/s!AlnX2lcFBF9Oi9YcdqE1ZcAJ0zPwvA?e=dOLkze
in der Textout.txt in wurde was geschrieben....
und im LOG in der zeile 166060 sieht man das auch.... oder seh ich das falsch?
sorry weil das log so ewig lange ist, wollte nichts löschen sonst lösch vllt. zu viel...

1
  •  chrismo
  •   Gold-Award
26.4.2022  (#39)
Ja, lt. Log hat das 1x funktioniert, während der Aufzeichnung. D.h. der Schlüssel muss passen.

Wenn du ein: "tail -f textout.txt" machst, siehst du, wenn Daten geschrieben werden. Das sollte dann ca. jede Sekunde passieren. Tut es das, oder nur selten?

1
  •  michlb1003
27.4.2022  (#40)
hallo, 
mit tail seh ich gar nix, hab jetzt mal den textout gelöscht und wenn ich den szreader manuell per "sudo python3 szreader.py &" starte kommt immer wieder zwischendurch Wrong CRC...
sonst wird nix geschrieben...
auch die textout.txt wird nicht größer, musste die manuell anlegen weil gar nix passiert... braucht die spezielle chmod? 666?

1
  •  michlb1003
4.5.2022  (#41)
hallo, nachdem ich schon mittlerweile die 3. sd karte im pi gekilllt habe, bin ich auf der suche nach einer Alternativen lösung, hat jemand vorschläge? ich hab was mit esp32 gefunden, die sind aber per wlan und ich hab beim zähler leider keines.... glaubt ihr geht das esp32 mit enc28J60? hat jemand so was vllt schon im einsatz? also esp32 per lan mit TEKT5400S und das ganze dann per mqtt...

aber mal ne grundsätzliche Frage, wie erkenne ihc ob mein zähler SML oder "D0" spricht???

1


Beitrag schreiben oder Werbung ausblenden?
Einloggen

 Kostenlos registrieren [Mehr Infos]


next