亿琪软件-开源博客 - Open Source
type: channel
link: https://www.yiqisoft.cn/blogs/tag/Open-Source/
items: 开源｜EdgeX 边缘计算数据持久化之 InfluxDB
items: 开源｜ThingsBoard 项目实施及二次开发要点总结
items: EdgeX 配置和注册介绍

开源｜EdgeX 边缘计算数据持久化之 InfluxDB
type: item
date: 2023-10-23T06:33:00+00:00
description: 目录 背景介绍 EdgeX 简介 InfluxDB 简介 开发过程 架构设计 EdgeX application service 前提条件 Application Service Docker 容器 InfluxDB 环境搭建 Telegraf 配置 Docker 容器 实验结果 MQTT broker 内容查看 InfluxDB Graph 开源代码 关于亿琪软件 欢迎关注 EdgeX Foundry 中文社区公众号，及时获取最新资料和分享。 日常情况下，在边缘计算端侧，一般不需要数据持久化到本地磁盘或数据库，但是，某些特殊应用下，需要做本地数据保存和分析时，这项功能就非常有必要。本文将介绍 EdgeX 边缘计算框架在本地保存 telemetry 数据到 InfluxDB 的具体方法和结果。 背景介绍 EdgeX 简介 EdgeX Foundry 边缘计算框架的分层和服务为边缘设备/节点和云/企业应用之间提供了一个双向转换引擎。EdgeX 作为边缘计算平台是非常不错的选择。 本文需要采用自定义开发的 EdgeX Application service 来完成数据持久化的工作。 InfluxDB 简介 InfluxDB 是一个由 InfluxData 公司开发的开源时序型数据库。它由Go写成，着力于高性能地查询与存储时序型数据。InfluxDB 被广泛应用于存储系统的监控数据，IoT行业的实时数据等场景。 EdgeX 数据写入（存入）InfluxDB 是非常适合且有必要的，本文使用 MQTT 和 Telegraf 作为 InfluxDB plugin 来实现具体功能。 开发过程 架构设计 EdgeX 应用程序服务(app-influxdb-export)通过 MQTT 将读数导出到 InfluxDB。此服务示例是使用 EdgeX v2.3.0 版本创建的，如需其他版本，请与我们联系或自行开发。 这个管道服务，有两部分组成： 将 EdgeX 事件/读取对象转换为 Influx line 协议； 将结果导出到 MQTT Broker，这是 Telegraf / Influx 用来监听并从中获取数据的 MQTT 主题； InfluxDB 实现数据持久化入库工作； EdgeX application service 前提条件 需要启动 EdgeX 框架； 启动 MQTT Broker 容器； Application Service 目录结构很简单，文件不多； ├── Dockerfile // docker 文件 ├── LICENSE ├── Makefile // make build ├── README.md ├── app-service-influx.png ├── go.mod // gomod 配置 ├── go.sum ├── main.go // 主程序 ├── pkg │ └── transforms │ └── conversions.go // 转换器 └── res └── configuration.toml // 配置文件 主程序，不复杂，遵循 SDK 原则即可； 这里省略源文件，请到github下载。 尝试编译，能成功生成二进制文件； make build Docker 容器 Dockerfile 描述文件； 这里省略源文件，请到github下载。 创建 docker image; docker build . -t edgexfoundry/app-influxdb:2.3.0 docker compose 片段，加入到你的 docker-compose.yml ; app-service-influxdb-export: image: edgexfoundry/app-influxdb:2.3.0 ports: - 127.0.0.1:59780:59780/tcp container_name: edgex-app-influxdb-export hostname: edgex-app-influxdb-export depends_on: - consul - data environment: CLIENTS_CORE_COMMAND_HOST: edgex-core-command CLIENTS_CORE_DATA_HOST: edgex-core-data CLIENTS_CORE_METADATA_HOST: edgex-core-metadata CLIENTS_SUPPORT_NOTIFICATIONS_HOST: edgex-support-notifications CLIENTS_SUPPORT_SCHEDULER_HOST: edgex-support-scheduler…

