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