Я пытаюсь сделать автоматический выключатель света. Для этого я использую шаговый двигатель. Цель состоит в том, чтобы я мог получить доступ к своему Raspberry Pi из браузера и с помощью 2 простых кнопок «Включить» и «Выключить» управлять двигателем, который будет включать выключатель света. Я написал этот простой python скрипт для вращения двигателя, который был протестирован на Pi и отлично работает. Он называется stepper.py
и находится в /var/www/html
:
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
control_pins = [7,11,13,15]
for pin in control_pins:
GPIO.setup(pin, GPIO.OUT)
GPIO.output(pin, 0)
halfstep_seq = [
[1,0,0,0],
[1,1,0,0],
[0,1,0,0],
[0,1,1,0],
[0,0,1,0],
[0,0,1,1],
[0,0,0,1],
[1,0,0,1]
]
for i in range(256):
for halfstep in range(8):
for pin in range(4):
GPIO.output(control_pins[pin], halfstep_seq[halfstep][pin])
time.sleep(0.001)
GPIO.cleanup()
print "Motor Rotation Completed"
Также в /var/www/html
у меня есть индекс. html и индекс. php страницы:
index.html:
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Smart Light Switch</title>
</head>
<body>
<h1>Smart Light Switch</h1>
<form action="index.php" method="post">
<input type="submit" name="on" value="Turn Lights On">
<input type="submit" name="off" value="Turn Lights Off">
</form>
</body>
</html>
index.php:
<?php
if ($_SERVER['REQUEST_METHOD'] == "POST" and isset($_POST['on']))
{
lightOn();
} elseif ($_SERVER['REQUEST_METHOD'] == "POST" and isset($_POST['off']))
{
lightOff();
}
function lightOn()
{
$command = escapeshellcmd('python stepper.py');
$output = shell_exec($command);
echo "Light Turned On";
}
function lightOff()
{
echo "Light Turned Off";
}
?>
По сути, HTML просто отображает 2 кнопки и при щелчке переходит к файлу php, где функции успешно выполняются. Однако сценарий поворота шагового двигателя не выполняется. Я посмотрел в Интернете, и мне кажется, что у меня есть правильный способ выполнить скрипт python из php, но он не работает.