开源｜ThingsBoard 项目实施及二次开发要点总结
type: item
date: 2023-03-02T13:51:00+00:00
description: 目录 关注我们 关注 ThingsBoard 微信公众号 访问 ThingsBoard 中文社区网站 Thingsboard 项目实施 实施准备 实施要点 总结经验 Thingsboard 二次开发提示 前提 技术栈 尝试 运用技巧 关于 亿琪软件 关注我们 关注 ThingsBoard 微信公众号 手动增加微信公众号：thingsboard_cn 访问 ThingsBoard 中文社区网站 访问网址：http://www.thingsboard.club 最近在实施 ThingsBoard 项目中遇到一些问题总结，还有针对 Thingsboard 二次开发中的提示。 如果你正准备使用 Thingsboard 开源框架作为你的物联网平台来使用，这个文章对你应该有一定帮助。关于 Thingsboard 平台的介绍和基础不是本文的重点，所以，你在阅读本文时，应该具备一些 Thingsboard、物联网平台、MQTT、HTTP、物模型，等基础能力。还有，如果你要实施一套自己的物联网应用，可以参考这个文章：分享｜如何组建一个项目团队来完成物联网应用？ Thingsboard 项目实施 实施准备 统计你所在网络里面的设备、资产、测点、指标、通讯方式、状态等基础信息，可以统计一些信息形成 Excel 表格，越详细越好，多多益善； 基于你对物联网的了解，要把业务结合进来，综合考虑物联网平台到底对你的业务有什么帮助，比如：信息及时性？数据总量？统计分析？降本增效？还是有其他非技术目的？ 要有相关的技术储备，人员储备，还有资金储备，毕竟还是需要不少时间、精力、金钱和欲望投入在里面； 不管如何，你还是应该准备找一个合作伙伴，能够帮助你解决一些你无法预料到的问题，以解燃眉之急； IoT、物联网、平台，这些都是基础设施，并不能完全解决你的所有问题，要摆正 Thingsboard 在你的业务中的正确位置； 至于 Thingsboard 能帮到你什么，能做什么，有什么效果，你可以在本技术博客寻找你的答案，或到互联网找到你所需要的内容； 实施要点 这里以一个工业物联网平台为例，简单介绍一些要点供你参考： 目的：工业物联网平台，当然是为了工业生产服务，例如：这个指标采集上来，频率是多少，数据变化起到什么业务帮助。如果存粹为了做一个物联网平台而做一个，那就无所谓了，只要看上去像个平台，数据在变化，有图有真相，那也行； 方法：典型的实施方法，无非就是采集、汇聚、存储、分析，方法在不同的客户有不同的操作方式，比如：改造老平台是一种有据可循的，推翻老平台又是另一个，还有新建平台也是一脸茫然，不知所措；要根据实际的需求，制定适合自己的实施方法； 过程：来举例说明一个客户的实施过程：在这个客户而已，开源是开放的，免费的，没什么难度的，所以把实施过程简单理解为：1、安装；2、配置；3、调整；4、交付。我把其过程形容为：陷入泥潭的人，越陷越深，最后有可能会失败； 时间：有些客户觉得拿来即用，更何况 Thingsboard 是开源的，那就是多简单的事，其实，我们实施过的项目中，客户越是觉得简单的快速的，都会导致项目延迟，他们忽略了开源并不是你什么也不需要做就可以完成所有实施，赶工期不太适合用 Thingsboard 来做，假如你对开源真的有所了解的话；如果你觉得一个月能搞定，我建议你把时间放大到3个月，中间你会遇到太多的疑问和不知道，如果有合作伙伴能帮你，那你算是幸运儿，有些自己几个星期搞不定的问题，专业人士只需要十分钟； 效果：不要对项目实施的结果报以太多的期望，毕竟 Thingsboard 还有 PE 专业版在那里，开源版本只是提供了基础功能，的确可以让你达到完成一个物联网平台的概念，但是，需要太多的工作量去完善你的业务需求了，效果因人而异，各说纷云。 总结经验 开源贡献：如果你了解开源，你就知道开源不仅仅是索取，也需要贡献，如果你的实施过程中修复的问题并没有得到开源社区的合并，那么说明你以后需要一直去修改它，那是非常不利的局面，所以，建议你参与社区，参与贡献，对你长期使用 Thingsboard 是有帮助的而无害的； 可移植脚本：大版本不变化的情况下，你要尽量综合项目实施过程中的可复用脚本，这样，你在其他项目中就是亮点也是赢利点，这一点是很多实施者所忽视的地方； 形成标杆：一旦你发现客户的思路很有效果，你帮助客户实施完成，且具备一定的效益，你要知道这就是果实，要动得举一反三，运用到其他的客户那里，形成标杆项目，推广下去，毕竟复制/粘贴的成本是最低的。 Thingsboard 二次开发提示 前提 技术栈 其实就下面俩，你要突破的地方，我觉得应该就是 Angular 框架。如果你研究过 Thingsboard 源码，我的意思是你熟读多次，编译N次，简单开发过几次，你就应该明…

