实现家庭室内温度远程监控只是“智能家居”的初步,目的是下班前如果发现家里温度过高,可提前用手机发送指令提前5-10分钟打开空调降温(如何通过手机发送指令控制空调有机会在进行介绍)。
一、硬件准备
1、树莓派(Raspberry Pi)一个
2、DS18B20温度传感器一个(淘宝大概5元左右)
3、4.7kΩ电阻一个 或 DS18B20模块一个(笔者用,淘宝1.5元一个,其实就是店家帮忙把电阻焊好了,接线稍好看些)。
4、杜邦线三根(双头母)
二、接线方式(如图所示)
![](https://img-blog.csdnimg.cn/img_convert/c115c6660b6f62dac46f959cc2b620f3.png)
三、确认硬件接线是否正确并生效,并读取温度
1、首先升级内核(可忽略,但如果版本较老,可能影响设备读取)
1 2 |
|
修改配置:
1 |
|
在最后一行手动添加这个,保存并重启树莓派。
1 |
|
根据官方的说法,在2015-02-16之后的Raspbain版本,为了防止GPIO的冲突,使用了新的dt策略,查看 /boot/overlay/readme
2、确认设备是否生效
1 2 3 4 |
|
显示结果:
1 2 3 |
|
28-00000494cb79就是笔者外接的温度传感器设备,但并不是每个客户端都显示一样的,这个是传感器的序列号。
3、查看当前温度
1 2 |
|
显示结果:
1 2 |
|
第二行的t=23000就是当前的温度值,要换算成摄氏度,除以1000,即当前温度为23000/1000=23摄氏度。
四、用python读取温度值
文件存放:/home/pi/temperature.py
内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
在命令行运行,即可得出结果数值:
python /home/pi/temperature.py
五、上报到yeelink
yeelink是国内比较知名的免费物联网数据平台,国外有COSM(https://cosm.com)。
申请yeelink账号及添加设备和传感器,以及API的学习,本文跳过,请大家自行去学习一下。
根据yeelink API的规则,我们需要提供一个文本文件,内容为一段JSON,如下:
1 2 3 4 |
|
若未指定timestamp, 服务器会自动加上当前时间,所以本文的操作不添加该字段
1、修改python,将温度值用JSON格式保存到一个文本文件,全部如下:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
python将温度值写入:/home/pi/datafile.txt
2、新增yeelink.sh脚本
文件位置:/home/pi/yeelink.sh
内容如下:
1 2 |
|
将U-ApiKey:XXXXXXXXXXXXXXXX替换为自已账户的API Key。
后面的URL也需要替换为自己申请的传感器URL。
3、添加到计划任务
1 2 3 4 5 6 |
|
完了!我的温度传感器数据展示页面:http://www.yeelink.net/devices/1969
参考文档:
http://www.cl.cam.ac.uk/freshers/raspberrypi/tutorials/temperature/
http://blog.turningdigital.com/2012/09/raspberry-pi-ds18b20-temperature-sensor-rrdtool/
http://webshed.org/wiki/RaspberryPI_DS1820
新系统更新后gpio读不了w1了的解决办法:
趣小组 - 趣小组