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
  • 相关阅读:
    LeetCode 83. Remove Duplicates from Sorted List (从有序链表中去除重复项)
    LeetCode 21. Merge Two Sorted Lists (合并两个有序链表)
    LeetCode 720. Longest Word in Dictionary (字典里最长的单词)
    LeetCode 690. Employee Importance (职员的重要值)
    LeetCode 645. Set Mismatch (集合不匹配)
    LeetCode 500. Keyboard Row (键盘行)
    LeetCode 463. Island Perimeter (岛的周长)
    115.Distinct Subsequences
    55.Jump Game
    124.Binary Tree Maximum Path Sum
  • 原文地址:https://www.cnblogs.com/xiaowuyi/p/4020499.html
Copyright © 2011-2022 走看看