树莓派学习笔记(4):利用yeelink实现在线硬件状态监控
转载请注明:@小五义http://www.cnblogs.com/xiaowuyi
一、实验目的
本文实验目的是定时获取树莓派CPU的温度、占用率及内存占用率,并其结果上传到yeelink网站,实现在线监控。
二、yeelink的简单介绍
1、注册yeelink。
2、进入用户中心,获取API key,如下图。

3、添加设备:进入我的设备--增加新设备--填写后(注意这里的设备先自备设备),会生成新设备。

4、添加传感器

这里分数值型传感器、开关、泛传感器等,具体意思可参考API文档。本文只使用了数值型传感器。
三、获取CPU温度、占用率及内存使用情况及准备知识
1、CPU温度:vcgencmd measure_temp
2、CPU占用情况:top命令
3、内存使用情况也是通过top命令获取
4、利用python的requests模块将获取的数据post到yeelink网站。这里用的对应传感器的Url及ID
,具体获取方法,见下图:

这里是CPU温度传感器(我用temp来命令的)的url和ID(25322)。
注:requests模块的安装可参考http://www.zhidaow.com/post/python-requests-install-and-brief-introduction或者http://www.python-requests.org/en/latest/。
四、代码实现
python2.7环境下实验成功:
import os
import requests
import json,time,string #获取cpu温度
def getcputemperature():
cputemp=os.popen('vcgencmd measure_temp').readline()
sumcputemp=cputemp.replace("temp=","").replace("'C\n","")
return sumcputemp #获取CPU及内存使用情况
def getcpuused():
return(os.popen("top -n1")) #apikey为用户id
apiheaders={'U-ApiKey':'0e77243b68ff5f7fd65e19261133330d','content-type': 'application/json'} #CPU温度使用 25322 传感器
cputemp_apiurl="http://api.yeelink.net/v1.0/device/14778/sensor/25322/datapoints" #cpu 使用情况使用 25356 传感器
cpuused_apiurl="http://api.yeelink.net/v1.0/device/14778/sensor/25356/datapoints" #内存占用率使用 25357 传感器
memeryused_apiurl="http://api.yeelink.net/v1.0/device/14778/sensor/25357/datapoints" if __name__=='__main__':
while 1:
#上传cpu温度
cpu_temp=getcputemperature()
cputemp_payload={'value':cpu_temp}
r=requests.post(cputemp_apiurl, headers=apiheaders, data=json.dumps(cputemp_payload))
print cpu_temp #上传cpu占用率及内存使用率
tempcpuused=getcpuused() for cpuline in tempcpuused: if cpuline[:3]=="%Cp":
#cpulineused=cpuline.split(":")[1].split(",")[0].strip("us").split(" ")[1] cpulineused=cpuline.split(":")[1].split(",")[0].split(" ")[-2]
cpuused_payload={'value':cpulineused}
r=requests.post(cpuused_apiurl, headers=apiheaders, data=json.dumps(cpuused_payload))
print "CPU USED %:"+cpulineused
if "Mem:" in cpuline:
#提取数值,仅用字符串操作时,发现在数值前后有多个不可见字符,这里没怎么搞清楚这些字符是些什么
memlineused=cpuline.split(":")[1].split(",")[1].strip("used").split(" ")[-2] memlinetotal=cpuline.split(":")[1].split(",")[0].strip("total").split(" ")[-2] memeryusedratio=float(str(memlineused))/float(str(memlinetotal))
memeryusedratiostr="%.2f"%(memeryusedratio*100)
memeryused_payload={'value':memeryusedratiostr}
r=requests.post(memeryused_apiurl, headers=apiheaders, data=json.dumps(memeryused_payload)) print memeryusedratiostr
print "================"
time.sleep(20)
五、运行结果
终端显示结果:

yeelink显示结果:
1、CPU 温度结果

2、CPU占用率结果

3、内存占用率结果

