Hallo allerseits,
vorneweg, ich hoffe ich bin hier im richtigen Forenbereich? Falls nicht hoffe ich man kann den Thread ohne Probleme verschieben?
Das eigentliche Problem:
Ich habe, leider erfolglos, versucht 3 python scripts auf meinem Raspberry Pi 3B automatisch nach einem Neustart starten zu lassen.
Dazu habe ich die gängigen Möglichkeiten via rc.local und crontab -e, zu denen es ja zahlreiche Forenbeiträge und Tutorials gibt, versucht, allerdings hat keine der
Methoden letztendlich zum Erfolg versucht. Enttäuscht habe ich dann einfach wieder die 3 Skripte manuell im Hintergrund ausgeführt.
Die Skripte im Überblick:
1. ein python script welches Sensordaten im 3 Min. Takt in eine Text sowie eine CSV schreibt
2. ein pythonn script welches selbige Sensordaten an die IOT-Plattform thingspeak sendet
3. ein python script welche selbige Sensordaten zusätzlich im 5 Min. Takt in einer sqlite3 Datenbank speichert
Der positive Teil, alle Skripte funktionieren wenn ich sie standesgemäß mittels sudo python test.py & starte und solange ich den Raspberry Pi nicht ausschalte, passt das ja auch (falls relevant alle Skripte und erstellte Datenbank + CSV + Textdatei sind im selben Ordner /home/pi). Nun wollte ich den Autostart einrichten, was sich in der Theorie und den Tutorials auch als ziemlich schnelle und einfache Sache angehört hat.
Dazu habe ich folgendes versucht:
1. über sudo nano /etc/rc.local vor exit 0 eingefügt (beispielhaft für das Skript welches die Textdateiund CSV erstellt):
Als das nicht funktioniert hat, habe ich in verschiedenen Forenbeiträgen gelesen man solle den Start via Sleep verzögern. Dazu hatte ich unterschiedliche Syntax gefunden die ich dann folgendermaßen versucht habe einzubinden:
bzw. :
Hier habe ich leider schon nicht rausgefunden, welche der beiden Sleep Varianten theoretisch die korrekte sein sollte, bzw. was der Unterschied zwischen beiden Varianten ist (vlt. kann mir da jemand aushelfen?). Ergänzend habe ich noch getestet (so hat es mir das Internet geraten) zu testen, ob ich die rc.local via einfachem sudo /etc/rc.local ausführen kann, das hat funktioniert da ich zuvor einen echo Befehl in die rc.local eingefügt hatte, der mir ein paar Wörter in eine Textdatei schreib und diese Wörter anschließender in der Textfile vorhanden waren.
Die Codes habe ich natürlich für alle 3 Scripte versucht. Als es dann weiterhin nicht geklappt hat habe ich mich mit 1:0 zu Gunsten der rc.local geschlagen gegeben und versucht die Sache via crontab -e, folgerndermaßen, zu lösen:
crontab -e eingeben, anschließend wurde ich gefragt welchen Editor ich haben möchte worauf ich nano gewählt habe. Dann habe ich folgendes eingegeben ans Ende der Crontab-Datei:
Der Befehl wurde auch wieder für alle 3 Skripte eingegeben. Nach einem Neustart hat leider keines der 3 automatisch gestartet. Daher war nun folgender Zwischenstand erreicht:
Raspberry Autostart VS Ich 2:0.
Als ich daraufhin die Skripte wieder manuell startete hatte ich folgenders Problem meine sqlite3 Datenbank mit dem Namen sensordata.db war plötzlich doppelt im Ordner vorhanden, was mich schon stutzig gemacht hatte. Als ich via. sqlite3 sensordata.db darauf zugegriffen hatte und per. SELECT * FROM temps; (temps ist der Tabellenname in dem die Daten gespeichert werden) testen wollte, ob dort noch alles beim Alten ist, bekam ich den Error: no such table: temps. Mittels ,fullschema habe ich festgestellt das keine Tabelle in der Datei existiert. Dann dachte ich, dass die entsprechende Tabelle demnach bestimmt in der anderen, aus heiterem Himmel erschienen, sensordata.db sein muss. Dementsprechend habe ich sie in sensordata3.db umbenannt und siehe da diese Datenbank hatte sogar 2 Tabellen, an die ich mich vage erinnern konnte sogar damals zum Test erstellt zu haben, die gesuchte Tabelle temps war allerdings auch hier nicht mehr vorhanden (Raspberry erhöht auf 3:0). Da ich in diversen Foren etwas von den Zugriffsrechten in Verbindung mit dem Autostart gelesen hatte, habe ich irgendwann (zeitlich nich mehr zu 100 Prozent einzuordnen) mal noch den Befehl
für alle 3 Scripts eingegeben, dort kam aber, wenn ich mich recht erinnere sogar eine Fehlermeldung. Ich weiß nicht, ob das eine Rolle spielt, dass ich den Befehl ausgeführt habe? Und ja, mir ist bewusst, "tue nichts, bei dem du dir nicht sicher bist!" aber ich habe aus Verzweiflung vorschnell gehandelt .
Nun die große Frage, kann das überhaupt sein, dass die fehlende Tabelle das Resultat der vergeblichen Bemühung ist bzw. könnte es im besten Fall sogar sein, dass sich die Tabelle der SQlite3 Datenbank sogar noch irgendwo versteckt? Und vlt. hat ja jemand der sich die Mühe macht meinen Text zu lesen eine Ahnung, warum der Autostart nicht so will, wie ich? Verzweifelter Anfang hofft auf Hilfe und wird sich mit lebenslänglicher Dankbarkeit revanchieren, ansonsten wird der PI einfach seine Lebenszeit eingeschaltet verbringen!
PS: Falls der Text zu lange ist und keiner bereit ist ihn zu lesen, verstehe ich das natürlich, meine Intention war lediglich direkt alle womöglich wichtigen Infos zu liefern, um nicht stückweise alles nachzuliefern.
PPS: Wenn ich schon dabei bin, eines der Python Scripts wurde ausversehen zwei mal ausgeführt und meine Daten werden aktuell zwei mal statt einmal pro Minute an Thingspeak geliefert, wie kann ich einen der beiden Prozesse stoppen (jobs zeigt mir gar nichts an leider)