樹莓派學習筆記(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\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)

五、運行結果

終端顯示結果:

image

yeelink顯示結果:

1、CPU 溫度結果

         image

2、CPU占用率結果

         image

3、內存占用率結果

        image

 

程序運行時間較短,所以以上曲線僅后半部分為測量情況。

 

 

>>歡迎加入討論群:64770604


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM