树莓派-Web控制家电
2015-04-12 19:18
811 查看
Linux+Raspberry Pi+Python
**给学生做的一个智能家居的教程:
采用树莓派作为服务器,我们通过访问服务器的方法,控制树莓派的I/O口的高低电平,I/O口接上继电器(实现低压控制高压),继电器上你就可以随意接上你想控制的家用电器啦!在网页页面上就可以控制了!**
直接点击页面上的“关闭”、“打开”按钮就可以实现通过网络控制家中的灯了
下面是效果图:
使用Flask(http://flask.pocoo.org/)这个Python 的Web 框架把Raspberry Pi 变为一个动态Web 服务器。在命令行上输入下面的命令安装:
2.编写python程序
** 如果我们还想再加一个可以端口控制电器,很简单我们可以这样去添加:
把
改为
3.编写html文件
在WebLight.py 所在的目录下,创建一个名为templates 的子目录。在templates 子目录中,创建一个名为
main.html 的文件并输入以下的代码:
这个HTML 页面模板中所有括号的部分会被解析为变量名,在Python 脚本调用render_template 函数时,会被实际的数据所替换。
4.启动服务器
最后:把继电器接在控制的I/O上,在局域网内登陆树莓派的IP地址,就实现了网络控制家用电器啦!。。
参考文章
**给学生做的一个智能家居的教程:
采用树莓派作为服务器,我们通过访问服务器的方法,控制树莓派的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 GPIO from flask import Flask, render_template, request app = 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地址,就实现了网络控制家用电器啦!。。
参考文章
相关文章推荐
- 树莓派的玩具:用三轴加速度计来控制web页面上的飞机姿态
- 使用Python简单的实现树莓派的WEB控制
- 树莓派实现web控制GPIO教程(安装方法更简单,网页效果更好)
- 使用Python简单的实现树莓派的WEB控制
- 树莓派-通过Web控制GPIO针脚输出高低电平(改进版)
- 树莓派-通过Web控制GPIO针脚输出高低电平
- (14)树莓派B+使用L298N驱动控制四驱车并实现一个简单的web控制端
- 树莓派搭WEB控制点灯(微信点灯,网页控制电机等)
- 使用Python简单的实现树莓派的WEB控制
- 树莓派--web控制gpio
- 【转】物联网跟我动手做系列教程—第三篇 实验三如何用arduino+ethernet shield与yeelink结合5分钟实现web远程家电控制(代码已更新)
- 通过WEB控制树莓派RGB灯光
- 树莓派搭建nginx服务器实现PHP web控制树莓派GPIO
- 安卓web控制树莓派LED开关
- 轻松实现UltraWebGrid中的分页控制
- 解决WEB页面上"焦点控制"一法
- 用web.xml控制Web应用的行为
- 用web.xml控制Web应用的行为
- 用ASP编程控制在IIS建立Web站点