Hallo Zusammen, bei mir läuft ein Arduino Nano, der einige Sachen zur Hausautomatisierung macht. Unter anderem erfasst er auch die Temperaturen von ca. 20 Stellen und schreibt sie mit folgendem Code (Ausschnitt) jede Minute an die serielle Schnittstelle:
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
Der Arduino Nano ist über den USB-Anschluss mit einem Raspberry Pi verbunden. Mit dem möchte ich die Temperaturdaten abholen und dann in eine Datei sowie eine InfluxDB schreiben. Derzeit macht das ein Python-Script, hier die Funktion:
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
Diese Funktion wird von der folgenden Main-Funktion aufgerufen. Falls ein Fehler auftritt, wird der COM-Port gewechselt:
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
Der Raspberry wird headless betrieben, ich greife also über die Konsole mit Putty darauf zu. Das funktioniert soweit auch alles. Damit das Python-Script auch nach dem Beenden der Konsolensitzung weiterläuft, wird es mit nohup aufgerufen.
Grundsätzlich läuft das alles so. Manchmal beendet sich aber leider das Skript. Wenn ich das dann merke, starte ich es wieder neu. Manch andere regelmäßig auszuführende Skripte habe ich in die crontab geschrieben. Hier habe ich aber Angst, dass es sich mit dem Timeout beisst. Gibt es andere Möglichkeiten, zuverlässig die Daten vom Arduino zu holen, auch nach einem Neustart des Raspberrys?
