如何简化存储和可视化物联网传感器的数据

描述

物联网(IoT)应用程序的设计有望产生大量数据,以便通过可操作的信息填充云。然而,对于大多数物联网开发人员而言,将数据流式传输到云并理解它需要专家级的数据交换和分析技术理解。

没有简单的方法可以实时深入分析数据流消息来源,物联网开发人员可能会发现自己很难理解数据质量问题对其应用程序整体功能性能的影响。

为了帮助解决这个问题,Initial State Technologies提供了一种开发人员可以轻松使用的分析服务深入了解物联网设备数据。然后,他们可以将其转换为可在桌面或移动设备上访问的有用信息。

对嵌入式分析的需求

对于任何物联网应用,其用户感兴趣的产品是从附加到个人,设备或结构的传感器节点生成的数据流导出的可操作信息。在物联网开发人员面临的挑战中,对这些数据流的验证需要能够可视化和测量数据本身。

为此,物联网应用程序开发人员可以利用越来越多的基于云的服务来将原始数据转换为所需的结果。在这些数据处理工作流程中,数据分析为人类提供了一种关键能力,使他们能够了解数据的性质,以确保其质量,并识别工作流程中无法预料的有用事件或异常。

对于开发人员,物联网数据分析带来了一系列全新的需求,超出了Web开发人员熟悉的需求。虽然后者通常需要离线批处理大型日志文件,但物联网数据分析将大型数据存储库(“大数据”)与“快速数据”相结合。为了有效,物联网应用程序必须实时处理大量数据流以对现实事件做出反应。

企业级概念(如lambda架构和Apache Storm和Spark等工具)已经出现,为将数据分析构建到大规模物联网应用程序的工作流程中。但是,对于大多数开发组织而言,构建这些平台和创建自己的数据分析解决方案所需的时间和资源充其量只能分散注意力。因此,物联网开发人员可能会忽略数据分析,期望数据源是“已知良好”的资源,而后端代码将捕获任何问题。

事实上,物联网应用程序开发人员面临越来越多的脱节可用数据量与轻松部署的分析功能之间的关系,用于调试物联网应用程序以及向用户提供有用信息。

初始状态通过软件即服务(SaaS)解决了这一重要差距)解决方案使物联网开发人员可以在任何应用程序中部署实时分析。通过仅添加几行代码,开发人员(或客户)可以使用包含一组特定流或事件的图形显示的可自定义仪表板来显示物联网数据。

探索数据流的详细信息,Initial States'Waves工具形成一个交互式波形查看器,允许用户放大数据流。该公司的Lines工具用作多波形分析仪。与其顶级前身一样,这款基于云的工具可让开发人员实时检查,比较和测量多个信号波形(图1)。

物联网

图1:初始状态平台以多种格式呈现数据流,包括分析复杂物联网数据所需的多波形显示。 (图片来源:Initial State Technologies)

SaaS解决方案

与任何SaaS软件包一样,Initial State维护云中的服务资源,并提供简单的流媒体应用程序编程接口(API)数据。开发人员使用传统的Web GET和POST协议将数据流式传输到“事件存储桶”,后者在初始状态平台中提供存储资源。

开发人员可以使用简单的GET请求来创建存储桶:

<跨度>复制 <代码>

https://groker.initialstate.com/api/buckets?accessKey=myAccessKey&bucketKey=myBucketKey&bucketName=myBucketName

正如此请求所示,每个存储桶都是使用开发人员的初始状态私有访问密钥(由注册时的初始状态提供)和唯一存储桶密钥(由创建存储桶的工程师提供)的组合来标识的。该公司还为企业客户提供更细粒度的身份验证级别。在创建事件存储桶时,开发人员还可以提供可选的存储桶名称,稍后用于在各种初始状态图形显示中识别来自该存储桶的数据。

初始状态将数据存储为键:值对。因此,开发人员可以使用相同类型的GET请求来存储多个事件(例如,使用键eventKeyN和值eventValueN):

复制

