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



使用我的Raspberry Pi 3,我试图通过Internet控制双重继电器,Python代码还可以,我对它们进行了测试,它们的工作正常。问题是PHP代码,我不知道如何制作网站。我只想显示2个按钮,一个带有继电器的按钮,一个带有继电器的按钮,我在互联网上找到了一个按钮,这是代码:

<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>

我用代码制作了一个纳米(最初是为了打开和关闭灯,当然,接力器只是进行了一些编辑,因此它将在按下按钮时执行我需要的python)并将其放入/var/www/html/

我得到了我应该得到的东西,但是按钮无法正常工作。我可以触摸它们,但是页面只是刷新,接力赛无需做任何事情。如果有人可以帮助我,我会提前感谢

这是一个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.php,而对于另一个按钮,则除了参数light = off外,同一件事。PHP代码将为每种情况执行适当的Python脚本并写一条消息,您可以在控制台中看到。

最新更新