未来尽在掌控

专业从事软件研发设计、IOT应用和智能家居软件开发团队,我们致力于为客户提供创新的解决方案,满足客户在数字领域的需求。 通过多年努力和专业训练,我们已经成功开发了众多优秀的应用程序和方案设计,赢得客户的信任和好评。

因为敬业 所以专业

作为资深软件开发,专业从事软件研发设计、IOT应用和智能家居软件开发团队,我们致力于为客户提供创新的解决方案,满足客户在数字领域的需求。通过多年的努力和专业训练,我们已经成功开发了众多优秀的应用程序和方案设计,赢得了客户的信任和好评。我们的目标是成为您数字化商业的最佳合作伙伴。

Professional because of dedication. As a senior software developer, he specializes in software R&D and design, IOT applications and smart home software development. Our team is committed to providing innovative solutions to our clients’ needs in the digital space. Through years of hard work and professional training, we have successfully developed many excellent applications and solution designs, winning the trust and praise of our customers. Our goal is to be your best partner for digital business.

远程控制功能

专注于开发智能物联网应用,帮助您实现设备间的数据交互和智能控制。

实时数据传输

总体架构如下图所示,由底层设备适配层、MQTT 消息传输层、InfluxDB 数据持久层和数据调用 API 四部分构成。

适配层

由于制造设备本身不具有标准的实时数据输出,并且不同品牌、不同类型设备的通信协议和需要采集的数据都不同,所以需要对每类设备进行适配。适配层逻辑采用 C++ 语言实现,采集数据以 JSON 格式输出。将同属于一个区域的设备总和视为一个边缘节点(图中的虚线框),设备数据以节点为单位进行发布。

MQTT

MQTT 是一种适用于物联网(IoT)的极其轻量级的标准消息传输协议,其消息传输基于发布/订阅的模式。

要实现 MQTT 协议的消息传输,需要一个 MQTT 消息服务器,以及发送或接收数据需要的 MQTT 客户端。MQTT 消息服务器需要部署在云服务器上,其本身不发布也不订阅数据,而是作为消息的中转站。MQTT 客户端可以进行消息的发布和订阅,并且支持多种语言实现。

设备以边缘节点为单位,通过 MQTT 协议将数据发布到云服务器上。云服务器运营商为腾讯云,配置为 1 核 2 G,带宽 6 M。部署的 MQTT 消息服务器为 EMQ X 开源版本。设备层 MQTT 客户端包含在适配层中,使用 C++ 语言实现消息的发布。

InfluxDB

InfluxDB 是一个由 InfluxData 开发的开源时序数据库,着力于高性能地查询与存储时序型数据,被广泛应用于存储系统的监控数据,IoT 行业的实时数据等场景。

时序数据库与关系型数据库的最大区别在于索引不同,时序数据库中的数据都以时间为索引,以此提高查询效率。时序数据库的其他特性如下:

  • measurement:类似与关系型数据库中表的概念。
  • field:类似于关系型数据库中属性的概念,存放数据,不具有索引。
  • tag:类似于关系型数据库中属性的概念,存放标签,具有索引。
  • point:类似于关系型数据库中记录的概念。
  • retention policy:数据保留策略,用于定时删除过期数据。
  • series:具有共同 retention policy,measurement 和 tag 的集合。

通常来讲,想要把设备数据存储到 InfluxDB 中,需要一个 MQTT 客户端订阅相关的消息主题,然后通过连接数据库、编写 Flux 语言(类似于 SQL 语言,用于操作 InfluxDB 数据库)将数据存入数据库。好在有第三方服务 Telegraf 可以帮助我们快速实现这一系列的操作。

Telegraf

Telegraf 是 InfluxData 开发的一个数据采集器,用来收集各种监控数据。因为其非常灵活的插件体系,社区贡献了大量的采集插件,从操作系统层面的指标到各种数据库、中间件的插件应有尽有。

使用 Telegraf,只需要编写配置文件,将其输入设置为 MQTT,连接 MQTT 服务器,订阅相关主题,将其输出设置为 InfluxDB,在接收到数据后向数据库输出数据。

智能设备连接

Wall button. Smart home automation.

通过云端提供的SDK、 API ,使用 授权模式 进行设备入网,并使用 gRPC 或者 Https方式 请求携带 measurement、start、stop、filed 等参数进行查询,以 JSON 格式返回结果。

IoT设备通常位于开放环境中,因此数据的安全和隐私尤为重要。采取加密、身份验证和授权等措施来确保数据的完整性和安全。此外,考虑到隐私问题,确保数据收集是合法的,同时为用户提供足够的控制权和透明度。

数据被收集后,接下来的挑战是如何存储和处理它们。选择适当的数据库系统,如时间序列数据库对于IoT场景尤为关键。此外,流数据处理框架如Apache Kafka或Spark Streaming可以帮助实时处理大量数据。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

zh_CNZH
滚动至顶部