https://groker.initialstate.com/api/events?accessKey=myAccessKey&bucketKey=myBucketKey&eventKey0=eventValue0&eventKey1=eventValue1&eventKey2=eventValue2

合并物联网数据很简单:开发人员可以通过将数据从每个源流式传输到相同的存储桶来组合来自不同来源的数据,这些存储桶由accessKey和bucketKey的全局唯一组合标识。

开发人员还可以使用常用实用程序创建存储桶和流数据作为curl发出POST请求。在这种情况下,身份验证密钥(accessKey和bucketKey)在请求标头中传递,数据键:值对在POST主体中以JSON格式传递,如下所示:

复制 <代码>

https://groker.initialstate.com/api/events

内容类型:应用/JSON

X-IS-ACCESSKEY:myAccessKey

X-IS-BucketKey:myBucketKey

接受版本:〜0

[

{

“键“:”温度“,

“value”:“1”,

“epoch”:1419876021.778477

},

{

“key” :“温度”,

“值”:“2”,

“epoch”:1419876022.778477

}

]

正如此POST请求所示,来自单个传感器(例如温度)的多个数据实例用相同的键表示。纪元值是标准Unix时间表示中提供的传感器读数的事件时间戳。因此,开发人员可以使用适当的密钥为每个传感器源轻松地从单个传感器构建基于时间的数据流,或者为多个传感器传输基于时间的数据。

而不是为每个事务构建原始http请求,开发人员可以利用Initial State或Initial State开发人员社区提供的C,Java,Node.js和Python库。例如,C库使用Libcurl发出POST请求,并提供两个函数create_bucket和stream_event,其参数直接对应于前面描述的原始GET和POST请求中使用的键和数据:

int create_bucket(char * access_key,char * bucket_key,char * bucket_name);

int stream_event(char * access_key,char * bucket_key,char * json);

分析部署

Initial State SaaS分析解决方案为新兴的现成物联网开发套件提供了现成的补充。例如,Connected Cellular BeagleBone IoT开发套件提供了一个快速实现IoT蜂窝无线节点的平台。除了完整的蜂窝电话包外,该套件还包括BeagleBone Black板,采用基于德州仪器(TI)ARM®Cortex®-A8的AM335x处理器和多种扩展接口,包括以太网和USB。开发人员可以通过Seeed Technology提供的Grove斗篷板将易于使用的Grove兼容传感器连接到电路板,从而真正支持各种传感应用(图2)。

图2:使用Connected Cellular BeagleBone物联网开发套件,物联网开发人员只需插入与Grove兼容的传感器(如此处所示的光传感器)即可添加传感器功能。 (图片来源:Initial State Technologies)

开发人员可以简单地将分析插入到他们的IoT应用程序中。在连接到BeagleBone Black板之后,开发人员可以安装初始状态库,例如ISStreamer Python模块。实际上,Initial State为模块提供了安装脚本,避免了由于不正确的安装过程导致的常见问题。因此,安装只需要运行安全下载脚本的shell脚本(在带有反斜杠的curl命令之前以确保使用正确的二进制文件)并使用bash执行下载的脚本:

$ curl -sSL https://get.initialstate.com/python -o - | sudo bash

软件工程师会创建一个存储桶,其中包含一行Python代码添加到他们在板上运行的Python脚本中:

stream = Streamer( access_key =“myAccessKey”,bucket_key =“myBucketKey”)

通过调用流对象的log方法来流式传输数据值。因此,工程师会通过重复调用 stream.log(key,value,epoch)来将数据流式传输到Initial State服务。

实际上,Initial State提供了一个示例构建Python应用程序以支持Connected Cellular BeagleBone IoT Kit。在软件例程中,示例应用程序演示了一种基本设计模式,用于设置从电路板的模数转换器(ADC)捕获的数据流和流光传感器值(清单1)。在这种情况下,应用程序将读数作为主观级别进行传输,相应地将其显示为相关仪表板中的图块(图3)。

复制

#Read from light sensor

从导入时间

导入Adafruit_BBIO.ADC作为ADC

从ISStreamer.Streamer导入Streamer

