nbchengang 发表于 2014-8-15 19:44:22

CB1+DVK522采集DS18B20温度到OpenTSDB平台

本帖最后由 nbchengang 于 2014-8-15 20:04 编辑

OpenTSDB是基于Hadoop+HBase的实时数据库平台,多用于IT设备管理。
因公司在做物联网及智慧水务方面的项目,想把OpenTSDB用作物联数据的采集平台。
原准备直接拿CB1+DS18B20搭个前置机的原型,但不懂硬件,搞不定GPIO的接线,于是干脆再入手DVK522。
今天花了一天的时间,总算有点样子了。
前期要先装好Hadoop,HBase,和OpenTSDB。作为实验环境,可以用单机跑HBase,这样可以不用装Hadoop。安装文档网上可以找到。
DS18B20现在基本没难度,新的核心都直接支持了,插上就能用了。
原本应该在CB1上先跑个OpenTSDB的所谓TCollector,再针对DS18B20写一段采集脚本。后来想想反正是实验,干脆按OpenTSDB里的loadavg-collectorde.sh的脚本的样子,照猫画虎,拼出一段代码:
#! /bin/bash
set -e
while true; do
awk -v now=`date +%s` -v host=`hostname` -F: '/t=/ \
{print "put temp.001 " now " " substr($1, 30) " host="host}' \
/sys/bus/w1/devices/28-00000622e558/w1_slave
awk -v now=`date +%s` -v host=`hostname` -F: '/t=/ \
{print "put temp.002 " now " " substr($1, 30) " host="host}' \
/sys/bus/w1/devices/28-00000022ef57/w1_slave
sleep 15
done | nc -w 30 172.16.66.200 4242

其中print的格式是按OpenTSDB的要求来的。
代码非常粗鄙,没有考虑CRC错误的情况,数值也没有除以1000。
仅仅是用来说明原理和可能性。



其中:
A点是刚开机,而且此时刚打开空调,室温下降,两个温感的读数同步下降。
B点空调停机,室温上升,同时把温感1贴在盛热水的杯子下,温感1的读数迅速上升。
C点热水水温下降,温感1读数开始下降;室温持续上升,温感2读数上升。
D点温感1从热水杯处移开,读数迅速下降至室温。
F点温感2贴在热水杯下,读数上升;温感1读数随室温上升。
E点温感2读数开始随水温下降;温感1读数继续随室温上升。


系统

nbchengang 发表于 2014-8-15 20:12:56

那些垂直的红绿线条就是没有错误处理所引入的极大极小的数值。

jerryli 发表于 2014-8-16 09:12:50

CB1做传感器的数据采集上传,的确挺适合的,成本也比较可控

jiangdou 发表于 2014-8-16 11:10:57

我再分享一个数据显示工具很niu_B哦



链接: http://pan.baidu.com/s/1jG5NC4e 密码: 52u2

nbchengang 发表于 2014-8-17 20:04:20

jiangdou 发表于 2014-8-16 11:10 static/image/common/back.gif
我再分享一个数据显示工具很niu_B哦




这个似乎用不上啊。

OpenTSDB自带了一个显示界面,不过不是太好看。但完全可以通过TSD提取数据自己做一个漂亮的仪表板出来
页: [1]
查看完整版本: CB1+DVK522采集DS18B20温度到OpenTSDB平台