IoTSharp 开源物联网基础平台,开源且免费的
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. 系统设置
-
字典设置:配置系统参数与业务字典
-
证书管理:管理设备接入证书与安全凭证
-
安全配置:身份认证、访问控制、数据加密等安全机制
五、部署与生态
环境说明:
- Visual Studio 2022 Community
- IotSharp代码:https://github.com/IoTSharp/IoTSharp.git
- IoTGateway版本:v2.1.1
- Node版本:v20.18.1
- Influxdb版本:v2.7.11
1.安装Node
官网下载并安装,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中数据

六、技术架构优势
-
跨平台兼容:基于 .NET 8.0,支持 Windows、Linux、macOS
-
插件化设计:时序数据存储采用插件化架构,支持动态切换存储后端
-
高性能:支持数据库分表、异步消息处理、高效规则引擎
-
安全可靠:内置身份认证、数据加密、访问控制与日志审计机制
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)