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

谢邀!

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

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

Python GPIO Controller

led4on.py

1
2
3
4
5
6
7
from gpiozero import LED
from signal import pause
from time import sleep

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

WebUI

index.php 部分代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<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 你平时在做什么…


我的博客使用了Disqus评论框,如果你看不到评论框,那么多半Disqus服务在你所在的地区被墙,请使用代理访问。