最近刚用树莓派捣鼓了一个智能家居系统,顺带记录一下代码,免得今后做同一项目时忘了:
首先,新建一个py文件(getdata.py)用于读取yeelink上的指令:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import time
# 设备URI
apiurl = ['这是你的设备状态url‘]
# 用户密码
apiheaders = {'U-ApiKey': 这个不用说,在你自己用户那找'}
while True:
#发送请求
for i in range(X):
#该处循环次数自己设置,即设置平台上有几个开关
r = requests.get(apiurl[i],headers=apiheaders)
# 打印响应内容
print(r.text)
# 转换为字典类型 请注意 2.7.4版本使用r.json()
led = json_load(r)
# {'value':x} x=1打开状态,x=0关闭状态
# 延时1S
time.sleep(1)
延时一秒后这段代码会 重复执行
这段读取yeelink的指令可以见我另外一篇博客: http://blog.csdn.net/topkipa/article/details/25752707
大家写的时候注意缩进,另外pi上的python库中没有requests库,需要自己安装。
接着,再建一个py文件(order.py)用于执行yeelink上的指令,此处,以uart串口与gpio控制为例(我们这里假设平台上开关只有一个):
import getdata.py
import serial
import RPi.GPIO as GPIO
import time
#打开串口
ser=serial.Serial('/dev/ttyAMA0',9600) //这里波特率设置为9600,如果用115200的话会报错
GPIO.setup(11,GPIO.OUT) //调用11口,注意,gpio口只有11,12,13,15,16,18,22口可以用,具体的见pi的端口定义
while True:
if led['value'] == 1:
ser.write('turn on ')
GPIO.output(11, True) //注意,逗号后面有一个空格
time.sleep(2)
GPIO.output(11, False)
time.sleep(2) //这里是控制gpio口输出高低电平,周期为2秒
else:
ser.write('turn off ') //这里是给uart串口那传入一字符串,其中具体穿什么可以自己定串口的通信协议
GPIO.output(11, False)
后记:
整个程序里面的requests库,gpio库,serial库都需要自己下载,pi本身不自带。