Helpdesk

Hi!


Es hat zwar etwas gedauert - zwischenzeitlich komme ich mit dem StromPi (mit LiFe-BatteryPack; FirmwareVersion: v1.8) aber recht gut zurecht. Cooles Ding.


Ich kann ohne Gui die Konfiguration vornehmen und habe das python-Script welches die serielle Kommunikation zum StromPi überwacht, an meine Bedürfnisse angepasst. Funktioniert soweit sehr gut - er reagiert, so wie ich es mir wünsche (inkl. Emailversand bei Powercut und kontrolliertem Shutdown).


Mit dem Script, welches die Uhrzeit mit dem RaspberryPi 3B (bookworm - 64bit lite Installation) synchronisiert, komme ich aber nicht zurecht.


Wenn ich es richtig sehe, bricht das Script bei dieser Zeile


    data = serial_port.read(9999);

mit dieser Fehlermeldung ab:


b"Q\r\r\nCommand not recognised.  Enter 'help' to view a list of available commands.\r\n\r\n\r\n>date-i\r\r\nCommand not recognised. 

 


Es kann m.E. nicht daran liegen, dass im Hintergrund noch ein anderes Script die serielle Kommunikation blockiert.


Weil ich nun etwas ratlos bin, würde ich mich über etwas Hilfe freuen. Übersehe ich etwas, oder ist das RTC-Script, welches auf der Webseite zum Download bereitsteht, mit bookworm nicht kompatibel?


Was mich auch mal interessieren würde: Wie genau ist die RTC-Uhr des StromPi? Da ich das LiFe-BatteryPack verwende, würde ich eigentlich erwarten, dass der StromPi die Uhrzeit recht lange (und gut) halten kann. Meinem Eindruck nach ist die RTC-Uhr aber zu langsam - es entsteht ziemlich schnell eine Zeitdifferenz zur NTP-Zeit des RaspberryPi. Eine einmalige Zeitsynchronisation nach Systemstart ist m.E. daher zu wenig. Solange der RaspberryPi läuft, würde ich also gerne regelmäßig die nachlaufende RTC-Uhr des StromPi mit der NTP-Zeit vom Raspberry aktualisieren wollen. Das sehen die Standard-Scripte m.E. aber nicht vor.
Aber zuerst einmal, muss ich das Script überhaupt zum Laufen bekommen...


Viele Grüße
Holger


 

Holger

31.03.25 18:38

Hallo Holger,


leider konnte ich diesen Fehler nicht nachstellen, in meinem Test hat das Ausführen des RTCSerial.py Skripts unter dem aktuellsten Raspberry Pi OS ohne Probleme funktioniert.
Die angegebene Fehlermeldung ist mir leider auch nicht bekannt.


Um das Problem weiter einzugrenzen, würde ich zunächst empfehlen das Skript mal mit unserem vorbereitetem Image auszuführen, oder ein neues Betriebssystem nach unserer Schnellstartanleitung einzurichten.


Die RTC des StromPi ist leider keine richtige RTC, es handelt sich nur um eine Softwarelösung, welche komplett von dem Mikrocontroller auf dem, StromPi übernommen wird.
Dies führt leider auch dazu, dass die RTC nicht 100 prozentig genau ist. 


Mit freundlichen Grüßen


Tim (Joy-IT)


 

Tim

01.04.25 12:37

Hallo Tim,


danke für Deine schnelle Antwort.


Irgendwie scheine ich gerade komplett 'auf dem Schlauch' zu stehen. Ich habe beide vorgefertigte Images heruntergeladen und ausprobiert (also: Full 64-Bit und Lite 64-Bit vom 23. bzw. 24.10.2024). Die Scripte mit poweralarm und shutdown funktionieren problemlos. Das Script zum Eintellen/Synchronisieren der Uhrzeit bricht aber ab:


pi@raspberrypi:~/StromPi3_Scriptfolder_2023-12-13/Serial $ python3 RTCSerial.py
Traceback (most recent call last):
File "/home/pi/StromPi3_Scriptfolder_2023-12-13/Serial/RTCSerial.py", line 31, in
date = int(data)
^^^^^^^^^
ValueError: invalid literal for int() with base 10: b"Q\r\r\nCommand not recognised. Enter 'help' to view a list of available commands.\r\n\r\n\r\n>dt-rpi\r\r\nCommand not recognised. Enter 'help' to view a list of available commands.\r\n\r\n\r\n>"

 


