zoukankan      html  css  js  c++  java
  • 树莓派学习笔记(4):利用yeelink实现在线硬件状态监控

    转载请注明:@小五义http://www.cnblogs.com/xiaowuyi

    一、实验目的

          本文实验目的是定时获取树莓派CPU的温度、占用率及内存占用率,并其结果上传到yeelink网站,实现在线监控。

    二、yeelink的简单介绍

          1、注册yeelink。

          2、进入用户中心,获取API key,如下图。

                image 

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

                image  

          4、添加传感器

                image

                这里分数值型传感器、开关、泛传感器等,具体意思可参考API文档。本文只使用了数值型传感器。

    三、获取CPU温度、占用率及内存使用情况及准备知识

    1、CPU温度:vcgencmd measure_temp

    2、CPU占用情况:top命令

    3、内存使用情况也是通过top命令获取

    4、利用python的requests模块将获取的数据post到yeelink网站。这里用的对应传感器的Url及ID

    ,具体获取方法,见下图:

                  image

    这里是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
    ","")
        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)

    五、运行结果

    终端显示结果:

    image

    yeelink显示结果:

    1、CPU 温度结果

             image

    2、CPU占用率结果

             image

    3、内存占用率结果

            image

    程序运行时间较短,所以以上曲线仅后半部分为测量情况。

    >>欢迎加入讨论群:64770604
  • 相关阅读:
    关于DOM节点的逆序
    javascript 巧妙的数组去重
    Canvas 学习笔记1
    web前端开发规范
    关于使用new和不使用new
    先知JS分享第二讲 数据类型与操作符
    关于谷歌console的小技巧
    菜鸟读jQuery 2.0.3 源码分析系列(2)
    菜鸟读jQuery 2.0.3 源码分析系列(1)
    local npm module ("*****") not found
  • 原文地址:https://www.cnblogs.com/xiaowuyi/p/4020499.html
Copyright © 2011-2022 走看看