树莓派-Web控制家电

给学生做的一个智能家居的教程: 采用树莓派作为服务器,我们通过访问服务器的方法,控制树莓派的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地址,就实现了网络控制家用电器啦!。。

时间: 2024-08-25 22:43:58

树莓派-Web控制家电的相关文章

树莓派GPIO控制

陈拓[email protected] 2018.06.09/2018.06.10 0.  概述 本文介绍树莓派 Zero W的GPIO控制,并用LED看效果. 0.1 树莓派GPIO编号方式 功能物理引脚 从左到右,从上到下:左边基数,右边偶数:1-40 BCM 编号侧重CPU寄存器,根据BCM2835的GPIO寄存器编号. wiringPi 编号侧重实现逻辑,把扩展GPIO端口从0开始编号,这种编号方便编程.如图 WiringPi一栏. 操作GPIO时一定先要清楚使用那一套编号. 1.  准

(14)树莓派B+使用L298N驱动控制四驱车并实现一个简单的web控制端

在系列文章第12篇中提到了L298N,它是H桥双路直流电机驱动,可以使双路直流电机实现正转或者反转,并且通过ENDA和ENDB输入PWM信号,还可以实现加减速.本文用2块L298N驱动板成功驱动了4个直流电机,实现了4轮同时向前.向后以及前向左转.前向右转甚至是后向左转和后向右转的功能,最后通过python的BaseHTTPServer模块(python3中是http.server模块)实现了一个控制小车的HTTP接口,另外用lighttpd启动一个网页,通过网页中的ajax调用控制小车的HTT

树莓派 GPIO 控制

Raspberr Pi 官方提供了GPIO的usage,具体位置 https://www.raspberrypi.org/documentation/usage/gpio/ 这里整理了一下使用c语言做开发的实际例子. 常用开源工程简介 树莓派内核中已经编译自带了 gpio 的驱动,我们常通过一些第三方写好的库函数来完成具体的操作,比较常见的操作库函数有: python GPIO 开发语言--python 简单介绍--树莓派官方资料中推荐且容易上手.python GPIO 是一个小型的 pytho

VMware ESXI6.0 升级u2 u3失败问题解决,并开启web控制

1.确保ESXi主机已启用ssh2.从VMware官网获取补丁包u1 u2 u3https://my.vmware.com/group/vmware/patch#search使用VMware vSphere Client上传补丁包到存储上,执行df –h查看路径 升级命令:esxcli software vib update -d=/vmfs/volumes/datastore1/update-from-esxi6.0-6.0_update01.zip 升级u1包直接成功.升级u2错误提示 官方

简单的web控制shell脚本方法

1)查看php运行用户: <?php system('id -a'); ?> 一般php运行用户是apache 2)给apache用户做密钥信任: 2.1) 先看看apache用户的信息: # su - apache This account is currently not available. # cat /etc/passwd|grep apache apache:x:48:48:Apache:/var/www:/sbin/nologin 改为: apache:x:48:48:Apach

树莓派python 控制GPIO

sudo pip install rpi.gpio #!/usr/bin/env python # encoding: utf-8 import RPi.GPIO as GPIO import time # 指定GPIO口的选定模式为GPIO引脚编号模式 GPIO.setmode(GPIO.BCM) # 指定GPIO14的模式为输出模式,且初始状态为低电平. # 如果上面GPIO口的选定模式指定为主板模式的话,这里就应该指定8号而不是14号. GPIO.setup(14, GPIO.OUT,in

在树莓派上用Python控制LED

所需材料 一个已经安装配置好了的树莓派 连接控制树莓派所用的其他必须设备 200Ω电阻 x 8 led x 8 面包板及连接线若干 电路连接 电路图 按照电路图所示,在面包板上进行连接. 编写程序 安装RPi.GPIO 首先得确定RPi.GPIO已安装.最新的系统已经自带了,如果没有的可以使用命令 sudo apt-get update sudo apt-get install python-dev python-rpi.gpio 来安装 编写模块 用文本编辑器新建一个led.py文件.(高手们

(12)树莓派B+ GPIO控制四驱车

吐槽一下:本人还是个小白,CSDN文章分类不知道选哪个 如果你手上的材料是五线四相步进电机驱动板ULN2003+五线四相步进电机28BYJ-48-5V,那么应该算是非常幸运,因为这两样是配套的,一个驱动板可以接一个步进电机,实现正转.反转.加速.减速的功能(个人猜测).很多人因为在购置树莓派外围设备时,没有考虑清楚,随随便便就买了电机和驱动板,导致无法正常驱动电机,譬如我买的是带4个直流电机的四驱车,其中的电机只有两条线接正极和负极,以及ULN2003五线四相步进电机驱动板,这两样是不配套的,不

&lt;&lt;开源硬件创客 15个酷应用玩转树莓派&gt;&gt;

本书共分18章,前3章是本书的基础章节,主要介绍了树莓派的一些基本情况和基本操作,来让读者了解树莓派的前世今生,掌握树莓派基本的使用方法.第4~18章主要介绍15个以树莓派为载体的酷炫应用,大家可以按照本书一步一步来完成个人网站.影音盒子.下载机.私有云.智能路由器.智能家居等应用.附录部分,包含了树莓派常用的操作命令和一些使用技巧,方便大家更好地使用树莓派. 本书适合开源硬件爱好者学习.程序员.计算机软硬件爱好者,以及对树莓派感兴趣的读者阅读,也适合作为树莓派相关实践课程的基础教程. 作者简介