Die Kommunikation mit der StromPi funktioinert (kann mich mit minicom verbinden und mit show-status die Konfig anzeigen lassen).
Und da ich RTCSerial.py als Erstes aufgerufen habe, kann ich auch ausschießen, dass parallel noch ein anderes Script läuft, welches die serielle Schnittstelle blockiert.


 
Kann das ein HW-Problem sein? Kann ich mir eigentlich nicht vorstellen.
Was mir auch noch auffällt: In der GUI vom 'Serial Config Tool' kann ich bei den RTC-Settings mit 'Manual Setting' die Uhrzeit des StromPi ändern. Das 'Sync with RaspberryPi' funktioniert aber auch über diese GUI nicht. Der Raspberry hat keine Verbindung zum Internet (weil ich verhindern möchte, dass er sich über NTP seine Zeit holt). Ich hätte erwartet, dass mit 'Sync with RaspberryPi' die (fast) korrekte Uhrzeit des StromPi zum RaspberryPi übertragen wird. Das passiert aber nicht


Ich bin lost.


Viele Grüße
Holger

Holger

01.04.25 22:20

Hallo Holger. 

Hast Du eventuell zuletzt ein System-Upgrade gemacht? 
Ich habe bemerkt, dass bei dem letzten Update/Upgrade von Bookworm der symlink /dev/serial0 gelöscht wurde und seitdem die Skripte dadurch mit Fehlermeldung abbrechen.

Viele Grüsse

Knut



 

Knut

02.04.25 08:49

Hallo Knut,


das war auch eine meine Überlegungen: Ob das System-Upgrade (welches ich bei meiner Erstinstallation gemacht habe) ursächlich sein könnte. Um das auszuschießen, habe ich vor einer Neuinstallation über das vorgefertigte Image die lokale IP-Adresse meines RaspberryPi im Internet-Router auf 'WAN traffic blocked' gesetzt. Damit verhindere ich, dass sich das System durch Update/Upgrades ändert - und dass sich der RaspberryPi via NTP auf dem Internet eine aktuelle Uhrzeit holt. Mein angedachtes Einsatz-Szenario ist ein dauerhafter Offline-Betrieb des RaspberryPi (Stromversorgung über Powerstation, die an einer Solarzelle angeschlossen ist). Ohne Internetverbindung brauche ich die RTC vom StromPi, um die Uhr des Raspberry zu stellen (den ich - zum Stromsparen - nachts ausschalten möchte). Der StromPi erlaubt ja auch das zeitgesteuerte runter- und hochfahren des Raspberry. Er ist also exakt für meine Anforderung geeignet.


Viele Grüße
Holger


 

Holger

02.04.25 11:51

Hi!


Ich glaube, ich muss mich selbst korrigieren: Ich habe wohl im Internet-Router den WAN-Traffic des Raspberry erst blockiert, nachdem ich das System-Upgrade durchgeführt habe. Ich dachte bis soeben, dass ich bereits vor der Image-Neuinstallation den Internetzugang blockiert habe. Da habe ich mich aber wohl geirrt. Habe gerade das Image noch einmal neu auf eine andere SD-Karte geflasht: Jetzt funktioniert der RTC-Sync: 


-----------------------------------------
The date und time has been synced: StromPi -> Raspberry Pi
-----------------------------------------

 @Kunt: Damit bestätigt sich m.E. Deine Vermutung: Das System-Upgrade ist schuld.
Wie kann ich den symlink /dev/serial0 wiederherstellen, wenn das Upgrade diesen gelöscht hat?


Viele Grüße
Holger

Holger

02.04.25 12:26

Hallo Holger und Tim (Joy-IT)

Ich habe genau  dieses Problem, dass nach jedem System-Upgrade der Symlink verschwunden ist und ich habe es noch nicht hingekriegt den Symlink wieder herzustellen. 
Ich hatte vor Kurzem zum Glück ein Backup-Image erstellt und dieses jetzt neu draufgespielt (Jetzt läuft wieder alles wie vorher). Vorerst verzichte ich auf ein Upgrade.
@Tim: Gibt es eine Möglichkeit zu verifizieren was da bei dem Upgrade schiefläuft? 

Viele Grüsse  
Knut

Knut

02.04.25 12:55

