Автозагрузка скрипта .py на Распберри
Не получается создать автозагрузку скрипта питона Задача, запускать видео по датчику Делаю через systemctl, Пишет ошибка и всё, а в чем не пишет( есть файл /lib/systemd/system/avtozap.service
[Unit]
Description=avtozap_v8
After=multi-user.target
[email protected]
[Service]
Type=simple
ExecStart=/usr/bin/python3 /usr/bin/aaavtozap.py
Reatart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
причем с этим кодом работает
#!/usr/bin/python3
from subprocess import run
import RPi.GPIO as IO
import time
buttonPin = 26
IO.setwarnings(False)
IO.setmode(IO.BCM)
IO.setup(buttonPin, IO.IN)
while 1:
if(IO.input(buttonPin) == True):
print ("pressed")
run('vcgencmd display_power 0', shell=True)
else:
run('vcgencmd display_power 1', shell=True)
print ("ne press")
# if keyboard.is_pressed('esc'):
# print ("esc")
time.sleep(1)
def keypress(event):
global shiftkey
if event.keysym == 'Shift_L':
shiftkey = 0
else:
shiftkey = 101
а с этим не работает
#!/usr/bin/python3
from pathlib import Path
from time import sleep
from omxplayer.player import OMXPlayer
import RPi.GPIO as IO
from pynput import mouse
from subprocess import run
vpath = Path("/home/pi/Videos/black.mp4")
player = OMXPlayer(vpath, pause =True)
#player.quit()
duration = int(player.duration())
buttonPin = 26
IO.setwarnings(False)
IO.setmode(IO.BCM)
IO.setup(buttonPin, IO.IN)
def on_click(x,y,button,pressed):
run('vcgencmd display_power 1', shell=True)
# print('{0} at {1}'.format('Pressed' if pressed else 'Released',(x,y)))
# if player.can_control():
# player.stop()
# player.quit()
# if not pressed:
# return False
listener = mouse.Listener(
on_click=on_click
)
listener.start()
while 1:
if(IO.input(buttonPin) == True):
print ("pressed")
player = OMXPlayer(vpath, pause =True)
#player.hide_video()
player.play()
run('vcgencmd display_power 0', shell=True)
sleep(1)
run('vcgencmd display_power 1', shell=True)
sleep(duration-1)
#sleep(5)
#player.pause()
#player.stop()
#player.previous()
#sleep(2)
#player.show_video()
else:
print ("ne press")
sleep(1)
Ответы (2 шт):
Автор решения: eri
→ Ссылка
OMXPlayer скорее всего нужен дисплэй
Для запуска на иксах
[Unit]
Description=X11 session for kiosk
After=graphical.target systemd-user-sessions.service
ConditionPathExists=/dev/tty8
[Service]
User=kiosk
WorkingDirectory=/opt/budka/
PAMName=login
Environment=XDG_SESSION_TYPE=x11
TTYPath=/dev/tty8
TTYReset=yes
TTYVHangup=yes
TTYVTDisallocate=yes
IgnoreSIGPIPE=no
SendSIGHUP=yes
StandardInput=tty
UnsetEnvironment=TERM
UtmpIdentifier=tty8
UtmpMode=user
StandardOutput=journal
ExecStartPre=/usr/bin/chvt 8
ExecStart=/usr/bin/startx /usr/bin/python3 /opt/budka/ui.py -- -keeptty -novtswitch -sharevts vt8
PIDFile=/opt/budka/budka.pid
KillSignal=9
Restart=always
RestartSec=5
[Install]
WantedBy=graphical.target
Автор решения: Илья Курбатов
→ Ссылка
В общем, мытарства привели меня к 3 вариантам автозагрузки
- Через .service
- sudo nano /etc/rc.local
- cron
и все они Работают! то есть, я создал скрипт создающий файл и он файл создавал при загрузке
from time import sleep
import datetime
current = datetime.datetime.now()
name = '/home/pi/python/avtozap' + 'DEBUG'+'.txt'
f = open(name,"w+")
f.write("Starting time = " + str(current) +'/r/n')
for i in range(10):
f.write("this str /r/n " + str(i+1))
f.close()
duration = 10
while duration > 0:
duration = duration -1
sleep(1)
name = '/home/pi/python/avtozap' + 'DEBUG'+'.txt'
f = open(name,"w+")
f.write("exec(open")
f.close()
exec(open("/home/pi/python/playVideo2.py").read())
а вот с этим не работает ( (это содержимое playVideo2.py)
from pathlib import Path
from time import sleep
from omxplayer.player import OMXPlayer
import RPi.GPIO as IO
from subprocess import run
vpath = Path("/home/pi/video.mp4")
player = OMXPlayer(vpath, pause =True)
#player.quit()
duration = int(player.duration())
buttonPin = 26
IO.setwarnings(False)
IO.setmode(IO.BCM)
IO.setup(buttonPin, IO.IN)
while 1:
player = OMXPlayer(vpath, pause =True)
player.play()
run('vcgencmd display_power 0', shell=True)
sleep(1)
run('vcgencmd display_power 1', shell=True)
sleep(duration-1)
sleep(10)
причем если запустить в Thonny все Ок