raspberrytips.nl

Python script automatisch starten tijdens reboot

Wanneer je een Python script gebruikt om bijvoorbeeld de temperatuur te meten of een display aan te sturen, dan start je dit script handmatig vanaf de bash prompt. Het is ook mogelijk om tijdens het opstarten van de Raspberry Pi automatisch een Python script te starten.

Om het Python script automatisch te laten starten kun je handig gebruik maken van het standaard aanwezige crontab commando. Met behulp van cron kun een taak inplannen op een bepaald tijdstip. Je kunt in cron ook aangeven dat tijdens het opstarten een taak moet worden uitgevoerd.

Voorbeeld: Je hebt een script gemaakt dat de temperatuur van een DHT22 sensor uitleest en deze wegschrijft in een database. Het script heeft de naam temperatuur.py en bevind zich in de thuismap van de pi-gebruiker. Het volledige pad naar het bestand is dan:

/home/pi/temperatuur.py
Heb je het script in een andere map staan dan kun je met het pwd het volledige pad naar de map bekijken. Ga naar de betreffende map en voer het pwd commando uit.

Hoewel het in de meeste situaties niet nodig zal zijn is het toch verstandig om het Python script execute rechten te geven. Dit doe je met behulp van het chmod command en de +x optie.

chmod +x /home/pi/temperatuur.py

Voorbeeld Python script automatisch starten

Om temperatuur.py in de map /home/pi/ op te starten tijdens een herstart van de Raspberry Pi gaan we deze toevoegen aan de cron-taken. Gebruik het volgende commando om de cron-editor te openen:

sudo crontab -e

De eerste keer dat je de cron taken wil gaan bewerken wordt er gevraagd welke editor je hiervoor wilt gaan gebruiken. Je kunt dan het beste kiezen voor optie 2 de nano-editor.

Scroll naar de laatste lege regel, we gaan nu een extra regel toevoegen met de onderstaande opmaak:

@reboot python /pad/naar/pythonscript.py &

In het geval van het temperatuur script uit het voorbeeld voegen we de onderstaande regel toe:

@reboot python /home/pi/temperatuur.py &

Dit commando zorgt dat tijdens een reboot, Python het script temperatuur.py in de map /home/pi/ gaat uitvoeren op de achtergrond, dit laatste geven we aan met behulp van het & teken.

Sluit de cron-editor af met: control-X (afsluiten), gevolgd ‘Y’ (wijzigingen opslaan) en de enter-toets (bevestigen).

Herstart hierna je Raspberry Pi en controleer of het script automatisch is gestart.

Wil je controleren welke cron taken zijn ingepland dan kun je dit doen met behulp van het commando:

sudo crontab -l

Python scripts die gebruik maken van het netwerk

Wanneer je een Python script uitvoert die gebruik maakt van een netwerkverbinding dan is het verstandig om een vertraging toe te voegen. Het kan namelijk voorkomen dat het Python script wordt gestart voordat de netwerkverbindingen zijn geactiveerd, wat als resultaat kan hebben dat het Python script wordt afgebroken vanwege een error.

Plaats voor het commando sleep XX && toe, waarbij je XX vervangt door het aantal seconden dat moet worden gewacht. In de meeste gevallen is 10 seconden genoeg. Het commando voor het temperatuur.py voorbeeldscript wordt in dit geval:

@reboot sleep 10 && python /home/pi/temperatuur.py &