Posts by rpi-joe

    Der Modbus ist ein Master/Slave-Bus.

    Der RPi ist der Master und fragt in den Bus mit Adresse des Slave hinein.

    Der angesprochene Slave (Zähler) antwortet dann.


    Hab den Ablauf im Programm nicht mehr so genau im Kopf, aber eine Idee:


    Mit der Abfrage eines Status an alle Adressen, vermutlich 0 bis 255 , bekommt der RPi jeweils Antwort von einem vorhandenen Slave.

    Die vorhandenen Adressen speichern und Daten anschließend von den vorhandenen Slave-Adressen abfragen.


    Die Daten dann getrennt nach Slave-Adressen speichern.


    Ist leicht gesagt, aber sicher für viele hilfreich, die mehrere Zähler haben - PV-Anlagenbetreiber z.B.

    Hier kommt eine Information zum Dauertest:


    Die Abfrage aller Werte des SDM630 im 5sec-Takt hat 6 Wochen durchgehalten. Ich habe 701000 Datensätze in den 6 Wochen gespeichert. Meines Erachtens geht das nur durch eine Weiterleitung der Daten auf einen Server.



    Einmal war mein MySQL-Server nicht erreichbar, da blieb das Programm stehen, klar. Wenn ich mehr Zeit habe, sehe ich mal nach einer Lösung, dass das Programm nicht hängen bleibt....

    Hallo,


    hatte auch einen SDM 630 mit Hofei s Hilfe in Betrieb gesetzt. War das Thema:

    SDM630 oder SDM72DM auch möglich für SDM530 Strommesser?

    Welche Werte benutzt du aus dem SDM 630 und welchen Vorteil hast du damit? Ich brauchte ihn für die Leistung einer Pumpe in unserer Heizung.


    Mit dem alten modbustreiber hatte ich Probleme und habe die Baudrate heruntergesetzt. Wenn die Erfassung jetzt stabil läuft, erhöhe ich sie wieder und setze das Messintervall hoch.



    Nachtrag:


    Sorry hofei, sehe gerade, dass dies dein Projekt- Thread ist und kein Neuer von schmae :/

    Hofei und hyle


    Nachdem der Rpi nur lange durchgehalten hat und keine Aussetzer mehr hatte, habe ich mir Zeit für den nächsten Schritt genommen.

    Hab ihn komplett neu aufgesetzt, aktuelles OS, das neue Readme fürs smartmeter hergenommen und genau nach Anleitung installiert.


    Was soll ich euch sagen..... lief sofort :)


    Wenn er wieder durchhält, werde ich die Geschwindigkeit des modbus hochsetzen und mal die Abfrageintervalle intensivieren.


    Danke euch für die Unterstützung, freue mich sehr, dass es fertig geworden ist :bravo2:

    Hofei

    danke für deine Erläuterungen. Hatte folgenden Satz in der Readme falsch interpretiert:

    Code
    Apt Installation erfordert ggf. root Rechte! Paketquellen zuvor updaten. (apt update)

    Hatte es so gelesen, dass es sich auf die folgenden Befehle bezieht. Du meinst damit wahrscheinlich die zuvor aufgelisteten. :rolleyes:



    Ist das so richtig beschrieben ?



    Damit kann selbst ich es richtig machen :lol:



    Unabhängig davon hab ich den Eindruck, dass dein überarbeitetes Programm viel stabiler läuft, danke dafür.

    Natürlich! Für das sind Fehlermeldungen da, dass sie gelesen und behoben werden.

    stimmt schon ;)


    Habe nochmal von vorn angefangen, genau nach readme.



    Hier stoppe ich erst mal bei dem Befehl mit git .....

    Was ist jetzt falsch gelaufen?


    Hofei reichen die Infos oder soll ich noch was nachschieben?



    EDIT 1 Stunde später....


    Fehler lag an den Rechten, das Verzeichnis smartmeter wurde für root angelegt :( obwohl es im pi-Verzeichnis liegt

    Habe das Verzeichnis dem pi gegeben - und Programm läuft wieder :)


    Nur der Service will noch nicht:


    Will der Service irgendwo noch Rechte haben?

    Habe jetzt versucht, den service ziu reparieren...


    Code
    pi@rpi3aplus:~ $ systemctl restart smartmeter.service
    ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
    Legitimierung ist zum Neustarten von »smartmeter.service« notwendig.
    Authenticating as: ,,, (pi)


    Liegt es an der Authentifikation, die jetzt im Terminal erscheint?? Kann das am neuen RaspiOS liegen?


    Bekomme nicht mal mehr den Start im Terminal hin, ohne dass smartmeter.py beim Abmelden stoppt.

    Auch micht mit nohub oder >&< am Ende des Befehls :(

    Ich hatte das smartmeter Paket schon auf dem PC, das hatte ich auf den RPi geladen und gestartet. Daran liegt es wohl....


    EDIT 3 Stunden später....


    Habe den Ordner smartmeter wieder gelöscht, das letzte smartmeter-master Paket in /home/pi kopiert und die Schritte nach der Readme

    durchgeführt. Die Python-Module musste ich nochmal uninstallieren und wieder installieren. Jetzt läuft das Programm wie beschrieben :)


    Nur der smartmeter.service startet nicht beim Hochfahren:



    Lass den RPi erstmal manuell gestartet laufen, um zu sehen ob noch die alten Fehler wieder auftreten :/

    Ehrlich gesagt habe ich auch keine Idee, wo ich ansetzen muss. :(

    Hofei


    bei der Neuinstallation hat der RPI genau an der Stelle eine Fehlermeldung ausgegeben, die wohl auch das Problem "serial" verursacht:

    Code
    The scripts pyserial-miniterm and pyserial-ports are installed in '/root/.local/bin' which is not on PATH.


    Muss wohl nachträglich in den "Path" eingetragen werden, suche noch, wie das geht.....

    Wenn du das neuere Modul aber geladen hast, brauchst du auch die aktuelle Version von minimalmodbus und nicht mehr 0.7.

    ok, hab ich deinstalliert und die 1.0.2 installiert.



    pip3 install --user minimalmodbus=0.7

    ist wohl >> pip3 install --user minimalmodbus==0.7 << gemeint :) , aber brauch ich ja nicht mehr.


    Habe die neue smarthome.py von Github geholt - mit den Umlauten war wohl mein Fehler bei der Installation des OS - falscher Zeichensatz - sorry.


    Jetzt bekomme ich immer noch Fehler, auch den >>serial<< noch.


    Ich muß das nochmal in Ruhe durchgehen. Vermutlich werd ich wieder neu ganz von vorn beginnen. :(

    Kann ich mir nicht vorstellen. Der Fehler entsteht ja wenn bei der Übertragung was schief geht und nicht selbst durch den Treiber.

    Die neue Version von minimalmodbus wird schon verwendet, sofern du den aktuellen Stand verwendest: https://github.com/Hofei90/sma…82708c8a1b7ab2b7a6d8f469b


    habe das neuere Paket heruntergeladen, jetzt bekomme ich einen Fehler:


    Code
    SyntaxError: Non-ASCII character '\xc3' in file smartmeter.py on line 23, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details


    in der smartmeter.py habe ich nichts geändert, die smartmeter_cfg.toml habe ich aus der Vorgabe neu zusammengestellt...

    Fehler bleibt.



    Das Modul "serial" fehlte noch, hab es nachgeladen und nun kommt ein anderer Fehler:


    Code
      File "smartmeter.py", line 11, in <module>
        import electric_meter
      File "/home/pi/smartmeter/electric_meter.py", line 5, in <module>
        import minimalmodbus
      File "/home/pi/.local/lib/python3.7/site-packages/minimalmodbus.py", line 64, in <module>
        PARITY   = serial.PARITY_NONE
    AttributeError: module 'serial' has no attribute 'PARITY_NONE'


    suche weiter....


    Kann am mininalmodbus liegen. Hatte das Modul mit pip3 neu geladen. Wie sag ich pip3, dass ich die Version .7 haben will?

    Hofei


    Neuer Zwischenstand:

    Nachdem der RPi immer wieder nach 1 bis 2 Tagen ausgestiegen ist, habe ich ihn heute komplett neu aufgesetzt.

    Neuestes OS, nur die Programme und Treiber für das Smartmeter hab ich aufgespielt. Und direkt über Terminal - nicht über PyCharm.


    Habe noch eine Frage:

    Da die letzten Fehler Checksummenfehler in dem Modbustreiber waren und der Treiber dann ausgestiegen ist, wäre vielleicht eine Anpassung auf die neue Version noch ein Schritt zur stabileren Funktion. Oder auch nur eine Fehlerroutine, die die fehlerhaften Daten verwirft und den Modbustreiber neu startet??

    Hofei

    Habe deine Vorschläge eingearbeitet, danke dafür.


    Leider hat sich der Service heute morgen um 04:03 wieder "abgeschaltet" mit einem Checksum Error in rtu mode



    Ich denke, dass der Fehler vom Modbustreiber, vom sdm630 oder von EMV-Störungen kommt. Das ist nicht so einfach zu finden. Kann ja mal den Support von B G Tech kontaktieren, ob die einen Lösungsweg haben.


    Was mir noch nach dem Neustart des Service aufgefallen ist: Die PID ist 19770. Da fast keine anderen Programme laufen, kommt mir das merkwürdig vor.



    ist das normal?

    Hofei


    in /etc/systemd/system liegt die smartmeter.service


    -rwxrwxr-- 1 root root 273 Mär 15 12:00 smartmeter.service



    ls -l /home/pi/smartmeter/ ergibt folgendes:



    Aber er wollte vielmehr das Durchlaufintervall für die toml Datei erstellen. Das hat nicht s mit der Datenbank zu tun.

    Meinte ich auch so , sorry für die unkare Aussage.

    Habe die Datenbank-Tabelle "sdm630" gelöscht/umbenannt, damit die smartmeter.py von einem frischen System ausgeht.

    Und da es über das PyCharm mehrfach schiefging, habe ich den neuen Versuch im Terminal meines PCs gestartet.

    Da lief die smartmeter.py durch und hat alles korrekt eingerichtet - auch das Durchlaufintervall in der smartmeter_cgf.toml :)

    Die smartmeter.py beendet sich dann und fordert zum Neustart auf. Den habe ich dann mit dem Service:


    Code
    sudo systemctl status smartmeter.service


    gestartet.

    Seitdem läuft es einwandfrei... Hab ich da noch einen Fehler drin?

    Bis heute Mittag lief der RPi durch, dann hat sich der Service wieder verabschiedet:



    Mit der geringeren Geschwindigkeit auf dem Modbus ist es ein bisschen stabiler, bis der Checksum Error wieder zugeschlagen hat.


    Danach konnte ich den Service nicht mehr starten:



    Die Datenbank gibt es ja schon, aber er wollte in die smartmeter_cgf.toml schreiben, das scheiterte an den Rechten??


    Habe erst die Datei root zugewiesen, dann die Datenbank umgenannt, damit eine neue erstellt werden kann, ohne Änderung.


    Ein Backup der smartmeter_cgf.toml eingespielt, neue Datenbank erstellt - jedoch wieder nicht die zu messenden Werte in die smartmeter_cgf.toml

    wegen fehlernder Rechte?? geschrieben.


    Die neue Datenbank gelöscht und die alte Datenbank wieder umbenannt, RPi nochmal neu gestartet und läuft jetzt erstmal ....



    NACHTRAG

    Mir hat es keine Ruhe gelassen und so habe ich den Service gestoppt, die Datenbank wieder umbenannt und im TERMINAL den Erstaufruf gestartet.

    Da wurde auch die Liste der Messwertnamen an die smartmeter_cgf.toml angehängt.

    War zuvor mein Fehler, da ich über PyCharm das Programm gestartet hatte - das funktioniert anscheinend nicht. :huh:


    In der smartmeter_cgf.toml habe ich dann viele Werte auf false gesetzt, um den Traffic gering zu halten.


    Dann mit dem zweiten Start die ersten Messwerte in die Datenbank geschrieben, nochmal gestoppt und den Service gestartet.

    Bis jetzt läuft es ohne Probleme; mal sehen, wie es morgen früh aussieht.



    2.NACHTRAG

    Bis jetzt, Montag morgen 09:15, rennt der RPi ohne Probleme ^^