[Raspberry Pi] Autostarta pythonscript

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Användarvisningsbild
MicaelKarlsson
Inlägg: 4669
Blev medlem: 18 juni 2004, 09:16:07
Ort: Aneby
Kontakt:

[Raspberry Pi] Autostarta pythonscript

Inlägg av MicaelKarlsson »

Hej!

Jag har behov av att starta ett pythonscript som innehåller kommandon för att spela ljudfiler (mp3 eller wav) vilket visat sig inte vara så lätt som jag trodde.
Följande gäller:
- Det skall fungera utan att logga in
- Det skall fungera även efter strömavbrott eller att kablar rycks ur av misstag
- Helt enkelt skall det fungera då RPi-startas utan att man behöver logga in eller starta scriptet från prompten

Jag har testat följande:

Kod: Markera allt

import pygame
pygame.mixer.init()
pygame.mixer.music.load("sound1.wav")
pygame.mixer.music.play()
och

Kod: Markera allt

import os
os.system('mpg321 -q sound1.mp3 &')

Kod: Markera allt

import os, sys
os.system('omxplayer -o local sound1.mp3')
Inget av dessa fungerar tillsammans med att starta ett Cron-job. I min crontab finns följande rad:

Kod: Markera allt

@reboot sudo python /home/pi/min_fil.py &
Jag har kört chmod -x min_fil.py.

Nu har jag slut på idéer om vad som är fel.
robertk
Inlägg: 258
Blev medlem: 31 juli 2010, 19:46:02

Re: [Raspberry Pi]Autostarta pythonscript

Inlägg av robertk »

1. sudo kan du inte köra från crontab. Har du editerat crontab för root, annars editera roots crontab.

2. Se till att ha full path i crontab (behövs /usr/bin/python när du har exekverbar fil?): /usr/bin/python /home/pi/min_fil.py

3. Den kommer att köras i bakgrunden, så du behöver inte "&"


//Robert
robertk
Inlägg: 258
Blev medlem: 31 juli 2010, 19:46:02

Re: [Raspberry Pi]Autostarta pythonscript

Inlägg av robertk »

Komihåg att från crontab finns troligtvis ingen PATH definerad, så alla filer du referar till behöver ha fullständiga pather; /home/user/sound1.mp3 osv...

//Robert
LarryXz
Inlägg: 641
Blev medlem: 13 mars 2013, 20:31:08
Ort: Norra Uppland

Re: [Raspberry Pi]Autostarta pythonscript

Inlägg av LarryXz »

http://www.raspberrypi.org/forum/viewto ... 63&t=46125
(Kolla inlägget som skrevs Wed Jun 05, 2013 6:02 am)
Borde göra det du vill.
Användarvisningsbild
calmar
Inlägg: 540
Blev medlem: 23 november 2005, 13:14:41
Ort: Göteborg
Kontakt:

Re: [Raspberry Pi]Autostarta pythonscript

Inlägg av calmar »

Användarvisningsbild
MicaelKarlsson
Inlägg: 4669
Blev medlem: 18 juni 2004, 09:16:07
Ort: Aneby
Kontakt:

Re: [Raspberry Pi]Autostarta pythonscript

Inlägg av MicaelKarlsson »

Tack för tipsen!

Blev ett litet steg framåt efter tipsen som robertk och LarryXz kom med. Men ett underligt problem dök upp både när jag testade crontab och rc.local. När jag kör ett mindre pythonscript (strax under 100 rader) fungerar allt perfekt men när jag kör mitt verkliga script (lite drygt 200 rader) låser sig scriptet efter att musiken spelats i cirka 5 sekunder.

Vad kan orsaka hängningen i mitt större script? Blir snart galen.
emil.s
Inlägg: 147
Blev medlem: 22 oktober 2011, 20:08:06

Re: [Raspberry Pi]Autostarta pythonscript

Inlägg av emil.s »

Det var en fråga. Ett tips är att skicka eventuell output till en fil, så blir det lättare att debugga i efterhand.

Ett annat tips för sådana här problem är att använda cron.d för körningen av scriptet.
Skapa t.ex /etc/cron.d/egna_script
och lägg in:
@reboot root /usr/bin/python /home/pi/min_fil.py > /var/log/min_fil.log

Se "man 5 crontab" för mer info.
Användarvisningsbild
MicaelKarlsson
Inlägg: 4669
Blev medlem: 18 juni 2004, 09:16:07
Ort: Aneby
Kontakt:

Re: [Raspberry Pi]Autostarta pythonscript

Inlägg av MicaelKarlsson »

