您的位置:首页 > 运维架构

树莓派学习笔记(4):利用yeelink实现在线硬件状态监控

2014-10-16 19:26 896 查看


一、实验目的

      本文实验目的是定时获取树莓派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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