中国国旗 中国智造
中国国旗 中国智造

JOYZL SCADA Server

设备类接口

URL /actions/device/*

PKG com.joyzl.scada.client.device.*

设备类接口
模块接口用途权限
DeviceAlarmAmount获取告警数量SYATEM
DeviceAlarmSelect获取告警SYATEM
DeviceAlarmHandle处置告警EMPLOYEE
DeviceAlarmClear清除告警ADMINISTRATOR
DeviceFaultAmount获取故障数量SYATEM
DeviceFaultSelect获取故障SYATEM
DeviceFaultClear清除故障ADMINISTRATOR
DeviceDeviceAmount获取设备数量SYATEM
DeviceDeviceSelect获取设备SYATEM
DeviceDeviceState获取设备状态SYATEM
DriverDriverSelect获取可用通信驱动ADMINISTRATOR
DeviceDeviceCreate新建设备ADMINISTRATOR
DeviceDeviceUpdate修改设备ADMINISTRATOR
DeviceDeviceEnable启用或禁用设备ADMINISTRATOR
DeviceDeviceMove移动设备ADMINISTRATOR
DeviceDeviceDelete删除设备ADMINISTRATOR
DeviceAttributeAmount获取属性数量SYATEM
DeviceAttributeSelect获取属性SYATEM
DeviceAttributeUnique检查属性唯一性SYATEM
DeviceAttributeCreate新建属性ADMINISTRATOR
DeviceAttributeUpdate修改属性ADMINISTRATOR
DeviceAttributeMove移动属性ADMINISTRATOR
DeviceAttributeDelete删除属性ADMINISTRATOR
DeviceValueSelect获取时序数据SYATEM
DeviceValueRead立即读取值SYATEM
DeviceValueWrite立即写入值SYATEM
DeviceTimerAmount获取定时器数量SYATEM
DeviceTimerSelect获取定时器SYATEM
DeviceTimerState获取定时器状态SYATEM
DeviceTimerCreate新建定时器ADMINISTRATOR
DeviceTimerUpdate修改定时器ADMINISTRATOR
DeviceTimerEnable启用或禁用定时器ADMINISTRATOR
DeviceTimerMove移动定时器ADMINISTRATOR
DeviceTimerDelete删除定时器ADMINISTRATOR
DeviceTriggerAmount获取触发器数量SYATEM
DeviceTriggerSelect获取触发器SYATEM
DeviceTriggerState获取触发器状态SYATEM
DeviceTriggerCreate新建触发器ADMINISTRATOR
DeviceTriggerUpdate修改触发器ADMINISTRATOR
DeviceTriggerEnable启用或禁用触发器ADMINISTRATOR
DeviceTriggerMove移动触发器ADMINISTRATOR
DeviceTriggerDelete删除触发器ADMINISTRATOR
DeviceServoAmount获取边缘端数量SYATEM
DeviceServoSelect获取边缘端SYATEM
DeviceServoState获取边缘端状态SYATEM
DeviceServoRestart重启边缘端ADMINISTRATOR

告警

告警必须由触发器触发,且不会持久化保存。 如果服务端(JOYZL SCADA Server)程序重启,所有已触发的告警将被丢弃, 如果告警条件依旧满足将在触发器执行时重新激活。

告警等级(AlarmType)
  • NONE(0) 无;
  • NOTICE(1) 四级(低级);
  • WARNING(2) 三级(中级);
  • DANGER(3) 二级(高级);
  • CRITICAL(4) 一级(紧急)。

获取告警数量(AlarmAmount)

URL /actions/device/AlarmAmount

PKG com.joyzl.scada.client.device.AlarmAmount

获取当前激活的告警总数。 缺省所有参数时,返回当前用户可见范围内的所有告警总数。 指定区域标识(ZoneId)参数时,仅返回指定区域(含子区域)的告警总数。 指定设备标识(DeviceId)参数时,仅返回指定设备的告警总数。 指定属性标识(AttributeId)参数时,仅返回指定属性的告警总数。 指定触发器标识(TriggerId)参数时,仅返回指定触发器的告警总数。

如果指定区域(ZoneId)、设备(DeviceId/DeviceNumber)、属性(AttributeId)或触发器(TriggerId)不存在, 请求将返回 不存在(NOEXISTS:5) ; 如果指定区域(ZoneId)、设备(DeviceId/DeviceNumber)、属性(AttributeId)或触发器(TriggerId)位于当前用户所在区域之外, 请求将被 拒绝(DENIED:3)

请求示例
{
	// 区域标识(可选)
	"ZoneId": 821305322504207,
	// 设备标识(可选)
	"DeviceId": 821370753646611,
	// 设备编号(可选)
	"DeviceNumber": "D001",
	// 属性标识(可选)
	"AttributeId": 821323777441809,
	// 触发器标识(可选)
	"TriggerId": 821333843771410
}
响应示例
{
	// 回显参数
	"ZoneId": 821305322504207,
	"DeviceId": 821370753646611,
	"DeviceNumber": "D001",
	"AttributeId": 821323777441809,
	"TriggerId": 821333843771410,

	// 四级告警总数
	"Notice": 10, 
	// 三级告警总数
	"Warning": 10, 
	// 二级告警总数
	"Danger": 1,
	// 一级告警总数
	"Critical": 0,

	// 响应状态码
	"Status": 2,
}

获取告警(AlarmSelect)

URL /actions/device/AlarmSelect

PKG com.joyzl.scada.client.device.AlarmSelect

获取当前激活的告警。 缺省所有参数时,返回当前用户可见范围内的所有告警。 指定区域标识(ZoneId)参数时,仅返回指定区域的告警。 指定设备标识(DeviceId)参数时,仅返回指定设备的告警。 指定属性标识(AttributeId)参数时,仅返回指定属性的告警。 指定触发器标识(TriggerId)参数时,仅返回指定触发器的告警。

如果指定区域(ZoneId)、设备(DeviceId/DeviceNumber)、属性(AttributeId)或触发器(TriggerId)不存在, 请求将返回 不存在(NOEXISTS:5) ; 如果指定区域(ZoneId)、设备(DeviceId/DeviceNumber)、属性(AttributeId)或触发器(TriggerId)位于当前用户所在区域之外, 请求将被 拒绝(DENIED:3)

请求示例
{
	// 区域标识(可选)
	"ZoneId": 821305322504207,
	// 设备标识(可选)
	"DeviceId": 821370753646611,
	// 设备编号(可选)
	"DeviceNumber": "D001",
	// 属性标识(可选)
	"AttributeId": 821323777441809,
	// 触发器标识(可选)
	"TriggerId": 821333843771410
}
响应示例
{
	// 回显参数
	"ZoneId": 821305322504207,
	"DeviceId": 821370753646611,
	"DeviceNumber": "D001",
	"AttributeId": 821323777441809,
	"TriggerId": 821333843771410,

	// 告警集合
	"Alarms": [
		{
			// 设备标识
			"DeviceId": 821370753646611,
			// 属性标识
			"AttributeId": 821323777441809,
			// 触发器标识
			"TriggerId": 821333843771410,
			// 告警等级类型
			"Type":{
				"Name":"WARNING",				
				"Text":"二级告警",
				"Value":2
			},
			// 告警内容
			"Content":"主轴速度异常 2375",
			// 激活状态
			"Alert":true,
			// 处置标记
			"Suppress": 0,
			// 创建时间
			"Created": "2024-9-12 8:04:10",
			// 更新时间
			"Updated": "2024-9-12 8:04:10"
		}
		...
	],

	// 响应状态码
	"Status": 2
}

响应的告警集合(Alarms)数组不保证任何顺序。

处置告警(AlarmHandle)

URL /actions/device/AlarmHandle

PKG com.joyzl.scada.client.device.AlarmHandle

处置指定告警:确认、抑制、搁置。 刚激活的告警处于 未处置 的默认状态,处置标记(Suppress)为 0 ; 将处置标记(Suppress)置为 1 则处置为 “已确认” 状态,告警将在恢复后继续告警; 将处置标记(Suppress)置为大于 1 的时间(秒),则处置为 “抑制” 状态,告警将在抑制时间到达后自动解除抑制; 将处置标记(Suppress)置为 2147483647 ,则处置为 “搁置” 状态,告警将不再提示直至手动解除。

如果指定告警(Id)不存在, 请求将返回 不存在(NOEXISTS:5) ; 如果指定告警(Id)位于当前用户所在区域之外, 请求将被 拒绝(DENIED:3)

请求示例
{
	// 告警标识(必要)
	"Id": 821305322504207,
	// 处置标记(必要)
	"Suppress": 1
}
响应示例
{
	// 回显参数
	"Id": 821305322504207,
	"Suppress": 1,

	// 更新时间
	"Updated": "2024-9-12 8:04:10",

	// 响应状态码
	"Status": 2
}

清除告警(AlarmClear)

URL /actions/device/AlarmClear

PKG com.joyzl.scada.client.device.AlarmClear

清除当前告警。 缺省所有参数时,清除当前用户可见范围内的所有告警。 指定区域标识(ZoneId)参数时,仅清除指定区域的告警。 指定设备标识(DeviceId)参数时,仅清除指定设备的告警。 指定属性标识(AttributeId)参数时,仅清除指定属性的告警。 指定触发器标识(TriggerId)参数时,仅清除指定触发器的告警。 清除告警之后,如果告警条件满足,触发器会重新激活新的告警。

如果指定区域(ZoneId)、设备(DeviceId/DeviceNumber)、属性(AttributeId)或触发器(TriggerId)不存在, 请求将返回 不存在(NOEXISTS:5) ; 如果指定区域(ZoneId)、设备(DeviceId/DeviceNumber)、属性(AttributeId)或触发器(TriggerId)位于当前用户所在区域之外, 请求将被 拒绝(DENIED:3)

请求示例
{
	// 区域标识(可选)
	"ZoneId": 821305322504207,
	// 设备标识(可选)
	"DeviceId": 821370753646611,
	// 设备编号(可选)
	"DeviceNumber": "D001",
	// 属性标识(可选)
	"AttributeId": 821323777441809,
	// 触发器标识(可选)
	"TriggerId": 821333843771410
}
响应示例
{
	// 回显参数
	"ZoneId": 821305322504207,
	"DeviceId": 821370753646611,
	"DeviceNumber": "D001",
	"AttributeId": 821323777441809,
	"TriggerId": 821333843771410,

	// 响应状态码
	"Status": 2
}

故障

故障指设备通信故障,由通信驱动检测并报告,通信故障不会持久化保存。 如果服务端(JOYZL SCADA Server)程序重启,所有已报告的故障将被丢弃, 如果故障依旧存在,会在被通信驱动发现时重新报告。

注意区分: 通信故障不同于设备故障, 通信故障由通信驱动报告,用于排查网络故障或配置错误。 设备故障由设备自行监测(如果有)并通过属性(信号)反映出来, 必须由对应属性配置的触发器报告为告警。

故障类型(FaultType)
  • DEVICE(3) 设备;
  • ATTRIBUTE(4) 属性;
  • DISCOVER(5) 发现。

获取故障数量(FaultAmount)

URL /actions/device/FaultAmount

PKG com.joyzl.scada.client.device.FaultAmount

获取当前报告的故障总数。

请求示例
{
	// 没有任何参数
}
响应示例
{
	// 故障数量
	"Fault":2,
	// 发现数量
	"Discover":1,

	// 响应状态码
	"Status": 2
}

获取故障(FaultSelect)

URL /actions/device/FaultSelect

PKG com.joyzl.scada.client.device.FaultSelect

获取当前报告的故障。 缺省所有参数时,获取当前报告的所有故障。 指定故障源标识(SourceId)参数时,仅返回指定源的故障。 指定故障类型(Type)参数时,仅返回指定类型的故障。

请求示例
{
	// 故障源:设备/属性标识(可选)
	"SourceId": 821370753646611,
	// 故障类(可选)
	"Type":3
}

故障类可能值有:设备(DEVICE:3)、属性(ATTRIBUTE:4)、发现(DISCOVER:5) 。 发现(DISCOVER:5)是指特定通信驱动发现的可能未登记的设备。

响应示例
{
	// 回显参数
	"DeviceId": 821370753646611,
	"Type": {
		"Name": "DEVICE",
		"Text": "设备",
		"Value": 3		
	},

	// 故障集合
	"Faults": [
		{
			// 源标识
			"SourceId": 821370753646611,
			// 类型
			"Type":{
				"Name": "DEVICE",
				"Text": "设备",
				"Value": 3
			},
			// 错误源头
			"Source": "...",
			// 错误内容
			"Content": "...",
			// 激活状态
			"Alert": true,
			// 创建时间
			"Created": "2024-9-12 8:04:10",
			// 更新时间
			"Updated": "2024-9-12 8:04:10"
		}
		...
	],
	// 响应状态码
	"Status": 2
}

响应的故障集合(Faults)数组,不保证任何顺序。

清除故障(FaultClear)

URL /actions/device/FaultClear

PKG com.joyzl.scada.client.device.FaultClear

清除当前报告的故障。 缺省所有参数时,清除当前所有已报告的故障。 指定故障类型(Type)参数时,仅清除指定类型的故障。 故障清除之后,通信驱动发现的故障会重新报告。

请求示例
{
	// 故障类(可选)
	"Type":3
}

故障类可能值有:设备(DEVICE:3)、属性(ATTRIBUTE:4)、发现(DISCOVER:5) 。 发现(DISCOVER:5)是指特定通信驱动发现的可能未登记的设备。

响应示例
{
	// 回显参数
	"Type": {
		"Name": "DEVICE",
		"Text": "设备",
		"Value": 3		
	},

	// 响应状态码
	"Status": 2
}

设备

设备是指与 JOYZL SCADA 通过以太网(TCP/UDP)保持数据交互的通信装置。 这些设备全部通过以太网与 JOYZL SCADA 连接, 由 JOYZL SCADA 集中采集数据或执行远程控制。

设备字段

Driver 表示特定通信方式的驱动名称字符串,名称是预先定义的, 并且区分主端通信和从端通信连接方式。 可通过 设备通信 了解为每种通信方式定义的名称以及更多详细信息。

通信驱动命名方式:

[NAME]_[TCP/UDP]_[MASTER/SLAVE]

[NAME]_[TCP/UDP]_[MASTER/SLAVE]

Point 表示网络通信接点,根据设备连接的主从性,接点可以是网络地址和端口或仅端口; 网络地址既以太网 IPv4 或 IPv6 地址,端口范围 0~65535,0表示由系统分配; 作为主端通信的接点是允许重复的,IP地址也可省略(仅指定端口),通信驱动会自动进行适配。

通信接点表示方式:

[IP]:<PORT>

Address 用于间接与设备连接时,对设备进行二级区分。 例如多个设备使用串行通信(RS485)连接到网关(GETWAY), 网关通过以太网与服务端(JOYZL SCADA Server)连接, 此时设备接点(Point)设置为网关地址, 设备地址(Address)应设置为设备所在串行链路的地址号。

与设备直接连接方式(箭头表示连接发起方向):

  • SCADA(SLAVE Point) → 设备(MASTER)
  • SCADA(MASTER Point) ← 设备(SLAVE)

与设备间接连接方式(箭头表示连接发起方向):

  • SCADA(SLAVE Point + Address) → GETWAY(MASTER) ─ 设备
  • SCADA(MASTER Point + Address) ← GETWAY(SLAVE) ─ 设备

IdentityPassword 用于连接时的额外标识(Identity)和密码(Password),因驱动而异按需设置, 驱动没有特殊要求时无须设置。 例如通过 SNMP 驱动监控网络设备状态时,需要将密码(Password)设置为团体名。

DelayTimeoutInterval 分别用于指定重连延迟(Delay)时间(秒),通信超时(Timeout)时间(秒)和自动扫描间隔(Interval)时间(毫秒)。

Number 表示设备的识别编号,系统将根据设备编号(Number)自动生成装备或表计; 设备编号允许重复,相同编号的设备将被视为同一个装备的多个通信来源。 例如一条装备产线,可能有多个控制器(PLC)同时协同运作。

NameTypeModelManufacturerRemark 表示设备名称(Name)、类型(Type)、型号(Model)、厂商(Manufacturer)和备注(Remark), 可按需任意设置,这些字段与设备通信无关。

设备状态

Servo 指示设备当前是否经由边缘(JOYZL SCADA Servo)通信。 边缘端(JOYZL SCADA Servo)是 JOYZL SCADA 的配套程序, 可用于实现边缘采集和通信换向。

Alarm 指示设备当前是否告警,如果有多项激活告警,则指示为其中最高等级的告警。 告警等级从高到低为: 一级/紧急(CRITICAL:4)、 二级/高级(DANGER:3)、 三级/中级(WARNING:2)、 四级/低级(NOTICE:1) 、 无(NONE:0)。

Fault 指示设备当前通信状态:离线(OFFLINE:0)、在线(NORMAL:1)、错误(ERROR:2)。

获取设备数量(DeviceAmount)

URL /actions/device/DeviceAmount

PKG com.joyzl.scada.client.device.DeviceAmount

获取全部或指定区域的设备总数,可见范围视用户所在区域而定。 缺省所有参数时,返回当前用户可见范围的所有设备总数; 指定区域标识(ZoneId)参数时,仅返回指定区域(含子区域)的设备总数; 指定设备编号(Number)参数时,仅返回指定编号的设备总数。

如果指定区域标识(ZoneId)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定区域标识(ZoneId)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 区域标识(可选)
	"ZoneId": 821305322504207,
	// 设备编号(可选)
	"Number": "D001"
}
响应示例
{
	// 回显参数
	"ZoneId": 821305322504207,
	"Number": "D001",

	// 设备总数
	"Device": 10,
	// 启用的设备数
	"Enable": 10,
	// 正常的设备数
	"Normal": 10,

	// 响应状态码
	"Status": 2
}

禁用设备数 = 设备总数 - 启用设备数

故障设备数 = 设备总数 - 正常设备数 - 禁用设备数

获取设备(DeviceSelect)

URL /actions/device/DeviceSelect

PKG com.joyzl.scada.client.device.DeviceSelect

获取全部或指定区域的设备,可见范围视用户所在区域而定。 缺省所有参数时,返回当前用户可见范围的所有设备; 指定区域标识(ZoneId)参数时,仅返回指定区域(不含子区域)的设备; 指定设备编号(Number)参数时,仅返回指定编号的设备; 指定启用状态(Enable)参数时,仅返回指定状态的设备; 指定设备类型(Type)参数时,仅返回指定类型的设备。

如果指定区域标识(ZoneId)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定区域标识(ZoneId)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 区域标识(可选)
	"ZoneId": 821305322504207,
	// 设备编号(可选)
	"Number": "D001",
	// 启用状态(可选)
	"Enable": true,
	// 设备类型(可选)
	"Type": "CNC"
}
响应示例
{
	// 回显参数
	"ZoneId": 821305322504207,
	"Number": "D001",
	"Enable": true,
	"Type": "CNC",

	// 设备集合
	"Devices": [
		{
			// 设备标识
			"Id": 821196270600196,
			// 区域标识
			"ZoneId": 821305322504207,
			// 设备名称
			"Name": "环境1",
			// 设备型号
			"Model": "H001",
			// 设备生产厂商
			"Manufacturer": "JOYZL",
			// 设备编号
			"Number": "D001",
			// 通信驱动
			"Driver": "MODBUS_TCP_SLAVE",
			// 通信接点
			"Point": "192.168.8.6:502",
			// 识别地址
			"Address": "1",
			// 通信标识
			"Identity": "user",
			// 通信密码
			"Password": "admin",
			// 扫描间隔(毫秒)
			"Interval": 1000,
			// 延迟时间(秒)
			"Delay": 3,
			// 超时时间(秒)
			"Timeout": 6,
			// 备注
			"Remark": "示例设备",
			// 启用或禁用
			"Enable": true,
			// 创建时间
			"Created": "2024-9-12 8:04:10",
			// 更新时间
			"Updated": "2024-9-12 8:04:10"

			// 通信状态
			"Fault":{
				"Name":"NORMAL",
				"Text":"正常",
				"Value":0,
			},
			// 告警状态
			"Alarm": {
				"Name": "NONE",
				"Text": "无",
				"Value": 0
			},
			// 边缘连接
			"Servo": false,
			// 状态更新时间戳
			"Timestamp": 1789347531159
		}
		...
	],

	// 响应状态码
	"Status": 2
}

响应的设备集合(Devices)数组不保证任何顺序。 边缘连接(Servo)指示设备当前是否经由边缘(JOYZL SCADA Servo)通信。

通信状态(Fault)可能值有:离线(OFFLINE:0)、在线(NORMAL:1)、错误(ERROR:2); 告警状态(Alarm)可能值有:无(NONE:0)、四级/低级(NOTICE:1)、三级/中级(WARNING:2)、二级/高级(DANGER:3)、一级/紧急(CRITICAL:4)。

获取设备状态(DeviceState)

URL /actions/device/DeviceState

PKG com.joyzl.scada.client.device.DeviceState

获取指定设备的最新状态。 此接口仅返回设备状态,不会返回设备的其它字段, 通常用于逐个轮询获取设备的最新状态。

如果指定设备(Id)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定设备(Id)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 设备标识(必要)
	"Id": 821196270600196
}
响应示例
{
	// 回显参数
	"Id": 821196270600196,

	// 通信状态
	"Fault":{
		"Name":"NORMAL",
		"Text":"正常",
		"Value":0,
	},
	// 告警状态
	"Alarm": {
		"Name": "NONE",
		"Text": "无",
		"Value": 0
	},
	// 边缘连接
	"Servo": false,
	// 状态更新时间戳
	"Timestamp": 1789347531159,

	// 响应状态码
	"Status": 2
}

边缘连接(Servo)指示设备当前是否经由边缘(JOYZL SCADA Servo)通信。

通信状态(Fault)可能值有:离线(OFFLINE:0)、在线(NORMAL:1)、错误(ERROR:2); 告警状态(Alarm)可能值有:无(NONE:0)、四级/低级(NOTICE:1)、三级/中级(WARNING:2)、二级/高级(DANGER:3)、一级/紧急(CRITICAL:4)。

获取可用通信驱动(DriverSelect)

URL /actions/device/DriverSelect

PKG com.joyzl.scada.client.device.DriverSelect

获取服务端(JOYZL SCADA Server)已集成可用的设备通信驱动。

请求示例
{
	// 没有任何参数
}
响应示例
{
	// 驱动集合
	"Drivers":[
		"DLT645_1997_TCP_SLAVE",
		"DLT645_2007_TCP_SLAVE",
		"DLT645_2007E_TCP_SLAVE",
		"MTCONNECT_HTTP_SLAVE",
		"MODBUS_RTU_SLAVE",
		"MODBUS_RTU_SLAVES",
		"MODBUS_TCP_SLAVE",
		"MODBUS_TCP_SLAVES",
		"SNMP_V1_SLAVE",
		"SNMP_V2_SLAVE",
		...
	],

	// 响应状态码
	"Status": 2
}

响应的驱动集合(Drivers)数组不保证任何顺序。

新建设备(DeviceCreate)

URL /actions/device/DeviceCreate

PKG com.joyzl.scada.client.device.DeviceCreate

创建新的设备用于通信,设备必须指定名称(Name)和所属的区域标识(ZoneId)参数; 新创建的设备处于禁用状态,后续还须为设备添加所需的属性(遥测信号数据项)。

如果指定区域(ZoneId)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定区域(ZoneId)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 区域标识(必要)
	"ZoneId": 821305322504207,
	// 设备名称(必要)
	"Name": "环境2",
	// 设备类型(可选)
	"Type": "H",
	// 设备型号(可选)
	"Model": "H001",
	// 设备生产厂商(可选)
	"Manufacturer": "JOYZL",
	// 通信驱动(可选)
	"Driver": "MODBUS_TCP_SLAVE",
	// 通信接点(可选)
	"Point": "192.168.8.6:502",
	// 设备编号(可选)
	"Number": "D002",
	// 识别地址(可选)
	"Address": "1",
	// 通信标识(可选)
	"Identity": "user",
	// 通信密码(可选)
	"Password": "admin",
	// 扫描间隔(毫秒)(可选)
	"Interval": 1000,
	// 延迟时间(秒)(可选)
	"Delay": 3,
	// 超时时间(秒)(可选)
	"Timeout": 6,
	// 备注(可选)
	"Remark": "示例设备"
}
响应示例
{
	// 回显参数
	"ZoneId": 821305322504207,
	"Name": "环境1",
	"Type": "H",
	"Model": "H001",
	"Manufacturer": "JOYZL",
	"Driver": "MODBUS_TCP_SLAVE",
	"Point": "192.168.8.6:502",
	"Number": "D002",
	"Address": "1",
	"Identity": "user",
	"Password": "admin",
	"Interval": 1000,
	"Delay": 3,
	"Timeout": 6,
	"Remark": "示例设备",

	// 设备标识
	"Id": 821196270600196,
	// 创建时间
	"Created": "2024-9-12 8:04:10",

	// 响应状态码
	"Status": 2
}

修改设备(DeviceUpdate)

URL /actions/device/DeviceUpdate

PKG com.joyzl.scada.client.device.DeviceUpdate

通过设备标识(Id)修改设备的常规字段值。 不能在设备启用状态下修改并更新设备的通信相关参数,应先将设备禁用。 除名称(Name)、类型(Type)、型号(Model)、厂商(Manufacturer)、备注(Remark)之外的其它字段均为通信相关参数。 设备所属的区域调整须通过 移动设备(DeviceMove) 接口实现; 设备的启用或禁用须通过 启用或禁用设备(DeviceEnable) 接口实现。

如果指定设备(Id)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定设备(Id)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 设备标识(必要)
	"Id": 821196270600196,

	// 设备名称(必要)
	"Name": "环境1",
	// 设备类型(可选)
	"Type": "H",
	// 设备型号(可选)
	"Model": "H001",
	// 设备生产厂商(可选)
	"Manufacturer": "JOYZL",
	// 备注(可选)
	"Remark": "示例设备",

	// 不能在设备启用时修改以下字段

	// 设备编号(可选)
	"Number": "D002",
	// 通信驱动(可选)
	"Driver": "MODBUS_TCP_SLAVE",
	// 通信接点(可选)
	"Point": "192.168.8.6:502",
	// 识别地址(可选)
	"Address": "1",
	// 通信标识(可选)
	"Identity": "user",
	// 通信密码(可选)
	"Password": "admin",
	// 扫描间隔(毫秒)(可选)
	"Interval": 1000,
	// 超时时间(秒)(可选)
	"Timeout": 6,
	// 延迟时间(秒)(可选)
	"Delay": 3,
}
响应示例
{
	// 回显参数
	"Id": 821196270600196,
	"Name": "环境1",
	"Type": "H",
	"Model": "H001",
	"Manufacturer": "JOYZL",
	"Remark": "示例设备",
	"Number": "D002",
	"Driver": "MODBUS_TCP_SLAVE",
	"Point": "192.168.8.6:502",
	"Address": "1",
	"Identity": "user",
	"Password": "admin",
	"Interval": 1000,
	"Timeout": 6,
	"Delay": 3,

	// 更新时间
	"Updated": "2024-9-12 8:04:10",

	// 响应状态码
	"Status": 2
}

启用或禁用设备(DeviceEnable)

URL /actions/device/DeviceEnable

PKG com.joyzl.scada.client.device.DeviceEnable

被禁用的设备将断开连接且不再发起通信也不会采集数据; 已禁用设备重新启用,将尝试连接设备恢复通信并采集数据。

如果指定设备(Id)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定设备(Id)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 设备标识(必要)
	"Id": 821196270600196,
	// 启用或禁用(必要)
	"Enable": true
}
响应示例
{
	// 回显参数
	"Id": 821196270600196,
	"Enable": true,

	// 更新时间
	"Updated": "2024-09-12 16:20:15",

	// 响应状态码
	"Status": 2
}

移动设备(DeviceMove)

URL /actions/device/DeviceMove

PKG com.joyzl.scada.client.device.DeviceMove

移动设备到其它区域,使其成为其它区域的设备。 设备必须位于区域中,不能将设备移动到根接点(ZoneId=0)。

如果指定设备(Id)或区域(ZoneId)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定设备(Id)或区域(ZoneId)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 设备标识(必要)
	"Id": 821196270600196,
	// 区域标识(单选)
	"ZoneId": 821305322504207
}
响应示例
{
	// 回显参数
	"Id": 821196270600196,
	"ZoneId": 821305322504207,

	// 更新时间
	"Updated": "2024-09-12 16:20:15",

	// 响应状态码
	"Status": 2
}

删除设备(DeviceDelete)

URL /actions/device/DeviceDelete

PKG com.joyzl.scada.client.device.DeviceDelete

删除设备时,设备内的属性和属性的触发器都将一并删除,并且无法恢复。 如果设备有对应的表计和装备也将同时失效。

如果指定设备(Id)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定设备(Id)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 设备标识(必要)
	"Id": 821196270600196
}
响应示例
{
	// 回显参数
	"Id": 821196270600196,

	// 响应状态码
	"Status": 2
}

属性

设备中配置的属性对应着数据项。 每个设备可以有多个属性,这些属性对应着设备可被外部读取的寄存器、变量、参数和控制信号等。 也有称之为设备的 “遥测信号” 或 “遥控信号”,分别对应远程读取和写入数据项; 在可编程控制器(PLC)设备,属性对应寄存器地址以及表示的值类型; 在数控机床的数控系统单元(NCU),属性对应参数、宏变量以及内部可编程控制器(PLC/PMC)寄存器地址。

属性字段

Code 代码由各个通信驱动定义格式,格式错误或无效的属性代码将导致数据遥测失败。 可参考 设备通信 了解各种设备的代码定义和格式的详细说明。

SourceTarget 分别表示来自设备的原始值类型和最终所需的目标值类型。 原值类型如果省略将视为与属性目标值类型相同, 原值类型用于识别从设备获得的数据类型, 触发器以及之后的数据存储和显示均使用属性目标值; 程序会自动进行值类型转换。

IgnoreFactor 分别表示精度和倍率,专门用于原始值到目标值的换算。 从设备读取的值(原始值),可能并不是最终所需的值(目标值)。 部分单片机设备由于运算能力有限,可能会避免直接运算浮点数,进而采用放大后的整数运算来代替; 需要将这些整数除以放大倍数而还原为最终的浮点值。

Ignore 精度指示用于决定浮点数的小数位, 例如将其设置为 0.001 则表示最多3位小数, 小于 0.001 的部分将被忽略(舍去)。 如果仅需要保留整数应设置为 0,这也是缺省时的默认值。

数值精度计算公式如下:

V = V - V MOD Ignore

Factor 倍率可用于将整数值转换为小数, 例如将其设置为 0.01 如果原始值为 211 则目标值为 2.11。 如果要保持原值不变应设置为 1,这也是缺省时的默认值。

数值倍率计算公式如下:

V = V × Factor

Factor 参数先于 Ignore 参数作用于原始值, 因此原始属性值将首先计算倍率再计算精度,之后便得到目标值。

Control 参数决定属性的读写性质,这将限制服务端和客户端对属性可执行的操作。 如果属性为只读,那么将只能从设备读取该数据项; 如果属性为读写,则即可读取也可写入该数据项。

Unit 用于设置值的计量单位,额外还支持枚举格式语法 "[禁用,启用]", 这意味着0代表“禁用”,1代表“启用”, 这有助于将表示状态的数值显示为更易读的字符。 桌面客户端实体对象内部方法可检查是否为枚举单位并处理为最终显示。 WEB 客户端可通过 ValueText 字段获取已转换后的值。

Rank 等级决定属性是否需要持续读取和存储,低于 180 的属性将自动持续更新当前值并存储; 大于等于 180 的属性系统仅采集而不存储,200 及以上为按需执行系统不会自动采集。

控制类型(ControlType)
  • READ_ONLY(0) 只读
  • READ_WRITE(1) 读写
  • EXECUTE(2) 执行
  • WRITE_ONLY(3) 只写
值类型(ValueType)
  • EMPTY(0) 无值
  • BOOLEAN(1) 布尔值
  • BYTE(2) 字节数
  • BYTE_SIGNED(21) 有符号字节数
  • BYTE_UNSIGNED(22) 无符号字节数
  • SHORT(4) 有符号短整数
  • SHORT_BE(41) 有符号短整数
  • SHORT_LE(42) 有符号短整数
  • WORD(3) 无符号短整数
  • WORD_BE(31) 无符号短整数
  • WORD_LE(32) 无符号短整数
  • INTEGER(6) 有符号整数
  • INTEGER_BE(61) 有符号整数
  • INTEGER_BL(62) 有符号整数
  • INTEGER_LB(63) 有符号整数
  • INTEGER_LE(64) 有符号整数
  • DWORD(5) 无符号整数
  • DWORD_BE(51) 无符号整数
  • DWORD_BL(52) 无符号整数
  • DWORD_LB(53) 无符号整数
  • DWORD_LE(54) 无符号整数
  • LONG(7) 有符号长整数
  • LONG_BE(71) 有符号长整数
  • LONG_BL(72) 有符号长整数
  • LONG_LB(73) 有符号长整数
  • LONG_LE(74) 有符号长整数
  • FLOAT(8) 单精度浮点数
  • FLOAT_BE(81) 单精度浮点数
  • FLOAT_BL(82) 单精度浮点数
  • FLOAT_LB(83) 单精度浮点数
  • FLOAT_LE(84) 单精度浮点数
  • DOUBLE(9) 双精度浮点数
  • DOUBLE_BE(91) 双精度浮点数
  • DOUBLE_BL(92) 双精度浮点数
  • DOUBLE_LB(93) 双精度浮点数
  • DOUBLE_LE(94) 双精度浮点数
  • STRING(10) 字符串
  • DURATION(11) 时长
  • DATETIME(12) 时间

关于每个值类型的详细定义和数值范围,请参考 数据类型

获取属性数量(AttributeAmount)

URL/actions/device/AttributeAmount

PKGcom.joyzl.scada.client.device.AttributeAmount

获取全部或指定范围的属性总数。 缺省所有参数时,返回当前用户可见范围的所有属性总数。 指定区域标识(ZoneId)参数时,仅返回指定区域的属性(含子区域)总数。 指定设备标识(DeviceId/DeviceNumber)参数时,仅返回指定设备中的属性总数。

如果指定区域(ZoneId)或设备(DeviceId/DeviceNumber)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定区域(ZoneId)或设备(DeviceId/DeviceNumber)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 区域标识(可选)
	"ZoneId": 821305322504207,
	// 设备标识(可选)
	"DeviceId": 821370753646611,
	// 设备编号(可选)
	"DeviceNumber": "D001"
}
响应示例
{
	// 回显参数
	"ZoneId": 821305322504207,
	"DeviceId": 821370753646611,
	"DeviceNumber": "D001",

	// 属性数量
	"Attribute": 11254,

	// 响应状态码
	"Status": 2
}

获取属性(AttributeSelect)

URL /actions/device/AttributeSelect

PKG com.joyzl.scada.client.device.AttributeSelect

获取全部或指定范围的属性。 缺省所有参数时,返回当前用户可见范围的所有属性。 指定区域标识(ZoneId)参数时,仅返回指定区域的属性(不含子区域)。 指定设备标识(DeviceId/DeviceNumber)参数时,仅返回指定设备中的属性。

如果指定区域(ZoneId)或设备(DeviceId/DeviceNumber)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定区域(ZoneId)或设备(DeviceId/DeviceNumber)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

注意: 请谨慎请求获取属性的范围,在大规模实施中,部分设备的属性可能上百个, 属性总数量可超十万个以上。如果需要返回的属性较多,可能会导致响应超时。

请求示例
{
	// 区域标识(可选)
	"ZoneId": 821305322504207,
	// 设备标识(可选)
	"DeviceId": 821370753646611,
	// 设备编号(可选)
	"DeviceNumber": "D001"
}
响应示例
{
	// 回显参数
	"ZoneId": 821305322504207,
	"DeviceId": 821370753646611,
	"DeviceNumber": "D001",

	// 属性集合
	"Attributes": [
		{
			// 属性标识
			"Id": 821177815662595,
			// 设备标识
			"DeviceId": 821370753646611,

			// 名称
			"Name": "温度",
			// 代码
			"Code": "40001",
			// 控制类型
			"Control": {
				"Name": "READ_ONLY",
				"Text": "只读",
				"Value": 0
			},			
			// 目标值类型
			"Target": {
				"Name": "FLOAT",
				"Text": "单精度浮点数",
				"Value": 8
			},
			// 原值类型
			"Source": 6,{
				"Name": "INTEGER",
				"Text": "有符号整数",
				"Value": 6
			},
			// 值缓存数
			"Caches": 16,
			// 精度
			"Ignore": 0.01,
			// 倍率
			"Factor": 0.01,
			// 参照
			"Worth": "26",
			// 等级
			"Rank": 0,
			// 单位
			"Unit": "℃",
			// 分组
			"Group": "模拟量",
			// 备注
			"Remark": "示例属性",

			// 当前值
			"Value":{
				// 类型
				"Type": {
					"Name": "FLOAT",
					"Text": "单精度浮点数",
					"Value": 8
				},
				// 值
				"Value": 28.52,
				// 时间戳
				"Timestamp": 1789347531159
			},
			// 更新时间戳
			"Timestamp": 1789347531159
		}
		...
	],

	// 响应状态码
	"Status": 2
}

响应的属性集合(Attributes)数组不保证任何顺序。

属性代码校验(AttributeUnique)

URL /actions/device/AttributeUnique

PKG com.joyzl.scada.client.device.AttributeUnique

校验属性代码是否重复。 设备中不允许存在代码相同的属性,设备通过属性代码标识信号。 指定属性标识参数时,将排除指定属性的代码。

请求示例
{
	// 设备标识(必要)
	"DeviceId": 821370753646611,
	// 属性标识(可选)
	"Id": 821177815662595,
	// 代码(必要)
	"Code": "40001"
}
响应示例
{
	// 回显参数
	"Id": 821177815662595, 
	"DeviceId": 821370753646611,
	"Code": "40001",

	// 是否可用
	"Available": true,

	// 响应状态码
	"Status": 2,
}

新建属性(AttributeCreate)

URL /actions/device/AttributeCreate

PKG com.joyzl.scada.client.device.AttributeCreate

在设备中创建新的属性(数据项)用于采集(遥测信号)或控制(遥控信号)。 设备中的属性代码(Code)应确保唯一不重复, 在请求创建新属性之前应通过 属性代码校验(AttributeUnique) 接口, 验证属性代码(Code)是否已存在。 每种设备的具体代码格式参考 设备通讯 文档。 不能在设备通信(已启用)时创建属性。

如果设备已启用(Enable=true),请求将返回 不支持(UNSUPPORT:11) ; 如果指定代码(Code)已存在,请求将返回 冲突(CONFLICT:12) ; 如果指定设备(DeviceId)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定设备(DeviceId)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 设备标识(必要)
	"DeviceId": 821370753646611,

	// 名称(必要)
	"Name": "温度",
	// 代码(必要)
	"Code": "40001",
	// 控制类型(必要)
	"Control": 0,
	// 目标值类型(必要)
	"Target": 8,
	// 原值类型(可选)
	"Source": 6,
	// 值缓存数(可选)
	"Caches": 16,
	// 精度(可选)
	"Ignore": 0.01,
	// 倍率(可选)
	"Factor": 0.01,
	// 参照(可选)
	"Worth": "26",
	// 等级(可选)
	"Rank": 0,
	// 单位(可选)
	"Unit": "℃",
	// 分组(可选)
	"Group": "模拟量",
	// 备注(可选)
	"Remark": "示例属性"
}
响应示例
{
	// 回显参数
	"DeviceId": 821370753646611,
	"Name": "温度",
	"Code": "40001",
	"Control": {
		"Name": "READ_ONLY",
		"Text": "只读",
		"Value": 0
	},
	"Target": {					
		"Name": "FLOAT",
		"Text": "单精度浮点数",
		"Value": 8
	},
	"Source": 6,{					
		"Name": "INTEGER",
		"Text": "有符号整数",
		"Value": 6
	},
	"Caches": 16,
	"Ignore": 0.01,
	"Factor": 0.01,
	"Worth": "26",
	"Rank": 0,
	"Unit": "℃",
	"Group": "模拟量",
	"Remark": "示例属性",

	// 属性标识
	"Id": 821177815662595,
	// 创建时间
	"Created": "2024-09-12 14:36:34",

	// 响应状态码
	"Status": 2,
}

修改属性(AttributeUpdate)

URL /actions/device/AttributeUpdate

PKG com.joyzl.scada.client.device.AttributeUpdate

通过属性标识(Id)修改属性的常规字段值。 如果设备已启用(Enable=true),则不能修改与通信相关的字段。 如果修改属性代码(Code),在请求修改属性之前应通过 属性代码校验(AttributeUnique) 接口, 验证新的属性代码(Code)是否已存在。 属性所属的设备调整须通过 移动属性(AttributeMove) 接口实现。

如果指定代码(Code)已存在,请求将返回 冲突(CONFLICT:12) ; 如果指定属性(Id)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定属性(Id)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 属性标识(必要)
	"Id": 821177815662595,

	// 名称(必要)
	"Name": "温度",
	// 代码(必要)
	"Code": "40001",
	// 控制类型(必要)
	"Control": 0,
	// 目标值类型(必要)
	"Target": 8,
	// 原值类型(可选)
	"Source": 6,	
	// 值缓存数(可选)
	"Caches": 16,
	// 精度(可选)
	"Ignore": 0.01,
	// 倍率(可选)
	"Factor": 0.01,
	// 参照(可选)
	"Worth": "26",
	// 等级(可选)
	"Rank": 0,
	// 单位(可选)
	"Unit": "℃",
	// 分组(可选)
	"Group": "模拟量",
	// 备注(可选)
	"Remark": "示例属性"
}
响应示例
{
	// 回显参数
	"Id": 821177815662595,
	"Name": "温度",
	"Code": "40001",
	"Control": {
		"Name": "READ_ONLY",
		"Text": "只读",
		"Value": 0
	},
	"Target": {
		"Name": "FLOAT",
		"Text": "单精度浮点数",
		"Value": 8
	},
	"Source": 6,{
		"Name": "INTEGER",
		"Text": "有符号整数",
		"Value": 6
	},
	"Caches": 16,
	"Ignore": 0.01,
	"Factor": 0.01,
	"Worth": "26",
	"Rank": 0,
	"Unit": "℃",
	"Group": "模拟量",
	"Remark": "示例属性",

	// 更新时间
	"Updated": "2024-09-12 16:20:15",

	// 响应状态码
	"Status": 2,
}

移动属性(AttributeMove)

URL /actions/device/AttributeMove

PKG com.joyzl.scada.client.device.AttributeMove

移动属性到其它设备,使其成为其它设备的属性。 请确保设备中的属性代码唯一性,设备通过属性代码标识信号。 不能移动正在通信的设备属性,请先将设备禁用。

如果指定属性(Id)或设备(DeviceId)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定属性(Id)或设备(DeviceId)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 属性标识(必要)
	"Id": 821256668577802,
	// 设备标识(必要)
	"DeviceId": 821370753646611
}
响应示例
{
	// 回显参数
	"Id": 821256668577802,
	"DeviceId": 821370753646611,

	// 更新时间
	"Updated": "2024-09-12 14:36:34",

	// 响应状态码
	"Status": 2
}

删除属性(AttributeDelete)

URL /actions/device/AttributeDelete

PKG com.joyzl.scada.client.device.AttributeDelete

删除属性时,属性关联的触发器将一并删除; 属性的采集数据将无法读取,占用的存储空间将在数据过期后自动释放。

如果指定属性(Id)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定属性(Id)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 属性标识(必要)
	"Id": 821177815662595
}
响应示例
{
	// 回显参数
	"Id": 821177815662595,

	// 响应状态码
	"Status": 2
}

数据

数据指通过设备中定义的属性(数据项)采集而得的时序数据。 服务端(JOYZL SCADA Server)程序会根据设备设定的频率(Interval), 轮询读取属性定义的数据值,并持久存储在服务器磁盘中。 为了防止磁盘写满,服务端将根据配置的时序数据最长有效时间(例如:60 年)自动清理过期数据。

获取时序数据(ValueSelect)

URL /actions/device/ValueSelect

PKG com.joyzl.scada.client.device.ValueSelect

获取属性在指定时间段的时序数据。 指定开始(Begin)和结束(End)时间,将返回指定时间段的时序数据, 如果未指定开始(Begin)和结束(End)时间,则返回属性缓存(Caches)的时序数据。 如果指定的时间范围不在有效存储数据范围内,将不会返回任何数据。 不应请求跨度过大的时间段,这有可能因数据过多而导致响应超时。

如果开始时间(Begin)和结束时间(End)颠倒,请求将返回 数据错误(ERROR_DATA:7); 如果指定属性(AttributeId)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定属性(AttributeId)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

注意: 请谨慎设置开始(Begin)和结束(End)时间参数,如果需求时间跨度较长的数据,应分段请求。 以常见的浮点数信号为例,更新频率为1秒,10分钟可能产生600个值,1小时可能产生3600个值, 编码为JSON格式后其字节数量约为180Kbyte,24小时数据量将超过5Mbyte; 如果要获取设备中10个属性的时序数据,将需要传输50MByte以上的数据量; 部分设备的属性会多达上百个,全部读取则可能超过500MByte传输量。

请求示例
{
	// 属性标识(必要)
	"AttributeId": 6892182778556009,
	// 开始时间(可选)
	"Begin": "2025-08-26 10:15:00",
	// 结束时间(可选)
	"End": "2025-08-26 11:15:00"
}
响应示例
{
	// 回显参数
	"AttributeId": 6892182778556009,
	"Begin": "2025-08-26 10:15:00",
	"End": "2025-08-26 11:15:00",

	// 值集合
	"Values": [
		{
			// 类型
			"Type": {
				"Name": "FLOAT",
				"Text": "单精度浮点数",
				"Value": 8
			},
			// 值
			"Value": 0.97,
			// 时间戳
			"Timestamp": 1789347532159
		},
		{
			// 类型
			"Type": {
				"Name": "FLOAT",
				"Text": "单精度浮点数",
				"Value": 8
			},
			// 值
			"Value": 1.75,
			// 时间戳
			"Timestamp": 1789347531159
		}
		...
	],

	// 响应状态码
	"Status": 2
}

时序数据值集合(Values)数据中为多个数据值对象,不保证任何顺序。 其中 Value 为值,Timestamp 为时间戳(1970年1月1日零点到当前时间的毫秒), 转换为日期时间对象时请注意时区。

在工业场景中, 生产类设备(例如数控机床)单个产品(工件)单个信号产生的数据通常为多个值(数组); 质检类设备(例如齿轮啮合仪)单个产品(工件)单个信号产生的数据通常为单个值, 此时可将开始(Begin)和结束(End)时间设置为相同的时刻。 质检设备通常还会生成质检报告文件, 可由 JOYZL Archive 自动采集并归档这些文件。

立即读取值(ValueRead)

URL /actions/device/ValueRead

PKG com.joyzl.scada.client.device.ValueRead

读取服务端属性缓存的最新值, 或从设备立即读取属性最新值。 设备直读(Direct)参数指示是立即从设备读取最新的属性值或服务端(JOYZL SCADA Server)缓存获取属性当前值, 缺省此参数时将从服务端缓存获取属性值。 服务端内存保持每个属性的最后更新值,更新频率受设备参数和通信速度规定。 通常情况下服务端缓存值已满足大部分需求, 如果指示从设备获取最新的属性值,请求将触发一条设备指令,并等待指令返回。

如果指定属性(AttributeId)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定属性(AttributeId)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

此接口可用于客户端持续轮询获取服务端缓存的属性最新值, 如果有多个属性值需要持续更新, 应执行排队请求并适时暂停,以避免突破客户端并发上限或导致服务器过于繁忙。

注意: 不要过于频繁的请求从设备直读(Direct)属性值,大部分设备的处理能力远不及个人计算机和服务器, 高频的指令请求可能会导致设备宕机。

请求示例
{
	// 属性标识(必要)
	"AttributeId": 821256668577802,
	// 设备直读(可选)
	"Direct": false
}
响应示例
{
	// 回显参数
	"AttributeId": 821256668577802,
	"Direct": false,

	// 属性值
	"Value":{
		// 类型
		"Type": {
			"Name": "BOOLEAN",
			"Text": "布尔值",
			"Value": 1,
		},
		// 值
		"Value": true,
		// 时间戳
		"Timestamp": 1789347531159
	},
	// 更新时间戳
	"Timestamp" : 1789347531159,

	// 响应状态码
	"Status": 2
}

立即写入值(ValueWrite)

URL /actions/device/ValueWrite

PKG com.joyzl.scada.client.device.ValueWrite

立即设置属性值,既对设备执行远程控制。 此请求将向设备发送通信指令,并等待从设备获得确认后返回。 如果属性未规定值时可缺省值(Value)参数, 某些特殊属性没有具体值类型,例如:清除或重置, 反之必须指定有效的属性值。

如果指定属性(AttributeId)为只读,请求将返回 不支持(UNSUPPORT:11) ; 如果指定属性(AttributeId)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定属性(AttributeId)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请注意,与现场控制相比,远程控制无法实时感知现场实际情况, 设备可能处于不适合执行特定指令的状态,从而可能引发安全事故,造成人员伤亡或财产损失。

请求示例
{
	// 属性标识(必要)
	"AttributeId": 821256668577802,
	// 属性值(可选)
	"Value": {
		// 对象类型
		"*": "ValueBoolean",
		// 值
		"Value": false
	}
}

对象类型(*)是 JOYZL ODBS 在 JSON 序列化提供一个特殊字段,用以标记对象的类型; 值对象(Value)类型有:ValueBoolean、ValueByte、ValueDatetime、 ValueDouble、ValueDuration、 ValueDword、ValueEmpty、ValueFloat、 ValueInteger、ValueLong、ValueShort、ValueString、ValueWord;

响应示例
{
	// 回显参数
	"Id": 821256668577802,
	"Value":{
		// 类型
		"Type": {
			"Name": "BOOLEAN",
			"Text": "布尔值",
			"Value": 1,
		},
		// 值
		"Value": false,
		// 时间戳
		"Timestamp": 1789347531159
	},

	// 更新时间戳
	"Timestamp": 1789347531159,

	// 响应状态码
	"Status": 2
}

定时器

定时器是 JOYZL SCADA 虚拟的概念,并非实际存在的电器硬件。 定时器用于定时执行触发器,没有绑定定时器的触发器是在属性值变化时执行。

定时器有多种类型:一次性、按天、按周或按月。 一次性定时器仅在设定的开始日期和时间到达时执行一次。 按天定时器可按间隔天数周期性执行。 按周定时器可按间隔周数以及指定的星期几周期性执行。 按月定时器可按月份和指定日期执行。 定时器类型决定了其具体的执行日期与周期性规则。

除一次性定时器外, 其余类型定时器还可以设定在执行日内是否重复, 重复时从开始时间开始直至结束时间停止。 因此每个定时器由两部分组成:A 哪天执行,B 如何重复。

定时器类型(TimerType)
  • ONCE(1) 一次,仅执行一次;
  • DAILY(2) 按天,每n天;
  • WEEKLY(3) 按周,每n周;
  • MONTHLY(4) 按月,指定月份。
定时器字段

定时器月(Month)、周(Week)、日(Day)字段采用多选聚合值。 例如期望在每周的星期三和星期五执行, 那么可将星期三和星期五定义的整数值通过或运算合并为单个整数; 后续只需要通过与运算即可判断指定的哪些天。

聚合计算公式:

P = W1 | W2 | Wn

聚合判定公式:

( Wn & P ) > 0

星期(Week)
  • MONDAY(1) 星期一;
  • TUESDAY(2) 星期二;
  • WEDNESDAY(4) 星期三;
  • THURSDAY(8) 星期四;
  • FRIDAY(16) 星期五;
  • SATURDAY(32) 星期六;
  • SUNDAY(64) 星期天;
月份(Month)
  • JANUARY(1) 一月;
  • FEBRUARY(2) 二月;
  • MARCH(4) 三月;
  • APRIL(8) 四月;
  • MAY(16) 五月;
  • JUNE(32) 六月;
  • JULY(64) 七月;
  • AUGUST(128) 八月;
  • SEPTEMBER(256) 九月;
  • OCTOBER(512) 十月;
  • NOVEMBER(1024) 十一月;
  • DECEMBER(2048) 十二月;;
日(Day)
  • D1(1) 1日;
  • D2(2) 2日;
  • D3(4) 3日;
  • D4(8) 4日;
  • D5(16) 5日;
  • D6(32) 6日;
  • D7(64) 7日;
  • D8(128) 8日;
  • D9(256) 9日;
  • D10(512) 10日;
  • D11(1024) 11日;
  • D12(2048) 12日;
  • D13(4096) 13日;
  • D14(8192) 14日;
  • D15(16384) 15日;
  • D16(32768) 16日;
  • D17(65536) 17日;
  • D18(131072) 18日;
  • D19(262144) 19日;
  • D20(524288) 20日;
  • D21(1048576) 21日;
  • D22(2097152) 22日;
  • D23(4194304) 23日;
  • D24(8388608) 24日;
  • D25(16777216) 25日;
  • D26(33554432) 26日;
  • D27(67108864) 27日;
  • D28(134217728) 28日;
  • D29(268435456) 29日;
  • D30(536870912) 30日;
  • D31(1073741824) 31日;
  • LAST(-2147483648) 月末日;

获取定时器数量(TimerAmount)

URL /actions/device/TimerAmount

PKG com.joyzl.scada.client.device.TimerAmount

获取全部或指定区域的定时器总数,可见范围视用户所在区域而定。 缺省所有参数时,返回当前用户可见范围的所有定时器总数; 指定区域标识(ZoneId)参数时,仅返回指定区域(含子区域)的定时器总数。

如果指定区域(ZoneId)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定区域(ZoneId)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 区域标识(可选)
	"ZoneId": 821305322504207
}
响应示例
{
	// 回显参数
	"ZoneId": 821305322504207,

	// 定时器数量
	"Timer": 6, 
	// 启用数量
	"Enable": 6, 
	// 过期数量
	"Expire": 1,

	// 响应状态码
	"Status": 2
}

获取定时器(TimerSelect)

URL /actions/device/TimerSelect

PKG com.joyzl.scada.client.device.TimerSelect

获取全部或指定区域的定时器,可见范围视用户所在区域而定。 缺省所有参数时,返回当前用户可见范围的所有定时器; 指定区域标识(ZoneId)参数时,仅返回指定区域(不含子区域)的定时器; 指定启用或禁用(Enable)参数时,仅返回指定状态的定时器。

如果指定区域(ZoneId)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定区域(ZoneId)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 区域标识(可选)
	"ZoneId": 821305322504207,
	// 启用或禁用(可选)
	"Enable": true,
}
响应示例
{
	// 回显参数
	"ZoneId": 821305322504207,
	"Enable": true,

	// 定时器集合
	"Timers": [
		{
			// 定时器标识
			"Id": 821276801237004,
			// 区域标识
			"ZoneId": 821305322504207,
			// 名称
			"Name": "定时通电",
			// 类型
			"Type": {
				"Name": "DAILY",
				"Text": "每天",
				"Value": 2
			},
			// 开始日期
			"BeginDate": "2024-09-19",
			// 开始时间
			"BeginTime": "00:00:00",
			// 结束日期
			"EndDate": "2025-09-19",
			// 结束时间
			"EndTime": "00:00:00",
			// 月(聚合)
			"Month": 128,
			// 周(聚合)
			"Week": 128,
			// 日(聚合)
			"Day": 128,
			// 间隔(月/周/日)
			"Interval": 1,
			// 重复(秒)
			"Repeat": 10,
			// 启用或禁用
			"Enable": true,
			// 创建时间
			"Created" : "2024-9-12 8:04:10",
			// 更新时间
			"Updated" : "2024-9-12 8:04:10",
			// 最后执行时间戳
			"Timestamp": 1789347531159
		}
		...
	],

	// 响应状态码
	"Status": 2
}

获取定时器状态(TimerState)

URL /actions/device/TimerState

PKG com.joyzl.scada.client.device.TimerState

获取指定定时器的最新状态。 此接口仅返回定时器状态,不会返回定时器的其它字段。

如果指定定时器(Id)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定定时器(Id)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 定时器标识(必要)
	"Id": 821276801237004
}
响应示例
{
	// 回显参数
	"Id": 821276801237004,

	// 最后执行时间戳
	"Timestamp": 1789347531159,

	// 响应状态码
	"Status": 2
}

新建定时器(TimerCreate)

URL /actions/device/TimerCreate

PKG com.joyzl.scada.client.device.TimerCreate

创建新的定时器用于定时执行触发器, 定时器必须指定其所属的区域标识(ZoneId)参数; 新创建的定时器处于禁用状态, 后续还须为定时器添加触发器。

如果指定区域(ZoneId)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定区域(ZoneId)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 区域标识(必要)
	"ZoneId": 821305322504207,

	// 定时器名称(必要)
	"Name": "定时通电",
	// 类型(必要)
	"Type": 2,
	// 开始日期(必要)
	"BeginDate": "2024-09-19",
	// 开始时间(必要)
	"BeginTime": "00:00:00",
	// 结束日期(可选)
	"EndDate": "2025-09-19",
	// 结束时间(可选)
	"EndTime": "00:00:00",
	// 月(聚合)(可选)
	"Month": 128,
	// 周(聚合)(可选)
	"Week": 128,
	// 日(聚合)(可选)
	"Day": 128,
	// 间隔(可选)
	"Interval": 1,
	// 重复(秒)(可选)
	"Repeat": 10
}
响应示例
{
	// 回显参数
	"ZoneId": 821305322504207,
	"Name": "定时通电",
	"Type": {
		"Name": "DAILY",
		"Text": "每天",
		"Value": 2
	},
	"BeginDate": "2024-09-19",
	"BeginTime": "00:00:00",
	"EndDate": "2025-09-19",
	"EndTime": "00:00:00",
	"Month": 128,
	"Week": 128,
	"Day": 128,
	"Interval": 1,
	"Repeat": 10,

	// 定时器标识
	"Id": 821276801237004,
	// 创建时间
	"Created": "2024-09-12 14:36:34",

	// 响应状态码
	"Status": 2
}

修改定时器(TimerUpdate)

URL /actions/device/TimerUpdate

PKG com.joyzl.scada.client.device.TimerUpdate

通过定时器标识(Id)修改定时器的常规字段值。 定时器的区域调整须通过 移动定时器(TimerMove) 接口实现; 定时器的启用或禁用须通过 启用或禁用定时器(TimerEnable) 接口实现。

如果指定定时器(Id)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定定时器(Id)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 定时器标识(必要)
	"Id": 821218080980998,

	// 定时器名称(必要)
	"Name": "定时通电",
	// 类型(必要)
	"Type": 2,
	// 开始日期(必要)
	"BeginDate": "2024-09-19",
	// 开始时间(必要)
	"BeginTime": "00:00:00",
	// 结束日期(可选)
	"EndDate": "2025-09-19",
	// 结束时间(可选)
	"EndTime": "00:00:00",
	// 月(聚合)(可选)
	"Month": 128,
	// 周(聚合)(可选)
	"Week": 128,
	// 日(聚合)(可选)
	"Day": 128,
	// 间隔(可选)
	"Interval": 1,
	// 重复(秒)(可选)
	"Repeat": 10
}
响应示例
{
	// 回显参数
	"Id": 821218080980998,
	"Name": "定时通电",
	"Type": {
		"Name": "DAILY",
		"Text": "每天",
		"Value": 2
	},
	"BeginDate": "2024-09-19",
	"BeginTime": "00:00:00",
	"EndDate": "2025-09-19",
	"EndTime": "00:00:00",
	"Month": 128,
	"Week": 128,
	"Day": 128,
	"Interval": 1,
	"Repeat": 10,

	// 更新时间
	"Updated": "2024-09-12 16:20:15",

	// 响应状态码
	"Status": 2
}

启用或禁用定时器(TimerEnable)

URL /actions/device/TimerEnable

PKG com.joyzl.scada.client.device.TimerEnable

启用或禁用指定定时器。 被禁用的定时器将不再执行。

如果指定定时器(Id)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定定时器(Id)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 定时器标识(必要)
	"Id": 821218080980998,
	// 启用或禁用(必要)
	"Enable": true
}
响应示例
{
	// 回显参数
	"Id": 821218080980998,

	// 更新时间
	"Updated": "2024-09-12 14:36:34",

	// 响应状态码
	"Status": 2
}

移动定时器(TimerMove)

URL /actions/device/TimerMove

PKG com.joyzl.scada.client.device.TimerMove

移动定时器到另一个区域,使其成为另一个区域的定时器。 移动定时器并不会影响已关联的触发器执行, 即便这些触发器所属的设备不在相同区域; 通常为了便于维护应尽量确保定时器仅执行所在区域的触发器。

如果指定定时器(Id)或区域(ZoneId)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定定时器(Id)或区域(ZoneId)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 定时器标识(必要)
	"Id": 821218080980998,
	// 区域标识(必要)
	"ZoneId": 821305322504207
}
响应示例
{
	// 回显参数
	"Id": 821218080980998,
	"ZoneId": 821305322504207,

	// 更新时间
	"Updated": "2024-09-12 14:36:34",

	// 响应状态码
	"Status": 2
}

删除定时器(TimerDelete)

URL /actions/device/TimerDelete

PKG com.joyzl.scada.client.device.TimerDelete

删除定时器时,其中的触发器也将被删除,已触发的告警将被丢弃。

如果指定定时器(Id)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定定时器(Id)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 定时器标识(必要)
	"Id": 821218080980998 
}
响应示例
{
	// 回显参数
	"Id": 821218080980998,

	// 响应状态码
	"Status": 2
}

触发器

触发器是 JOYZL SCADA 虚拟的概念,并非实际存在的电器硬件。 触发器用于设定当属性值变化时是否告警, 或定时自动执行属性设置,既定时自动遥控设备。

请注意,与现场控制相比,远程控制无法实时感知现场实际情况, 设备可能处于不适合执行特定指令的状态,从而可能引发安全事故,造成人员伤亡或财产损失。

触发行为(CompareType)
  • NONE(0) 无条件
  • GREATER(1) 大于目标值
  • EQUAL(2) 等于目标值
  • LESS(3) 小于目标值
  • GREATER_EQUAL(4) 大于等于目标值
  • LESS_EQUAL(5) 小于等于目标值
  • UNEQUAL(6) 不等于目标值
  • CHANGE_GREATER(7) 变化大于目标值
  • CHANGE_LESS(8) 变化小于目标值
告警等级(AlarmType)
  • NONE(0) 无;
  • NOTICE(1) 四级(低级);
  • WARNING(2) 三级(中级);
  • DANGER(3) 二级(高级);
  • CRITICAL(4) 一级(紧急);
  • CONTROL(5) 控制(指令);
  • RESET(6) 重置(本地)。

获取触发器数量(TriggerAmount)

URL /actions/device/TriggerAmount

PKG com.joyzl.scada.client.device.TriggerAmount

获取全部或指定范围的触发器总数,可见范围视用户所在区域而定。 缺省所有参数时,返回当前用户可见范围的所有触发器总数; 指定区域标识(ZoneId)参数时,仅返回指定区域(含子区域)的触发器总数; 指定定时器标识(TimerId)参数时,仅返回指定定时器的触发器总数; 指定设备标识(DeviceId/DeviceNumber)参数时,仅返回指定设备的触发器总数; 指定属性标识(AttributeId)参数时,仅返回指定属性的触发器总数; 指定触发器标识(TriggerId)参数时,仅返回指定触发器关联的触发器总数。

如果指定区域(ZoneId)、定时器(TimerId)、设备(DeviceId/DeviceNumber)、属性(AttributeId)或触发器(TriggerId)不存在, 请求将返回 不存在(NOEXISTS:5) ; 如果指定区域(ZoneId)、定时器(TimerId)、设备(DeviceId/DeviceNumber)、属性(AttributeId)或触发器(TriggerId)位于当前用户所在区域之外, 请求将被 拒绝(DENIED:3)

请求示例
{
	// 区域标识(可选)
	"ZoneId": 821305322504207,
	// 定时器标识(可选)
	"TimerId": 821276801237004,
	// 设备标识(可选)
	"DeviceId": 821370753646611,
	// 设备编号(可选)
	"DeviceNumber": "D001",
	// 属性标识(可选)
	"AttributeId": 6892182778556009,
	// 关联标识(可选)
	"TriggerId": 821333843771410
}
响应示例
{
	// 回显参数
	"ZoneId": 821305322504207,
	"TimerId": 821276801237004,
	"DeviceId": 821370753646611,
	"DeviceNumber": "D001",
	"AttributeId": 6892182778556009,
	"TriggerId": 821333843771410,

	// 触发器数量
	"Triggers": 100,
	// 启用数量
	"Enables": 99,

	// 响应状态码
	"Status": 2
}

禁用数量 = 触发器数量 - 启用数量

获取触发器(TriggerSelect)

URL /actions/device/TriggerSelect

PKG com.joyzl.scada.client.device.TriggerSelect

获取全部或指定范围的触发器,可见范围视用户所在区域而定。 缺省所有参数时,返回当前用户可见范围的所有触发器; 指定区域标识(ZoneId)参数时,仅返回指定区域(不含子区域)的触发器; 指定定时器标识(TimerId)参数时,仅返回指定定时器的触发器; 指定设备标识(DeviceId/DeviceNumber)参数时,仅返回指定设备的触发器; 指定属性标识(AttributeId)参数时,仅返回指定属性的触发器; 指定触发器标识(TriggerId)参数时,仅返回指定触发器的触发器; 指定启用或禁用(Enable)参数时,仅返回指定状态的触发器。

如果指定区域(ZoneId)、定时器(TimerId)、设备(DeviceId/DeviceNumber)、属性(AttributeId)或触发器(TriggerId)不存在, 请求将返回 不存在(NOEXISTS:5) ; 如果指定区域(ZoneId)、定时器(TimerId)、设备(DeviceId/DeviceNumber)、属性(AttributeId)或触发器(TriggerId)位于当前用户所在区域之外, 请求将被 拒绝(DENIED:3)

请求示例
{
	// 区域标识(可选)
	"ZoneId": 821305322504207,
	// 定时器标识(可选)
	"TimerId": 821276801237004,
	// 设备标识(可选)
	"DeviceId": 821370753646611,
	// 设备编号(可选)
	"DeviceNumber": "D001",
	// 属性标识(可选)
	"AttributeId": 6892182778556009,
	// 关联标识(可选)
	"TriggerId": 821333843771410,
	// 启用或禁用(可选)
	"Enable": true
}
响应示例
{
	// 回显参数
	"ZoneId": 821305322504207,
	"TimerId": 821276801237004,
	"DeviceId": 821370753646611,
	"DeviceNumber": "D001",
	"AttributeId": 6892182778556009,
	"TriggerId": 821333843771410,
	"Enable": true,

	// 触发器集合
	"Triggers": [
		{
			// 触发器标识
			"Id": 821226469588999,
			// 属性标识
			"AttributeId": 3102422717169667,
			// 关联标识
			"ParentId": 3102402584510466,
			// 定时器标识
			"TimerId": 3102251589566465,
			// 名称
			"Name": "温度超高",
			// 触发条件
			"Compare": {
				"Name": "GREATER",
				"Text":"大于",
				"Value": 1,
			},
			// 告警等级
			"Alarm": {
				"Name":"WARNING",
				"Text":"二级告警",
				"Value":2
			},
			// 死区
			"Deadband": "70",
			// 目标值
			"Target": "80",
			// 延迟(毫秒)
			"Delay": 0,
			// 启用或禁用
			"Enable": true,
			// 创建时间
			"Created" : "2024-9-12 8:04:10",
			// 更新时间
			"Updated" : "2024-9-12 8:04:10",

			// 激活时间
			"Active": 1789347531159,
			// 最后执行时间戳
			"Timestamp": 1789347531159
		}
		...
	],

	// 响应状态码
	"Status": 2
}

获取触发器状态(TriggerState)

URL /actions/device/TriggerState

PKG com.joyzl.scada.client.device.TriggerState

获取指定触发器的最新状态。此接口仅返回触发器状态,不会返回触发器的其它字段。 通常用于逐个轮询获取触发器的最新状态。

如果指定触发器(Id)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定触发器(Id)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 触发器标识(必要)
	"Id": 821226469588999
}
响应示例
{
	// 回显参数
	"Id": 821226469588999,

	// 激活时间
	"Active": 1789347531159,
	// 最后执行时间戳
	"Timestamp": 1789347531159,

	// 响应状态码
	"Status": 2
}

新建触发器(TriggerCreate)

URL /actions/device/TriggerCreate

PKG com.joyzl.scada.client.device.TriggerCreate

创建新的触发器用于监控属性值变化或执行控制, 触发器必须指定其关联的属性标识(AttributeId)参数。 指定定时器标识(TimerId)参数时,触发器在指定时间监测是否满足条件而触发。 指定触发器标识(ParentId)参数时,将视关联触发器而决定是否联动触发。 未指定定时器也未关联其它触发器时,将在属性值变化时执行。

如果指定属性(AttributeId)、定时器(TimerId)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定属性(AttributeId)、定时器(TimerId)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 属性标识(必要)
	"AttributeId": 3102422717169667,
	// 关联标识(可选)
	"ParentId": 3102402584510466,
	// 定时器标识(可选)
	"TimerId": 3102251589566465,
	// 名称(必要)
	"Name": "温度超高",
	// 条件(必要)
	"Compare": 1,
	// 告警等级(必要)
	"Alarm": 2,
	// 目标值(必要)
	"Value": "80",
	// 死区(可选)
	"Deadband": "70",
	// 延迟(毫秒)(可选)
	"Delay": 0,
	// 启用或禁用(可选)
	"Enable": true
}
响应示例
{
	// 回显参数
	"AttributeId": 3102422717169667,
	"ParentId": 3102402584510466,
	"TimerId": 3102251589566465,
	"Name": "温度超高",
	"Compare": {
		"Name": "GREATER",
		"Text":"大于",
		"Value": 1,
	},
	"Alarm": {
		"Name":"WARNING",
		"Text":"二级告警",
		"Value":2
	},
	"Deadband": "70",
	"Target": "80",
	"Delay": 0,
	"Enable": true,

	// 触发器标识
	"Id": 821285189845005,
	// 创建时间
	"Created": "2024-09-12 14:36:34",

	// 响应状态码
	"Status": 2
}

修改触发器(TriggerUpdate)

URL /actions/device/TriggerUpdate

PKG com.joyzl.scada.client.device.TriggerUpdate

通过触发器标识(Id)修改触发器的常规字段值。 触发器的关联关系调整须通过 移动触发器(TriggerMove) 接口实现; 触发器的启用或禁用须通过 启用或禁用触发器(TriggerEnable) 接口实现。

如果指定触发器(Id)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定触发器(Id)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 触发器标识(必要)
	"Id": 821285189845005,

	// 名称(必要)
	"Name": "温度超高",
	// 条件(必要)
	"Compare": 1,
	// 告警等级(必要)
	"Alarm": 2,
	// 目标值(必要)
	"Value": "80",
	// 死区(可选)
	"Deadband": "70",
	// 延迟(毫秒)(可选)
	"Delay": 0
}
响应示例
{
	// 回显参数
	"Id": 821285189845005,
	"Name": "温度超高",
	"Compare": {
		"Name": "GREATER",
		"Text":"大于",
		"Value": 1,
	},
	"Alarm": {
		"Name":"WARNING",
		"Text":"二级告警",
		"Value":2
	},
	"Deadband": "70",
	"Target": "80",
	"Delay": 0,

	// 更新时间
	"Updated": "2024-09-12 16:20:15",

	// 响应状态码
	"Status": 2
}

启用或禁用触发器(TriggerEnable)

URL /actions/device/TriggerEnable

PKG com.joyzl.scada.client.device.TriggerEnable

启用或禁用指定触发器。 被禁用的触发器将不再执行,已触发的告警将被丢弃。

如果指定触发器(Id)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定触发器(Id)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 触发器标识(必要)
	"Id": 821226469588999,
	// 启用或禁用(必要)
	"Enable": true
}
响应示例
{
	// 回显参数
	"Id": 821226469588999,
	"Enable": true,

	// 更新时间
	"Updated": "2024-09-12 16:20:15",

	// 响应状态码
	"Status": 2
}

移动触发器(TriggerMove)

URL /actions/device/TriggerMove

PKG com.joyzl.scada.client.device.TriggerMove

移动触发器到另一个定时器或触发器,使其成为另一个定时器的触发器或关联触发器。

如果指定触发器(Id)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定触发器(Id)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 触发器标识(必要)
	"Id": 821226469588999,
	// 定时器标识(可选)
	"TimerId": 3102251589566465,
	// 触发器标识(可选)
	"TriggerId": 3102402584510466
}
响应示例
{
	// 回显参数
	"Id": 821226469588999,
	"TimerId": 3102251589566465,
	"TriggerId": 3102402584510466,

	// 更新时间
	"Updated": "2024-09-12 16:20:15",

	// 响应状态码
	"Status": 2
}

删除触发器(TriggerDelete)

URL /actions/device/TriggerDelete

PKG com.joyzl.scada.client.device.TriggerDelete

删除触发器时,已触发的告警将被丢弃。

如果指定触发器(Id)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定触发器(Id)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 触发器标识(必要)
	"Id": 821226469588999
}
响应示例
{
	// 回显参数
	"Id": 821226469588999,

	// 响应状态码
	"Status": 2
}

边缘端

每个边缘端对象对应着一个边缘端主机,边缘端通过指定账户连接到服务端(JOYZL SCADA Server)。 服务端会自动创建验证通过的边缘端对象。

提示: 在旧版本的软件和文档中,称之为 “伺服器” 或 “伺服端” ,由于此名称极易混淆且不准确, 因此从 9.0.0 版本之后更名为 “边缘端”。

获取边缘端数量(ServoAmount)

URL /actions/device/ServoAmount

PKG com.joyzl.scada.client.device.ServoAmount

获取全部或指定区域的边缘端总数,可见范围视用户所在区域而定。 缺省所有参数时,返回当前用户可见范围的所有边缘端总数; 指定区域标识(ZoneId)参数时,仅返回指定区域(含子区域)的边缘端总数。

边缘端所属的区域,是由其关联的设备所在区域决定的。 如果指定区域(ZoneId)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定区域(ZoneId)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 区域标识(可选)
	"ZoneId": 821305322504207
}
响应示例
{
	// 回显参数
	"ZoneId": 821305322504207,

	// 边缘端数量
	"Servo": 8,
	// 在线数量
	"Normal": 6,

	// 响应状态码
	"Status": 2
}

获取边缘端(ServoSelect)

URL /actions/device/ServoSelect

PKG com.joyzl.scada.client.device.ServoSelect

获取全部或指定区域的边缘端,可见范围视用户所在区域而定。 缺省所有参数时,返回当前用户可见范围的所有边缘端; 指定区域标识(ZoneId)参数时,仅返回指定区域(不含子区域)的边缘端;

边缘端所属的区域,是由其关联的设备所在区域决定的。 如果指定区域(ZoneId)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定区域(ZoneId)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 区域标识(可选)
	"ZoneId": 821305322504207
}
响应示例
{
	// 回显参数
	"ZoneId": 821305322504207,

	// 边缘端集合
	"Servos": [
		{
			// 边缘端标识
			"Id": 821236535918600,
			// 区域标识
			"ZoneId": 821305322504207,
			// 编号
			"Number": "D0001",
			 // 创建时间
			"Created" : "2024-9-12 8:04:10",
			 // 更新时间
			"Updated" : "2024-9-12 8:04:10",

			// 当前状态
			"Fault": {
				"Name": "NORMAL",
				"Text": "在线",
				"Value": 1
			},
			// 状态更新时间戳
			"Timestamp": 175234567835
		}
		...
	],

	// 响应状态码
	"Status": 2
}

获取边缘端状态(ServoState)

URL /actions/device/ServoState

PKG com.joyzl.scada.client.device.ServoState

获取指定边缘端的最新状态。 此接口仅返回边缘端状态,不会返回边缘端的其它字段。

如果指定边缘端(Id)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定边缘端(Id)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 边缘端标识
	"Id": 821236535918600
}
响应示例
{
	// 回显参数
	"Id": 821236535918600,

	// 当前状态
	"Fault": {
		"Name": "NORMAL",
		"Text": "在线",
		"Value": 1
	},
	// 状态更新时间戳
	"Timestamp": 1789347531159,

	// 响应状态码
	"Status": 2
}

重启边缘端(ServoRestart)

URL /actions/device/ServoRestart

PKG com.joyzl.scada.client.device.ServoRestart

远程重启边缘端主机。 边缘端程序收到重启指令后会首先断开所有连接然后重启操作系统。 如果边缘端未连接到服务端(JOYZL SCADA Server),无法执行远程重启。

如果指定边缘端(Id)不存在,请求将返回 不存在(NOEXISTS:5) ; 如果指定边缘端(Id)位于当前用户所在区域之外,请求将被 拒绝(DENIED:3)

请求示例
{
	// 边缘标识(必要)
	"Id": 821236535918600
}
响应示例
{
	// 响应状态码
	"Status": 2
}

边缘端切换(ServoSwitch)

URL /actions/device/ServoSwitch

PKG com.joyzl.scada.client.device.ServoSwitch

边缘端通知服务端切换设备通信,意味着这些设备经由边缘端转发数据。 此接口是边缘端专用的,用户和第三方系统不应使用此接口。

技术支持
电话 JOYZL SCADA 电话 QQ JOYZL SCADA QQ 微信 JOYZL SCADA 微信
931661600 joyzl-scada
技术支持
电话 JOYZL SCADA 电话
QQ JOYZL SCADA QQ
微信 JOYZL SCADA 微信
931661600 joyzl-scada