前言

在RaspberryPi搭建博客后发现个问题,就是我如何能够知道RaspberryPi的一些运行信息,比如CPULoad或者温度。初步想法是利用图表形式汇总信息,然后 通过网页图表展示。该方案主要有以下几个关键点:

1.打点,将收集的信息进行打点,通常是将数据写入文件。

2.收集打点数据文件,然后分析出数据内容。

3.根据分析结果,进行画图用于展示。

而针对以上几点来看让Raspberry Pi去打点没什么问题,收集打点数据分析内容,利用分析结果画图展示这个两条如果让RaspberryPi来做的话有些浪费本地资源, 本身Raspberry Pi的资源就有限如CPU。所以如果可以将打点数据上传到第三方的服务中,让第三方分析并且画图展示岂不是更好。所以,参考了一粟同学的方案。 利用xively.com 提供的服务来进行数据收集和描点画图。

xively账户准备

1.注册账户,因为需要邮箱收取激活邮件,所以需要填写正确的邮件地址。(激活邮件到达比较慢,至少我是等了半天才收到激活邮件)

2.添加一个设备

菜单上develop, 然后点击Add Device

提交后会得到Feed ID,Feed URL,API Endpoint相关信息,后续API使用要用。

*设置API的密钥 在API Keys选择添加一个API,设置属性Read,Create,Update,Delete,标签随便命名。

到此为止你的FEED相关需要的东西经创建好了,有空的话可以看下创建成功页面下的一些示范API的连接,支持JAVA,CURL等。这里主要用CURL

xively http API

上面已经创建好了数据的FEED,剩下的就是向这个FEED里提交数据了,这里用的是CURL API详情

1.数据格式(JSON)

{

"datastreams": [

{

"id": "load",

"current_value": "9.00"

},

{

"id": "temp",

"current_value": "89.15"

}

]

}

每条线的点的数据结构是KEY-VALUE形式,其中id代表是这个点属于线的ID(自己定义有意义的名称 如Load),current_value是指这个点的VALUE。 推荐一个在线的JOSN格式化和校验工具 jsoneditoronline

2.提交数据

cosm提供了HTTP的API方式

URL: https://api.xively.com/v2/feeds/${FEED_ID}?timezone=+8

HEAD:需要增加X-ApiKey:${apiKey}

putData:上面的JSON数据

浏览器调试

利用chrome的一个插件叫Dev Http Client, 在连接地址里填入API的地址其中feed_id换成你真实的FEED_ID

如:https://api.xively.com/v2/feeds/80400859?timezone=+8

启用HEADERS 添加一个X-ApiKey 的KEY VALUE就是你的APPKEY.

BODY 处填写需要发送的JSON数据,方式选择PUT

点击发送即可,RESPONSE 处会显示200表示y成功 。如下图:

这个时候访问下 https://xively.com/feeds/80400859 这个地址就可以看到刚才PUT过去的数据就OK了代表你的API已经调试OK.

准备SHELL打点脚本

1.cpuLoad 数据收集

