Skip to main content

MqttClient

提示

通过自定义脚本,可快速适配业务模型,比如各大云平台的Iot物模型

脚本的示例请查看常见问题

一、说明

MqttClient通过Tcp/WebSocket的方式,发布内容到Broker(Server),可以定时/变化发布数据

通道只支持 Other

二、插件属性配置项

属性说明备注
IPServerIP,为空时指任意IP
端口连接端口1883
是否WebSocket连接是否WebSocket连接False
WebSocketUrlWebSocketUrlws://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; }
}

三、变量业务属性

允许写入

单独配置变量是否允许写入