SDM630 auslesen

  • Hallo,


    ich habe versucht den SDM630 auszulesen. Leider scheitere ich daran was ich als Identifier angeben muss. VZlogger erwartet ja einen OBIS code, im modbusregister sind aber Werte wie 0000:0003 als Identifier angegeben.


    Bin ein Newbe in dem Thema, wäre toll wenn mir jemand nen Tip hätte.


    Danke...

  • Morgen,


    Hast du das VZ Image auf einem RPI? Wenn Du die physischen Voraussetzungen geschaffen hast, also z.b. Modbus Verbindung zum SDM630 mit USB RS485 Adapter an RPI, dann ist das auslesen recht einfach mit Python möglich:



    Im Register 52 steht der gesamte derzeitige Energiefluss in Watt. Den kannst du mit vzclient direkt weiter an VZ füttern.

    #1: Huawei SUN2000-33KTL-A mit 81x Q.PEAK L-G4.5 365 Ost/West + 20x Yingli YL250P-29b Süd

    #2: SMA Multigate mit 2x TrinaTSM-PD05 Honey 275 Süd

    #3: Solaredge SE3500H mit 9x LG350N1C Neon 2 Süd


    1. Famoser Großkaiserlicher JK: 1er: 166 2er: 44, 3er: 24, 4er: 8, 5er: 7, 6er: 4, 7er-14er: 1

  • Ok, klasse!
    Dachte bisher, dass man mit dem VZclient eher daten (channels) auslesen /anzeigen kann. Habe aber bisher damit noch nichts gemacht.
    Gibts irgendwo ein kleines How To wie ich damit VZ füttern kann?

  • Natürlich, im VZ Wiki:


    http://wiki.volkszaehler.org/software/clients/vzclient siehe "add data".


    Wirklich effizient ist dieser Weg nicht, aber es sollte genügen damit du mal grundlegend Werte in die Datenbank bekommst. Du kannst auch den aktuellen SDM630 "Zählerstand" für importierte und exportierte Energie (Register 72 und 74) im obigen Codebeispiel auslesen und die Differenz jede Minute mit einem Cronjob an VZ senden. Nur so als Basisvariante.


    Hoffe das hilft als Start.

    #1: Huawei SUN2000-33KTL-A mit 81x Q.PEAK L-G4.5 365 Ost/West + 20x Yingli YL250P-29b Süd

    #2: SMA Multigate mit 2x TrinaTSM-PD05 Honey 275 Süd

    #3: Solaredge SE3500H mit 9x LG350N1C Neon 2 Süd


    1. Famoser Großkaiserlicher JK: 1er: 166 2er: 44, 3er: 24, 4er: 8, 5er: 7, 6er: 4, 7er-14er: 1

  • Hallo zusammen,
    Ich habe ein Problem beim auslesen des sdm630.
    Ich habe grad erst angefangen überhaupt mit Python zu programmieren um dann den Raspi als Datenlogger und
    gleichzeitig zum schalten von Relais zur Vernichtung von Überschuss zu verwenden.
    Eingestiegen bin ich dann mit dem Code von dieser Seite. :danke: erstmal dafür.
    Hab dann erstmal ne While Schleife gebaut um mir die Leistung jede Sekunde anzeigen zu lassen.
    Inzwischen ist das Gebilde etwas komplexer geworden aber ich schleppe von Anfang an ein Problem mit:
    Nach einer gewissen Zeit bricht das Programm ab und sagt mir:


    Ich habe folgendes Probiert:
    Baudrate im gesamten Bereich verstellt
    Timeout auf 10
    sleeptime eingebaut


    Das Programm sieht derzeit so aus:

  • Falls die Kommunikation mit dem SDM630 einmal nicht funktioniert, sollten die Exceptions behandelt werden. Zum Bleistift:


    Code
    try:
    sum_p = sdm630.read_float(total_p_reg, sdm630_fc, 2)
    except (IOError, ValueError) as e:
    print('Error Reading from SDM630: %s', e)


    Ein Lesefehler führt dann auch nicht mehr zum sofortigen Abbruch.

    #1: Huawei SUN2000-33KTL-A mit 81x Q.PEAK L-G4.5 365 Ost/West + 20x Yingli YL250P-29b Süd

    #2: SMA Multigate mit 2x TrinaTSM-PD05 Honey 275 Süd

    #3: Solaredge SE3500H mit 9x LG350N1C Neon 2 Süd


    1. Famoser Großkaiserlicher JK: 1er: 166 2er: 44, 3er: 24, 4er: 8, 5er: 7, 6er: 4, 7er-14er: 1

  • Hallo die Try/Except Routine hab ich am Freitag in den APIs von minimalmodbus gefunden und
    in meinen Programm eingebaut.
    Das Programm ist zwar nicht schön, aber es funktioniert jetzt gut und zuverlässig.
    Hab es seit Freitag Abend laufen lassen und er hat bis heute Morgen durchgeloggt.
    Danach war die Ramdisk (4MB) voll :P
    Jetzt will ich noch jeden Tag eine neue Datei anlegen lassen und von der Ramdisk auf die SD oder auf ne Cloud kopieren.
    Toll das man beim programmieren so viele Möglichkeiten hat.