Задать вопрос

Как вызвать скрипт python для работы с GPIO Raspberry Pi 3 из php файла?

Есть форма на html, которая через js отправляет данные в php файл. В этом php файле есть функция shell_exec, shell_exec(escapeshellcmd('python script.py 1')); которая передает команду для запуска скрипта на python. Когда пытаюсь обработать в python скрипте простую команду, типа print(sys.argv[1]), то соответственно получаю на веб странице результат "1". Но когда дело доходит до работы с GPIO Raspberry Pi 3, то скрипт не выполняется. Даже не выполняется команда print, которую я оставил в конце скрипта для тестирования.
index.html
<!doctype html>
<head>
        <title>Title</title>
</head>
<body>
        <form id="form">
                <p>On/Off led control</p>
                <input type="checkbox" name="led-toggle" id="led-toggle" value="1">
        </form>
        <script>
                const ledToggle = document.querySelector('#led-toggle');

                async function formSend(evt) {
                        const form = document.querySelector('#form');
                        let data = new FormData(form);
                        console.log(data)

                        let response = await fetch("./index.php", {
                                method: 'post',
                                body: data

                        });

                        if (response.ok) {
                                let result = await response.json();
                                console.log(result)
                        }

                }

                ledToggle.addEventListener('change', formSend);
        </script>
</body>

index.php:
if ($_POST['led-toggle']) {
        shell_exec(escapeshellcmd('python test.py 1'));
} else {
         shell_exec(escapeshellcmd('python test.py 0'));
}

test.py
import sys
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)
GPIO.setup(5, GPIO.OUT)

GPIO.output(5, sys.argv[1])


print(sys.argv[1])
  • Вопрос задан
  • 186 просмотров
Подписаться 3 Средний 1 комментарий
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Подозреваю, что дело в правах - скрипт на питоне выполняется от имени пользователя веб-сервера, у которого может не быть прав на доступ к GPIO.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
SilenceOfWinter
@SilenceOfWinter
та еще зажигалка...
1. смотри примеры IO для GPIO
2. попробуй PHP порт GPIO
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы