您的位置:首页 > 其它

用yeelink记录树莓派的工作温度

2016-07-21 15:41 211 查看
原文地址:http://s.mile77.com/?p=2034

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

(1)首先要准备两样东西:

1.可以上网的树莓派一个。

2.物联网的帐号一个,例如 yeelink.net 的帐号。

(2)然后就可以开始了。

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

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

[python] view
plain copy

sudo mkdir /mnt/tmp  

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

[python] view
plain copy

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

这句命令的意思就是把/mnt/tmp挂进内存里,上限是5m,不用就不占空间,更多的资料请搜一下linux 相关的 tmpfs 。挂进内存之后可以用 df 命查看。
测试成功之后我们要树莓派开机自动把文件夹挂进内存。在编辑/etc/fstab

[python] view
plain copy

sudo nano /etc/fstab  

在最后增加一行

[python] view
plain copy

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

然后回车再 Ctrl+X保存退出,这样开机的时候就会自动把文件夹挂进内存。

在pi的目录下(也就是/home/pi)新建 temp.py,这个是用python语言来取得树莓派的内核温度,并保存为一个内容为JSON格式的文本文件。之所以保存为JSON格式,是因为yeelink.net网站的要求,我们要把数值提交给物联网,要按照API接口行事。

[python] view
plain copy

pi@raspberrypi ~ $nano temp.py  

键入以下内容:

[python] view
plain copy

#打开这个文件,内容就是派的内核温度,除以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脚本:

[python] view
plain copy

nano yeelink.sh  

输入内容:

[python] view
plain copy

 #注意这句执行的是/mnt/tmp/下的文件,而不是home/pi/  

sudo python /mnt/tmp/temp.py  

curl --request POST --data-binary @"/mnt/tmp/temp.txt" --header "U-ApiKey:XXXXXXXXXXXXXX" --verbose
 API_地址

记得要把上面的ApiKey和API地址换成你在yeelink.net帐号对应的资料。

API KEY:进入yeelink.net的用户中心,点“帐户”-“我的帐户设置”就可以看到了。

API地址:进入yeelink.net的用户中心,点“我的设备”-“管理设备”,选择对应数值传感器的数据曲线 url就对了。没有传感器就新建一个,这就不多说了。

关于详细的API接口操作,可以点击“用户中心”里“API文档”查阅。
照样保存退出。但是作为.sh文件,必须修改一下属性让它可以被执行。

[python] view
plain copy

sudo chmod +x yeelink.sh  

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

[python] view
plain copy

sudo nano /etc/rc.local  

在exit 0这行之上写上

[python] view
plain copy

sudo cp /home/pi/temp.py /mnt/tmp/  

sudo cp /home/pi/yeelink.sh /mnt/tmp/  

保存退出。

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

[python] view
plain copy

sudo crontab -e  

在最后新增一行:

[python] view
plain copy

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

回车保存退出。

这行代码的意思是每十分钟执行一次/mnt/tmp/yeelink.sh

具体关于cron的运行,启动停止重启之类的操作请自行搜索。

一般来说,把两个文件拷到/mnt/tmp/就可以正常运行了,重启系统也会自动运行。

有兴趣可以来这里围观我家树莓派的体温:
http://www.yeelink.net/devices/3908
后话:本来用Python结合CURL,应该是可以直接提交数值的,用不着保存一个文件再把文件提交给yeelink的,但是我没用过python,又刚刚学linux。先这样吧。




0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: