开源库分享--为物联网(IoT)设计和优化的开源大数据

开源库分享--为物联网(IoT)设计和优化的开源大数据,第1张

一个开源的专为物联网、车联网、工业互联网、IT运维等设计和优化的大数据平台。除核心的快10倍以上的时序数据库功能外,还提供缓存、数据订阅、流式计算等功能,最大程度减少研发和运维的工作量

定义了创新的数据存储结构,单核每秒就能处理至少2万次请求,插入数百万个数据点,读出一千万以上数据点,比现有通用数据库快了十倍以上。

由于超强性能,计算资源不到通用大数据方案的1/5;通过列式存储和先进的压缩算法,存储空间不到通用数据库的1/10。

将数据库、消息队列、缓存、流式计算等功能融合一起,应用无需再集成Kafka/Redis/HBase/Spark等软件,大幅降低应用开发和维护成本。

无论是十年前还是一秒钟前的数据,指定时间范围即可查询。数据可在时间轴上或多个设备上进行聚合。即席查询可通过Shell/Python/R/Matlab随时进行。

不用一行代码,即可与Telegraf, Grafana, Matlab, R集成。后续还将支持MQTT, OPC, Hadoop,Spark等, BI工具也将无缝连接。

你知道哪些好用的开源的物联网大数据处理方式,欢迎评论分享,共同探讨学习

物模型是云平台为物联网产品定义的数据模型,用于描述产品的功能。将产品抽象成数据的集合,方便云端进行控制。

物模型从 属性 服务 事件 三个维度,分别描述了该实体是什么、能做什么、可以对外提供哪些信息。定义了物模型的这三个维度,即完成了产品功能的定义。

TSL 格式是一个 JSON 格式的文件,完整的 TSL 格式可以参考: 阿里云物模型 。

嵌入式端开发固件往往只需要关注少数几个参数,可以在产品的 功能定义 页面,单击 物模型TSL 精简物模型 里面查看。

需要关注的有 "properties","events","services",在 JSON 格式里,这三者都是数组,分别存储了该物模型的数据,事件和服务,在 C-SDK 里也就分别是 IOT_Linkkit_Report() 上报属性, IOT_Linkkit_TriggerEvent() 触发事件和注册为 ITE_SERVICE_REQUEST 的回调函数。

在上报属性时,只需要关注 "identifier" 名称对应的值(字符串),此时表示该属性在产品下的唯一标识。例如一个精简物模型属性为:

则上报的数据只需要为 {"count":10} 即可,需满足 JSON 字符串的格式,字符串内有一个名称/值对,名称为 "count"(物模型里 "identifier" 的值),值对为 10(满足物模型里数据类型为 int 的要求)。

触发事件需要关注 "identifier" 名称对应的值(字符串),表示该事件在产品下的唯一标识;还需要关注 "outputData",表示上报事件的输出值。一个精简物模型例子如下:

"outputData" 数组的使用与属性上报一致,这里就不介绍了。

服务调用需要同时关注 "identifier","inputData" 和 "outputData" 这三个名称,分别表示该服务在产品下的唯一标识,服务的输入参数,服务的输出参数。与函数调用有输入值和输出值类似,服务调用也有这些特征。

物模型数据校验方式目前有两种, 弱校验 免校验

也就是说,弱校验针对产品设备的上报数据,只要 idetifier 是一致的,且 dataType 字段满足要求,就接收该数据,并且在其他云端产品流转。

为什么云端可以设置和获取接入设备的属性呢?为什么接入设备可以上报事件给云端呢?又为什么云端可以调用接入设备提供的服务呢?这就是这一小节解释的内容。

物模型基于 MQTT 协议,MQTT 协议的介绍不在此处展开。

云端定义了一系列的 Topic,在设备接入云端时,C-SDK 向 MQTT broker 订阅了一些的 Topic,而云端需要与设备交互时,就向 MQTT broker 发布相应的 Topic,这样就完成了交互过程。同理,云端也会订阅一些 Topic,设备可以向这些 Topic 发布消息。

接入设备端订阅发布的 Topic 列表如下:

其中 ${productKey} 会替换为实际的产品名,${deviceName} 会替换为实际的设备名,${tsleventidentifier} 是事件的标识符,${tslserviceidentifier} 是服务的标识符,最大限度地保证了 Topic 的唯一性。

