树莓派-Web控制家电
来源:互联网 发布:kindle买哪款好 知乎 编辑:程序博客网 时间:2024/04/28 13:56
Linux+Raspberry Pi+Python
**给学生做的一个智能家居的教程:
采用树莓派作为服务器,我们通过访问服务器的方法,控制树莓派的I/O口的高低电平,I/O口接上继电器(实现低压控制高压),继电器上你就可以随意接上你想控制的家用电器啦!在网页页面上就可以控制了!**
直接点击页面上的“关闭”、“打开”按钮就可以实现通过网络控制家中的灯了
下面是效果图:
教程
1.安装FLASK
使用Flask(http://flask.pocoo.org/)这个Python 的Web 框架把Raspberry Pi 变为一个动态Web 服务器。在命令行上输入下面的命令安装:
pi@raspberrypi~@sudo pip install flask
2.编写python程序
创建一个名为WebLight.py的文件,写入以下代码:
import RPi.GPIO as GPIOfrom flask import Flask, render_template, requestapp = Flask(__name__)GPIO.setmode(GPIO.BCM)pins = { 24 : {'name' : 'TV', 'state' : GPIO.LOW}, 25 : {'name' : 'Light', 'state' : GPIO.LOW} }for pin in pins: GPIO.setup(pin, GPIO.OUT) GPIO.output(pin, GPIO.LOW)@app.route("/")def main(): for pin in pins: pins[pin]['state'] = GPIO.input(pin) templateData = { 'pins' : pins } return render_template('main.html', **templateData)@app.route("/<changePin>/<action>")def action(changePin, action): changePin = int(changePin) deviceName = pins[changePin]['name'] if action == "on": GPIO.output(changePin, GPIO.HIGH) message = "Turned " + deviceName + " on." if action == "off": GPIO.output(changePin, GPIO.LOW) message = "Turned " + deviceName + " off." if action == "toggle": GPIO.output(changePin, not GPIO.input(changePin)) message = "Toggled " + deviceName + "." for pin in pins: pins[pin]['state'] = GPIO.input(pin) templateData = { 'message' : message, 'pins' : pins } return render_template('main.html', **templateData)if __name__ == "__main__":app.run(host='0.0.0.0', port=80, debug=True)
** 如果我们还想再加一个可以端口控制电器,很简单我们可以这样去添加:
把
pins = { 24 : {'name' : 'TV', 'state' : GPIO.LOW}, 25 : {'name' : 'Light', 'state' : GPIO.LOW} }
改为
pins = { 24 : {'name' : 'TV', 'state' : GPIO.LOW}, 25 : {'name' : 'Light', 'state' : GPIO.LOW} 26 : {'name' : 'Coffee Maker', 'state' : GPIO.LOW} }
3.编写html文件
在WebLight.py 所在的目录下,创建一个名为templates 的子目录。在templates 子目录中,创建一个名为
main.html 的文件并输入以下的代码:
这个HTML 页面模板中所有括号的部分会被解析为变量名,在Python 脚本调用render_template 函数时,会被实际的数据所替换。
<!DOCTYPE html><head><title>家居智能控制</title></head><body><h1>家庭自动化项目</h1><img src="http://www.5qdd.com/files/all/121207/6-12120G43028.jpg" border="0" widgth="440" height="230"></a><h2>学生姓名: <font size ="6" color="red" >张三</font> </h2>{% for pin in pins %}<p>The {{ pins[pin].name }}{% if pins[pin].state == true %} (<a href="/{{pin}}/off">关闭</a>){% else %} (<a href="/{{pin}}/on">打开</a>){% endif %}</p>{% endfor %}{% if message %}<h3>{{ message }}</h3>{% endif %}</body></html>
4.启动服务器
pi@raspberrypi~$sudo python WebLight.py*Running on http://0.0.0.0:80/*Restarting with reloader
最后:把继电器接在控制的I/O上,在局域网内登陆树莓派的IP地址,就实现了网络控制家用电器啦!。。
参考文章
2 0
- 树莓派-Web控制家电
- 手机短信控制家电
- 智能化家电控制
- 智能家居之语音控制家电
- 无线智能报警暨家电控制
- 智能家电之蓝牙控制
- 家电
- 在办公室控制自己家电脑的方法
- 【转】物联网跟我动手做系列教程—第三篇 实验三如何用arduino+ethernet shield与yeelink结合5分钟实现web远程家电控制(代码已更新)
- CSM模式下手机对家用电脑甚至家电的控制[JAVA]
- 手机控制家电开关监听现场定时布撤防全能防盗报警器防盗器
- 还有什么是NFC不能做的吗?松下实现用手机控制家电
- Arduino炫酷应用——家电控制(Yeelink平台)
- 浅析串口WiFi模块控制智能家电的几种方案
- HI3518E网络摄像机烟雾探测报警智能家居的使用(手机APP,RF,红外,家电控制)
- 浅析串口WiFi模块控制智能家电的几种方案
- 浅析串口WiFi模块控制智能家电的几种方案
- 打造低成本智能家居思路总结--如何语音控制房间里的家电
- 剑指offer--数字在排序数组中出现的次数
- Centos 安装Chrome
- 杭电2073 无限的路
- 浅析java归并排序的递归算法和迭代算法
- [授权发表]Shell编程范例之总结篇
- 树莓派-Web控制家电
- 解决oracle服务器和客户端编码不匹配的问题
- css background
- CentOS 安装WordPress
- android中layout_weight的理解
- 杭电2674 N!Again
- C语言字符串和字符串数组的输入赋值
- 第五周项目四——静态成员应用
- 构建linux根文件系统