Я работал с R-pi 3b + и камерой raspberry v2, чтобы попытаться воспроизвести видео в определенное время (когда я проверяю слот gpio на входе, который находится на другом пи). Я назову пи, которое должно записывать с помощью этого фрагмента кода.
os.system("curl --silent http://192.168.0.239/controllers/take-video.php &")
Вызываемый им файл php выглядит так
<?php
system("/usr/bin/python2.7 /home/pi/Desktop/take-video.py");
echo("take video")
?>
При вызове его с другого пи он будет эхом «взять видео», но не начнет захватывать видео. Вызываемый им файл python выглядит так.
import RPi.GPIO as GPIO
import time
import os
from picamera import PiCamera
camera = PiCamera()
camera.start_preview()
camera.start_recording('/home/pi/Desktop/video.h264')
time.sleep(10)
camera.stop_recording()
camera.stop_preview()
exit()
Если я вызываю эти файлы из самого пи, они работают отлично, но когда они вызываются из другого пи, они не работают. Я думаю, что с разрешениями есть что-то, что нужно решить.
Я уже добавил эти правила в sudo visudo
www-data ALL(ALL) NOPASSWD: ALL
pi ALL(ALL) NOPASSWD: ALL
И добавил www-data в группу gpio и группу видео с помощью:
sudo usermod -a -G gpio www-data
sudo usermod -a -G video www-data
Однако вызов файла php, который ссылается на файл python, который перезагружается, работает нормально.
Любая помощь будет оценена по достоинству!
Этот сценарий PHP вызывается через веб-сервер, что отличается от вызова из интерфейса командной строки. Попробуйте поместить какой-нибудь вывод в свой скрипт python, чтобы увидеть, вызывается ли он вообще. Может быть, загляните в error.log (apache?), Чтобы подсказать.