这些 Topic 的作用在后面用时序来描述。

选择物联网平台是一项关键决策,会对企业产生多方面影响。这篇文章列出了帮您选择合适物联网平台的几个要点。
可扩展性
数据增长越多,处理起来就越困难,这需要立即处理。当公司能够处理大量数据时,机器学习算法可以帮助获得更好的商业智能,这反过来又可以帮助做出更好的决策。因此,可扩展性变得很重要。为了将机器学习算法应用于大量数据,您需要首先找到一个物联网供应商来帮助获取这些数据。因此,选择物联网供应商的决定变得至关重要。随着大量数据的出现,与硬件和数据安全相关的成本和风险也随之增加。如果您从一开始就没有连接数百万台设备,这并不重要,重要的是要确保您的物联网平台能够处理数据负载。
在寻找供应商时,您需要考虑平台的可扩展性和平台的最佳性能。可扩展的物联网平台允许您连接到数百万台设备,这些设备具有不同的技术要求,并在不危及质量和效率情况下使用数据提供洞察力。
协议支持
长期以来,M2M通信和工业自动化已经存在。借助数据驱动的运营洞察,物联网使工业自动化成为一个更好、更精确的领域。为了提供完整的自动化体验,物联网平台需要支持传统和新兴协议。此外,物联网平台还应该提供协议转换。基于SCADA的RTU和PLC仍有在现有平台上实现自动化的趋势。BACnet、Modbus和CANBUS的使用在通信设备中也很常见。
定价模式
平台提供商应该有透明的定价政策。当心那些提供特惠价格的供应商,当您注册时,他们会提高价格。
如果您选择订阅模式,则可以支付订阅定价的费用。如果您要销售硬件,那么您可以选择带有许可证的平台选项,以便将其包含在开发成本中。
云基础设施
寻找能够提供适合您当前IT环境的物联网平台供应商,并托管在本地。与单一方法相比,混合云方法已经证明是成功的。混合云的最佳之处在于它能提供良好的访问性,使用此选项的公司可以方便快捷地访问私有云和公共云。
结论
随着技术的进步,物联网将改进我们彼此的互动方式,以及全球经济的运行模式。要取得成功,需要一个可扩展的集成平台。物联网机器学习也有利于根据我们的需求塑造我们的环境。
在选择物联网平台时,需要向供应商提出您的需求和限制条件,这一重要步骤将有助于做出更有针对性的决策。

3 Kittenblock中快速上手IOT

31 加载IOT插件

插件已经成功加载:

32 建立IOT本地服务器

我们重新复习下MQTT物理模型:

1首先物联网肯定有一台服务器。不然那些要联网的设备把接收到的数据发给谁呢?服务器的作用就是接收数据,处理数据,分发数据

2多个联网的设备。它们的作用就是给服务器发送数据,或者接受服务器的数据。

本节实验,我们用我们的Kittenblock将本机电脑设置为IOT本机服务器,并且本机也作为一个联网的客户端,对服务器进行消息发送

为了方便学校上课场景(连接外网服务器不方便),我们可以直接通过Kittenblock后台建立起IOT本地服务器。

刚建立器IOT本机服务器,设备列表是空的,当然因为没有设备连接到本地服务器上

33 连接服务器

拖拽积木,设备的ID名称可以自由填写,这个名称是显示在服务器上的

更改完信息后,记得点击下积木块,才会执行这条指令

回到本地服务器的列表查看,可以看到设备CCFIVE已经连上上服务器了

34 订阅话题

设备已经与服务器成功连接后,我们需要进行话题订阅,话题的形式一般是“/”+英文,当然不用“/”也是OK的

回到本地服务器的列表查看,可以看到设备CCFIVE已经订阅了"/hello"的话题

35 话题广播与接收

因为我们现在只有一台设别,所以话题我们自己发送自己接收,我们写一个接收程序,让舞台的小喵说出来

话题发送与接收

现象结果:

36 多台电脑MQTT相互通讯

如果你的实验环境下有多台设备,不妨将多台设备都连接到同一个服务器上,例如下图电脑A、B、C都连接到1921680117上,然后对应向共同的话题推送消息,这时候其它设备如果也订阅了这个话题,它也会收到消息更新。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/13085833.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-30
下一篇 2023-05-30

发表评论

登录后才能评论

评论列表(0条)

保存