• 通过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/

  • 相关阅读:
    Guava教程
    Hibernate各种主键生成策略与配置详解
    JPA的坑多服务主键重复
    如何用redis来生成唯一Id
    【Gym 100712A】Who Is The Winner?
    【POJ 1416】Shredding Company
    【CodeForces 620D】Professor GukiZ and Two Arrays
    【CodeForces 621B】Wet Shark and Bishops
    【Gym 100015A】Another Rock-Paper-Scissors Problem
    【CodeForces 618B】Guess the Permutation
  • 原文地址:https://www.cnblogs.com/imfanqi/p/4419915.html
Copyright © 2020-2023  润新知