Nova Kwok's Awesome Blog

用树莓派快速搭建一个有 WebUI 的 LED 灯光控制

谢邀!

Allen 同学一直说想做智能家居方向的东西,但是半个学期过去了也不见他有什么起色,遂从他那儿偷了两根杜邦线,自己来玩玩。

连接信息:GPIO(4) -> 电阻 -> LED -> GPIO(5)(GND) 用 PHP 弄了个简易的 WebUI,按了按钮之后就调用同目录下的 Python 脚本 led4on.py

Python GPIO Controller

led4on.py

from gpiozero import LED
from signal import pause
from time import sleep

l = LED(4)
l.on()
pause()

WebUI

index.php 部分代码:

<div class="container">
        <h1 class="m-100">RPI</h1>
        <hr>
<form action="index.php"method="post">
    <input type="hidden"name="status"value="on"class="form-control">
    <button class="btn btn-lg btn-primary btn-block"input type="submit"> 开灯 </button>
</form>
<br>
<form action="index.php"method="post">
    <input type="hidden"name="on"value="off"class="form-control">
    <button class="btn btn-lg btn-primary btn-block"input type="submit"> 关灯 </button>
</form>
<br>
<form action="index.php"method="post">
    <input type="hidden"name="on"value="blink"class="form-control">
    <button class="btn btn-lg btn-primary btn-block"input type="submit"> 闪!</button>
</form>
<?php
if($_POST['status'] =="on")
{$tmp = `python3 led4on.py`;}
else if($_POST['status'] =="off")
{$tmp = `python3 led4off.py`;}
else if($_POST['status'] =="blink")
{$tmp = `python3 led4blink.py`;}
?>
</div> <!-- /container -->

这样就实现了一个非常非常简易的(且 Broken)的 IoT 设备了。 已知问题:

  • l.on() 之后灯只会闪一下,如果加了 pause() 的话脚本就会挂起并且没法正常处理关灯的指令,不过仅仅是一个 PoC 而已,暂时还不需要考虑这么多。
  • 设备必须再一个局域网中,没有中间设备中转,如果需要真远程控制的话还是需要一台有公网 IP 的服务器。

这简直一点技术含量都没有啊,Allen 你平时在做什么…

#Chinese #RaspberryPi