树莓派cpu检测_利用xively监控树莓派的CPU温度
前言
在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温度相关推荐
- 树莓派 cuda加速_机器人梦系列-树莓派资源整理汇总
链接地址:https://segmentfault.com/a/1190000021776077 (相关下载资源) 本文收集了树莓派使用过程中经常需要用到的资源,主要包括树莓派系统镜像.树莓派硬件介绍 ...
- 树莓派环境处理_一种基于树莓派的便携式的环境监测系统的制作方法
本发明涉及通讯技术领域,尤其涉及一种基于树莓派的便携式的环境监测系统. 背景技术: 树莓派是尺寸仅有信用卡大小的一个小型电脑,可以将树莓派连接电视.显示器.键盘鼠标等设备使用.树莓派能替代日常桌面计算 ...
- linux服务器系统_利用Zabbix监控系统监测Linux服务器系统时间是否准确完美实现...
服务器时间校准是非常重要的,因为很多应用服务都是需要基于时间的,服务器系统时间如果不准确的话就会产生很多问题.虽然我们可以通过部署NTP时间服务器来进行校准,但是有时候感觉还不够保险,而这往往也是很多 ...
- 修改网页代码_利用网页监控优势,做百度自动推送
网页监控是什么?WEB视界网页监控是指利用自动化服务来扫描监控网站页面,当发现网站页面有变化时,就立即作出响应的服务.网页监控优势有很多,那么如何利用网页监控优势来做百度自动推送呢? 网页监控做百度推 ...
- c++获得cpu厂商_使用Visual C++编程取得CPU信息
CPUID指令是intel IA32架构下获得CPU信息的汇编指令,可以得到CPU类型,型号,制造商信息,商标信息,序列号,缓存等一系列CPU相关的东西. 作用就是根据 eax 寄存器的值来测试 cp ...
- 树莓派cpu检测_【树莓派3B+测评】线程的挂起与恢复CPU温度检测
[树莓派3B+测评]线程的挂起与恢复&CPU温度检测 [复制链接] 本帖最后由 donatello1996 于 2018-12-22 17:33 编辑 在TCP通信中,除了线程的创建和删除以外 ...
- python 百度网盘同步_利用bypy实现树莓派NAS同步百度云
程序说明: 这是一个百度云/百度网盘的Python客户端.主要的目的就是在Linux环境下(Windows下应该也可用,但没有仔细测试过)通过命令行来使用百度云盘的2TB的巨大空间.比如,你可以用在R ...
- python图色检测_利用python打开摄像头及颜色检测方法
最近两周由于忙于个人项目,一直未发言了,实在是太荒凉了....,上周由于项目,见到Python的应用极为广泛,用起来也特别顺手,于是小编也开始着手学习Python,-下面我就汇报下今天的学习成果吧 小 ...
- 树莓派 学习编程_为什么要学习在树莓派上编程
树莓派 学习编程 In this article "Java vs Python - Which Programming Language Should Programmer Learn F ...
最新文章
- IDEA Maven 项目默认编译项目为JDK 1.5
- 来阿里前 vs 来阿里后
- English:daydayup
- ABAP data extract 数据抽取总结
- avenue在科研文章中的意思
- oracle 存储过程的基本语法 及注意事项
- es类比关系型数据库
- 【jquery模仿net控件】初步GridView模型实现,及其简单应用
- markdown数学公式手册
- x86系统MySQL_deepin20.1系统安装MySQL8.0.23(最美国产Liunx系统,最新,最详细的MySQL8安装教程)...
- 分享30个打动你的摄影师作品集网站
- 黑马公开课——运行原理与GC学习笔记
- C语言数据结构与算法--------图论全面总结(附有详细动态图解)
- JESD204B 使用说明
- vue-Observe、Dep、Watcher
- 作者用心之作,机器学习总结
- android渠道编号,Android 不同渠道差异代码
- VLSI Basic2——OCV
- 云计算技术 — 多云
- axios的post请求
热门文章
- Win11字体显示乱码的解决方法
- Python竟然能监控抖音?这也太刺激了!
- mysql 日志恢复工具_mysql数据恢复工具
- 用r语言画一条悬链线
- (转)css怎么一个DIV盒子同时插多张张背景图片
- DirectX 11---从空间变换来看3D场景如何转化到2D屏幕
- 解决 js 报错 xxx is not defined
- PyCharm社区版下载和安装 2022_12_11
- 吃鸡因计算机丢失api,W7电脑系统安装绝地求生提示Cannot find ‘MSVCP140.dll怎么办...
- curl post请求表单_CURL 发送POST请求