树莓派学习笔记(4):利用yeelink实现在线硬件状态监控

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

一、实验目的

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

二、yeelink的简单介绍

1、注册yeelink。

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

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

4、添加传感器

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

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

1、CPU温度:vcgencmd measure_temp

2、CPU占用情况:top命令

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

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

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

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

五、运行结果

终端显示结果:

yeelink显示结果:

1、CPU 温度结果

2、CPU占用率结果

3、内存占用率结果

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

>>欢迎加入讨论群:64770604
时间: 2024-10-07 16:27:34

树莓派学习笔记(4):利用yeelink实现在线硬件状态监控的相关文章

树莓派学习笔记——定时向yeelink上传树莓派CPU温度

0 前言 本文通过python文件IO操作获得树莓派CPU温度信息,通过python request库周期性向yeelink平台上传温度,修改rc.local脚本使得该python脚本在开机时便在后台运行,向平台每5分钟上报一次温度信息. 网上查阅了很多关于linux开机启动的博文,尝试了几遍居然发现方法都无法实现开机启动效果.我想可能是操作系统或开发环境的微小差异产生的,如果发现博文中的内容存在问题,请及时留言,我查证之后定当修改. [相关博文] [树莓派学习笔记--获取树莓派CPU温度] [

树莓派学习笔记——SQLite操作简述

0 前言 本文介绍如何在树莓派中利用SQLite数据库保存CPU温度数据.SQLite是一款轻量级零配置数据库,非常适合在树莓派和其他嵌入式系统中使用.SQLite文档详细资料丰富,本文不会详细解释SQLite数据库操作的方方面面,只能结合具体场景按需说明.本文介绍的SQLite技巧也可以在其他平台使用,并不局限于树莓派. 本文继续折腾树莓派温度,需要从中可以玩出新花样. [相关博文] [树莓派学习笔记--索引博文]--更多博文请关注. [树莓派学习笔记--获取树莓派CPU温度] [树莓派学习笔

树莓派学习笔记——Python SQLite查询历史温度

0 前言 本文通过Python SQLite查询树莓派CPU的温度历史数据,在前面的博文中已经介绍了树莓派CPU温度获取,SQLite操作和利用Python插入历史数据,下面再介绍如何查询数据,本文主要分为三部分,第一部分为查询所有温度记录,第二部分获得最近一小时数据,第三部分为把获得结果格式化为字典类型. [相关博文] [树莓派学习笔记--索引博文]--更多博文请关注. [树莓派学习笔记--获取树莓派CPU温度] [树莓派学习笔记--定时向yeelink上传树莓派CPU温度] [树莓派学习笔记

树莓派学习笔记——Python SQLite插入温度记录

0 前言 本文使用python向SQLite数据库中插入树莓派温度数据,SQLite数据库中包含一张只包含三个字段的记录表--参数名称,时间和温度值.本文重点解释Python操作SQlite的具体方法,由于网上资料众多,重复部分不再复述只做到具体情况具体分析. [相关博文] [树莓派学习笔记--索引博文]--更多博文请关注. [树莓派学习笔记--获取树莓派CPU温度] [树莓派学习笔记--定时向yeelink上传树莓派CPU温度] [树莓派学习笔记--SQLite操作简述] 1 创建数据库和空表

树莓派学习笔记(5):成功实现NAS家庭服务器(流媒体播放、文件共享及下载机)

转载请注明:@小五义http://www.cnblogs.com/xiaowuyiQQ群:64770604 一.家庭服务器实现的主要功能 1.流媒体播放服务:利用DLNA实现电视.手机.电脑播放其上面的媒体文件. 2.文件共享:利用samba实现手机.电脑等终端与服务器的文件共享. 3.自动下载:利用aria2c实现自动下载. 先上几张效果图: 用orico的包装盒做了个机箱. 内部效果,线还是有些凌乱 放在桌上,感觉还不错,呵呵 二.准备工作 1.树莓派B+ 2.安装raspbian系统,具体

树莓派学习笔记——获取树莓派CPU温度

0 前言 本文通过文件操作读取树莓派CPU温度,在linux系统中任何设备的操作都被抽象成为文件读写,通过读取/sys/class/thermal/thermal_zone0/temp文件中的内容便获得树莓派CPU的温度.本文通过以下几个部分说明如何读取和应用该温度参数--1.shell脚本操作:2linux文件IO操作,3.python文件操作: 4.通过python requset上传至yeelink平台. 网上也有相似的文章,大致的方法为通过python获得CPU温度数据,然后在写入某个文

树莓派学习笔记——使用标准PC104键盘

0 前言 本文将详细介绍树莓派的键盘设计.和多数的人的想法不同,世界上存在着各种各样不同的键盘,中国人使用的键盘和美国人使用的键盘相同,而树莓派源产自英国,英国的键盘和美国并不相同.国内多使用标准104键键盘,下面就讲讲如何配置. [相关博文] [树莓派学习笔记--索引博文]--更多博文请关注. 1 PC104标准键盘 [wiki百科]--IBM PC keyboard 所谓PC104标准键盘是指键盘含有104个按键,国内和美国多使用该类型键盘,而欧洲大陆多使用PC105键盘,除了比PC104键

树莓派学习笔记——Model B Model B+ Compute Module Dev Kit的区别和联系

0 前言 最近浏览器树莓派官方发现树莓派推出了两款新Model--一款名为树莓派 model B+,一款名为树莓派 Compute Module Dev Kit.带着欣喜和恐惧查阅了相关资料,并通过淘宝和RS中国了解开发板价格.欣喜的感觉来自于树莓派的功能得到了增强,恐惧来自于树莓派的改变带来新的学习成本.经过几天的资料收集,所以整理成博文和大家分享. 1 横向比较 [共性比较] 表1 三款树莓派横向比较 区别 Model B Model B+ Compute Module Dev Kit 芯片

树莓派学习笔记—— 源代码方式安装opencv

0.前言 本文介绍如何在树莓派中通过编译源代码的方式安装opencv,并通过一个简单的例子说明如何使用opencv. 更多内容请参考--[树莓派学习笔记--索引博文] 1.下载若干依赖项     在开始安装之前,最好更新树莓派软件源.如果更新时间太长,请参考博文修改软件源网络地址--[树莓派学习笔记--修改树莓派软件源] sudo apt-get update 请依次安装以下依赖项,这些必须安装的依赖项来自于opencv官网的说明,在多数debian系统中都可以采用这种方式进行安装.其实在树莓派