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

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Die Baudrate kann ich mal versuchsweise reduzieren - wenn dann noch alle Daten rüberkommen.....


    Zitat

    An den Traceback kommst du hierüber:

    journalctl -u smartmeter -p err

    hab ich von heute, Absturz um 13:52

    Mir ist noch etwas aufgefallen:

    in der neuen smartmeter_cfg.toml sind die Angaben für die Abfragezyklen je Wert nicht mehr drin??

    Da konnte man für "unwichtigere" Werte das Einlesen bei jedem x-ten Durchgang einstellen, z.B. 5 für Erfassen bei jedem 5. Einlesen.

    Ist das noch möglich und ist das interessant?

  • SDM630 oder SDM72DM auch möglich für SDM530 Strommesser?? Schau mal ob du hier fündig wirst!

  • Also ich tippe bei deinem Fehler wirklich auf Übertragungsfehler. Kann zwar mal versuchen, den Fehler abzufangen und dann die Werte wenn der Fehler auftritt zu verwerfen, das hilft dir dann aber nur soviel, dass das Skript nicht abstürzt. Nicht für die Ursache warum es auftritt.

    in der neuen smartmeter_cfg.toml sind die Angaben für die Abfragezyklen je Wert nicht mehr drin??

    doch, die werden doch nach dem ersten Start nun automatisch erstellt, in Abhängigkeit was man als Devicename ausgewählt hat.

  • Habe gerade auf 9.600 Baud umgestellt und neu gestartet - mal abwarten. :)


    doch, die werden doch nach dem ersten Start nun automatisch erstellt, in Abhängigkeit was man als Devicename ausgewählt hat.

    sollen die Werte dann in der smartmeter_cfg.toml angehängt werden, damit man die Rate je Wert einstellen kann?

  • 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 ^^

    2 Mal editiert, zuletzt von rpi-joe (29. März 2021 um 09:16)

  • Klick mich

    Also du hast eindeutig ein "Rechtechaos" auf deinem System. Zumindest dort wo das Smartmeterskript zum Einsatz kommt.

    Welcher Benutzer führt das Skript aus? Zeige hierzu bitte die Service Unit.

    Anschließend zeige bitte mal die Ausgabe von ls -l /home/pi/smartmeter/

    Dann gleichen wir als erstes die Rechte an.

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

    Ja, Rechteproblem

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

  • 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?

  • Ok, es wird also vom Benutzer pi ausgeführt.

    Die Datei alt_smartmeter_cfg.toml gehört Benutzer root. Das war wohl die Datei wo es die Rechteprobleme gab. Die wirst du eh nicht mehr benötigen und würde ich somit löschen.

    Außerdem gehört der Ordner __pycache__ dem User root. Das würde ich korrigieren und dem Benutzer pi überschreiben.

    sudo chown -R pi:pi /home/pi/smartmeter/__pycache__

    Außerdem hast du auf smartmeter_cfg.toml auch alle Rechte für "andere Benutzer" freigegeben.

    Das würde ich ebenfalls Rückgängig machen.

    Wenn nur noch der Benutzer pi und Gruppe pi Rechte darauf haben sollen und andere Benutzer nicht einmal lesen sollen dürfen, evtl weil dort das Passwort für die Datenbank steht so wär das korrekte 770 oder 750

    >> sudo chmod home/pi/smartmeter/smartmeter_cfg.toml

    Weiterführende Information zu den Unix Rechten findest du hier

  • 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

    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??

  • Und direkt über Terminal

    Mach ich beim Pi immer so.


    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.

    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/smartm…7ab2b7a6d8f469b


    Oder auch nur eine Fehlerroutine, die die fehlerhaften Daten verwirft

    Ja das wäre eine Möglichkeit, welche ich dir auch weiter oben schonmal angeboten habe ;)

    Kann zwar mal versuchen, den Fehler abzufangen und dann die Werte wenn der Fehler auftritt zu verwerfen, das hilft dir dann aber nur soviel, dass das Skript nicht abstürzt. Nicht für die Ursache warum es auftritt.

    Was du noch zusätzlich machen kannst ist, die Service Unit so zu modifizieren, dass es nach einem Fehler automatisch neu gestartet wird.

    https://www.freedesktop.org/software/syste…e.html#Restart=

    ist das normal?

    O das hier ne Frage steht habe ich übersehen. Wegen der Nummerierung der PIDs hab ich mir noch nie Gedanken gemacht und kann das somit auch nicht zuverlässig beantworten.

  • 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/smartm…7ab2b7a6d8f469b

    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?

    2 Mal editiert, zuletzt von rpi-joe (12. April 2021 um 12:24) aus folgendem Grund: .

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

    jetzt bekomme ich einen Fehler:

    Der mag vermutlich bei dir das ä nicht. Hab ich korrigiert.

    Kann es sein das du ausversehen mit python und nicht mit python3 gestartet hattest?

    Wie sag ich pip3, dass ich die Version .7 haben will?

    https://wiki.ubuntuusers.de/pip/#Beispiele

    >> pip3 install --user minimalmodbus=0.7

  • 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. :(

  • 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.....

  • 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. :(

    Einmal editiert, zuletzt von rpi-joe (13. April 2021 um 10:21)

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

    Ja! Du darfst das nicht einfach hin und her kopieren.

    Besser, wie du es eh schon gemacht hast, nach dem beschriebenen Weg der Readme. Außerdem halte ich es für nicht zielführend bei Problemen gleich den ganzen Pi neu aufzusetzen. Lieber den Fehler lokalisieren und beheben.

    Auch bei dieser Fehlermeldung habe ich die Vermutung, dass du nicht alle Schritte der Readme ausgeführt hast?

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!