程序运行时间较短,所以以上曲线仅后半部分为测量情况。
>>欢迎加入讨论群:64770604
树莓派学习笔记(4):利用yeelink实现在线硬件状态监控的更多相关文章
- 树莓派学习笔记(5):成功实现NAS家庭服务器(流媒体播放、文件共享及下载机)
转载请注明:@小五义http://www.cnblogs.com/xiaowuyiQQ群:64770604 一.家庭服务器实现的主要功能 1.流媒体播放服务:利用DLNA实现电视.手机.电脑播放其上面 ...
- 学习笔记:利用GDI+生成简单的验证码图片
学习笔记:利用GDI+生成简单的验证码图片 /// <summary> /// 单击图片时切换图片 /// </summary> /// <param name=&quo ...
- 树莓派学习笔记——交叉编译练习之SQLite3安装
0.前言 本博文可能并没有太多使用价值.不过为了练习而练习.在树莓派上使用SQLite有非常多的方法,安装的方法也有非常多. [1]假设使用Python,那么不必安装SQLite由于P ...
- 【转】树莓派学习笔记——I2C Tools 学习笔记
原文网址:http://blog.csdn.net/xukai871105/article/details/15029843 1.安装 I2C驱动载入和速率修改请查看博文[树莓派学习笔记——I ...
- 【转】 树莓派学习笔记——I2C设备载入和速率设置
原文网址:http://blog.csdn.net/xukai871105/article/details/18234075 1.载入设备 方法1——临时载入设备 sudo modprobe -r i ...
- 树莓派学习笔记——使用文件IO操作GPIO SysFs方式
0 前言 本文描写叙述假设通过文件IO sysfs方式控制树莓派 GPIO端口.通过sysfs方式控制GPIO,先訪问/sys/class/gpio文件夹,向export文件写入GPIO编号, ...
- 树莓派学习笔记——USB wifi配置指南
0 前言 树莓派既能够使用有线网络又能够无线网络,假设使用有线网络不方便的话能够借助USB wifi无线网卡让树莓派也插上无线"翅膀". 可是和使用有线网络即插即用的方式不 ...
- 机器学习实战(Machine Learning in Action)学习笔记————09.利用PCA简化数据
机器学习实战(Machine Learning in Action)学习笔记————09.利用PCA简化数据 关键字:PCA.主成分分析.降维作者:米仓山下时间:2018-11-15机器学习实战(Ma ...
- Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目
Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目 Spring Tool Suite 是一个带有全套的Spring相关支持功能的Eclipse插件包. ...
随机推荐
- SQL Server 如何添加删除外键、主键,以及更新自增属性
1.添加删除主键和外键 例如: -----删除主键约束DECLARE @NAME SYSNAMEDECLARE @TB_NAME SYSNAMESET @TB_NAME = 'Date'SELECT ...
- 4.SSM配置shiro权限管理
作者QQ:1095737364 QQ群:123300273 欢迎加入! 1.搭建SSM项目: http://www.cnblogs.com/yysbolg/p/6909021.html ...
- mongodb与mysql区别(超详细)
MySQL是关系型数据库. 优势: 在不同的引擎上有不同 的存储方式. 查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高. 开源数据库的份额在不断增加,mysql的份额页在持续增长. 缺 ...
- Adobe Flash Builder 4.6 打开时提示Failed to create the Java Virtual Machine
最近使用actionscript来编程,用到Adobe Flash Builder 工具,之前一直用着都没事的,今天打开突然就报了这个错误,然后就打不开了 好了,不多说,直接来吧. 首先在你的Adob ...
- 成为Java顶尖程序员,先过了下面问题!
一.数据结构与算法基础 说一下几种常见的排序算法和分别的复杂度. 用Java写一个冒泡排序算法 描述一下链式存储结构. 如何遍历一棵二叉树? 倒排一个LinkedList. 用Java写一个递归遍历目 ...
- fastclick select 闪退 bug
这时候needsclick就派上用场了 <select class='needsclick'></select> 附上fastclick github上的链接
- JS中的“==”符号及布尔值转换规则
what are the rules for how == converts types? 关于"=="的比较规则: 1. Comparing numbers and string ...
- Linux 中 FQDN 查询及设置
FQDN:(Fully Qualified Domain Name)全限定域名:同时带有主机名和域名的名称 其实就是标注一个主机的完整域名.比如我的域名为 ifrom.top 那么它的邮件服务器的主机 ...
- 实现CTreeCtrl父子节点的联动选择
本文实现了下面的功能: 当选中父节点时, 其所有子节点全部选中. 当取消选中父节点时, 其所以子节点全部取消选中. 点击子节点时, 根据子节点与其兄弟节点的选中状态, 自动设置父节点的选中状态. 通过 ...
- Eclipse中Tomcat的配置
1.Window-Preferences-Server-Runtime Environments 2.点击Add,选择相应的Tomcat版本,我的是7.0的所以我选择这个.并勾选Create a ne ...