#Initialize the streamer

streamer = Streamer(bucket_name =“BBB Readings”,bucket_key =“myBucketKey”,access_key =“myAccessKey”)

pin =“AIN2”

< p>

ADC.setup()

虽然为True:

value = ADC.read_raw(pin)

如果值<= 250:

level =“dim”

如果251 <=值<= 500:

level =“average”

如果501 <=值<= 800:

level =“bright”

如果值> 800:

level =“非常明亮”

打印值

#Stream值

流光。 log(“:level_slider:Sensor Reading”,value)

打印级别

#Stream the level

streamer.log(“:bulb:Brightness”,级别)

#Sleep 1分钟

睡眠(60)

清单1:初始状态示例Python应用程序Connected Cellular BeagleBone物联网套件演示了一种简单的技术,用于获取传感器数据并将其传输到事件桶。 (代码来源:初始状态技术)

物联网

图3:初始状态平台允许开发人员创建每个显示分析的图形窗口或图块的仪表板源自各个IoT数据流。 (图像来源:初始状态技术)

可扩展性和扩展

开发人员可以扩展此基本模式,以实时监控和探索数据流,并设置触发器以触发文本消息或电子邮件给用户。相同的机制还可以向外部服务发送通知,例如Amazon Web Service的简单队列服务(SQS)。 AWS SQS提供可由其他分布式服务使用的基于云的消息队列。使用这些类型的服务,开发人员可以使用自定义服务轻松扩展其初始状态部署,以创建功能强大,复杂的数据处理工作流。

相反,开发人员可以将分析功能添加到已将数据泵入某个现有外部池的现有IoT应用程序工作流中。例如,工程师可以使用基于云的服务(如AWS Lambda)定期从现有的IoT数据池流式传输数据。

AWS Lambda提供了一种无响应的机制,用于执行代码片段以响应外部事件,因此开发人员无需进一步加载现有IoT应用程序资源即可部署分析。使用这种方法,可以将Lambda函数设置为定期激活并执行基本POST请求以流式传输数据(清单2)。

复制

//将数据发送到初始状态

函数sendToInitialState(accessKey,data,callback){

const req = https.request({

hostname:'groker.initialstate .com',

port:'443',

路径:'/api/events',

方法:'POST',

标题:{

'X-IS-AccessKey':accessKey,

'X-IS-BucketKey':ISBucketKey,

'内容 - 输入':'application/json',

'Accept-Version':'〜0'

}

},(res)=> {

让body ='';

console.log('状态:',res。 statusCode);

console.log('标题:',JSON.stringify(res.headers));

res.setEncoding('utf8');

< p> res.on('data',(chunk)=> body + = chunk);

res.on('end',()=> {

console。 log('成功处理的HTTPS响应');

//如果我们知道它是JSON,解析它

if(res.headers ['content-type'] ===' application/json'){

body = JSON.parse(body);

}

callback(null,body);

});

});

req.on('error',callback);

req.end(JSON.stringify(data) ));

}

物联网开发人员希望看到他们的应用程序随着客户接受度的提高而迅速扩展,而且Initial State希望其服务随应用程序一起扩展。该服务构建于AWS之上,利用专门设计的AWS功能进行扩展,以支持大量流,并在这些流中支持非常高的数据速率。此外,为了确保持续可用性,跨AWS可用区复制事件存储桶(地理区域内不同数据中心的物理多样性)。企业客户可以利用跨AWS区域的复制(位于不同地理区域的数据中心的全球规模多样性)。

结论

显示原始或转换的IoT数据的能力实时在帮助开发人员了解数据质量和为用户提供物联网应用程序本身的核心功能方面发挥着关键作用。虽然存在实施物联网数据分析的机制,但实现合适的可视化功能的能力可能会分散或延迟项目。 Initial State Software-as-a-Service平台提供了一种在物联网应用程序中部署实时数据分析的简单方法。使用此服务,物联网开发人员可以调试来自多个来源的数据流,并更轻松地向最终用户提供实时信息显示。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分