IoTSharp.Edge

May 11, 2026 · View on GitHub

统一的 Gateway 单宿主程序。

当前模式已经收口为一个可执行程序 IoTSharp.Edge,并新增独立前端 IoTSharp.Edge.Admin。Gateway 的职责为:

  • 读取本地 bootstrap.json
  • 向 IoTSharp 平台注册、心跳、上报能力
  • 从 IoTSharp 平台拉取采集配置
  • 维护本地离线采集配置 local-collection.json
  • 将平台侧采集模型映射为本地执行缓存并执行轮询
  • 将采集结果上传到 IoTSharp 或 SonnetDB

职责边界

IoTSharp 平台侧可负责:

  • 采集模型设计
  • 边缘节点管理
  • 配置版本管理
  • 任务下发与运行观察

Gateway 侧负责:

  • 南向协议执行
  • 本地执行缓存与离线配置
  • 采集轮询与数据上传
  • BASIC 采集脚本执行
  • Bootstrap、诊断、本地配置 API

当上游平台不可用或未启用时,Edge 可以通过本地配置继续工作;当上游平台成功下发配置时,Edge 会缓存最新配置到本地,离线后仍可沿用。

EdgeEnableBasicRuntimeExtensions=true 时,宿主会在启动时注入 IoTSharp.Edge.RuntimeExtensions,把驱动读取、驱动写入、变换应用和上传桥接能力暴露给 BASIC 脚本;AOT 发布会自动跳过这一层扩展。基础运行时里的 MQTT、串口、Modbus、PLC 能力始终可用。

本地管理界面

本地管理界面位于独立项目 src/IoTSharp.Edge.Admin,通过 HTTP 调用 src/IoTSharp.Edge 的本地 API。

当前界面提供:

  • 运行态与配置统计

  • Modbus 采集拓扑结构化编辑

  • SonnetDB 上传目标结构化编辑

  • 本地 JSON 高级编辑

  • BASIC 采集脚本查看

  • 运行日志查看

  • GET /api/bootstrap/config

  • POST /api/bootstrap/config

  • GET /api/local/configuration

  • PUT /api/local/configuration

  • POST /api/local/configuration/apply

  • POST /api/local/configuration/reset

  • GET /api/scripts/polling

  • GET /api/diagnostics/logs

  • GET /api/diagnostics/summary

  • GET /api/health

诊断摘要里会额外显示当前 BasicRuntime 已注入的扩展名称。

配置同步

Gateway 会周期性调用:

  • GET /api/Edge/{access_token}/CollectionConfig

拉取 IoTSharp 平台维护的采集配置,然后将其转换为本地运行时缓存:

  • GatewayChannels
  • Devices
  • Points
  • PollingTasks
  • TransformRules
  • UploadChannels
  • UploadRoutes

本地 SQLite 现在只是执行缓存,不再是配置主数据源。

如果本次拉取或映射失败,Gateway 会保留上一版本地缓存继续运行,不会清空现有执行配置。

上传链路

平台或本地配置映射后,Gateway 会自动派生上传通道:

  • 遥测上报到 POST /api/Devices/{access_token}/Telemetry
  • 属性上报到 POST /api/Devices/{access_token}/Attributes
  • SonnetDB 写入使用 NuGet 包 SonnetDB 提供的 ADO.NET provider

本地闭环示例默认将 Modbus 模拟设备数据写入 SonnetDB 的 metrics.edge_modbus

目录结构

  • src/IoTSharp.Edge.Domain
    • 领域模型与统一驱动接口
  • src/IoTSharp.Edge.Application
    • 运行服务、配置快照、转换服务
  • src/IoTSharp.Edge.Infrastructure
    • SQLite 持久化、驱动适配、上传通道
  • src/IoTSharp.Edge
    • 单宿主程序、bootstrap/诊断/本地配置 API、平台同步 worker
  • src/IoTSharp.Edge.Admin
    • 独立本地管理前端
  • src/IoTSharp.Edge.DeviceSimulator
    • 基于 IoTServer 的设备模拟程序

当前驱动

已接入:

  • Modbus
  • Siemens S7
  • Mitsubishi
  • Omron FINS
  • Allen-Bradley

已保留统一契约但暂未启用完整实现:

  • OPC UA
  • OPC DA
  • MT CNC
  • Fanuc CNC

本地运行

docker compose up -d --build

默认地址:

构建验证

pwsh ./build.ps1 -Action Build
pwsh ./build.ps1 -Action Publish -MustAot