IoTSharp 是一个基于 .NET 8.0 的开源物联网基础平台,采用 Apache-2.0 许可证,集设备管理、数据收集、处理、可视化与远程控制于一体,遵循数字孪生理念将物理设备映射到数字世界。


一、核心功能模块

1. 设备管理

  • 设备全生命周期管理:支持设备注册、配置、监控、删除等操作,提供设备ID、型号、固件版本等基本信息管理

  • 网关配置器:支持网关设备的管理与配置

  • 设备属性管理:允许自定义设备属性字段(如温度阈值、湿度范围),自动收集并存储数据,提供可视化图表展示

  • 多类型设备支持:区分普通设备与网关设备,提供差异化管理能力

2. 遥测数据监测

  • 多参数采集:支持温度、湿度、压力等多种遥测数据的实时采集

  • 高效数据传输:自动收集设备端数据并传输至云端服务器进行处理和存储

  • 可视化展示:提供实时图表、历史曲线图等丰富的数据展示工具

  • 异常触发机制:内置规则链设计引擎,支持设置异常值报警条件和自动化响应动作

3. RPC 多模式远程控制

  • 跨网络控制:通过网络连接实现远程设备操作,支持指令编码、传输、解码及执行结果反馈的完整闭环

  • 多访问途径:支持 Web 界面、移动应用程序、API 接口等多种控制方式

  • 安全机制:所有通信过程加密传输,提供详尽日志记录功能,便于故障排查与审计

  • 灵活操作:Web 端提供直观操作面板,移动端优化小屏幕体验,API 支持第三方定制化集成

4. 规则链设计引擎

  • 可视化规则配置:通过拖拽方式创建数据处理流程

  • 灵活触发逻辑:支持基于设备数据、时间、事件等多维度触发条件

  • 自动化响应:可联动告警、设备控制、数据转发等动作

  • 模块化处理:通过 FlowRuleProcessor 负责规则链的执行

5. 告警与通知系统

  • 多源监控:监控设备、网关和资产的异常状态

  • 灵活规则配置:支持自定义告警触发条件和阈值

  • 多通道通知:可通过邮件、短信、Webhook 等多种方式通知相关人员

  • 状态管理:支持告警确认、清除、查询及多租户数据隔离


二、技术架构支持

1. 协议支持

  • 标准协议:HTTP、MQTT、CoAp

  • 协议扩展:支持非标协议的转换与接入

  • SDK 支持:提供 HTTP 和 MQTT 协议的客户端 SDK

2. 数据库支持

表格

复制

类型支持的数据库
关系型数据库PostgreSQL、MySQL、Oracle、SQL Server、SQLite(均支持分表)
时序数据库InfluxDB、IoTDB、TDengine、TimescaleDB、PinusDB
消息存储PostgreSQL、MongoDB、LiteDB、MySQL、SQL Server、InMemory

3. 消息中间件

支持 RabbitMQ、Kafka、ZeroMQ、NATS、Pulsar、Redis Streams、Amazon SQS、Azure Service Bus、InMemory 等多种消息队列

4. 事件总线

  • 发布-订阅模式:提供松耦合的异步通信机制

  • 核心组件:EventBusPublisher(事件发布)和 EventBusSubscriber(事件订阅与处理)

  • 高扩展性:支持多种消息队列后端,确保系统弹性


三、数字孪生与资产管理

1. 数字孪生实现

  • 物理设备映射:将可见与不可见的物理设备统一孪生到数字世界

  • 实时同步:设备状态、属性、遥测数据实时同步至数字孪生体

  • 虚拟化运营:支持在数字环境中模拟设备行为与系统配置变更

2. 资产管理

  • 资产列表管理:对物联网资产进行统一管理

  • 产品化理念:结合资产管理与产品化发展,适应复杂应用场景

  • 多租户隔离:租户数据完全隔离,确保安全性


四、平台管理功能

1. 仪表盘

  • 全局概览:展示设备数量、在线设备、最新遥测、报警事件等关键指标

  • 实时状态:可视化呈现系统运行状态与设备健康状况

2. 多租户管理

  • 租户列表:支持多租户环境的租户信息管理

  • 权限分级:区分系统管理员与租户管理员权限,实现精细化管理

  • 独立配置:各租户可独立配置设备、规则与告警策略

3. 用户与客户管理

  • 用户列表:平台用户账户管理

  • 客户列表:客户信息管理

  • 国际化配置:支持多语言与本地化设置

4. 系统设置

  • 字典设置:配置系统参数与业务字典

  • 证书管理:管理设备接入证书与安全凭证

  • 安全配置:身份认证、访问控制、数据加密等安全机制


