通過yeelink平台監控樹莓派CPU溫度變化


通過yeelink平台監控樹莓派溫度,是很多派友入門第一課。作為一名剛入手樹莓派裸機不久的新手,在沒有其他硬件支持的情況,通過yeelink平台來監控樹莓派CPU溫度變化,也是我學習樹莓派、學習智能硬件的第一步。

實現思路

“通過yeelink平台監控樹莓派CPU溫度變化”的實現思路很簡單,編寫一段Python小程序(SNAPPY UBUNTU CORE系統中默認安裝了Python 2.7.9),獲取樹莓派的CPU溫度並將其上傳到yeelink平台上,然后在線監控樹莓派的溫度變化,如果溫度過高則發送郵件提醒。

實現步驟

第1步:編寫Python程序,每隔60秒獲取樹莓派CPU溫度

這段程序實現起來比較簡單,將以下代碼保存為01cpu_temp.py,通過python 01cpu_temp.py即可執行。

#coding=utf-8
import time

#得到CPU溫度
def get_cpu_temp():
    cpu_temp_file = open( "/sys/class/thermal/thermal_zone0/temp" )
    cpu_temp = cpu_temp_file.read()
    cpu_temp_file.close()
    return float(cpu_temp)/1000

def main():
    while True:
        strftime=time.strftime("%Y-%m-%dT%H:%M:%S")
        print "time:",strftime
        print "cpu_temp:",get_cpu_temp()
        #休眠60秒
        time.sleep(60)

if __name__ == '__main__':  
    main()

第2步:成為yeelink平台開發者,並完成樹莓派設備及傳感器的配置

1)注冊用戶,獲得API KEY

yeelink是一個免費開放的物聯網雲平台,主要提供傳感器數據的接入,存儲和展現服務,為所有的開源軟硬件愛好者、制造型企業,提供一個物聯網項目的平台,使得硬件和制造業者能夠在不關心服務器實現細節和運維的情況下,擁有交付物聯網化的電子產品的能力。對於愛好者和開發者來說,Yeelink提供了一系列的工具包和開發包,使得小朋友都能夠使用Yeelink制作物聯網玩具,人人都可以成為夢想實現者,使用從Yeelink網站上下載的代碼,結合開源硬件或Yeelink專用硬件,幾乎無需任何編程,就能制作出相當復雜的iPhone遙控開關,遙控熱水器,或者是PM2.5檢測器之類的DIY作品。

yeelink平台地址是http://www.yeelink.net/,注冊很簡單,注冊之后,我們可以在“賬戶設置”中獲得專屬的API KEY。

API KEY非常重要,下一步修改python程序上傳數據到yeelink平台會用到。

2)新增設備

在“我的設備”中增加新的設備,我新增的自用設備名為“Raspberry Pi 2 Model B”。

3)新增傳感器

在“管理設備”頁面中,新增數值型傳感器,並命名為“CPU溫度傳感器”。

新增完傳感器之后,我們會在傳感器的右邊,數據曲線下方發現一條URL信息:

URL: http://api.yeelink.net/v1.0/device/19283/sensor/33814/datapoints

這是一條非常重要的信息,下一步修改python程序上傳數據到yeelink平台會用到。

http://api.yeelink.net/v1.0/:表示的是API版本為v1.0;

device/19283:表示我們剛才添加的設備編號是19283;

sensor/33814:表示我們剛才添加的傳感器編號是22814;

datapoints:表示數據點集合,一個datapoint是由key和value組成的鍵值對,數值型傳感器的key為timestamp, value為數值;

更詳細的我們可以查看yeelink平台的API文檔http://www.yeelink.net/develop/api。

4)新增傳感器觸發動作

新增傳感器觸發動作,實現CPU溫度預警:在數據大於48的時候,通過郵件通知我“樹莓派溫度超過了48攝氏度,需要降溫!!!!”。

 

第3步:修改python小程序,定時上傳數據到yeelink平台

相對於第1步的程序,主要增加yeelink api配置和upload_cpu_temp_to_yeelink()兩段代碼。

 將此程序命名為02upload_cpu_temp_to_yeelink.py,然后通過python 02upload_cpu_temp_to_yeelink.py執行,即可每隔60秒向yeelink平台上傳CPU溫度數據。

#coding=utf-8
import time
import json
import requests

#yeelink api配置
api_url='http://api.yeelink.net/v1.0'
api_key='api_key' #請填入專屬的api key
api_headers={'U-ApiKey':api_key,'content-type': 'application/json'}
raspi_device_id=19283
cpu_sensor_id=33814

#得到CPU溫度
def get_cpu_temp():
    cpu_temp_file = open( "/sys/class/thermal/thermal_zone0/temp" )
    cpu_temp = cpu_temp_file.read()
    cpu_temp_file.close()
    return float(cpu_temp)/1000

#上傳CPU溫度到yeelink
def upload_cpu_temp_to_yeelink():
    url=r'%s/device/%s/sensor/%s/datapoints' % (api_url,raspi_device_id,cpu_sensor_id)
    strftime=time.strftime("%Y-%m-%dT%H:%M:%S")
    print "time:",strftime
    cpu_temp=get_cpu_temp()
    print "cpu_temp:",cpu_temp
    data={"timestamp":strftime , "value": cpu_temp}
    res=requests.post(url,headers=api_headers,data=json.dumps(data))
    print "status_code:",res.status_code

def main():
    while True:
        upload_cpu_temp_to_yeelink()
        #休眠60秒
        time.sleep(60)

if __name__ == '__main__':  
    main()

 

第4步:在線查看CPU溫度數據以及溫度預警

通過http://www.yeelink.net/devices/19283(可修改設備編號),即可在線查看樹莓派的溫度數據。

圖中的波峰超過了50度,是因為我使用了吹風機來臨時增加樹莓派的溫度,從而達到觸發溫度超過48度時候發送郵件預警的目的。

但是今天不知道yeelink服務器還是QQ郵箱出了什么原因,並沒有收到郵件預警,只好先粘貼出一張前幾天實現截圖來證明。

學習總結

該例子雖然簡單,但是整個過程以及yeelink平台架構值得我們深入研究與學習,未來一定的物聯網的時代、雲數據時代。

Python入門與進階學習:http://www.imooc.com/course/list?c=python

理解restful架構:http://kb.cnblogs.com/page/114905/

 


免責聲明!

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



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