Ich bin überrascht. Wenn der Symlink durch ein Upgrade gelöscht wird: Davon ist dann nur das RTC-Script betroffen? Die anderen Scripte und allgemein - die Konfigurationsänderung und Kommunikation über die serielle Schnittstelle - funktioniert aber trotzdem? Wenn durch das Upgrade /dev/serial0 gelöscht wird, würde ich erwarten, dass dadurch keinerlei Kommunikation mit dem StromPi mehr möglich ist. Bis auf den RTC-Sync funktioniert aber alles andere. Wie in einem vorherigen Beitrag geschrieben: Ich kann über das Konfig-Tool sogar die Uhrzeit des StromPi manuell setzen. So wie es sich mir darstellt, ist ausschließlich der RTC-Sync betroffen. Ist das aber plausibel und @TIM: kannst Du nach nachstellen?


Viele Grüße
Holger

Holger

02.04.25 13:48

Stimmt, eigentlich sollte jedes Script betroffen sein, das auf /dev/serial0 zugreift. Bei mir ist das auch der Fall:
Nach dem System-Upgrade und anschliessendem Neustart ist /dev/serial0 definitiv nicht mehr da.
Ich konnte das inzwischen zwei mal nachstellen.
Das Config-GUI Script gibt dann auch als Fehlermeldung aus, dass es /dev/serial0 nicht finden kann. 
Hast Du nach dem Upgrade das System neu gestartet bevor Du das Config-Tool ausgeführt hast?

Übrigens: Die Fehlermeldung 


ValueError: invalid literal for int() with base 10

passiert normalerweise, wenn in Python versucht wird eine Fließkommazahl als Integer (Ganzzahliger Wert) abzuspeichern.


data = serial_port.read(9999);

serial_port.read(9999) liefert also keinen Integer-Wert für data.
Bei mir tritt so ein Fehler auch sporadisch im Config-Gui-Script von StromPi3 auf.
Allerdings kenne ich mich mit Python nicht so gut aus.

Knut

knut

02.04.25 15:35

Es wird immer mysteriöser: Auf meiner Zweit-Test-Installation ist es jetzt genau so, wie Du, Knut, es meldest: Nach einem Upgrade funktioniert kein Script mehr, weil /dev/serial0 nicht mehr da ist. Die Fehlermeldung zeigt auch genau darauf:


pi@raspberrypi:~/StromPi3_Scriptfolder_2023-12-13/Serial $ python poweralarm_serial.py
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 322, in open
self.fd = os.open(self.portstr, os.O_RDWR | os.O_NOCTTY | os.O_NONBLOCK)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/dev/serial0'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/pi/StromPi3_Scriptfolder_2023-12-13/Serial/poweralarm_serial.py", line 145, in
ser = serial.Serial(
^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/serial/serialutil.py", line 244, in __init__
self.open()
File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 325, in open
raise SerialException(msg.errno, "could not open port {}: {}".format(self._port, msg))
serial.serialutil.SerialException: [Errno 2] could not open port /dev/serial0: [Errno 2] No such file or directory: '/dev/serial0'

 


Auf meinem "Produktivsystem" (bei dem ich - wenn ich mich nicht irre - auch kürzlich ein System-Upgrade gemacht habe) funktionieren aber alle Scripte, die kein RTC-Sync beinhalten. Wegen dieser "Entdeckung" habe ich diesen Thread gestartet. Ich muss das jetzt noch prüfen - für mich sieht es aber so aus, als ob /dev/serial0 nicht in allen Fällen "verschwindet". Das System scheint sich unterschiedlich zu verhalten - abhängig davon, was man (in welcher Reihenfolge) sonst noch auf dem System installiert hat.


Und: Die Fehlermeldung, die ich gestern hier gepostet habe, war ja eine andere, als ich sie jetzt habe. Es scheint sich also noch einmal etwas geändert zu haben. 


Ich werde nun versuchen, ob ich das Fehlerbild von gestern noch einmal nachstellen kann. Ich melde mich, wenn ich weitere Tests gemacht habe.


Gruß
Holger

Holger

02.04.25 17:33

Hallo Holger und Knut,


bislang hatte ich noch nicht das Problem, dass /dev/serial0 nach einem Update verschwunden ist. Wir werden dieses Thema jedoch erneut prüfen und gegebenenfalls eine Lösung entwickeln.


Falls tatsächlich nur der Symlink entfernt wurde, könnte der folgende Befehl vorübergehend Abhilfe schaffen:


sudo ln -s /dev/ttyS0 /dev/serial0

Mit freundlichen Grüßen
Tim (Joy-IT)

Tim

03.04.25 17:12