PHP有2个控制继电器的按钮

时间:2017-12-10 15:19:36

标签: php raspberry-pi

使用我的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>&nbsp;
<button class="btn" name="LightOFF">Light OFF</button><br><br>
</form>


</html>

我用代码制作了一个nano(最初用于打开和关闭灯光,当然还有继电器,只是编辑了一下因此它会按下按钮时执行我需要的python)并将其放入的/ var / www / html等/

我得到了我应该得到的东西,但按钮不会工作。我可以触摸它们但页面只是刷新而继电器什么都不做。 如果有人可以帮助我,我会感激不尽。谢谢你提前

1 个答案:

答案 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脚本并编写一条消息,您可以在控制台中看到。