EdgeX 爱好者社区 在使用和开发过程中，收到很多使用者和开发者的提问和反馈，我们将在一系列文章中给大家分享出来。 EdgeX Foundry 在下面将统一简称为 EdgeX。 系列文章四： 如何集成 RBAC 到 EdgeX？ 如何一次获取多个数据测点？ EdgeX 有 API Gateway 吗？ 如何接入云或企业网络？ 常见问题(FAQ) "如何集成 RBAC 到 EdgeX？" 这个问题是由老外在 GitHub 社区 discussions 里面提出来，他希望 EdgeX 能够集成第三方认证软件，比如 Keycloak，以便完成权限对接。 RBAC，其实不适合 EdgeX，这只是一个边缘计算框架而已，不是一个完整的业务系统； EdgeX 本身有 token 机制来保证安全，控制中心与 EdgeX 交互是安全可靠的就好了，无需 RBAC； 当然，你也可以改造 EdgeX 使得其能够支持 RBAC，这个工作量社区无法作出评估； "如何一次获取多个数据测点？" 当然可以，而且数量不限制。主要的问题就是每次 core-command 能承受的数据量需要手工进行调整，以达到你的数量请求。 定义一个 command，包含你所需要的 resource，即可进行绑定，EdgeX 会一次性获取完所有的数据，返回到 message bus 中； 修改 Service - MaxResultCount ，以便容纳你的 command； "EdgeX 有 API Gateway 吗？" GitHub 社区里，经常有人问关于 API Gateway 的事情，总的来说，基本都是没有好好读官方文档的人，不了解 EdgeX 的机制，所以不清楚。 EdgeX API Gateway 使用 nginx 来实现，并且集成了 Secure 机制，从 v3 版本开始，微服务之间也需要 JWT 认证，这是为了防止有应用绕过 API Gateway； 也可以自行修改 API Gateway 配置，完成更多集成和扩展，就是 nginx 配置而已； kong 安全机制已经从 EdgeX 被移除，相对简单了很多； "如何接入云或企业网络？" 这个问题，也是 GitHub 社区问的比较多的，尤其是那些不需要接入公有云服务的客户，他们有自己的云或企业网络，要接入进去。 用 eKuiper 规则引擎，可以通过简单的配置和命令完成简单的云对接，而且 eKuiper 已经内置了很多云服务的对接； eKuiper 除了一些云资源对接，也需要接入企业网络，比如数据库，时序数据库等，都可以完美支持； 自己开发一个 Application Service 来对接，官方提供了很多例子可以参考，主要是修改对接协议的数据格式皆可完成。 关于我们 "亿琪软件" 上海亿琪软件有限公司成立于 2016 年，专注于 5G 通信、AI 人工智能、边缘计算和大数据网络安全多项技术领域，致力于物联网领域前沿技术的创新，为用户提供全方位、智能化和安全的物联网解决方案。 2023 年，公司发布“YiFUSION ｜工业边缘智能融合一体机”产品，为工业客户提供一整套的边缘计算+AI 能力：高性能数据采集、多类型数据融合、AI 算法集成、云端业务对接。在边缘网关的基础上，集成了 IoT 平台的边缘协同能力、本地 Web SCADA 和 HMI 功能、本地数据存储、边缘 AI 视频分析、行业应用集成等。 2022 年，公司推出 “YiCLOUD ｜亿琪云”一站式物联网应用解决方案。公司的业务涵盖了智慧城市、智慧农业、智能工厂和智慧园区等多个领域，公司软硬件产品和解决方案获得华为技术认证，得到中国移动 OCP 认证，公司还是边缘计算产业联盟 ECC 成员。 "联系我们--商业服务" 网站：http://yiqisoft.cn 邮件：support@yiqisoft.cn 电话：021-68863086 手机：186-1666-9123
EdgeX Foundry 中文社区 在使用和开发过程中，收到很多使用者和开发者的提问和反馈，我们将在一系列文章中给大家分享出来。 系列文章二：主要介绍一些跟设备和驱动相关的问答。 EdgeX Foundry 性能如何？单个实例能承载多少设备？一次性能采集多少设备数据？ 如何开发一个新的 Device Service 设备驱动？ EdgeX 如何支持 I2C, SPI, UART 接口数据采集？ 官方支持通用协议情况如何？ ModBus，MQTT，REST，ONVIF 分别是什么情况？ 官方支持工业协议情况如何？ S7，OPC-UA，BACnet 分别是什么情况？ 常见问题(FAQ) 性能相关 !!! question "EdgeX Foundry 性能如何？" 这个问题由一位外国开发者在 GitHub 上提出来，坦率地说，这个问题范围太广了，不好完整的回答。 [x] 非要给个答案的话，那就是：EdgeX 性能完全取决于你的硬件配置。 !!! question "单个实例能承载多少设备？" 接着上一个大的问题，这是其中一个分支问题，假如计算资源足够的话，应该可以承受几十万设备。 [x] 笔者所在公司，采用 4核心，8G内存，可以跑 virtual device 50000-80000个，丝毫没有什么影响； [x] 把几万，几十万设备承载在一个实例中，其实并不是一个好的选择，要考虑到如果发生单点故障，应该如何应急处理； !!! question "一次性能采集多少设备数据？" 测试中有多少个命令以及命令间隔是多少？并且，您应该关注许多选项，例如：数据持久性、南向设备协议种类多少。 [x] 单协议采集，数量非常多的情况下，就看每个采集设备的测点数量，不会出现什么大问题，注意观察宿主机器上的资源利用率情况，及时作出调整； [x] 多协议采集，这样的情况下需要启动多个不同的设备服务微服务来运行，资源占用比单协议采集要多很多，需要更多的资源进行配合； 设备服务（驱动）开发 !!! question "如何开发一个新的 Device Service 设备驱动？" 其实，这个应该不是一个问答能解决的事情，需要一个章节或一个课题来解决。官方给出了很完整的[开发手册][3]，具备一些基础能力后，一步一步来，很容易开发出新的设备驱动。 [x] Golang SDK 符合官方的统一开发语言； 开发更简单； [x] C SDK 嵌入式设备上，或需要调用 C 库函数的情况下； 需要开启 C 编译环境，尤其是 docker 相关，生成 docker image 需要更多依赖； 总的来说，开发一个设备驱动，是一件很复杂且繁琐的工作，要测试的内容很多，稳定性/可靠性都是需要很多经验配合。 外设驱动开发 !!! question "EdgeX 如何支持 I2C, SPI, UART 接口数据采集？" 这个问题，是由一个国人在 GitHub 上提出来的，他的提法是否支持 I2C。 我的回答：不必要！ 原因有如下： EdgeX 更加偏向于计算，而不是针对一些串口协议进行解析； 这些传感器协议，也不适合接在边缘计算网关之上，太过于底层的协议，应该由 MCU + 实时操作系统来完成； 将这些协议转换成 ModBus RTU，我想这是更加合适的选择； 官方驱动支持情况 !!! question "通用协议：ModBus，MQTT，REST，ONVIF 分别是什么情况？" 这些协议，大部分都由社区开发完成，并且经过多轮迭代，稳定可靠，完全可以用在商业环境下。 ModBus: RTU/TCP 两个版本都支持的很好； MQTT: 跟随主版本一起发布，效果很好； REST: 跟随主版本一起发布，效果很好； ONVIF: 跟随主版本一起发布； v3.0 之前的版本隐性 bug 比较多，慢慢的完善了很多； 还需要一个流媒体服务器配合使用，毕竟 EdgeX 只是做了 ONVIF 协议适配； !!! question "工业场景协议：S7，OPC-UA，BACnet 分别是什么情况？" 工业场景下，稳定性要求高，性能要求也很高，那么，需要更多的时间来完成开发和测试。 Siemens S7: 官方还没有完整的开源子项目，笔者公司贡献了第一套代码，目前（11月12日）还在 review 中，详见：https://github.com/edgexfoundry-holding/device-s7 OPC-UA: 由社区完成了贡献，不过，也不是标准的 EdgeX 组件，需要自己编译和测试，并且用到项目中； BACnet: 官方有一个 C 版本的，也跟随主版本一起发布； 关于我们 !!! success "亿琪软件" 上海亿琪软件有限公司成立于 2016 年，专注于 5G 通信、AI 人工智能、边缘计算和大数据网络安全多项技术领域，致力于物联网领域前沿技术的创新，为用户提供全方位、智能化和安全的物联网解决方案。 2023 年，公司发布“YiFUSION ｜工业边缘智能融合一体机”产品，为工业客户提供一整套的边缘计算+AI 能力：高性能数据采集、多类型数据融合、AI 算法集成、云端业务对接。在边缘网关的基础上，集成了 IoT 平台的边缘协同能力、本地 Web SCADA 和 HMI 功能、本地数据存储、边缘 AI 视频分析、行业应用集成等。 2022 年，公司推出 “YiCLOUD ｜亿琪云”一站式物联网应用解决方案。公司的业务涵盖了智慧城市、智慧农业、智能工厂和智慧园区等多个领域，公司软硬件产品和解决方案获得华为技术认证，得到中国移动 OCP 认证，公司还是边缘计算产业联盟 ECC 成员。 !!! tip "关注我们" !!! warning "联系我们--商业服务" - 网站：http://yiqisoft.cn - 邮件：support@yiqisoft.cn - 电话：021-68863086 - 手机：186-1666-9123
EdgeX Foundry 中文社区 在使用和开发过程中，收到很多使用者和开发者的提问和反馈，我们将在一系列文章中给大家分享出来。 系列文章一： 应该使用哪个版本？ 二次开发难度高吗？ 为什么 EdgeX 看上去那么复杂？ 常见问题(FAQ) !!! question "我刚刚接触 EdgeX，应该使用哪个版本比较合适？" - [x] 我们建议，你应该使用最近发布的版本，可以根据版本号，比如：v2.3, v3.0；也可以根据版本代号，比如：Levski, Minnesota； - [x] 如果你在尝试对 EdgeX 二次开发，选择 main branch 是最为合适的了，但是，要紧跟社区的 commit ; !!! question "EdgeX 二次开发的难度高么？需要什么技能才能掌握？" - [x] 坦白说，难度非常大(不是危言耸听)，EdgeX 设计架构相对而言来说是很复杂，从另一个方面来说也是非常结构化/模块化，具体看你对架构和代码的理解程度； - [x] 作为中文母语的开发人员而言，全英文的资料还是有点阻碍，还好，老外和先前的开发者在文档和代码写的还是非常详细； - [x] 如果仅仅是开发南向设备层或北向用层，其实还是比较容易了，根据官方文档，有开发基础（golang, iot, network, web, api等）上手不难，但是需要时间； !!! question "为什么 EdgeX 看上去那么复杂？" **坦白说：因为你接触时间太短了，还没有吃透里面的内容。** - [x] 自2017年来，EdgeX 已经迭代了 12 个大版本（社区的计划是每年 2 次大版本更新，分别是：上半年5-6月份一次，下半年11-12月份一次）； - [x] 模块化打散，基础模块多，全微服务化，等，这些特性就已经够开发者思索一番，不是一个简单的小程序架构； - [x] EdgeX 设计思路超前，与时俱进，所采用的技术都是非常前沿和高端，所以，开发者需要具备更多的知识才能驾驭； - [x] 如果条件允许，可以组件一个背景经验丰富的开发者团队，仔细研究其文档和代码，或许半年后可以掌握技巧（笔者公司，从接触到基本掌握开发技巧花了2年多时间）； !!! question "关于 EdgeX 文档、开发有什么建议？" - [x] 文档很详细，但是内容很多，每个点都写得很详细，需要花很多时间来研究； - [x] 除了官方文档网站： [docs.edgexfoundry.org][3]，还可以访问官方 Wiki 网站：[wiki.edgexfoundry.org][4]； - 官方文档网站：这里最主要的是系统介绍、手册、参考、案例等，针对使用者和初级开发者； - Wiki 网站：这里主要内容是社区管理、底层设计、事件、技术预研等，针对开源社区贡献者和高级开发者； - [x] 自 2023年11月开始，沟通渠道 Slack 已经被社区废止，需要与社区进行对话，只有 [GitHub Discusion][5]，当然也可以通过邮件进行沟通； - [x] 熟读源码太重要了，当然，也会非常吃力，这个没有弯路也没有捷径，只能花精力去做； - [x] 要想驾驭 EdgeX 开发，完成设备采集和业务对接，需要很多经验，很简单的方法，就是去搜一下：`边缘计算`，这个关键词； 关于我们 !!! success "亿琪软件" 上海亿琪软件有限公司成立于 2016 年，专注于 5G 通信、AI 人工智能、边缘计算和大数据网络安全多项技术领域，致力于物联网领域前沿技术的创新，为用户提供全方位、智能化和安全的物联网解决方案。 2023 年，公司发布“YiFUSION ｜工业边缘智能融合一体机”产品，为工业客户提供一整套的边缘计算+AI 能力：高性能数据采集、多类型数据融合、AI 算法集成、云端业务对接。在边缘网关的基础上，集成了 IoT 平台的边缘协同能力、本地 Web SCADA 和 HMI 功能、本地数据存储、边缘 AI 视频分析、行业应用集成等。 2022 年，公司推出 “YiCLOUD ｜亿琪云”一站式物联网应用解决方案。公司的业务涵盖了智慧城市、智慧农业、智能工厂和智慧园区等多个领域，公司软硬件产品和解决方案获得华为技术认证，得到中国移动 OCP 认证，公司还是边缘计算产业联盟 ECC 成员。 !!! tip "关注我们" !!! warning "联系我们--商业服务" - 网站：http://yiqisoft.cn - 邮件：support@yiqisoft.cn - 电话：021-68863086 - 手机：186-1666-9123