通过yeelink平台监控树莓派温度,是很多派友入门第一课。作为一名刚入手树莓派裸机不久的新手,在没有其他硬件支持的情况,通过yeelink平台来监控树莓派CPU温度变化,也是我学习树莓派、学习智能硬件的第一步。

实现思路

“通过yeelink平台监控树莓派CPU温度变化”的实现思路很简单,编写一段Python小程序(SNAPPY UBUNTU CORE系统中默认安装了Python 2.7.9),获取树莓派的CPU温度并将其上传到yeelink平台上,然后在线监控树莓派的温度变化,如果温度过高则发送邮件提醒。

实现步骤

第1步:编写Python程序,每隔60秒获取树莓派CPU温度

这段程序实现起来比较简单,将以下代码保存为01cpu_temp.py,通过python 01cpu_temp.py即可执行。

#coding=utf-8
import time #得到CPU温度
def get_cpu_temp():
cpu_temp_file = open( "/sys/class/thermal/thermal_zone0/temp" )
cpu_temp = cpu_temp_file.read()
cpu_temp_file.close()
return float(cpu_temp)/1000 def main():
while True:
strftime=time.strftime("%Y-%m-%dT%H:%M:%S")
print "time:",strftime
print "cpu_temp:",get_cpu_temp()
#休眠60秒
time.sleep(60) if __name__ == '__main__':
main()

第2步:成为yeelink平台开发者,并完成树莓派设备及传感器的配置

1)注册用户,获得API KEY

yeelink是一个免费开放的物联网云平台,主要提供传感器数据的接入,存储和展现服务,为所有的开源软硬件爱好者、制造型企业,提供一个物联网项目的平台,使得硬件和制造业者能够在不关心服务器实现细节和运维的情况下,拥有交付物联网化的电子产品的能力。对于爱好者和开发者来说,Yeelink提供了一系列的工具包和开发包,使得小朋友都能够使用Yeelink制作物联网玩具,人人都可以成为梦想实现者,使用从Yeelink网站上下载的代码,结合开源硬件或Yeelink专用硬件,几乎无需任何编程,就能制作出相当复杂的iPhone遥控开关,遥控热水器,或者是PM2.5检测器之类的DIY作品。

yeelink平台地址是http://www.yeelink.net/,注册很简单,注册之后,我们可以在“账户设置”中获得专属的API KEY。

API KEY非常重要,下一步修改python程序上传数据到yeelink平台会用到。

2)新增设备

在“我的设备”中增加新的设备,我新增的自用设备名为“Raspberry Pi 2 Model B”。

3)新增传感器

在“管理设备”页面中,新增数值型传感器,并命名为“CPU温度传感器”。

新增完传感器之后,我们会在传感器的右边,数据曲线下方发现一条URL信息:

URL: http://api.yeelink.net/v1.0/device/19283/sensor/33814/datapoints

这是一条非常重要的信息,下一步修改python程序上传数据到yeelink平台会用到。

http://api.yeelink.net/v1.0/:表示的是API版本为v1.0;

device/19283:表示我们刚才添加的设备编号是19283;

sensor/33814:表示我们刚才添加的传感器编号是22814;

datapoints:表示数据点集合,一个datapoint是由key和value组成的键值对,数值型传感器的key为timestamp, value为数值;

更详细的我们可以查看yeelink平台的API文档http://www.yeelink.net/develop/api。

4)新增传感器触发动作

新增传感器触发动作,实现CPU温度预警:在数据大于48的时候,通过邮件通知我“树莓派温度超过了48摄氏度,需要降温!!!!”。

第3步:修改python小程序,定时上传数据到yeelink平台

相对于第1步的程序,主要增加yeelink api配置和upload_cpu_temp_to_yeelink()两段代码。

将此程序命名为02upload_cpu_temp_to_yeelink.py,然后通过python 02upload_cpu_temp_to_yeelink.py执行,即可每隔60秒向yeelink平台上传CPU温度数据。

#coding=utf-8
import time
import json
import requests #yeelink api配置
api_url='http://api.yeelink.net/v1.0'
api_key='api_key' #请填入专属的api key
api_headers={'U-ApiKey':api_key,'content-type': 'application/json'}
raspi_device_id=19283
cpu_sensor_id=33814 #得到CPU温度
def get_cpu_temp():
cpu_temp_file = open( "/sys/class/thermal/thermal_zone0/temp" )
cpu_temp = cpu_temp_file.read()
cpu_temp_file.close()
return float(cpu_temp)/1000 #上传CPU温度到yeelink
def upload_cpu_temp_to_yeelink():
url=r'%s/device/%s/sensor/%s/datapoints' % (api_url,raspi_device_id,cpu_sensor_id)
strftime=time.strftime("%Y-%m-%dT%H:%M:%S")
print "time:",strftime
cpu_temp=get_cpu_temp()
print "cpu_temp:",cpu_temp
data={"timestamp":strftime , "value": cpu_temp}
res=requests.post(url,headers=api_headers,data=json.dumps(data))
print "status_code:",res.status_code def main():
while True:
upload_cpu_temp_to_yeelink()
#休眠60秒
time.sleep(60) if __name__ == '__main__':
main()

第4步:在线查看CPU温度数据以及温度预警

通过http://www.yeelink.net/devices/19283(可修改设备编号),即可在线查看树莓派的温度数据。

图中的波峰超过了50度,是因为我使用了吹风机来临时增加树莓派的温度,从而达到触发温度超过48度时候发送邮件预警的目的。