五、部署与生态

环境说明:

1.安装Node

Node.js官网

官网下载并安装,npm使用淘宝镜像

用于编译IotSharp前端Vue项目使用

2.编译和启动IotSharp

后端环境需要安装.NET 8.0

拉取最新IotSharp项目代码,使用VS 2022打开,设置如下

先使用数据库Sqlite进行快速演示,这时遥测将存储在Sqlite数据库中,后面可以换成其他时序数据库,使用配置文件为“appsettings.Sqlite.json”

{
  "DataBase": "Sqlite",
  "ConnectionStrings": {
    "IoTSharp": "Data Source=.data/IoTSharp.db",
    "TelemetryStorage": "Data Source=.data/TelemetryStorage.db"
  },
  "EventBusStore": "InMemory",
  "EventBusMQ": "InMemory",
  "TelemetryStorage": "Sharding",
  "RootKey": "kissme",
  "EventBus": "Shashlik"
}

启动项目,浏览器输入“http://localhost:8888/”打开前端页面,注册用户并登录

【设备管理】新增网关“IoTGateway”

复制Token值“e07c389fae774f07a810dc87b6466761”和Id值“b6e643f0-4403-4437-b406-1ec84d677e68”

3.IoTGateway配置,接入IotSharp

1)部署IoTGateway

下载Releases · iioter/iotgateway

下载并解压iotgateway-2.1.1-win-x64.zip​,启动

IoTGateway.exe

浏览器访问 http://localhost:518/​

用户名: admin​ 密码: iotgateway.net​

2)接入IotSharp

为方便演示,设置【变量配置】,只勾选并上传“用电量”

设置【传输配置】接入IotSharp

MqttServer的IP地址填写IotSharp的服务IP,Id和用户名分别填写IotSharp设备管理中网关的Id和Token值

提交后,回到IotSharp前端页面,活动状态变为“活动”

有实时的遥测数据

遥测历史可以查询历史数据

4.使用Influxdb

1)部署influxdb

Releases · influxdata/influxdb

下载influxdb2-2.7.11-windows.zip​并解压

启动

influxd.exe

启动后浏览器打开http://localhost:8086/​,设置好用户名和密码等信息,并记录下API Token值“rMJtiyyXgUlhztRAgooCXRlkDi55hHcvRJAUUijKkDvBajr0YI-T5CK75uT1JC9zSXyMey1i6lRQUBXLyJmjHA==”

2)修改项目配置

修改配置“appsettings.InfluxDB.json”

{
  "Logging": {
    "LogLevel": {
      "Default": "Information"
    }
  },
  "DataBase": "Sqlite",
  "ConnectionStrings": {
    "IoTSharp": "Data Source=.data/IoTSharp.db",
    "TelemetryStorage": "http://192.168.1.212:8086/?org=vinciyan.com&bucket=vinci_bucket&token=rMJtiyyXgUlhztRAgooCXRlkDi55hHcvRJAUUijKkDvBajr0YI-T5CK75uT1JC9zSXyMey1i6lRQUBXLyJmjHA=="
  },
  "JwtKey": "kissmekissmekissmekissmekissmekissmekissmekissmekissmekissmekissmekissmekissmekissmekissmekissme",
  "JwtExpireHours": 24,
  "JwtIssuer": "IoTSharp.Net",
  "JwtAudience": "IoTSharp.Net",
  "EventBusStore": "InMemory",
  "EventBusMQ": "InMemory",
  "TelemetryStorage": "InfluxDB",
  "EventBus": "Shashlik"
}

更改项目启动方式

此时后端日志输出如下,表示数据已经写入Influxdb

IoTSharp.EventBus.EventBusSubscriber: Information: 更新IoTGateway(b6e643f0-4403-4437-b406-1ec84d677e68)属性数据结果2
IoTSharp.EventBus.EventBusSubscriber: Information: 更新IoTGateway(b6e643f0-4403-4437-b406-1ec84d677e68)属性数据结果2
IoTSharp.EventBus.EventBusSubscriber: Information: 更新IoTGateway(b6e643f0-4403-4437-b406-1ec84d677e68)属性数据结果2
IoTSharp.Storage.InfluxDBStorage: Information: 数据入库完成,共数据1条
3)查询Influxdb中数据


六、技术架构优势

  1. 跨平台兼容:基于 .NET 8.0,支持 Windows、Linux、macOS

  2. 插件化设计:时序数据存储采用插件化架构,支持动态切换存储后端

  3. 高性能:支持数据库分表、异步消息处理、高效规则引擎

  4. 安全可靠:内置身份认证、数据加密、访问控制与日志审计机制

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