博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
树莓派学习笔记(4):利用yeelink实现在线硬件状态监控
阅读量:6667 次
发布时间:2019-06-25

本文共 2748 字,大约阅读时间需要 9 分钟。

转载请注明:@小五义

 

一、实验目的

      本文实验目的是定时获取树莓派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模块的安装可参考或者。

四、代码实现

python2.7环境下实验成功:

import osimport requestsimport 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为用户idapiheaders={
'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
你可能感兴趣的文章
网页图片失效自动替换图片地址js代码
查看>>
如何在ubuntu上安装node.js
查看>>
关于ActionBar 左侧添加完返回后 点击无效的问题
查看>>
perties类的操作
查看>>
Sun R.I.P
查看>>
linux 命令拾遗
查看>>
vue路由页面加载的几种方法~
查看>>
批量检查多个网址是否正常(shell编程)
查看>>
embedLibaray框架简介(一)
查看>>
C#将CAD数据转成shape或mdb的代码
查看>>
十四个很准的心理暗示
查看>>
第三次作业
查看>>
区块链以太坊环境搭建(详细篇)
查看>>
python列表元组
查看>>
20151209jquery学习笔记Ajax 代码备份
查看>>
C# 线程知识--使用Task执行异步操作
查看>>
Shift键的三个妙用!Word又现神操作!
查看>>
[摘转] JS 数组合并问题
查看>>
redis性能测试
查看>>
LINQ Tutorial for Beginners
查看>>