1、编写脚本
cd /home/pi/test
nano post_hc_sr04.py
代码如下:
-
# -*- coding:utf-8 -*-
-
-
import RPi.GPIO as GPIO
-
import time
-
import requests
-
import json
-
-
def checkdist():
-
-
#发出触发信号
-
GPIO.output(2,GPIO.HIGH)
-
#保持10us以上(我选择15us)
-
time.sleep(0.000015)
-
GPIO.output(2,GPIO.LOW)
-
while not GPIO.input(3):
-
pass
-
#发现高电平时开时计时
-
t1 = time.time()
-
while GPIO.input(3):
-
pass
-
-
#高电平结束停止计时
-
t2 = time.time()
-
#返回距离,单位为米
-
return (t2-t1)*340/2
-
GPIO.setmode(GPIO.BCM)
-
#第3号针,GPIO2
-
GPIO.setup(2,GPIO.OUT,initial=GPIO.LOW)
-
#第5号针,GPIO3
-
GPIO.setup(3,GPIO.IN)
-
-
time.sleep(2)
-
try:
-
while True:
-
# 设备URI
-
apiurl = 'http://api.yeelink.net/v1.1/device/16485/sensor/28542/datapoints'
-
# 用户密码, 指定上传编码为JSON格式
-
apiheaders = {'U-ApiKey': '9908e3876669432610e9a3ac2fbxxxxx', 'content-type': 'application/json'}
-
#获取测量距离
-
distance=checkdist()
-
print 'distance is %0.2f m' %distance
-
payload = {'value': distance}
-
#发送请求,10s的频率
-
r = requests.post(apiurl, headers=apiheaders, data=json.dumps(payload))
-
time.sleep(10)
-
except KeyboardInterrupt:
-
GPIO.cleanup()
2、修改bootup.sh
-
#!/bin/bash
-
cd /home/pi/test
-
#运行定时发送温度到yeelink脚本
-
python post_temp_bytime &
-
#运行定时发送距离到yeelink脚本
-
python post_hc_sr04.py
第6行为加入的代码
由于bootup.sh再之前已经加到rc.local中,所以这里只需要重启就可以了。
3、reboot
4、重启后,看到yeelink接收到的距离数据和cpu温度数据
5、将超声波传感器对准门的位置,当有人进来后就会检测的距离的变化,如果本人不在家发现距离不对,说明进贼了!
阅读(2124) | 评论(0) | 转发(0) |