Tack för tipset emil.s men när jag kollade loggfilen är den helt tom så där blir det inte mycket hjälp, tyvärr :(
LarryXz
Inlägg: 641
Blev medlem: 13 mars 2013, 20:31:08
Ort: Norra Uppland

Re: [Raspberry Pi]Autostarta pythonscript

Inlägg av LarryXz »

Fungerar scriptet som det ska om du kör det själv?
Användarvisningsbild
MicaelKarlsson
Inlägg: 4669
Blev medlem: 18 juni 2004, 09:16:07
Ort: Aneby
Kontakt:

Re: [Raspberry Pi]Autostarta pythonscript

Inlägg av MicaelKarlsson »

Ja scriptet fungerade som det skulle men ljud, i2c, spi med mera.

Edit: Tänker installera om OS på RPi och se om det kan göra något då jag varit inne och kladdat hur mycket som helst, överallt, känns det som.
Användarvisningsbild
MicaelKarlsson
Inlägg: 4669
Blev medlem: 18 juni 2004, 09:16:07
Ort: Aneby
Kontakt:

Re: [Raspberry Pi] Autostarta pythonscript

Inlägg av MicaelKarlsson »

Har gått efter denna guide: http://www.raspberrypi-spy.co.uk/2013/0 ... sing-cron/

i guiden står det att man skall få något liknande detta:
root 1863 0.0 1.0 24908 4012 ? Sl 19:45 0:00 python /home/pi/MyScript.py

När jag testar samma kommando får jag följande:
pi 2269 0.0 0.1 3544 816 pts/0 S+ 08:42 0:00 grep --color=auto /home/pi/min_fil.py

Som ni ser står det pi istället för root. Kan det vara det som ställer till det för mig?
emil.s
Inlägg: 147
Blev medlem: 22 oktober 2011, 20:08:06

Re: [Raspberry Pi] Autostarta pythonscript

Inlägg av emil.s »

Förmodligen, det betyder ju att scriptet körs som användaren "pi" (dvs som vanlig användare) och inte root. Hur startar du scriptet?

EDIT:
Nä scriptet körs nog inte alls om det bara var den raden du fått ut.
Nu har du ju endast grepat ut grep-processen.

Testa att söka på "python" istället, eller något mer generellt.
Användarvisningsbild
MicaelKarlsson
Inlägg: 4669
Blev medlem: 18 juni 2004, 09:16:07
Ort: Aneby
Kontakt:

Re: [Raspberry Pi] Autostarta pythonscript

Inlägg av MicaelKarlsson »

Tack för svaret emil.s. Är inte helt säker på hur du menar men testade följande:

pi@raspberrypi ~ $ ps aux | grep python
pi 2282 0.0 0.1 3544 812 pts/0 S+ 08:39 0:00 grep --color=auto python
pi@raspberrypi ~ $ ps aux | grep python
pi 2284 1.0 0.1 3544 812 pts/0 S+ 08:39 0:00 grep --color=auto python
pi@raspberrypi ~ $ ps aux | grep python
pi 2286 0.0 0.1 3544 812 pts/0 S+ 08:39 0:00 grep --color=auto python
pi@raspberrypi ~ $ ps aux | grep python
pi 2288 0.0 0.1 3544 812 pts/0 S+ 08:39 0:00 grep --color=auto python

Konstigt nog ändras processnumret för varje försök, vilket låter underligt i mina öron.
Hur skall man söka mer generellt?
Hur autostartar man ett script så det körs som root?
Hur låter man bli att bli galen? :wink:


EDIT:
Har testat med ett litet script som kommunicerar med en MCP23017 (I2C) och det fungerar alldeles utmärkt. Men när jag vill autostarta mitt script med ljud, SPI, I2C så drar det igång några sekunder men sedan slutar det mitt i en kort ljudfil.
meconer
EF Sponsor
Inlägg: 493
Blev medlem: 27 april 2010, 20:07:46
Ort: Järfälla

Re: [Raspberry Pi] Autostarta pythonscript

Inlägg av meconer »

Processnumret du ser är processen som kör det grep-kommando som du nyss skrev in. Eftersom du sökte efter python så kommer den att hitta din rad med grep ... python.
Användarvisningsbild
MicaelKarlsson
Inlägg: 4669
Blev medlem: 18 juni 2004, 09:16:07
Ort: Aneby
Kontakt:

Re: [Raspberry Pi] Autostarta pythonscript

Inlägg av MicaelKarlsson »

En liten uppdatering ifall någon annan drabbas av samma bekymmer:

pygame gör att koden blir "x-windows client application" och om man startar koden via ett cron job, dvs: sudo crontab -e och sedan kommandot att starta pythonkoden.

Jag har fått lära mig att OMXPlayer som redan finns installerad i Raspian wheezy klarar av det jag vill, att autostarta ett pythonscript med ett cron job och spela musik-/ljud -filer. Sedan finns det flera alternativ på hur man skall anropa omxplayer från python, t.ex. popen

Hoppas detta kan vara till nytta för någon. :)
Skriv svar