这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 用物联网记录树莓派的工作温度

共3条 1/1 1 跳转至

用物联网记录树莓派的工作温度

高工
2014-07-30 08:53:15     打赏

树莓派可以挖矿,当然也可以顺便做其它事情,装个温度传感器就可以定时记录温度了,只是在附近电子市场转了一圈没买到合适的温度传感器,网上买还没邮费那么贵,而且就是玩玩,也没什么必要。既然树莓派的内部有个传感器可以记录内核温度,就用这个来玩吧。

首先要准备两样东西:
1.可以上网的树莓派一个。
2.物联网的帐号一个,例如 yeelink.net 的帐号。

然后就可以开始了。
由于树莓派没有硬盘,是用SD卡当硬盘用的,所以为了避免擦写过于频繁,我们在内存里开辟一个小区域专用来存放要运行的文件和中间文件。

先在/mnt 下新建一个文件夹

1
 sudo mkdir /mnt/tmp

然后把这个文件夹挂进内存里

1
 sudo mount -t tmpfs -o size=5m  tmpfs /mnt/tmp

这句命令的意思就是把/mnt/tmp挂进内存里,上限是5m,不用就不占空间,更多的资料请搜一下linux 相关的 tmpfs 。挂进内存之后可以用 df 命查看。

测试成功之后我们要树莓派开机自动把文件夹挂进内存。在编辑/etc/fstab

1
 sudo nano /etc/fstab

在最后增加一行

1
 tmpfs /mnt/tmp tmpfs size=5m 0 0

然后回车再 Ctrl+X保存退出,这样开机的时候就会自动把文件夹挂进内存。
在pi的目录下(也就是/home/pi)新建 temp.py,这个是用python语言来取得树莓派的内核温度,并保存为一个内容为JSON格式的文本文件。之所以保存为JSON格式,是因为yeelink.net网站的要求,我们要把数值提交给物联网,要按照API接口行事。

1
 pi@raspberrypi ~ $nano temp.py

键入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
 #打开这个文件,内容就是派的内核温度,除以1000就是摄氏度。 tfile = open("/sys/class/thermal/thermal_zone0/temp")
text = tfile.read()
tfile.close() #除以1000就是摄氏度的数值。 temperature = float(text)/1000 #作些处理,整容成JSON格式,并让数值保留小数点后一位。 res = '{"value":%.1f}' %temperature #保存到/mnt/tmp/temp.txt output = open('/mnt/tmp/temp.txt', 'w')
output.write(res)
output.close

照例Ctrl+X 保存退出。

然后再新建一个sh脚本:

1
 nano yeelink.sh

输入内容:

1
2
3
 #注意这句执行的是/mnt/tmp/下的文件,而不是home/pi/
sudo python /mnt/tmp/temp.py
curl --request POST --data-binary @"/mnt/tmp/temp.txt" --header "U-ApiKey:XXXXXXXXXXXXXX" --verbose http://api.yeelink.net/v1.0/device/XXXX/sensor/XXXX/datapoints

记得要把上面的ApiKey和API地址换成你在yeelink.net帐号对应的资料。
API KEY:进入yeelink.net的用户中心,点“帐户”-“我的帐户设置”就可以看到了。
API地址:进入yeelink.net的用户中心,点“我的设备”-“管理设备”,选择对应数值传感器的数据曲线 url就对了。没有传感器就新建一个,这就不多说了。
关于详细的API接口操作,可以点击“用户中心”里“API文档”查阅。

照样保存退出。但是作为.sh文件,必须修改一下属性让它可以被执行。

1
 sudo chmod +x yeelink.sh

每执行一次,就读一次内核温度后上传到yeelink。

OK了,最后就是设置系统启动的时候把 temp.py 和 yeelink.sh 从 home/pi/ 拷贝到 /mnt/tmp/,同时每10分钟执行一次yeelink.sh

1
 sudo nano /etc/rc.local

在exit 0这行之上写上

1
2
 sudo cp /home/pi/temp.py /mnt/tmp/ sudo cp /home/pi/yeelink.sh /mnt/tmp/

保存退出。

最后启用cron来每十分钟执行一次,cron是linux内置进程,专门掐时敲钟的干活。

1
 sudo crontab -e

在最后新增一行:

1
 */10 * * * * /mnt/tmp/yeelink.sh

回车保存退出。
这行代码的意思是每十分钟执行一次/mnt/tmp/yeelink.sh
具体关于cron的运行,启动停止重启之类的操作请自行搜索。
一般来说,把两个文件拷到/mnt/tmp/就可以正常运行了,重启系统也会自动运行。

后话:本来用python结合CURL,应该是可以直接提交数值的,用不着保存一个文件再把文件提交给yeelink的,但是我没用过python,又刚刚学linux。先这样吧。


院士
2014-08-08 23:11:43     打赏
2楼

又是可爱的python语言。

二年前就觉得这个东西挺难的,要消耗掉我太多的脑细胞 现在看来,已经到了不得不学的地步了。


工程师
2014-08-09 00:49:53     打赏
3楼
py语言挺有意思的,我觉得嵌入式有大用啊。

共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]