EdgeX 配置和注册介绍
type: item
date: 2023-03-01T02:16:00+00:00
description: EdgeXFoundry平台的分层和服务为边缘设备/节点和云/企业应用之间提供了一个双向转换引擎。EdgeX 作为边缘计算平台是非常不错的选择。 主要服务介绍 Device Services 设备服务 设备服务是与传感器/设备或物联网对象(“物”) 交互的边缘连接器，其中包括机器、机器人、无人机、HVAC 设备、相机等。通过利用可用的连接器，可以控制设备并/或传输数据至 EdgeX或从其传输数据。您还可以使用设备服务 SDK来创建您自己的 EdgeX设备服务。 可用的设备服务包括： MQTT Modbus TCP Modbus RTU BACnet IP & MSTP REST ONVIF IP Camera OPC-UA SNMP BEL GATT Core Services 核心服务 通过这些服务可大体了解给定部署中连接了哪些设备，正在传输哪些数据以及EdgeX的配置方式。 可用的核心服务包括： Core Data 核心数据 Core Command 核心命令/控制 Core Metadata 核心元数据 Registry & Config 注册和配置 Supporting Services 支持服务 包括诸如边缘分析 (也称为“本地分析”等微服务，以及典型的软件应用功能.例如记录、计划和数据清理等。 可用的支持服务包括： Alerts & Notification 报警和通知 Rule Engine 规则引擎 Scheduling 计划服务 Application Services 应用服务 应用服务是指将感应到的数据从 EdgeX提取、处理/转换和发送到所选端点或应用的方式。这些服务可以是分析数据包、企业或本地应用，也可以是 YiCLOUD、 AzureloTHub、AWS loT或 Google loT Core 等云系统。 可用的应用服务包括： Configurable Application Services 配置化运应用服务 Application Services 应用服务 通用配置 本地配置文件 以 device-sdk-go 为例，所谓本地配置文件，就是在边缘计算设备本地磁盘上的固定配置文件，一般情况下，在 cmd/res/ 目录下。 configuration.toml 这个文件是 SDK 的主要配置文件，规定了数据输入/处理/输出，队列定义，profile 和 device 配置文件的所在位置； profiles 目录 这个目录存在 yaml 配置文件，定义了设备类型（profile）的资源和命令； devices 目录 这个目录存在 yaml 配置文件，定义了初始设备资源； 实时注入配置 除了可以在初始化服务时的本地配置，也可以通过 API 的方式对配置进行设置，这样的情况是灵活且方便。 注册 consul 作为注册中心；各种服务，都是自己模块的信息注册到 consul 中集中管理；这是一个隐藏服务，使用者不需要特别关心，此服务以微服务运行。