256 lines
9.8 KiB
Plaintext
256 lines
9.8 KiB
Plaintext
---
|
||
id: 301
|
||
title: MqttClient
|
||
---
|
||
|
||
|
||
import useBaseUrl from "@docusaurus/useBaseUrl";
|
||
import Tag from "@site/src/components/Tag.js";
|
||
import Highlight from '@site/src/components/Highlight.js';
|
||
|
||
:::tip `提示`
|
||
|
||
通过自定义脚本,可快速适配业务模型,比如各大云平台的Iot物模型
|
||
|
||
脚本的示例请查看**常见问题**
|
||
|
||
:::
|
||
|
||
## 一、说明
|
||
|
||
MqttClient通过Tcp/WebSocket的方式,发布内容到Broker(Server),可以定时/变化发布数据
|
||
|
||
|
||
通道只支持 Other
|
||
|
||
## 二、插件属性配置项
|
||
|
||
<img src={require("@site/static/img/docs/MqttClient.png").default} />
|
||
|
||
| 属性 | 说明 | 备注|
|
||
| ---------------| --------------------------| ---|
|
||
| IP | ServerIP,为空时指任意IP | |
|
||
| 端口 | 连接端口 | 1883|
|
||
| 是否WebSocket连接 | 是否WebSocket连接 | False |
|
||
| WebSocketUrl | WebSocketUrl | ws://127.0.0.1:8083/mqtt |
|
||
| 账号 | 账号 | |
|
||
| 密码 | 密码 | |
|
||
| 连接Id | 连接Id | |
|
||
| 连接超时时间 | 连接超时时间 | |
|
||
| 允许Rpc写入 | 是否允许写入变量 | |
|
||
| Rpc写入Topic | 写入变量的主题 | 实际的写入主题为固定通配 {ThingsGateway/+/[填入值]} ,其中RpcWrite为该属性填入内容,+通配符是不固定GUID值,每次执行写入时会在不同的主题中返回;返回结果主题会在主题后添加Response , 也就是{ThingsGateway/+/[填入值]/Response} |
|
||
| 数据请求Topic | 该主题接受到任何消息都会发布全部信息到对应的变量/设备/报警主题中 | |
|
||
| 设备是否列表 | 设备是否列表上传,false时每个设备实体都会单独发布,注意性能需求,默认为true | |
|
||
| 变量是否列表 | 变量是否列表上传,false时每个变量实体都会单独发布,注意性能需求,默认为true | |
|
||
| 报警是否列表 | 报警是否列表上传,false时每个报警实体都会单独发布,注意性能需求,默认为true | |
|
||
| 设备Topic | 设备实体的发布主题 ,使用${key}作为匹配项,key必须是上传实体中的属性 | |
|
||
| 变量Topic | 变量实体的发布主题 ,使用${key}作为匹配项,key必须是上传实体中的属性 | |
|
||
| 报警Topic | 报警实体的发布主题 ,使用${key}作为匹配项,key必须是上传实体中的属性 | |
|
||
| 设备实体脚本 | 脚本返回新的实体列表,动态类中需继承**IDynamicModel**,传入列表为**DeviceData**,查看以下具体属性 | 编辑页面中,可通过检查按钮验证脚本,脚本示例请查看**常见问题** |
|
||
| 变量实体脚本 | 脚本返回新的实体列表,动态类中需继承**IDynamicModel**,传入列表为**VariableData**,查看以下具体属性 | 编辑页面中,可通过检查按钮验证脚本,脚本示例请查看**常见问题** |
|
||
| 报警实体脚本 | 脚本返回新的实体列表,动态类中需继承**IDynamicModel**,传入列表为**AlarmVariable**,查看以下具体属性 | 编辑页面中,可通过检查按钮验证脚本,脚本示例请查看**常见问题** |
|
||
| 是否选择全部变量 | 是否选择全部变量,true时不需要单个变量添加业务属性 | |
|
||
| 是否间隔执行 | 是否选择全部变量,true间隔上传,False变化检测上传 | |
|
||
| 间隔执行时间 | 间隔执行时间 | |
|
||
| 启用缓存 | 是否启用缓存 | |
|
||
| 上传列表最大数量 | 每一次上传的列表最大数量 | |
|
||
| 内存队列最大数量 | 内存队列的最大数量,超出或失败时转入文件缓存,根据数据量设定适当值 | |
|
||
|
||
### 脚本接口
|
||
```
|
||
|
||
public interface IDynamicModel
|
||
{
|
||
IEnumerable<dynamic> GetList(IEnumerable<dynamic> datas);
|
||
}
|
||
|
||
|
||
```
|
||
|
||
### DeviceData
|
||
```
|
||
|
||
/// <summary>
|
||
/// 设备业务变化数据
|
||
/// </summary>
|
||
public class DeviceData
|
||
{
|
||
/// <inheritdoc cref="PrimaryIdEntity.Id"/>
|
||
public long Id { get; set; }
|
||
|
||
/// <inheritdoc cref="Device.Name"/>
|
||
public string Name { get; set; }
|
||
|
||
/// <inheritdoc cref="DeviceRunTime.ActiveTime"/>
|
||
public DateTime ActiveTime { get; set; }
|
||
|
||
/// <inheritdoc cref="DeviceRunTime.DeviceStatus"/>
|
||
public DeviceStatusEnum DeviceStatus { get; set; }
|
||
|
||
/// <inheritdoc cref="DeviceRunTime.LastErrorMessage"/>
|
||
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
||
public string LastErrorMessage { get; set; }
|
||
|
||
/// <inheritdoc cref="Device.Remark1"/>
|
||
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
||
public string Remark1 { get; set; }
|
||
|
||
/// <inheritdoc cref="Device.Remark2"/>
|
||
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
||
public string Remark2 { get; set; }
|
||
|
||
/// <inheritdoc cref="Device.Remark3"/>
|
||
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
||
public string Remark3 { get; set; }
|
||
|
||
/// <inheritdoc cref="Device.Remark4"/>
|
||
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
||
public string Remark4 { get; set; }
|
||
|
||
/// <inheritdoc cref="Device.Remark5"/>
|
||
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
||
public string Remark5 { get; set; }
|
||
}
|
||
|
||
```
|
||
|
||
### VariableData
|
||
```
|
||
|
||
/// <summary>
|
||
/// 变量业务变化数据
|
||
/// </summary>
|
||
public class VariableData
|
||
{
|
||
/// <inheritdoc cref="PrimaryIdEntity.Id"/>
|
||
public long Id { get; set; }
|
||
|
||
/// <inheritdoc cref="Variable.Name"/>
|
||
public string Name { get; set; }
|
||
|
||
/// <inheritdoc cref="VariableRunTime.DeviceName"/>
|
||
public string DeviceName { get; set; }
|
||
|
||
/// <inheritdoc cref="VariableRunTime.Value"/>
|
||
public object Value { get; set; }
|
||
|
||
/// <inheritdoc cref="VariableRunTime.ChangeTime"/>
|
||
public DateTime ChangeTime { get; set; }
|
||
|
||
/// <inheritdoc cref="VariableRunTime.CollectTime"/>
|
||
public DateTime CollectTime { get; set; }
|
||
|
||
/// <inheritdoc cref="VariableRunTime.IsOnline"/>
|
||
public bool IsOnline { get; set; }
|
||
|
||
/// <inheritdoc cref="VariableRunTime.LastErrorMessage"/>
|
||
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
||
public string? LastErrorMessage { get; set; }
|
||
|
||
/// <inheritdoc cref="Device.Remark1"/>
|
||
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
||
public string Remark1 { get; set; }
|
||
|
||
/// <inheritdoc cref="Device.Remark2"/>
|
||
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
||
public string Remark2 { get; set; }
|
||
|
||
/// <inheritdoc cref="Device.Remark3"/>
|
||
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
||
public string Remark3 { get; set; }
|
||
|
||
/// <inheritdoc cref="Device.Remark4"/>
|
||
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
||
public string Remark4 { get; set; }
|
||
|
||
/// <inheritdoc cref="Device.Remark5"/>
|
||
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
||
public string Remark5 { get; set; }
|
||
}
|
||
|
||
```
|
||
|
||
### AlarmVariable
|
||
```
|
||
|
||
/// <summary>
|
||
/// 报警变量
|
||
/// </summary>
|
||
public class AlarmVariable
|
||
{
|
||
/// <inheritdoc cref="Variable.Name"/>
|
||
[SugarColumn(ColumnDescription = "变量名称", IsNullable = false)]
|
||
public string Name { get; set; }
|
||
|
||
/// <inheritdoc cref="Variable.Description"/>
|
||
[SugarColumn(ColumnDescription = "描述", IsNullable = true)]
|
||
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
||
public string? Description { get; set; }
|
||
|
||
/// <inheritdoc cref="VariableRunTime.DeviceName"/>
|
||
[SugarColumn(ColumnDescription = "设备名称", IsNullable = true)]
|
||
public string DeviceName { get; set; }
|
||
|
||
/// <inheritdoc cref="Variable.RegisterAddress"/>
|
||
[SugarColumn(ColumnDescription = "变量地址")]
|
||
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
||
public string RegisterAddress { get; set; }
|
||
|
||
/// <inheritdoc cref="Variable.DataType"/>
|
||
[SugarColumn(ColumnDescription = "数据类型", ColumnDataType = "varchar(100)")]
|
||
public DataTypeEnum DataType { get; set; }
|
||
|
||
/// <inheritdoc cref="VariableRunTime.AlarmCode"/>
|
||
[SugarColumn(ColumnDescription = "报警值", IsNullable = false)]
|
||
public string AlarmCode { get; set; }
|
||
|
||
/// <inheritdoc cref="VariableRunTime.AlarmLimit"/>
|
||
[SugarColumn(ColumnDescription = "报警限值", IsNullable = false)]
|
||
public string AlarmLimit { get; set; }
|
||
|
||
/// <inheritdoc cref="VariableRunTime.AlarmText"/>
|
||
[SugarColumn(ColumnDescription = "报警文本", IsNullable = true)]
|
||
public string? AlarmText { get; set; }
|
||
|
||
/// <inheritdoc cref="VariableRunTime.AlarmTime"/>
|
||
[SugarColumn(ColumnDescription = "报警时间", IsNullable = false)]
|
||
public DateTime AlarmTime { get; set; }
|
||
|
||
/// <inheritdoc cref="VariableRunTime.EventTime"/>
|
||
public DateTime EventTime { get; set; }
|
||
|
||
/// <summary>
|
||
/// 报警类型
|
||
/// </summary>
|
||
public AlarmTypeEnum? AlarmType { get; set; }
|
||
|
||
/// <summary>
|
||
/// 事件类型
|
||
/// </summary>
|
||
public EventTypeEnum EventType { get; set; }
|
||
|
||
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
||
public string Remark1 { get; set; }
|
||
|
||
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
||
public string Remark2 { get; set; }
|
||
|
||
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
||
public string Remark3 { get; set; }
|
||
|
||
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
||
public string Remark4 { get; set; }
|
||
|
||
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
||
public string Remark5 { get; set; }
|
||
}
|
||
|
||
```
|
||
|
||
## 三、变量业务属性
|
||
|
||
### 允许写入
|
||
|
||
单独配置变量是否允许写入
|
||
|