利用 Azure IoT Edge 模块孪生实现电路状态管理
通过应用于 Docker 容器中运行 Johnny 5 的模块孪生的领域特定语言,在树莓派上闪烁 LED。
项目背景
概览:
Azure IoT Edge 允许间歇性连网设备通过“模块孪生”获取期望属性。这些孪生可作为期望状态配置驱动 Edge 模块内特定行为。Edge 模块以容器工作负载运行,支持自愈与快速部署,无需持续连网。有网时,设备可利用云服务调用模块内方法。
本项目开发基于 Azure IoT NodeJS SDK 的 IoT Edge 模块,从云端获取期望状态,配置树莓派 GPIO 引脚,利用 Johnny 5 对连接电路执行期望操作。
这支持有趣用例:* 单电路多运行模式,通过应用不同状态配置切换 * 经 Kubernetes 编排配置妥当时,两设备连接同一电路实现冗余硬件故障转移
背景:
期望状态配置是流行概念,常用于首次预配服务器及强制运行系统合规。我们将此概念扩展至电路,利用为间歇网络环境下韧性与健康运行设计的服务。此法允许运行时改变连接电路行为,支持涉及硬件冗余的有趣场景。
微软 Azure IoT Edge 运行时提供坚实基础。该运行时作为本地服务运行,允许编排容器化“模块”,按设备在 Azure 云配置。始终使用两个系统模块:edge-agent 获取并应用模块部署配置,edge-hub 提供缓存消息到云与模块间通信。
我们从创建基于 Azure IoT NodeJS SDK 的 IoT Edge 模块开始。该模块接收孪生配置,指定设备的期望与报告属性。我们采用领域特定语言解析为 Johnny 5 配置。这让我们在云端定义电路功能,并应用到 IoT Edge 模块。
示例配置如下:
“config”: “{\”peripherals\”:[{\”type\”:\”Led\”,\”name\”:\”alarm\”,\”settings\”
:{\”pin\”:\”GPIO18\”},\”initialState\”: {\”method\”:\”blink\”,\”period\”:500},\
“outputAlias\”:\”alias2\”},{\”type\”:\”Button\”,\”name\”:\”button\”,\”settings\”:
{\”pin\”:\”GPIO20\”},\”outputAlias\”:\”alias1\”}]}”,
此例定义 GPIO18 上的 LED 设备,initialState 为每 500ms 闪烁。LED 状态可通过 outputAlias 传播至其他模块。GPIO20 上的按钮将状态变化发布至 alias1。此配置下,可通过路由 outputAlias 在额外模块中独立响应状态变化。
目前支持通过此机制配置温度计、LED 与按钮设备。
复现步骤:
首先,您需要拥有部署了 IoT Hub 的 Microsoft Azure 订阅。
接着,按此处说明连接 LED 至树莓派 GPIO18 准备硬件。
硬件与云服务就绪后,按此指南在树莓派安装 Azure IoT Edge 运行时。安装后,按此说明手动预配设备。
接下来在 Azure 创建特殊部署以闪烁 LED。
按下图创建部署:
镜像 URL:
toolboc/johnny5onedge:0.0.981-arm32v7
容器创建选项:
{“ExposedPorts”:{“9229/tcp”:{}},“HostConfig”:{“PortBindings”:{“9229/tcp”:[{“HostPort”:“9229”}]},“Privileged”:true,“Devices”:[{“PathOnHost”:“/dev/i2c-1”,“PathInContainer”:“/dev/i2c-1”,“CgroupPermissions”:“rwm”},{“PathOnHost”:“/dev/gpiomem”,“PathInContainer”:“/dev/gpiomem”,“CgroupPermissions”:“rwm”}],“Mounts”:[{“Type”:“bind”,“Source”:“/lib/modules/”,“Target”:“/lib/modules/”}]}}
模块孪生期望属性:
{
“properties.desired”: {
“config”: “{\”peripherals\”:[{\”type\”:\”Led\”,\”name\”:\”alarm\”,\”settings\”:{\”pin\”:\”GPIO18\”},\”initialState\”: {\”method\”:\”blink\”,\”period\”:500},\”outputAlias\”:\”alias2\”},{\”type\”:\”Button\”,\”name\”:\”on\”,\”settings\”:{\”pin\”:\”GPIO20\”},\”outputAlias\”:\”alias1\”}]}”
}
}
完成后保存。跳过 “Specify Routes” 与 “Specify Metrics” 直到 “Target Devices”。
Priority 设为 10,目标条件添加 tags.environment=’blinK
Read More Information…..
Desired State Configuration for Circuits
制造工艺
- CAD/CAM 技术赋能冲模制造:从虚拟设计到纳米级精度的跨越
- 发动机配置全解析:类型特征与分类体系
- 高风险作业下HMI配置优化指南
- 控制电路:基础、应用与最佳实践
- 信号电路高级屏蔽电缆:实用接线技巧 (第二部分)
- 信号电路屏蔽电缆:第一部分——最佳实践指南
- 精通Azure Kubernetes:核心工具、实战技巧与最佳实践
- Azure认证路径选择指南:Cloud Institute专家视角的职业规划
- 是否应该考取 Azure DevOps 认证?收益与职业影响全解析
- 无需正规培训攻克 Azure DevOps 认证考试
- 掌握云成本管理:AWS、GCP、Azure 三大平台实证优化策略
- 微软推出Azure Edge Zones赋能5G物联网与AI工作负载