使用我的Raspberry PI 3,我试图通过互联网控制双重中继,Python代码没问题,我测试了它们并且它们工作得很好。问题是PHP代码,我不知道如何制作网站。我只想显示2个按钮,一个带有Relay ON,另一个带有Relay OFF,我在互联网上找到一个,这是代码:
<html>
<head>
<meta charset="UTF-8" />
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<?php
if (isset($_POST['LightON']))
{
exec("sudo python /home/pi/relay1on.py");
}
if (isset($_POST['LightOFF']))
{
exec("sudo python /home/pi/relay1off.py");
}
?>
<form method="post">
<button class="btn" name="LightON">Light ON</button>
<button class="btn" name="LightOFF">Light OFF</button><br><br>
</form>
</html>
我用代码制作了一个nano(最初用于打开和关闭灯光,当然还有继电器,只是编辑了一下因此它会按下按钮时执行我需要的python)并将其放入的/ var / www / html等/
我得到了我应该得到的东西,但按钮不会工作。我可以触摸它们但页面只是刷新而继电器什么都不做。 如果有人可以帮助我,我会感激不尽。谢谢你提前
答案 0 :(得分:0)
这是一个php脚本:light.php
<?php
if(isset($_POST['light']) && $_POST['light'] == "on")
{
exec("sudo python /home/pi/relay1on.py");
echo "Light on!";
}
if(isset($_POST['light']) && $_POST['light'] == "off")
{
exec("sudo python /home/pi/relay1off.py");
echo "Light off!";
}
?>
这是index.html页面:
<html>
<head>
<meta charset="UTF-8" />
</head>
<body>
<button id="btnLightON" class="btn">Light ON</button>
<button id="btnLightOFF" class="btn">Light OFF</button>
<script>
var buttonLightON = document.getElementById("btnLightON");
var buttonLightOFF = document.getElementById("btnLightOFF");
buttonLightON.onclick = function()
{
Light(true);
}
buttonLightOFF.onclick = function()
{
Light(false);
}
function Light(b)
{
var http = new XMLHttpRequest();
var url = "light.php";
var params = "";
if(b == true)
{
params = "light=on"
}
else if(b == false)
{
params = "light=off"
}
http.open("POST", url, true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.onreadystatechange = function()
{
if(http.readyState == 4 && http.status == 200) {
console.log(http.responseText);
}
}
http.send(params);
}
</script>
</body>
</html>
我使用XMLHttpRequests创建它,因此它将执行php代码而无需重新加载页面。 在Light ON按钮的情况下,它向参数light = on的light.php发送POST请求,而在另一个按钮的情况下,除了参数light = off之外发送同样的事情。 php代码将为每个案例执行适当的python脚本并编写一条消息,您可以在控制台中看到。