Сложность запуска скрипта Python при загрузке на Raspberry pi - PullRequest
0 голосов
/ 02 мая 2019

надеясь, что кто-то может помочь. я новичок в python и пытаюсь запустить скрипт при загрузке на raspbian. Ничто из того, что я пробую, кажется, не работает, и я просто вижу, чего мне не хватает Очень простой скрипт для воспроизведения аудиофайла при получении команды UDP.

Я до сих пор пытался - запустить его с rc.local, запустить его в .bashrc (эта работа, когда я запускаю новый терминал через ssh, начиная с init.d, ниже приведен скрипт init.d, .py стандартный скрипт такой же минус информация об инициале ....

#! /usr/bin/python3

# /etc/init.d/UDP_Python_Omxplayer.py
### BEGIN INIT INFO
# Provides:          UDP_Python_Omxplayer.py
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

import socket
import os

UDP_IP = "192.168.123.10"
UDP_PORT = 5005

sock = socket.socket(socket.AF_INET, # Internet
                 socket.SOCK_DGRAM) # UDP

sock.bind((UDP_IP, UDP_PORT))

while True:
    data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
    print ("received message:", data)
    command = str(data.decode('ASCII'))

    if command == "Play":
        os.system("omxplayer -o both --no-osd /home/pi/Doc*/Air*")

Как и выше, скрипты работают, я просто не могу заставить это автоматизироваться и запустить в фоновом режиме при загрузке?

спасибо заранее ...

Пробовал в работе cron со следующим:

sudo crontab -e 

и добавлено

@reboot sudo python /home/pi/UDP_Python_Omxplayer.py

также превратил это в службу, которая, если я запускаю службу вручную, то она работает нормально, но снова из-за загрузки не работает.

1 Ответ

1 голос
/ 02 мая 2019

Попробуйте создать службу.

Откройте оболочку и введите команду: sudo vi /etc/rc.local Это откроет файл, включающий следующую информацию.

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

cd /home/pi/XXXXX/XXXXX && python3 my_script.py > /home/pi/Desktop/log.txt 2>&1

exit 0

Дайтепуть к вашему сценарию и замените my_script.py именем вашего сценария.Сохраните и выйдите из файла.

Он также сохранит журналы scipt на рабочем столе в файле log.txt.

Если это не работает, измените ваш скрипт, как показано ниже.

#! /usr/bin/python3

# /etc/init.d/UDP_Python_Omxplayer.py
### BEGIN INIT INFO
# Provides:          UDP_Python_Omxplayer.py
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

from time import sleep
sleep(45)

import socket
import os

UDP_IP = "192.168.123.10"
UDP_PORT = 5005

sock = socket.socket(socket.AF_INET, # Internet
                 socket.SOCK_DGRAM) # UDP

sock.bind((UDP_IP, UDP_PORT))

while True:
    data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
    print ("received message:", data)
    command = str(data.decode('ASCII'))

    if command == "Play":
        os.system("omxplayer -o both --no-osd /home/pi/Doc*/Air*")
...