但是今天不知道yeelink服务器还是QQ邮箱出了什么原因,并没有收到邮件预警,只好先粘贴出一张前几天实现截图来证明。

学习总结

该例子虽然简单,但是整个过程以及yeelink平台架构值得我们深入研究与学习,未来一定的物联网的时代、云数据时代。

Python入门与进阶学习:http://www.imooc.com/course/list?c=python

理解restful架构:http://kb.cnblogs.com/page/114905/

通过yeelink平台监控树莓派CPU温度变化的更多相关文章

  1. 使用Java编写一个简单的Web的监控系统cpu利用率,cpu温度,总内存大小

    原文:http://www.jb51.net/article/75002.htm 这篇文章主要介绍了使用Java编写一个简单的Web的监控系统的例子,并且将重要信息转为XML通过网页前端显示,非常之实 ...

  2. NodeMCU透传数据到TcpServer和Yeelink平台

    准备工作 1. NodeMCU  LUA ESP8266 CP2102  WIFI Internet Development Board,仔细看背面可以看出自带cp2102模块,可以通过普通的手机充电 ...

  3. 基于 HTML5 的工业互联网云平台监控机房 U 位

    前言 机柜 U 位管理是一项突破性创新技术--继承了 RFID 标签(电子标签)的优点的同时,完全解决了 RFID 技术(非接触式的自动识别技术)在机房 U 位资产监控场应用景中的四大缺陷,采用工业互 ...

  4. 使用python函数持续监控电脑cpu使用率、内存、c盘使用率等

    方法一: # import time 导入time模块 # import psutil 导入psutil模块 # def func(): # while True: ------->持续监控得w ...

  5. 阿里云物联网平台体验(树莓派+Python篇)

    阿里云物联网平台体验(树莓派+Python篇) 虽然对阿里云物联网平台比较熟悉了,从一开始就有幸参与了飞凤平台(Link Develop 一站式开发平台的前身)的一些偏硬件接入的工作.但是同时也见证了 ...

  6. NodeMCU入门(1):刷入At固件,透传数据到TcpServer和Yeelink平台

    准备工作 1. NodeMCU  LUA ESP8266 CP2102  WIFI Internet Development Board,仔细看背面可以看出自带cp2102模块,可以通过普通的手机充电 ...

  7. Linux系统和性能监控之CPU篇

    Linux系统和性能监控之CPU篇 性能优化就是找到系统处理中的瓶颈以及去除这些的过程.本文由sanotes.net站长tonnyom在2009年8月翻译自Linux System and Perfo ...

  8. Linux 性能监控之CPU&内存&I/O监控Shell脚本2

    Linux 性能监控之CPU&内存&I/O监控Shell脚本2   by:授客 QQ:1033553122 思路: 捕获数据->停止捕获数据->提取数据 备注:一些命令的输 ...

  9. Linux 性能监控之CPU&内存&I/O监控Shell脚本1

    Linux 性能监控之CPU&内存&I/O监控Shell脚本1   by:授客 QQ:1033553122   #!/bin/bash # 获取要监控的本地服务器IP地址 IP=`if ...

随机推荐

  1. C#跨线程操作控件

    1.首先通过按键创建子线程: 创建子线程,子线程调用changeText方法. private void btnOK_Click(object sender, EventArgs e) { Threa ...

  2. NGUI实现Sprite裁切成圆形或者椭圆形(不完美)

    先上效果 有个问题就是,UISprie用的Atlas的公用的材质,无法从当前要绘制的片段shader上获得uv百分比,所以当有其他的Sprite使用相同的Atlas时显示就有问题 其实Mesh是可以接 ...

  3. Linux释放内存空间

    Linux服务器运行一段时间后,由于其内存管理机制,会将暂时不用的内存转为buff/cache,这样在程序使用到这一部分数据时,能够很快的取出,从而提高系统的运行效率,所以这也正是linux内存管理中 ...

  4. MySQL 主键范围查找问题

    背景: 今天遇到一个主键范围查找的情况: id是主键,每次取10000.上面的这个查询id范围越往后面消耗的时间越久.通过id自增主键去查找数据应该不会出现这个现象的.以前都没有注意这个奇怪的现象,现 ...

  5. Linux内存管理原理

    本文以32位机器为准,串讲一些内存管理的知识点. 1. 虚拟地址.物理地址.逻辑地址.线性地址 虚拟地址又叫线性地址.linux没有采用分段机制,所以逻辑地址和虚拟地址(线性地址)(在用户态,内核态逻 ...

  6. 如何让数据库在每天的某一个时刻自动执行某一个存储过程或者某一个sql语句

    这就要涉及到代理的知识了哦,首先我们要启动代理服务.

  7. 执行HQL语句出现Remember that ordinal parameters are 1-based

    今天使用hibernate出个奇怪的错误,第一次碰到 Remember that ordinal parameters are 1-based! 原因是 问题发生的原因是:hql语句里不需要参数,却添 ...

  8. 用Python套接字创建HTTP客户与服务器程序

    最近在学习python,网络编程中,python寥寥几句,就可以创建一个服务端和客户端程序: 服务端: import sockets = socket.socket()host = socket.ge ...

  9. 129. Sum Root to Leaf Numbers

    题目: Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a nu ...

  10. Mysql游标

    14.6.6.1 Cursor CLOSE Syntax 14.6.6.2 Cursor DECLARE Syntax 14.6.6.3 Cursor FETCH Syntax 14.6.6.4 Cu ...