cat /proc/loadavg | awk '{print $2}'`

2.CPU温度 数据收集

cat /sys/class/thermal/thermal_zone0/temp | awk '{print $1/1000}'

通过以上2条命令就可以查看当前的CPU对应的LOADE和温度,下面就需要将收集到的数据组装成cosm的API需要的JSON格式在PUT给cosm就可以了。

下面是脚本的例子:

#!/bin/bash

LOCATION='/home/pi/sysdata' #生成JSON文件路径,替换成你的路径

API_KEY='l9eHDf_fLzQx9Qfc8hCVrIan9DOSAKxrN21EOTdyL1IxST0g' #API使用的KEY,替换成你的KEY

FEED_ID='126908' #提交数据的FEED,替换成你的FEED_ID

####################################################

COSM_URL=https://api.xively.com/v2/feeds/${FEED_ID}?timezone=+8

cpu_load=`cat /proc/loadavg | awk '{print $2}'`

for i in 1 2 3 4 5; do

cpu_t=`cat /sys/class/thermal/thermal_zone0/temp | awk '{print $1/1000}'`

if [[ "${cpu_t}" =~ ^- ]]

then

cpu_t='0.0'

else

echo ${cpu_t}

break

fi

done

STR=`awk 'BEGIN{printf "{\"datastreams\":[ {\"id\":\"load\",\"current_value\":\"%.2f\"}, {\"id\":\"temp\",\"current_value\":\"%.2f\"}] } ",'$cpu_load','$cpu_t'}'`

echo ${cpu_t}

echo ${cpu_load}

echo ${STR}

echo ${STR} > ${LOCATION}/cosm.json

curl -s -v --request PUT --header "X-ApiKey: ${API_KEY}" --data-binary @${LOCATION}/cosm.json ${COSM_URL}

修改脚本中需要替换成你自己的三个变量LOCATION,API_KEY,FEED_ID 之后 赋予改脚本文件 755权限并且运行。

例如:该脚本名称testSys.sh

chmod 755 testSys.sh

./testSys.sh

可以看到以下结果:

将打点脚本添加到CRONTAB中

crontab -e

*/1 * * * * /home/pi/sysdata/testSys.sh>/dev/null 2>&1 & #每一分钟运行一次/home/pi/sysdata/testSys.sh

页面引入图表

在需要暂时图表的地方加入以下代码:

${FEED_ID}:替换成你创建FEED的ID,上个例子中就是126908

${LINE_ID}:替换成你FEED里具体LINE的ID,上个例子中就是load或者temp

${TITLE} :图表展示上的标题,可以自己按照需要命名,比如CPU的LOAD

经过以上步骤就可以将你的PI上的CPU的LOAD还有温度数据采集到放到cosm展示,其他原理类似如统计在线人数等需求都可以用这个xively的服务来实现。

树莓派cpu检测_利用xively监控树莓派的CPU温度相关推荐

  1. 树莓派 cuda加速_机器人梦系列-树莓派资源整理汇总

    链接地址:https://segmentfault.com/a/1190000021776077 (相关下载资源) 本文收集了树莓派使用过程中经常需要用到的资源,主要包括树莓派系统镜像.树莓派硬件介绍 ...

  2. 树莓派环境处理_一种基于树莓派的便携式的环境监测系统的制作方法

    本发明涉及通讯技术领域,尤其涉及一种基于树莓派的便携式的环境监测系统. 背景技术: 树莓派是尺寸仅有信用卡大小的一个小型电脑,可以将树莓派连接电视.显示器.键盘鼠标等设备使用.树莓派能替代日常桌面计算 ...

  3. linux服务器系统_利用Zabbix监控系统监测Linux服务器系统时间是否准确完美实现...

    服务器时间校准是非常重要的,因为很多应用服务都是需要基于时间的,服务器系统时间如果不准确的话就会产生很多问题.虽然我们可以通过部署NTP时间服务器来进行校准,但是有时候感觉还不够保险,而这往往也是很多 ...

  4. 修改网页代码_利用网页监控优势,做百度自动推送

    网页监控是什么?WEB视界网页监控是指利用自动化服务来扫描监控网站页面,当发现网站页面有变化时,就立即作出响应的服务.网页监控优势有很多,那么如何利用网页监控优势来做百度自动推送呢? 网页监控做百度推 ...

  5. c++获得cpu厂商_使用Visual C++编程取得CPU信息

    CPUID指令是intel IA32架构下获得CPU信息的汇编指令,可以得到CPU类型,型号,制造商信息,商标信息,序列号,缓存等一系列CPU相关的东西. 作用就是根据 eax 寄存器的值来测试 cp ...

  6. 树莓派cpu检测_【树莓派3B+测评】线程的挂起与恢复CPU温度检测

    [树莓派3B+测评]线程的挂起与恢复&CPU温度检测 [复制链接] 本帖最后由 donatello1996 于 2018-12-22 17:33 编辑 在TCP通信中,除了线程的创建和删除以外 ...

  7. python 百度网盘同步_利用bypy实现树莓派NAS同步百度云

    程序说明: 这是一个百度云/百度网盘的Python客户端.主要的目的就是在Linux环境下(Windows下应该也可用,但没有仔细测试过)通过命令行来使用百度云盘的2TB的巨大空间.比如,你可以用在R ...

  8. python图色检测_利用python打开摄像头及颜色检测方法

    最近两周由于忙于个人项目,一直未发言了,实在是太荒凉了....,上周由于项目,见到Python的应用极为广泛,用起来也特别顺手,于是小编也开始着手学习Python,-下面我就汇报下今天的学习成果吧 小 ...

  9. 树莓派 学习编程_为什么要学习在树莓派上编程

    树莓派 学习编程 In this article "Java vs Python - Which Programming Language Should Programmer Learn F ...

最新文章

  1. IDEA Maven 项目默认编译项目为JDK 1.5
  2. 来阿里前 vs 来阿里后
  3. English:daydayup
  4. ABAP data extract 数据抽取总结
  5. avenue在科研文章中的意思
  6. oracle 存储过程的基本语法 及注意事项
  7. es类比关系型数据库
  8. 【jquery模仿net控件】初步GridView模型实现,及其简单应用
  9. markdown数学公式手册
  10. x86系统MySQL_deepin20.1系统安装MySQL8.0.23(最美国产Liunx系统,最新,最详细的MySQL8安装教程)...
  11. 分享30个打动你的摄影师作品集网站
  12. 黑马公开课——运行原理与GC学习笔记
  13. C语言数据结构与算法--------图论全面总结(附有详细动态图解)
  14. JESD204B 使用说明
  15. vue-Observe、Dep、Watcher
  16. 作者用心之作,机器学习总结
  17. android渠道编号,Android 不同渠道差异代码
  18. VLSI Basic2——OCV
  19. 云计算技术 — 多云
  20. axios的post请求

热门文章

  1. Win11字体显示乱码的解决方法
  2. Python竟然能监控抖音?这也太刺激了!
  3. mysql 日志恢复工具_mysql数据恢复工具
  4. 用r语言画一条悬链线
  5. (转)css怎么一个DIV盒子同时插多张张背景图片
  6. DirectX 11---从空间变换来看3D场景如何转化到2D屏幕
  7. 解决 js 报错 xxx is not defined
  8. PyCharm社区版下载和安装 2022_12_11
  9. 吃鸡因计算机丢失api,W7电脑系统安装绝地求生提示Cannot find ‘MSVCP140.dll怎么办...
  10. curl post请求表单_CURL 发送POST请求