BindingInfoMessage
抽象绑定/资产信息
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| enabled | enabled | bool | optional | 绑定状态 |
| device_id | device_id | string | optional | 设备唯一 ID |
| asset_id | asset_id | string | optional | 资产Id(业务层编号) |
| ip | ip | string | optional | IP 地址 |
| port | port | string | optional | 端口 |
| account | account | string | optional | 账号 |
| password | password | string | optional | 密码 |
| update_time | update_time | int64 | optional | 更新时间 |
Nested Enums defined inBindingInfo
ChannelConfigMessage
ChannelConfig 用于定义通道级别的配置项
Nested Enums defined inChannelConfig
DigitalPortConfigMessage
开关量端口特有配置
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| work_mode | work_mode | DigitalWorkMode | optional | 工作模式:电平模式 或 脉冲模式 |
| logic_inverted | logic_inverted | DigitalPortConfig.LogicPolarity | optional | 触点逻辑极性配置 (针对 DI/DO):
【关键状态映射说明】为了统一上层业务层的状态感知(0-没有/正常,1-有/报警/开),
边缘网关/驱动层必须根据此配置对底层物理电平进行转换,再转换结果写入到 DeviceChannel.switch_state 中。
1. 对于 DI (数字输入 - 如传感器):
- logic_inverted = 1 (正逻辑,默认值,适用于常开型 NO 传感器):
底层物理电平断开(0) -> 映射为业务状态 switch_state = 0 (低电平)
底层物理电平闭合(1) -> 映射为业务状态 switch_state = 1 (高电平)
- logic_inverted = 2 (反逻辑/取反,适用于常闭型 NC 传感器,如门磁、急停按钮):
底层物理电平断开(0) -> 映射为业务状态 switch_state = 1 (低电平)
底层物理电平闭合(1) -> 映射为业务状态 switch_state = 0 (高电平)
2. 对于 DO (数字输出 - 如继电器控制):
- logic_inverted = 1 (正逻辑): 业务下发 switch_state=1 -> 硬件输出高电平/吸合
- logic_inverted = 2 (反逻辑): 业务下发 switch_state=1 -> 硬件输出低电平/断开 |
| initial_state | initial_state | com.nexus.service.proto.enums.BinaryStatus | optional | 【电平模式特有】上电初始状态:设备掉电重启后,DO 默认是开还是关 |
| debounce_time_ms | debounce_time_ms | int32 | optional | 【DI 特有】防抖时间 (单位:毫秒) |
| pulse_duration_ms | pulse_duration_ms | int32 | optional | 【脉冲模式特有】时长 (单位:毫秒)
仅当 work_mode == WORK_MODE_PULSE 时生效 |
Nested Enums defined inDigitalPortConfig
NetworkPortInfoMessage
网络端口 特有状态与配置
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| admin_enable | admin_enable | bool | optional | 端口基础配置 (可读写)
端口管理状态 (是否在软件层面启用该端口) |
| auto_negotiation_enable | auto_negotiation_enable | bool | optional | 数据通信配置与状态
[配置] 是否开启速率和双工的自动协商 (通常为 true) |
| target_speed | target_speed | PortSpeed | optional | [配置] 目标速率 (当 auto_negotiation_enable=false 时生效) |
| target_duplex | target_duplex | PortDuplex | optional | [配置] 目标双工模式 (当 auto_negotiation_enable=false 时生效) |
| link_status | link_status | com.nexus.service.proto.enums.BinaryStatus | optional | [状态] 实际链路状态 (网线是否插上且连通) |
| blocking_status | blocking_status | com.nexus.service.proto.enums.BinaryStatus | optional | [状态] 端口阻塞状态 (通常指由 STP 生成树协议或环路保护机制触发的逻辑阻断,
此时端口虽然物理 Link Up,但无法转发业务数据帧,用于防止网络环路) |
| negotiated_speed | negotiated_speed | PortSpeed | optional | [状态] 实际协商后的工作速率 |
| negotiated_duplex | negotiated_duplex | PortDuplex | optional | [状态] 实际协商后的双工模式 |
| poe_status | poe_status | PoePowerStatus | optional | POE 运行状态与遥测数据 (只读)
[状态] POE 端口当前的工作状态 |
| negotiated_class | negotiated_class | PoeClass | optional | [状态] 与受电设备(PD)握手协商后的供电等级 |
| crc_errors | crc_errors | uint64 | optional | [状态] CRC 校验错误累计,数值升高通常代表网线质量差、接触不良或环境干扰。
场景:排查“网络卡顿、丢包、摄像头画面花屏”的首要指标。如果该值不断增长,说明物理链路存在隐患(如网线太长、水晶头老化或强电干扰)。
交换芯片内部有一个专门的计数器(Counter Register),每检测到一个错误帧,该寄存器加 1。 |
| input_packets | input_packets | uint64 | optional | [状态] 端口累计接收报文数,用于判断受电设备是否正在正常发送业务数据。
场景:用于“判断设备死机/假死”。即使 POE 供电正常、链路 Link Up,如果该计数器长时间不增长,说明受电设备(如 IP 电话或相机)系统可能卡死,无法发送业务数据,此时可触发 POE 远程重启。 |
Nested Enums defined inNetworkPortInfo
LogicPolarityEnum
触点逻辑极性配置
| Name | Value | Description |
|---|
| LOGIC_POLARITY_UNSPECIFIED | 0 | 未指定 |
| LOGIC_POLARITY_NORMAL | 1 | 正极性/正逻辑 (不取反) |
| LOGIC_POLARITY_INVERTED | 2 | 反极性/反逻辑 (取反) |
ChannelActionUnitMessage
原子动作单元
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| module | module | ModuleLocator | optional | --- 定位 (Where) ---
公用结构:定位到具体的板载模块 |
Nested Enums defined inChannelActionUnit
ChannelDataSelectorMessage
通道获取模式
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| query_all_channels | query_all_channels | bool | optional | 场景 A: 简单粗暴,查所有模块所有通道 |
| module | module | ModuleLocator | repeated | 场景 B: 精确指定查询目标 |
| resources_type | resources_type | ResourceType | repeated | 查什么 (可多选:例如同时查 SETTINGS 和 BINDING) |
| property_keys | property_keys | string | repeated | (可选) 更细粒度的属性过滤
如果只需要查 Settings 中的某几个特定字段,可以用 keys 过滤。为空代表查全部属性。 |
Nested Enums defined inChannelDataSelector
ChannelMaskMessage
通道掩码:用于确定模块内的具体通道
Nested Enums defined inChannelMask
ModuleLocatorMessage
模块定位器:用于唯一确定一个模块
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
typedeprecated | type | InterfaceType | optional | [已废弃] 模块类型 ,已废弃,由客户端自己区分辨是什么类型的模块 | | serial_number | serial_number | string | optional | 关键标识
如果是 ONBOARD:通常只有一个,或者用索引/SlotID 区分 (e.g., "0", "1")
如果是 DOWNSTREAM:必须提供 serial_number |
| control_target_type | control_target_type | ControlTargetType | optional | 控制目标的类型
当 control_target_type 为 TARGET_TYPE_CHANNEL_ALL 时,
系统将根据 channelSwitchState 字段定义的开关状态,对该模块下的所有通道进行统一操作。 |
| channelSwitchState | channelSwitchState | com.nexus.service.proto.enums.SwitchState | optional | 通道开关状态
注意:仅当 control_target_type 为 TARGET_TYPE_CHANNEL_ALL 时,此字段才生效并执行对应的开关逻辑。 |
| channels | channels | ChannelMask | repeated | 针对该模块下属通道的控制指令列表 |
Nested Enums defined inModuleLocator
ResourceTypeEnum
定义物模型中的资源查询维度 (支持多选 / Bitmask)
| Name | Value | Description |
|---|
| RESOURCE_UNKNOWN | 0 | |
| RESOURCE_ALL | 1 | |
| RESOURCE_INFO | 2 | --- 静态与只读资源 (极低频查询) ---
设备身份与版本 (Identity & Version): SN, MAC, 固件版本等 |
| RESOURCE_CAPABILITY | 3 | 能力与规格 (Specs & Capacity): 额定功率、量程、通道数、支持的电压域等 |
| RESOURCE_SETTINGS | 11 | --- 配置与关联资源 (低频查询/变更时查询) ---
用户配置参数 (Settings/Config): 业务下发的配置、默认上电状态、阈值设置等 |
| RESOURCE_BINDING | 12 | 业务绑定关系 (Binding): 通道与空间、资产、外部逻辑的绑定关系 (binding_info) |
| RESOURCE_TOPOLOGY | 13 | 物理/电气拓扑 (Topology): 主从模块级联关系、通道属于哪个 power_input_id 等 |
| RESOURCE_STATE | 21 | --- 动态与运行态资源 (中高频查询) ---
离散运行状态 (State): 在线/离线、开关机(On/Off)、Link Up/Down、物理报警状态 |
| RESOURCE_TELEMETRY | 22 | 连续遥测数据 (Telemetry/Metrics): 实时电压/电流/功率 (measure), 实时温度等 |
| RESOURCE_NETWORK | 81 | --- 领域扩展 (可选) ---
网络与通信属性 (Network/PoE): 专查速率、MAC、PoE协商等级 (poe_info, network_status) |
ChannelCountModeEnum
通道数量获取模式 (定义如何确定模块的通道数)
| Name | Value | Description |
|---|
| CHANNEL_COUNT_UNKNOWN | 0 | 未初始化/未配置 |
| CHANNEL_COUNT_AUTO | 1 | 自动获取:系统根据硬件或逻辑自动探测通道数量 |
| CHANNEL_COUNT_CUSTOM | 2 | 手动/自定义:手动指定或通过自定义参数设置通道数量 |
ChannelTypeEnum
通道业务类型 (标识该物理端口在【当前现场接线场景】下的【业务用途】)
作用:决定前端 UI 的渲染图标、业务逻辑的告警策略、以及支持的控制指令。
注意区分与 ElectricalSpec 的关系:ElectricalSpec 决定了通道"能不能做",ChannelType 决定了通道"现在正在做什么"。
| Name | Value | Description |
|---|
| CHANNEL_TYPE_UNSPECIFIED | 0 | |
| CHANNEL_TYPE_POWER_DC | 1 | 直流供电通道 |
| CHANNEL_TYPE_POWER_AC | 2 | 交流供电通道 |
| CHANNEL_TYPE_POE | 3 | POE/网络供电通道 (数据+供电) |
| CHANNEL_TYPE_DIGITAL_INPUT | 4 | --- 基础信号控制类 (数字/开关量) ---
开关量输入 (DI - 只读,如烟感、门磁、按钮) |
| CHANNEL_TYPE_DIGITAL_OUTPUT | 5 | 开关量输出 (DO - 可控,如继电器触发、开锁、警报器) |
| CHANNEL_TYPE_ETHERNET | 6 | --- 通讯/网络类 ---
普通以太网通道 (纯数据,如LAN/WAN口) |
| CHANNEL_TYPE_POWER_UNIVERSAL | 7 | 交直流通用/自适应供电通道
业务场景:该通道未绑定固定用途,且由于硬件支持直通路由(is_input_adaptive=true),
其输出的 AC/DC 属性完全取决于它关联的 power_input_id 输入源当前的状态。 |
| CHANNEL_TYPE_ANALOG_INPUT | 10 | --- 工业模拟量类 ---
模拟量输入 (AI - 如4-20mA, 0-10V) |
| CHANNEL_TYPE_ANALOG_OUTPUT | 11 | 模拟量输出 (AO - 控制变频/比例阀) |
| CHANNEL_TYPE_MODBUS | 21 | --- 专用总线类 ---
M-Bus 接口 (常用于水气热表) |
ChannelTypeOldEnum
通道业务类型 (标识该物理端口的用途)
| Name | Value | Description |
|---|
| CHANNEL_TYPE_OLD_UNSPECIFIED | 0 | |
| CHANNEL_TYPE_OLD_POWER_AC | 1 | 交流供电通道 |
| CHANNEL_TYPE_OLD_POWER_DC | 2 | 直流供电通道 |
| CHANNEL_TYPE_OLD_POE | 3 | POE/网络供电通道 (数据+供电) |
| CHANNEL_TYPE_OLD_DIGITAL_INPUT | 4 | --- 基础信号控制类 (数字/开关量) ---
开关量输入 (DI - 只读,如烟感、门磁、按钮) |
| CHANNEL_TYPE_OLD_DIGITAL_OUTPUT | 5 | 开关量输出 (DO - 可控,如继电器触发、开锁、警报器) |
| CHANNEL_TYPE_OLD_ETHERNET | 6 | --- 通讯/网络类 ---
普通以太网通道 (纯数据,如LAN/WAN口) |
| CHANNEL_TYPE_OLD_ANALOG_INPUT | 10 | --- 工业模拟量类 ---
模拟量输入 (AI - 如4-20mA, 0-10V) |
| CHANNEL_TYPE_OLD_ANALOG_OUTPUT | 11 | 模拟量输出 (AO - 控制变频/比例阀) |
| CHANNEL_TYPE_OLD_MODBUS | 21 | --- 专用总线类 ---
M-Bus 接口 (常用于水气热表) |
ControlTargetTypeEnum
目标类型枚举
| Name | Value | Description |
|---|
| TARGET_TYPE_UNSPECIFIED | 0 | Protobuf 规范推荐:枚举的第一个(0)通常设为 UNSPECIFIED(未指定/默认值)
这可以防止在未赋值的情况下意外触发某个真实的业务逻辑 |
| TARGET_TYPE_CHANNEL_INDEX | 1 | 按指定的索引列表控制部分通道 |
| TARGET_TYPE_CHANNEL_ALL | 2 | 全选,控制该模块下的所有通道 |
| TARGET_TYPE_module | 3 | 控制模块本身,如上电/下电/重启等 |
DeviceModuleTypeEnum
模块类型 (标识该模块/插槽的【宏观资产类别】与【主打功能】)
作用:用于设备采购、机框插槽匹配(Slot match)、宏观资产盘点。
即使一个模块是混合模块,这里也只反映其产品定义的定性分类。
| Name | Value | Description |
|---|
| DEVICE_MODULE_TYPE_UNSPECIFIED | 0 | Protobuf 规范要求枚举必须从 0 开始 |
| DEVICE_MODULE_TYPE_DC | 1 | 直流 |
| DEVICE_MODULE_TYPE_AC | 2 | 交流 |
| DEVICE_MODULE_TYPE_NETWORK | 3 | 网络 |
| DEVICE_MODULE_TYPE_IO | 4 | I/O |
| DEVICE_MODULE_TYPE_HYBRID_POWER | 5 | 交直流混合/通用供电模块 |
DigitalWorkModeEnum
开关量工作模式
| Name | Value | Description |
|---|
| WORK_MODE_LEVEL | 0 | 电平模式:下发指令后状态保持,直到下次指令(常开/常闭由指令控制) |
| WORK_MODE_PULSE | 1 | 脉冲/点动模式:触发后吸合一段时间自动断开 |
InterfaceTypeEnum
物理接口/接入类型
| Name | Value | Description |
|---|
| INTERFACE_TYPE_INTERNAL | 0 | 内部板载 (主板集成) |
| INTERFACE_TYPE_BUS_MODBUS | 1 | 总线扩展 (如 RS485 Modbus 下挂) |
| INTERFACE_TYPE_SERIAL_DIRECT | 2 | 串口直连端子 (Point-to-Point Terminal) |
| INTERFACE_TYPE_CAN | 3 | CAN总线 |
| INTERFACE_TYPE_ETHERNET | 4 | 通过以太网/局域网连接的下挂设备 (如走 TCP/IP 协议的模块) |
PoeClassEnum
POE 供电标准等级 (基于 802.3af/at/bt)
| Name | Value | Description |
|---|
| POE_CLASS_UNKNOWN | 0 | |
| POE_CLASS_0_15W | 1 | 802.3af (默认, 最大15.4W) |
| POE_CLASS_1_4W | 2 | 802.3af (极低功率, 最大4.0W) |
| POE_CLASS_2_7W | 3 | 802.3af (低功率, 最大7.0W) |
| POE_CLASS_3_15W | 4 | 802.3af (中功率, 最大15.4W) |
| POE_CLASS_4_30W | 5 | 802.3at (Type 2, 最大30W) |
| POE_CLASS_5_45W | 6 | 802.3bt (Type 3, 最大45W) |
| POE_CLASS_6_60W | 7 | 802.3bt (Type 3, 最大60W) |
| POE_CLASS_7_75W | 8 | 802.3bt (Type 4, 最大75W) |
| POE_CLASS_8_90W | 9 | 802.3bt (Type 4, 最大90W) |
PoePowerStatusEnum
POE 端口供电运行状态
| Name | Value | Description |
|---|
| POE_STATUS_DISABLED | 0 | 供电被管理员关闭 |
| POE_STATUS_DELIVERING | 1 | 正在正常供电 |
| POE_STATUS_SEARCHING | 2 | 正在检测 PD (受电设备) |
| POE_STATUS_FAULT | 3 | 供电故障 (如短路、过载、温度过高等) |
| POE_STATUS_DENIED | 4 | 拒绝供电 (通常因为交换机总功率不足) |
PoePriorityEnum
供电优先级(当总功率不足时,优先关断低优先级端口)
| Name | Value | Description |
|---|
| PRIORITY_LOW | 0 | 低优先级 (默认) |
| PRIORITY_HIGH | 1 | 高优先级 |
| PRIORITY_CRITICAL | 2 | 关键优先级 (最后被关断) |
PortDuplexEnum
端口双工模式
| Name | Value | Description |
|---|
| DUPLEX_UNKNOWN | 0 | |
| DUPLEX_HALF | 1 | 半双工 |
| DUPLEX_FULL | 2 | 全双工 |
PortSpeedEnum
网络接口速率
| Name | Value | Description |
|---|
| SPEED_AUTO | 0 | 自动协商速率 |
| SPEED_10M | 1 | |
| SPEED_100M | 2 | |
| SPEED_1G | 3 | 1000M |
| SPEED_2_5G | 4 | 2.5G (现代 WiFi-6 AP 常用速率) |
| SPEED_5G | 5 | 5G |
| SPEED_10G | 6 | 10000M |
DeviceChannelMessage
定义物理通道
Nested Enums defined inDeviceChannel
DeviceModuleMessage
定义一个“模块”或“通道组”
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| serial_number | serial_number | string | optional | --- 核心身份 ---
必须存在。
对于板载模块,固件层需硬编码或动态生成一个固定的 ID (如 "LOCAL_12V_MAIN") |
| model_code | model_code | string | optional | 硬件型号/产品代码 (如 "NEXUS-IO-8080"),用于区分功能集 |
| interface_type | interface_type | InterfaceType | optional | 明确接入方式:是主板自带,还是总线扩展,还是串口直连端子 |
| channel_count_mode | channel_count_mode | ChannelCountMode | optional | 通道数量获取模式 |
| channel_count | channel_count | int32 | optional | 模块的通道数量 |
| firmware_version | firmware_version | string | optional | --- 版本信息 (OTA必备) ---
固件版本 (如 "v1.2.0") |
| hardware_version | hardware_version | string | optional | 硬件版本 (如 "PCB_REV_A") |
| module_physical_status | module_physical_status | com.nexus.service.proto.enums.SwitchState | optional | 模块级物理状态 (如:模块掉电、总线断开或总闸关断) |
| spec | spec | com.nexus.service.proto.device.ElectricalSpec | optional | 模块工作电源规格 (Logic Power) |
| is_online | is_online | bool | optional | 状态属性
模块在线/离线状态 (总线通讯状态) |
| temperature | temperature | float | optional | 模块内部温度 (关键健康指标) |
| channels | channels | DeviceChannel | repeated | 该模块下的所有通道列表
只有当 control_scope == SCOPE_SINGLE 时,解析此列表
如果 control_scope == SCOPE_ALL,直接忽略此字段,从而避免传输N个ID |
| power_inputs | power_inputs | com.nexus.service.proto.device.PowerInputBank | repeated | --- 负载/强电输入电源 ---
支持多路不同电压输入 |
| total_capacity | total_capacity | com.nexus.service.proto.device.PowerCapacity | optional | --- 输出侧 (Output Side) ---
模块总负载能力 (输出侧:Throughput)
注意:这是设备本体的物理极限(铜排、散热),与接入电压无关。
如果接入 12V,最大功率受 max_total_current 限制 (P = 12 * I_max)
如果接入 36V,最大功率可能受 max_total_power (散热) 限制 |
| total_load_measure | total_load_measure | com.nexus.service.proto.device.ElectricalMeasure | optional | 模块总负载实时统计(所有通道之和)
语义:这是所有 enabled channel 的实时功率/电流累加值
作用:用于和 power_inputs 的输入总和进行对比,计算 PUE 或损耗 |
| device_module_type | device_module_type | DeviceModuleType | optional | 模块的业务定义类型 |
Nested Enums defined inDeviceModule
DeviceTopologyMessage
设备拓扑
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| onboard_module | onboard_module | DeviceModule | repeated | 描述所有“板载”的模块 |
| downstream_module | downstream_module | DeviceModule | repeated | 描述所有“下挂”的模块(通过总线等方式连接的外部模块) |
Nested Enums defined inDeviceTopology
NetworkPortStateMessage
通道级别的网络设备实时状态
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| device_online | device_online | bool | optional | [ 第一层:综合摘要 Summary ]
综合判定该通道下的设备是否在线
(需在边缘网关配置聚合策略,如:ANY_SUCCESS(只要一个通就算在线) 或 ALL_SUCCESS(必须全通)) |
| reference_latency_ms | reference_latency_ms | int32 | optional | 综合通信延迟参考值 (毫秒) - 可选:所有成功任务的平均值,或基础网络(Ping)的延迟 |
| offline_alarm | offline_alarm | bool | optional | 综合设备告警标识 (用于前端快速标红展示) |
| health_score | health_score | int32 | optional | 综合健康度得分 (0-100),例如:Ping通但HTTP挂了得50分,全通100分。比单纯的布尔值更有灰度。 |
| active_monitor_state_result | active_monitor_state_result | com.nexus.service.proto.device.TaskResult | optional | [ 第二层:监控任务详情 Details ]
该通道下关联的所有具体监控任务的实时执行结果 |
Nested Enums defined inNetworkPortState
ResponseBodyMessage
定义一个包含所有响应共性字段的 “状态” 消息。
Nested Enums defined inResponseBody
CellularIdentityMessage
(只读)蜂窝通讯模组的基础信息
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| imei | imei | string | optional | 通信模组的唯一设备识别码GSN (IMEI) |
| imsi | imsi | string | optional | SIM 卡国际移动用户识别码 (IMSI) |
| iccid | iccid | string | optional | SIM 卡唯一标识 (ICCID) |
| cgmr | cgmr | string | optional | 模块版本信息(通常对应 AT+CGMR) |
| gmr | gmr | string | optional | 模块固件版本信息(通常对应 AT+GMR) |
Nested Enums defined inCellularIdentity
CellularModemStateMessage
(只读)微观层:蜂窝模组基带状态 (深度排障层面)
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| sim_status | sim_status | com.nexus.service.proto.enums.SimStatus | optional | [作用] 物理 SIM 卡的当前读取状态
[场景] 排查因设备震动导致 SIM 卡松动(未插入)、接触不良、或被锁卡(需 PIN 码) 等硬件级故障。 |
| reg_status | reg_status | com.nexus.service.proto.enums.NetworkRegStatus | optional | --- 核心网络注册与制式状态 ---
[作用] 当前网络注册状态(对应 AT+CEREG / AT+CGREG)
[场景] 区分设备是在找网、已注册、还是被基站拒绝,或者是否处于漫游状态 |
| reject_code | reject_code | int32 | optional | [排障] 当 reg_status 为“被拒绝”时,底层的 CME/AS 拒绝码 (例如 15 代表无漫游权限) |
| reject_description | reject_description | string | optional | [排障] 错误码的文本解析 |
| network_type | network_type | com.nexus.service.proto.enums.ConnectivityType | optional | [作用] 当前驻留的网络制式 (Radio Access Technology)
[场景] 确认设备是否回落到了 2G/3G,或者确认当前使用的是 NB-IoT 还是 Cat.1 |
| plmn | plmn | string | optional | --- 网络标识与 LBS 定位辅助 ---
[作用] 运营商公共陆地移动网络号 (MCC+MNC,如 46000 代表中国移动) |
| cell_id | cell_id | string | optional | [作用] 当前驻留的小区基站 ID (Cell ID) 和 跟踪区代码 (TAC / LAC)
[场景] 当设备 GPS 搜星失败时,云端可以通过 Cell ID + TAC 调用基站定位接口,获取设备大致位置(基站 LBS 定位) |
| tac | tac | int32 | optional | [排障/定位] 跟踪区代码 (TAC / LAC) |
| active_apn | active_apn | string | optional | [作用] 实际生效的 APN (接入点)
[场景] 排查专网卡是否成功获取并应用了定向 APN |
| module_temperature | module_temperature | float | optional | --- 模组运行健康度 ---
[作用] 模组当前温度
[场景] 户外高温暴晒或频繁高频次发包,可能导致模组过热死机重启。监控此项可排查硬件重启原因 |
Nested Enums defined inCellularModemState
CellularSignalQualityMessage
动态信号质量:用于周期性监控,独立上报
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| carrier_name | carrier_name | string | optional | 运营商名称 (这里更合适,因为漫游时会变) |
| rssi | rssi | int32 | optional | 信号强度总功率 (dBm) |
| rsrp | rsrp | int32 | optional | 参考信号接收功率 (dBm) - 核心强度指标 |
| rsrq | rsrq | int32 | optional | 参考信号接收质量 (dB) - 纯净度参考指标 |
| sinr | sinr | int32 | optional | 信号与干扰加噪声比 (dB) - 稳定性指标 |
| signal_level | signal_level | int32 | optional | 换算后的信号格数 (0-5),方便 UI 显示 |
Nested Enums defined inCellularSignalQuality
DeviceInternalHealthMessage
设备本体健康状态 (Device Self-Health)
Nested Enums defined inDeviceInternalHealth
McuSpecMessage
(只读)MCU 静态规格 (McuSpec)
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| model | model | string | optional | 芯片型号 (e.g., "GD32F425VGT6") |
| core_arch | core_arch | string | optional | 内核架构 (e.g., "ARM Cortex-M4") |
| unique_id | unique_id | string | optional | 唯一芯片标识 (96-bit Unique Device ID)
通常显示为 hex 字符串,用于防止盗版或做设备指纹 |
| max_clock_hz | max_clock_hz | uint32 | optional | 主频上限 (e.g., 200000000 -> 200MHz) |
Nested Enums defined inMcuSpec
McuStateMessage
MCU 实时状态 (McuState)
描述:这颗芯片现在活得怎么样
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| current_clock_hz | current_clock_hz | uint32 | optional | === 核心运行指标 ===
当前系统主频 (Hz) - 某些设备会动态降频节能 |
| supply_voltage_mv | supply_voltage_mv | float | optional | 核心供电电压 (mV) - 也可以叫 VDD
GD32 内部通常有参考电压通道,可计算出 VDD |
| core_temperature | core_temperature | float | optional | 核心温度 (Celsius) - 利用片上内置温度传感器
排查高温导致的降频或重启 |
| cpu_load | cpu_load | float | optional | CPU 负载(单位:%) |
| stack_min_free_bytes | stack_min_free_bytes | uint32 | optional | 栈水位线 (Stack Watermark) - 可选
记录系统运行以来栈剩余的最小值,用于检测栈溢出风险 |
Nested Enums defined inMcuState
ResourceCapacityMessage
定义资源容量(动态)
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| total | total | uint64 | optional | --- 基础静态指标 ---
总容量 |
| usable | usable | uint64 | optional | 扣除系统预留后的实际可用量 |
| used | used | uint64 | optional | --- 实时动态指标 ---
当前已用量 |
| free | free | uint64 | optional | 当前剩余量 |
| usage_percent | usage_percent | float | optional | 当前使用百分比 |
| peak_used | peak_used | uint64 | optional | --- 历史极值 (高水位线) ---
历史最大使用量 (High Watermark) |
| min_free | min_free | uint64 | optional | 历史最小剩余量 |
| peak_timestamp | peak_timestamp | int64 | optional | 峰值发生的时间戳 |
| max_contiguous_free | max_contiguous_free | uint64 | optional | --- 内存质量/碎片化 (主要针对 RAM) ---
当前最大可分配的连续内存块 (对于防止 OOM 至关重要) |
| alloc_failures | alloc_failures | uint32 | optional | 分配失败累计次数 |
| wear_level | wear_level | float | optional | --- 存储健康 (主要针对 Storage/Flash) ---
磨损程度 0-100 (百分比),常用于 SSD/eMMC/Flash 寿命预警 |
| bad_blocks | bad_blocks | uint32 | optional | 坏块数量 |
| unit | unit | com.nexus.service.proto.enums.DataUnit | optional | --- 辅助元数据 --- |
| stats_since | stats_since | int64 | optional | 统计开始时间(Min/Max 是从何时开始统计的,通常是启动时间或上次手动复位时间) |
Nested Enums defined inResourceCapacity
FloatPropertyMessage
用于存储标准精度的连续数值,适用于对带宽/存储敏感且精度要求一般的场景。
示例:实时电压 (220.5V)、环境温度 (25.5°C)、工作电流 (10.2A)。
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| value | value | float | optional | 当前监测值或配置值 |
| default_value | default_value | float | optional | 出厂默认值,用于“恢复默认”功能 |
| min | min | float | optional | 允许的最小值(下限约束) |
| max | max | float | optional | 允许的最大值(上限约束) |
| unit | unit | com.nexus.service.proto.enums.MeasurementUnit | optional | 物模型物理量/电气量测量单位枚举 |
| custom_unit_name | custom_unit_name | string | optional | 应对极端情况:如果 unit == UNIT_CUSTOM,可以通过此字段透传非常规单位字符串
正常情况下该字段为空,不消耗额外带宽 |
Nested Enums defined inFloatProperty
AcAlarmStrategyMessage
AC (交流单相告警策略) 配置
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| live_over_voltage | live_over_voltage | MultiLevelAlarmConfig | optional | 火线过压 (Live Wire Over voltage) - 1/2/3级 |
| live_under_voltage | live_under_voltage | MultiLevelAlarmConfig | optional | 火线欠压 (Live Wire Under voltage) - 1/2/3级 |
| live_over_load | live_over_load | MultiLevelAlarmConfig | optional | 火线过载 (Live Wire Overload) - 1/2/3级
注:通常指电流过大 (Amps) |
| leakage_current | leakage_current | MultiLevelAlarmConfig | optional | 漏电 (Leakage Current) - 1/2/3级
注:通常单位为 mA |
| live_over_temperature | live_over_temperature | MultiLevelAlarmConfig | optional | 火线过温 (Live Wire Over temperature) - 1/2/3级 |
| neutral_over_temperature | neutral_over_temperature | MultiLevelAlarmConfig | optional | 零线过温 (Neutral Wire Over temperature) - 1/2/3级 |
| total_over_load | total_over_load | SingleLevelAlarmConfig | optional | 过载 (AC Total Overload) - 仅3级
注:通常指整机功率过大 (Watts),与上面的火线过载区分开 |
| open_circuit | open_circuit | MultiLevelAlarmConfig | optional | 回路断开、负载突然掉线 |
| under_current | under_current | MultiLevelAlarmConfig | optional | 欠流 |
| mains_failure | mains_failure | EventMappingConfig | optional | 市电停电 (Mains Failure) |
| default_continuous_report | default_continuous_report | ContinuousReportStrategy | optional | --- 全局默认告警持续上报策略 ---
[作用] 提供整个交流系统的兜底上报规则。
[逻辑] 设备在判断某个具体告警(如直流过流1级)是否需要持续上报时:
优先读取其 ThresholdLevel 中的 continuous_report;
如果未下发/未配置,则回退使用此处的 default_continuous_report。
[优势] 绝大多数同类别的告警心跳时间是一致的,配置在根节点可以大幅度压缩云端下发的 Protobuf 报文体积。 |
Nested Enums defined inAcAlarmStrategy
AcDcUniversalAlarmStrategyMessage
交直流通用告警策略 (AC/DC Universal Alarm Strategy)
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| dc_strategy | dc_strategy | DcAlarmStrategy | optional | DC 侧告警策略配置
若当前设备未启用DC或不支持DC,则下发时该字段置空即可 |
| ac_strategy | ac_strategy | AcAlarmStrategy | optional | AC 单相侧告警策略配置 |
| ac_three_phase_strategy | ac_three_phase_strategy | ThreePhaseAlarmStrategy | optional | AC 三相侧告警策略配置 (如果该通用设备兼容三相) |
| converter_fault | converter_fault | MultiLevelAlarmConfig | optional | --- 交直流通用特有告警 ---
交直流转换模块/逆变器故障告警 (Inverter/Rectifier Fault) |
| insulation_resistance | insulation_resistance | MultiLevelAlarmConfig | optional | 绝缘阻抗告警 (Insulation Resistance) - 储能/交直流系统中常见 |
| current_work_mode | current_work_mode | AcDcUniversalAlarmStrategy.WorkMode | optional | 设备当前工作模式指示 (辅助业务逻辑判断告警该取哪一部分)
[作用] 动态指示设备当前的实际运行工况(掩码字典)
[排障] 若云端接收到大量无效的单侧“幽灵告警”(如DC未接却报DC欠压),需优先排查此指示字段是否正确随物理工况进行了动态切换。 |
| default_continuous_report | default_continuous_report | ContinuousReportStrategy | optional | --- 全局默认告警持续上报策略 ---
[作用] 提供整个交直流系统的兜底上报规则。
[逻辑] 设备在判断某个具体告警(如直流过流1级)是否需要持续上报时:
优先读取其 ThresholdLevel 中的 continuous_report;
如果未下发/未配置,则回退使用此处的 default_continuous_report。
[优势] 绝大多数同类别的告警心跳时间是一致的,配置在根节点可以大幅度压缩云端下发的 Protobuf 报文体积。 |
Nested Enums defined inAcDcUniversalAlarmStrategy
DcAlarmStrategyMessage
电气阈值总配置 (DC告警策略)
Nested Enums defined inDcAlarmStrategy
DeviceElectricalAlarmProfileMessage
设备电气告警策略配置
Nested Enums defined inDeviceElectricalAlarmProfile
ElectricalAlarmProfileMessage
模块或通道告警策略总入口
Nested Enums defined inElectricalAlarmProfile
ThreePhaseAlarmStrategyMessage
--- 三相告警策略 ---
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| phase_over_voltage | phase_over_voltage | MultiLevelAlarmConfig | optional | --- 电压类 (A/B/C相电压) ---
三相电压过压报警 (任一相电压高于阈值触发) |
| phase_under_voltage | phase_under_voltage | MultiLevelAlarmConfig | optional | 三相电压欠压报警 (任一相电压低于阈值触发) |
| phase_loss | phase_loss | SingleLevelAlarmConfig | optional | 三相缺相报警 (检测到某相电压丢失) - 仅3级 |
| voltage_unbalance | voltage_unbalance | SingleLevelAlarmConfig | optional | 三相电压不平衡报警 (三相电压差值或不平衡度过大) - 仅3级 |
| phase_over_current | phase_over_current | MultiLevelAlarmConfig | optional | --- 电流类 ( A/B/C相电流) ---
三相电流过流报警 (任一相电流高于阈值触发) |
| leakage_current | leakage_current | MultiLevelAlarmConfig | optional | --- 漏电类 (漏电流) ---
三相漏电流过大报警 (检测到漏电流超过阈值) |
| phase_over_temperature | phase_over_temperature | MultiLevelAlarmConfig | optional | --- 温度类 (A/B/C相温度、N线温度) ---
三相相线过温报警 (A/B/C任一相端子/线缆温度过高) |
| neutral_over_temperature | neutral_over_temperature | MultiLevelAlarmConfig | optional | 零线过温报警 (N线端子/线缆温度过高) |
| phase_active_power_overload | phase_active_power_overload | MultiLevelAlarmConfig | optional | --- 功率类 (A/B/C相有功/视在功率、总功率) ---
单相功率过载报警 (任一相有功功率过大) |
| total_active_power_overload | total_active_power_overload | MultiLevelAlarmConfig | optional | 总功率过载报警 (三相总有功功率过大) |
| open_circuit | open_circuit | MultiLevelAlarmConfig | optional | 回路断开、负载突然掉线 |
| under_current | under_current | MultiLevelAlarmConfig | optional | 欠流 |
| default_continuous_report | default_continuous_report | ContinuousReportStrategy | optional | --- 全局默认告警持续上报策略 ---
[作用] 提供整个交直流系统的兜底上报规则。
[逻辑] 设备在判断某个具体告警(如直流过流1级)是否需要持续上报时:
优先读取其 ThresholdLevel 中的 continuous_report;
如果未下发/未配置,则回退使用此处的 default_continuous_report。
[优势] 绝大多数同类别的告警心跳时间是一致的,配置在根节点可以大幅度压缩云端下发的 Protobuf 报文体积。 |
Nested Enums defined inThreePhaseAlarmStrategy
WorkModeEnum
--- 运行状态与模式指示 ---
[作用] 定义设备在全集能力下的当前实际生效工作模式
| Name | Value | Description |
|---|
| WORK_MODE_UNKNOWN | 0 | [作用] 未知或初始化未完成状态 |
| WORK_MODE_DC_ONLY | 1 | [作用] 仅直流侧工作
[场景] 设备作为纯 DC-DC 转换器使用,或交流侧掉电后仅维持直流运行。 |
| WORK_MODE_AC_SINGLE_PHASE | 2 | [作用] 仅交流单相侧工作 |
| WORK_MODE_AC_THREE_PHASE | 3 | [作用] 仅交流三相侧工作
[场景] 设备未接电池,作为纯 SVG 调节电网质量;或直流侧电池深度休眠/故障跳闸时动态回落到此模式。 |
| WORK_MODE_HYBRID | 4 | [作用] 交直流混合工作
[场景] 标准光储一体机/PCS 的正常充放电工况,需同时校验交直流两侧的告警策略。 |
PeripheralAlarmStrategyMessage
外设告警总配置 (Peripheral Alarm Strategy)
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| door_sensor_open | door_sensor_open | EventMappingConfig | optional | 开关量/事件类告警 (Digital / Event Based)
门磁告警 (Door Sensor)
逻辑: 门被打开(状态改变)时触发,可配合 delay_ms 实现“门长时间未关告警” |
| door_lock_exception | door_lock_exception | EventMappingConfig | optional | 门锁告警 (Door Lock)
逻辑: 门锁被暴力破坏、非正常开启或门锁硬件故障 |
| surge_protector_fault | surge_protector_fault | EventMappingConfig | optional | 防雷器告警 (Surge Protector / SPD)
逻辑: 防雷器模块失效(通常为干接点输出,正常为闭合,故障为断开) |
| vibration_event | vibration_event | EventMappingConfig | optional | 震动告警 (Vibration)
逻辑: 设备被撞击或非法移动触发震动传感器 (如果传感器输出的是简单的开关量信号) |
| env_over_temperature | env_over_temperature | MultiLevelAlarmConfig | optional | 如果你的震动传感器输出的是模拟量(震动强度绝对值),则应改用:
optional SingleLevelAlarmConfig vibration_intensity = 5;
模拟量阈值类告警 (Analog / Threshold Based)
环境过温告警 (Environment Over Temperature)
逻辑: 机柜/机房环境温度过高,复用多级告警结构 |
| env_under_temperature | env_under_temperature | MultiLevelAlarmConfig | optional | 环境欠温告警 (Environment Under Temperature)
逻辑: 机柜/机房环境温度过低 (极端寒冷地区需要开启加热) |
| env_over_humidity | env_over_humidity | MultiLevelAlarmConfig | optional | 环境过湿告警 (Environment Over Humidity)
逻辑: 湿度过高,可能导致凝露、短路 |
| env_under_humidity | env_under_humidity | MultiLevelAlarmConfig | optional | 环境欠湿告警 (Environment Under Humidity)
逻辑: 湿度过低,易产生静电隐患 |
Nested Enums defined inPeripheralAlarmStrategy
ContinuousReportStrategyMessage
告警持续上报策略 (Continuous Report Strategy)
[业务背景]
专为 IIoT 场景(如室外智能机柜、交直流电源箱)设计,保障关联负载(摄像头、光猫、抓拍机)的运维可靠性。
解决弱网丢包导致的“状态黑洞”问题,确保设备在发生断电、被盗、严重漏电等极端工况下能够向云端“持续呼救”。
[场景配置指南]
1. 市电停电/防拆开门 (致命/安防) -> 强需持续上报:配置 interval_sec (如60s),不配置 max_repeat_count (无限呼救)。
2. 负载欠流/死机假死 (需确认) -> 需确认不上报:配置 interval_sec (如300s),配置 max_repeat_count=3 (报完即止,省流量)。
3. 轻微过流/电压波动 (边缘事件) -> 仅记录不持续:不配置 interval_sec (退化为边缘触发,仅触发和恢复各报1次)。
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| enabled | enabled | bool | optional | [作用] 持续上报总开关
true: 开启持续上报 (告警未恢复期间,周期性重传告警)
false: 关闭持续上报 (仅在“触发”和“恢复”的瞬间各上报一次事件,即边缘触发) |
| interval_sec | interval_sec | uint32 | optional | [作用] 持续上报的时间间隔 (单位:秒)
[说明] 仅在 enabled = true 时生效。
[场景] 安防开门告警设为 10 秒(高频),市电停电转电池设为 60-300 秒(心跳)。 |
| limit_repeat_count | limit_repeat_count | bool | optional | 重传次数限制
[作用] 是否限制最大重传次数 (独立开关)
true: 限制重传次数 (需读取 max_repeat_count)
false: 不限制重传次数 (只要没恢复就无限期周期性上报,适用于严重故障) |
| max_repeat_count | max_repeat_count | uint32 | optional | [作用] 最大重复上报次数
[说明] 仅在 limit_repeat_count = true 时生效。
[场景] 用于节省流量。例如轻微告警重传 3 次后云端已记录即可,无需无限耗费流量。 |
| enable_escalation | enable_escalation | bool | optional | 告警自动升级
[作用] 是否开启告警未处理自动升级 (独立开关)
true: 开启 (需读取 escalate_after_sec)
false: 关闭 |
| escalate_after_sec | escalate_after_sec | uint32 | optional | [作用] 告警未处理自动升级时间阈值 (单位:秒)
[说明] 仅在 enable_escalation = true 时生效。
[逻辑] 告警触发后如果持续该时间仍未恢复,设备端自动生成更高级别的告警上报。
[场景] 漏电流1级预警持续 10 分钟无人处理,自动升级为3级严重告警,触发前端断路器强制断电。 |
Nested Enums defined inContinuousReportStrategy
EventMappingConfigMessage
事件映射配置,单一告警自由配置等级 (用于:市电停电、开关门)
Nested Enums defined inEventMappingConfig
MultiLevelAlarmConfigMessage
定义包含多级报警的配置项
Nested Enums defined inMultiLevelAlarmConfig
SingleLevelAlarmConfigMessage
针对只有单级报警的配置项
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| level_3 | level_3 | ThresholdLevel | optional | 仅有3级 |
Nested Enums defined inSingleLevelAlarmConfig
ThresholdLevelMessage
定义单个等级的阈值配置
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| value | value | float | optional | 触发值 (绝对值 例如:245.0 或 倍数 如1.1) |
| hysteresis | hysteresis | float | optional | (可选) 恢复滞后值/回差值。
告警触发后,必须满足 [当前值 < 阈值 - hysteresis] 才会判定为恢复。
用于防止在阈值点附近的数值波动导致告警频繁抖动。 |
| delay_ms | delay_ms | uint32 | optional | (可选) 持续时间/防抖时间,单位毫秒 |
| threshold_type | threshold_type | com.nexus.service.proto.enums.AlarmThresholdType | optional | --- 判定逻辑 ---
阈值判定类型:区分是绝对值、倍数还是百分比 |
| enabled | enabled | bool | optional | 是否启用报警 |
| continuous_report | continuous_report | ContinuousReportStrategy | optional | --- 针对当前告警等级的特有持续上报策略 ---
[作用] 允许为不同等级配置不同上报频率。
[例如] 3级告警(level_3)可配置 interval_sec=10 (10秒一次);
1级告警(level_1)可配置 interval_sec=300 (5分钟一次)。
[注意] 若此字段为空,则设备应继承上一级的全局默认配置。 |
Nested Enums defined inThresholdLevel
ChannelCalibrationMessage
--- 通道校准与转换系数 (单相/多路支持) ---
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| gain_correction | gain_correction | float | optional | 校准补偿 (RAW/Offset)
GPQA/APGain: 增益校正 (有功) |
| phase_correction | phase_correction | float | optional | PhsA/APhase: 相位校正 |
| active_power_offset | active_power_offset | float | optional | APOSA/APOffset: 有功功率 Offset 校正 |
| rms_offset | rms_offset | float | optional | IARMSOS/AIOffset: 有效值(电流) Offset 校正 |
| reactive_power_gain | reactive_power_gain | float | optional | 无功/视在功率校准 (如果设备支持)
RQGain: 无功增益校正 |
| reactive_power_offset | reactive_power_offset | float | optional | RQOffset: 无功 Offset 校正 |
| voltage_factor | voltage_factor | float | optional | 物理量转换系数 (硬件RAW值 -> 真实物理量)
KUrms: 电压系数 (一般一相一个,或全局共享) |
| current_factor | current_factor | float | optional | KIArms: 电流系数 |
| power_factor | power_factor | float | optional | KPrms: 功率系数 |
Nested Enums defined inChannelCalibration
ControlRegistersMessage
--- 芯片底层控制寄存器 (通常为16/24/32位十六进制值) ---
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| syscon | syscon | uint32 | optional | SYSCON: 系统控制寄存器 (启用ADC、增益选择等) |
| emucon | emucon | uint32 | optional | EMUCON: 计量控制寄存器 (有功/无功计算模式等) |
| emucon2 | emucon2 | uint32 | optional | EMUCON2: 计量控制寄存器2 |
Nested Enums defined inControlRegisters
MeteringConfigMessage
计量模块的配置与校准
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| serial_number | serial_number | string | optional | 计量唯一序列号 (在机身贴纸上) |
| control_regs | control_regs | ControlRegisters | optional | 芯片底层控制寄存器 |
| thresholds | thresholds | SystemThresholds | optional | 计量系统全局配置与阈值 |
| calibration | calibration | ChannelCalibration | optional | 通道校准与转换系数 |
| calibration_checksum | calibration_checksum | uint32 | optional | 计量数据校验和,用于防止校准数据在 Flash/EEPROM 中损坏 |
Nested Enums defined inMeteringConfig
MeteringStateMessage
计量模块的实时状态与数据
这些是客观存在的状态和采样数据,不可下发修改
Nested Enums defined inMeteringState
SystemThresholdsMessage
--- 计量系统全局配置与阈值 ---
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| hf_const | hf_const | uint32 | optional | HFConst: 高频脉冲频率常数 |
| p_start | p_start | float | optional | PStart: 潜动与启动阈值 (低于此值不计电量,防潜动) |
| over_current_threshold | over_current_threshold | float | optional | 其他常见全局配置
硬件级过流保护阈值 |
| over_voltage_threshold | over_voltage_threshold | float | optional | 硬件级过压保护阈值 |
Nested Enums defined inSystemThresholds
NetworkAlarmStrategyMessage
网络相关告警配置汇总
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| connection_disconnected | connection_disconnected | EventMappingConfig | optional | 连接断开告警
逻辑:底层通信链路(如TCP/MQTT/串口)的心跳超时或物理断开 |
| network_interruption | network_interruption | EventMappingConfig | optional | 网络中断告警
逻辑:通常指广域网(WAN)或上行网口的网络完全不可用 |
| ethernet_link_down | ethernet_link_down | EventMappingConfig | optional | --- 为物理层与链路层细化监控 ---
物理网线断开 (L1 物理层)
逻辑:网卡检测到没有载波(No Carrier),即网线没插或对端交换机掉电 |
| gateway_unreachable | gateway_unreachable | EventMappingConfig | optional | 网线已插但不可达 (网关不通)
逻辑:网线物理连接正常,但无法 Ping 通默认网关(通常是由于静态IP配置错误、VLAN划分或交换机端口被禁) |
| link_speed_degradation | link_speed_degradation | MultiLevelAlarmConfig | optional | 链路降速告警
逻辑:网口协商速率低于预期(例如:千兆网口降速为100M level_3 ) |
| ip_address_conflict | ip_address_conflict | EventMappingConfig | optional | IP 地址冲突
逻辑:检测到局域网内有其他设备占用了相同的 IP |
| dns_resolution_failure | dns_resolution_failure | EventMappingConfig | optional | DNS 解析异常
逻辑:能够 Ping 通 IP,但无法解析域名,导致业务中断 |
| latency_alarm | latency_alarm | MultiLevelAlarmConfig | optional | --- 质量监控 (数值型) ---
网络高延迟告警
逻辑:基于 Ping 值延迟。(例如:>500ms 3级, >2000ms 2级) |
| packet_loss_alarm | packet_loss_alarm | MultiLevelAlarmConfig | optional | 网络丢包率告警
逻辑:基于丢包百分比。(例如:>10% 3级, >30% 2级) |
| wireless_signal_low | wireless_signal_low | MultiLevelAlarmConfig | optional | --- 无线网络扩展 (可选) ---
4G/5G/Wi-Fi 信号强度过低
逻辑:RSSI 或 RSRP 低于阈值 |
Nested Enums defined inNetworkAlarmStrategy
CellularConfigMessage
-- 4G/5G 物理网卡参数 (APN, PIN, 漫游等)
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| iot_card | iot_card | bool | optional | 是否为物联网专网卡
true: 启用物联网卡专用逻辑。 |
| apn_name | apn_name | string | optional | 接入点名称 (APN)
普通卡一般留空自动获取;物联网专网卡(VPDN)必填,如 "cmiot", "szxyz.gd" |
| sim_pin | sim_pin | string | optional | SIM 卡 PIN 码
仅当 SIM 卡开启了 PIN 锁保护时填写 (通常为4位数字) |
| apn_user | apn_user | string | optional | (可选补充) 认证方式,有些专网 APN 还需要账号密码 |
| apn_password | apn_password | string | optional | (可选补充) 认证方式,有些专网 APN 还需要账号密码 |
| roaming_enabled | roaming_enabled | bool | optional | 是否允许数据漫游
许多物联网卡(特别是全球卡或虚商卡)在本地使用时也被识别为漫游。
如果是物联网卡,建议此项默认为 true。 |
Nested Enums defined inCellularConfig
CellularProfileMessage
== 终端物理层配置部分 ==
-- 4G/5G 配置 --
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| physical_config | physical_config | CellularConfig | optional | 4G/5G 物理网卡参数 (APN, PIN, 漫游等) |
| server_section | server_section | ServerSection | optional | 服务器配置
无论选择哪种链路,服务器配置通常是通用的 |
Nested Enums defined inCellularProfile
EmergencyLogConfigMessage
== 应急/兜底日志配置 ==
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| enabled | enabled | bool | optional | 是否启用该功能 |
| server | server | ServerConnection | optional | 兜底服务器地址
通常是一个高可用的日志接收服务 |
Nested Enums defined inEmergencyLogConfig
EthernetConfigMessage
-- 有线网/以太网配置 --
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| interface_name | interface_name | string | optional | "以太网" (可能有 eth0, eth1 多网口选择) |
| ip_config | ip_config | Ipv4Config | optional | 终端IP地址, 终端子网掩码, 终端默认网关 |
| server_section | server_section | ServerSection | optional | 服务器配置
无论选择哪种链路,服务器配置通常是通用的 |
Nested Enums defined inEthernetConfig
FailoverStrategyConfigMessage
通用故障转移与回切策略
既适用于“物理链路切换” (Eth -> 4G),也适用于“逻辑服务器切换” (主IP -> 备IP)
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| max_fail_attempts | max_fail_attempts | int32 | optional | 连续失败多少次判定为故障 (例如:连续3次心跳超时、连续3次Ping失败) |
| auto_revert_enabled | auto_revert_enabled | bool | optional | 当高优先级节点(如:有线网卡 / 主服务器)恢复正常时,是否自动切回?
true: 恢复后自动切回 (Active-Standby 模式)
false: 保持在备用节点,直到备用节点也挂掉或人工干预 (防止频繁震荡) |
| revert_stable_seconds | revert_stable_seconds | int32 | optional | 网络防抖动稳定时间 (秒)
仅当 auto_revert_enabled = true 时有效。
高优先节点恢复后,必须持续稳定 N 秒,才真正执行回切动作。
防止接触不良导致的“反复横跳”。 |
Nested Enums defined inFailoverStrategyConfig
MultiModeConfigMessage
-- 多模/故障转移配置 --
Nested Enums defined inMultiModeConfig
NorthboundConfigMessage
== 北向网络配置 ==
Nested Enums defined inNorthboundConfig
PriorityLinkMessage
链路优先级列表
Nested Enums defined inPriorityLink
ServerSectionMessage
== 服务器设置部分 (ServerSection) ==
Nested Enums defined inServerSection
TerminalNetworkConfigMessage
== 终端网络配置 ==
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| northbound | northbound | NorthboundConfig | optional | 北向网络设置 (设备连接云端/平台) |
| southbound | southbound | SouthboundConfig | optional | 南向网络设置 (设备连接本地传感器/局域网) |
Nested Enums defined inTerminalNetworkConfig
WifiConfigMessage
-- WIFI 配置 (对应 UI 图2) --
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| ssid | ssid | string | | 网络名称 (SSID) |
| password | password | string | | 密码 |
| security_type | security_type | string | | 加密方式 (WPA2, WPA3, OPEN 等,后端自动检测或指定) |
| ip_config | ip_config | Ipv4Config | optional | IP获取方式 (WIFI 也可以配静态 IP) |
| server_section | server_section | ServerSection | optional | 服务器配置
无论选择哪种链路,服务器配置通常是通用的 |
Nested Enums defined inWifiConfig
UplinkStrategyModeEnum
上行网络全局工作策略 (逻辑层)
| Name | Value | Description |
|---|
| UPLINK_STRATEGY_UNSPECIFIED | 0 | 未指定 |
| UPLINK_STRATEGY_SINGLE_LINK | 1 | 单一链路模式 (设备只使用固定的一种物理链路进行通信) |
| UPLINK_STRATEGY_FAILOVER | 2 | 多链路主备模式 (Active-Standby 故障转移,UI上的"多模网络"通常指此模式) |
| UPLINK_STRATEGY_LOAD_BALANCE | 3 | 多链路负载均衡模式 (Active-Active 流量分担,预留给未来的高级功能) |
| UPLINK_STRATEGY_DUPLEX | 4 | 多链路双工模式 (Active-Active 冗余发送,同一份数据在多条链路同时传输,追求极高可靠性和低延迟) |
Ipv4ConfigMessage
== 通用组件 ==
IPv4 网络参数
Nested Enums defined inIpv4Config
Ipv6ConfigMessage
网关 LAN 口自身的 IPv6 配置
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| assign_mode | assign_mode | Ipv6AssignMode | optional | IPv6 地址分配模式 |
| static_config | static_config | Ipv6StaticConfig | optional | [场景1] 当 assign_mode 为 IPV6_ASSIGN_STATIC 时使用 |
| track_config | track_config | Ipv6TrackConfig | optional | [场景2] 当 assign_mode 为 IPV6_ASSIGN_TRACK 时使用
核心逻辑:LAN 口的 IPv6 跟着 WAN 口获取到的前缀动态变化 |
| ra_config | ra_config | Ipv6RaConfig | optional | [附带属性] LAN 口的 IPv6 路由通告 (Router Advertisement) 配置
在 IPv6 中,即使不提供 DHCPv6 服务,网关也必须发送 RA 报文,局域网设备才能知道网关的存在。
虽然它具有 "Service" 的性质,但它与接口的 IPv6 强绑定,建议放在此处。 |
Nested Enums defined inIpv6Config
Ipv6RaConfigMessage
IPv6 路由通告配置 (Router Advertisement) - 服务端视角必须具备的能力
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| enabled | enabled | bool | optional | 是否允许在此 LAN 口发送 RA 报文 |
| managed_flag | managed_flag | bool | optional | 管理地址配置标志 (M 标志/Managed flag)
true: 局域网设备必须通过 DHCPv6 获取 IPv6 地址 (有状态)
false: 局域网设备通过 SLAAC 自动生成地址 (无状态,最常见) |
| other_config_flag | other_config_flag | bool | optional | 其他配置标志 (O 标志/Other config flag)
true: 局域网设备通过 DHCPv6 获取 DNS 等其他信息 |
| max_interval | max_interval | int32 | optional | RA 报文发送间隔 (秒) |
Nested Enums defined inIpv6RaConfig
Ipv6StaticConfigMessage
静态 IPv6 配置
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| address | address | string | optional | 网关的静态 IPv6 地址,例如 "fd00:114:514::1" |
| prefix_length | prefix_length | int32 | optional | 子网前缀长度,通常为 64 |
Nested Enums defined inIpv6StaticConfig
Ipv6TrackConfigMessage
追踪 WAN 口的 IPv6 前缀配置 (PD Tracking)
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| track_interface | track_interface | string | optional | 被追踪的 WAN 接口名称,例如 "wan0" 或 "pppoe-wan" |
| interface_id_suffix | interface_id_suffix | string | optional | 接口 ID 后缀 (Interface ID)。
如果 WAN 口获取到了 2001:db8:abcd:0012::/64 的前缀,
suffix 设置为 "::1",则当前 LAN 口地址自动配置为 2001:db8:abcd:0012::1 |
| subnet_id | subnet_id | int32 | optional | 子网划分 ID (Subnet ID)。如果网关获取到了 /56 的前缀,分配给当前 LAN 口的是哪个 /64 子网。 |
Nested Enums defined inIpv6TrackConfig
Ipv6AssignModeEnum
IPv6 地址分配模式
| Name | Value | Description |
|---|
| IPV6_ASSIGN_UNSPECIFIED | 0 | |
| IPV6_ASSIGN_DISABLED | 1 | 禁用 IPv6 |
| IPV6_ASSIGN_STATIC | 2 | 静态配置 (常用于 ULA 唯一本地地址,如 fd00::1) |
| IPV6_ASSIGN_TRACK | 3 | 追踪 WAN 口前缀 (最常见的家用/企业网关模式: Prefix Delegation) |
| IPV6_ASSIGN_AUTO | 4 | SLAAC/DHCPv6 获取 (通常 LAN 口不作为客户端,但在旁路由/级联场景可能会用到) |
TlsConfigMessage
TLS/SSL 加密传输配置
定义设备与云端通信的安全等级。
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| enabled | enabled | bool | optional | 是否启用 TLS 加密 |
| auth_mode | auth_mode | com.nexus.service.proto.enums.AuthMode | optional | 认证模式 |
| root_ca_alias | root_ca_alias | string | optional | 根证书 (CA) 别名/路径
用于校验服务端的合法性 |
| client_cert_alias | client_cert_alias | string | optional | 设备公钥证书别名/路径 (仅双向认证需要) |
| client_key_alias | client_key_alias | string | optional | 设备私钥别名/路径 (仅双向认证需要)
注意:私钥通常存储在安全芯片(SE)或加密文件系统中,此处仅传递索引ID |
Nested Enums defined inTlsConfig
ServerConnectionMessage
服务器连接配置信息
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| host | host | string | optional | 服务器地址 (IP 或 域名) |
| port | port | int32 | optional | 端口号 |
| account | account | string | optional | 账号 (MQTT ClientID 或 认证账号) |
| password | password | string | optional | 密码 |
| tls_config | tls_config | TlsConfig | optional | TLS/SSL |
Nested Enums defined inServerConnection
ActiveMonitorConfigMessage
主动监控与目标配置 (主动/客户端视角)
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| enabled | enabled | bool | optional | 全局总开关:使用 optional 确保向后兼容 |
| ping_enabled | ping_enabled | bool | optional | Ping 探测任务开关 |
| ping_tasks | ping_tasks | PingTask | repeated | Ping 探测任务列表
[场景] 最基础的存活心跳检测,监控下游设备网络层是否在线。 |
| ssh_enabled | ssh_enabled | bool | optional | SSH 探测任务开关 |
| ssh_targets | ssh_targets | SshTarget | repeated | SSH 目标设备列表
[场景] 网关作为跳板机,或者网关通过脚本自动登录局域网内的 Linux 边缘计算节点拉取日志。 |
| tcp_enabled | tcp_enabled | bool | optional | 通用 TCP 端口探测任务开关 |
| tcp_tasks | tcp_tasks | TcpTask | repeated | 通用 TCP 端口探测任务
[场景] 监控下游业务端口是否存活(例如某台工控机的 502 端口是否在监听)。 |
| http_enabled | http_enabled | bool | optional | HTTP 探测任务开关 |
| http_tasks | http_tasks | HttpTask | repeated | 通用 HTTP/API 探测任务
[场景] 定时调用局域网内本地业务系统的健康检查(Health Check)接口,或拉取特定数据。 |
| camera_enabled | camera_enabled | bool | optional | 视频安防设备探测任务开关 |
| camera_tasks | camera_tasks | CameraTask | repeated | 安防监控设备(海康/大华)专属任务
[场景] 针对 IPCAM(摄像头) 或 NVR(录像机),不仅判断网络通不通,还需判断视频流是否正常或抓取一张快照上传。 |
Nested Enums defined inActiveMonitorConfig
CameraTaskMessage
== 视频安防设备(海康/大华)任务 ==
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| enabled | enabled | bool | optional | |
| id | id | string | optional | [核心] 任务唯一标识 (长度为 10 的字符串)
任务数组下发时的操作依据:
- 新增 (Create):不传此字段或传空字符串,系统将视为新任务并自动分配 ID。
- 修改 (Update):传入已存在的 ID,系统将匹配并覆盖更新该任务的配置。 |
| vendor | vendor | CameraTask.Vendor | optional | |
| username | username | string | optional | 登录的账号 (通常是 admin) |
| password | password | string | optional | 登录的密码 |
| task_type | task_type | CameraTask.TaskType | optional | |
| interval_sec | interval_sec | int32 | optional | 探测/抓图间隔时间(秒) |
| endpoint | endpoint | TargetEndpoint | optional | 统一标准寻址方式 |
Nested Enums defined inCameraTask
HttpTaskMessage
== 通用 HTTP 探测任务 ==
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| enabled | enabled | bool | optional | |
| id | id | string | optional | [核心] 任务唯一标识 (长度为 10 的字符串)
任务数组下发时的操作依据:
- 新增 (Create):不传此字段或传空字符串,系统将视为新任务并自动分配 ID。
- 修改 (Update):传入已存在的 ID,系统将匹配并覆盖更新该任务的配置。 |
| method | method | string | optional | 请求方法: "GET", "POST" 等 (默认 GET) |
| expected_status | expected_status | int32 | optional | 期望返回的 HTTP 状态码,例如 200。非 200 则判定告警 |
| timeout_ms | timeout_ms | int32 | optional | 请求超时时间(毫秒) |
| interval_sec | interval_sec | int32 | optional | 探测间隔(秒) |
| endpoint | endpoint | TargetEndpoint | optional | 统一标准寻址方式
完整的请求路径,例如 "http://192.168.1.10/api/health" |
Nested Enums defined inHttpTask
LanPortConfigMessage
网关自身接口配置 (被动/服务端视角)
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| enabled | enabled | bool | optional | 是否启用该网口 |
| interface_name | interface_name | string | optional | 例如: "eth1", "lan0" |
| ipv4_config | ipv4_config | Ipv4Config | optional | 网关在这个网口的IP (需另行定义 Ipv4Config) |
| services | services | LocalServices | optional | 网关在这个网口上提供的本地服务 (防火墙/监听策略)
[场景] 为了安全,限制局域网内的未知设备访问网关自身的后台。 |
| ipv6_config | ipv6_config | Ipv6Config | optional | |
Nested Enums defined inLanPortConfig
LocalServicesMessage
本地服务安全策略
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| allow_icmp_echo | allow_icmp_echo | bool | optional | 是否允许下游设备 Ping 本网关 (ICMP Echo Reply)
[场景] 开启后,现场工程师可以用电脑 Ping 网关内网 IP 测试网络连通性。 |
| allow_http_server | allow_http_server | bool | optional | 是否允许通过本网口访问本地 Web 配置界面
[场景] 是否允许现场人员通过浏览器访问 http://网关IP 进行调试。 |
| allow_ssh_server | allow_ssh_server | bool | optional | 是否允许下游通过本网口 SSH 登录到本网关 |
| ssh_allowed_ips | ssh_allowed_ips | string | repeated | (进阶) 如果开启SSH服务端,可以选填允许登录的IP白名单
[场景] 仅允许运维人员专用的管理机 IP (如 192.168.1.100) SSH登录网关。 |
Nested Enums defined inLocalServices
PingTaskMessage
== Ping 探测任务定义 ==
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| enabled | enabled | bool | optional | |
targetdeprecated | target | string | optional | --- 该字段为兼容旧版本的废弃字段,新业务请勿使用 ---
场景 A:手动指定目标 (脱离业务拓扑的纯网络探测,如测试外网 8.8.8.8)
[核心] 探测目标:支持 IPv4, IPv6 地址或域名 (FQDN)
[已废弃] | | id | id | string | optional | [核心] 任务唯一标识 (长度为 10 的字符串)
任务数组下发时的操作依据:
- 新增 (Create):不传此字段或传空字符串,系统将视为新任务并自动分配 ID。
- 修改 (Update):传入已存在的 ID,系统将匹配并覆盖更新该任务的配置。 |
| delete_flag | delete_flag | int32 | optional | 是否删除标识: 0-没有删除、1-删除 |
| interval_sec | interval_sec | int32 | optional | 探测间隔 (秒),例如 60秒 |
| timeout_ms | timeout_ms | int32 | optional | 超时时间 (毫秒),例如 2000毫秒 |
| retry_count | retry_count | int32 | optional | 失败重试次数,超过则判定设备离线 |
| endpoint | endpoint | TargetEndpoint | optional | 统一标准寻址方式 |
Nested Enums defined inPingTask
SouthboundConfigMessage
== 南向网络及设备配置 ==
[场景说明] 用于配置边缘网关如何连接和管理本地局域网(南向)内的设备。
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| lan_configs | lan_configs | LanPortConfig | repeated | 局域网/物理接口配置列表 (网关自身的网络设置)
支持多网口(eth1, eth2...)独立配置
[场景] 网关 eth1(192.168.1.x) 连接安防网络,eth2(192.168.2.x) 连接工控网络
(预留) 其他南向协议配置,如 RS485, LoRa 等
optional ModbusConfig modbus = 2; |
| monitor_config | monitor_config | ActiveMonitorConfig | optional | 主动网络探测/监控任务 (网关主动发起)
[场景] 网关需要定时检查局域网内的设备是否掉线,或抓取设备状态。 |
Nested Enums defined inSouthboundConfig
SshTargetMessage
== SSH 目标设备定义 ==
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| enabled | enabled | bool | optional | |
| id | id | string | optional | [核心] 任务唯一标识 (长度为 10 的字符串)
任务数组下发时的操作依据:
- 新增 (Create):不传此字段或传空字符串,系统将视为新任务并自动分配 ID。
- 修改 (Update):传入已存在的 ID,系统将匹配并覆盖更新该任务的配置。 |
| username | username | string | optional | 认证帐号 |
| password | password | string | optional | 认证密码 (建议密文) |
| private_key | private_key | string | optional | 证书/私钥内容 (可选,优先使用) |
| endpoint | endpoint | TargetEndpoint | optional | 统一标准寻址方式 |
Nested Enums defined inSshTarget
TargetEndpointMessage
统一的目标定位器 (TargetEndpoint)
解决所有任务都需要 "手动IP" vs "拓扑引用" 的问题
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| target | target | string | optional | 场景 A:手动指定目标 (脱离业务拓扑的纯网络探测,如测试外网 8.8.8.8)
[核心] 探测目标:支持 IPv4, IPv6 地址或域名 |
| target_port | target_port | int32 | optional | 目标端口 |
| topology_ref | topology_ref | TopologyReference | optional | 场景 B: 关联业务拓扑,网关底层自动反查 IP |
| target_type | target_type | TargetEndpoint.TargetType | optional | 显式指定目标类型
下游程序直接读取此字段做 switch-case 路由,无需进行判空猜测 |
Nested Enums defined inTargetEndpoint
TcpTaskMessage
== 通用 TCP 端口探测任务 ==
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| enabled | enabled | bool | optional | |
| id | id | string | optional | [核心] 任务唯一标识 (长度为 10 的字符串)
任务数组下发时的操作依据:
- 新增 (Create):不传此字段或传空字符串,系统将视为新任务并自动分配 ID。
- 修改 (Update):传入已存在的 ID,系统将匹配并覆盖更新该任务的配置。 |
| timeout_ms | timeout_ms | int32 | optional | 建连超时时间(毫秒) |
| interval_sec | interval_sec | int32 | optional | 探测间隔(秒) |
| endpoint | endpoint | TargetEndpoint | optional | 统一标准寻址方式 |
Nested Enums defined inTcpTask
TopologyReferenceMessage
拓扑资源定位器 (Topology Reference)
用于在南向网络任务中,指向具体的业务逻辑节点(模块/通道)
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| module_serial_number | module_serial_number | string | optional | 指向具体的模块编号/ID (例如: "mod_plc_01", "mod_camera_group") |
| channel_index | channel_index | int32 | optional | 指向该模块下的具体通道编号/ID (例如: "ch_01", "ch_02") |
| binding_info | binding_info | com.nexus.service.proto.channel.BindingInfo | optional | 资产简要绑定信息(为了业务查看方便,只做查询给展示使用,不能直接设置该字段内容) |
Nested Enums defined inTopologyReference
TaskTypeEnum
具体的安防探测任务类型
| Name | Value | Description |
|---|
| TASK_UNKNOWN | 0 | |
| TASK_ONLINE_CHECK | 1 | 仅检查 API 接口是否存活 (防假死:Ping得通但Web服务挂了) |
| TASK_SNAPSHOT | 2 | 定时抓图任务 (通过 ISAPI/CGI 抓取 JPG 图片上云) |
| TASK_STREAM_CHECK | 3 | 视频流诊断 (尝试建立 RTSP 链接并立即断开,确认视频源正常) |
VendorEnum
设备厂商枚举,决定网关使用哪种私有协议或通用协议
| Name | Value | Description |
|---|
| VENDOR_UNKNOWN | 0 | |
| VENDOR_HIK_VISION | 1 | 海康威视 (通常使用 ISAPI 协议) |
| VENDOR_DA_HUA | 2 | 大华 (通常使用 CGI 协议) |
| VENDOR_ONVIF | 3 | 通用 ONVIF 协议 |
TargetTypeEnum
== 目标来源类型枚举 ==
用于显式指定探测任务的目标是如何获取的
| Name | Value | Description |
|---|
| TARGET_TYPE_UNSPECIFIED | 0 | 默认占位符,防止未初始化 |
| TARGET_TYPE_MANUAL | 1 | 场景 A:手动指定 (读取 target_address 字段) |
| TARGET_TYPE_TOPOLOGY | 2 | 场景 B:关联业务拓扑 (读取 topology_ref 字段) |
ElectricalRatedConfigMessage
电气额定值配置
Nested Enums defined inElectricalRatedConfig
BusinessStrategyProfileMessage
纯业务逻辑层
Nested Enums defined inBusinessStrategyProfile
CommonReportPolicyMessage
通用的上报策略配置
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| enable | enable | bool | optional | --- 核心开关 ---
总开关:false 则完全不采集也不上报该类型数据 |
| report_on_connect | report_on_connect | bool | optional | --- 触发时机 ---
是否在设备通过网络握手成功(MQTT/TCP Connect)后立即触发一次上报 |
| enable_periodic_report | enable_periodic_report | bool | optional | --- 周期性上报 ---
周期性上报总开关 |
| report_interval | report_interval | int32 | optional | 周期性上报间隔 (秒)
仅在 enable_periodic_report = true 时生效
在业务层做限制:若开启但未填此值,可给予一个默认值(如 60s) |
| report_on_change | report_on_change | bool | optional | 变化驱动上报开关 (COV)
当属性值发生变化时,是否立即触发上报(打破 report_interval 的限制) |
| change_threshold | change_threshold | double | optional | 变化阈值 (绝对值或百分比)
结合 report_on_change 使用。例如设为 0.5,则数值波动超过 0.5 时才上报,过滤微小抖动。 |
| max_silent_interval | max_silent_interval | int32 | optional | 保底上报间隔 / 最大静默时间 (秒)
如果采用“变化驱动上报”,且数值长时间未变化,超过此时间后强制上报一次,用于证明设备存活且传感器正常。 |
| cache_offline | cache_offline | bool | optional | --- 弱网与可靠性处理 (Reliability) ---
断网是否缓存 (Store and Forward)
网络断开期间,产生的数据是否保存在本地持久化存储中,待网络恢复后补传 |
| cache_ttl_seconds | cache_ttl_seconds | int32 | optional | 离线缓存数据的过期时间 (秒)
防止积压无意义的历史过期数据 (0 表示不过期,直到空间满) |
| qos | qos | int32 | optional | MQTT QoS 设置 (0, 1, 2)
针对该类数据的底层传输质量要求 |
| require_ack | require_ack | bool | optional | 因为是 MQTT,这里的 QoS 变成了“是否需要应用层 ACK”
false: 类似 QoS 0 (发后即忘)
true: 类似 QoS 1 (需要 Server 侧业务逻辑返回对应的 ACK 报文) |
Nested Enums defined inCommonReportPolicy
DeviceNetworkReportStrategyMessage
核心:系统数据上报策略配置
Nested Enums defined inDeviceNetworkReportStrategy
NetworkDowngradeRuleMessage
降级规则 (只做限制/减法,不做加强/加法)
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| interval_multiplier | interval_multiplier | float | optional | --- 频率降级 ---
时间间隔放大倍数。例如 base 的 interval 是 60s,此处是 5.0,则实际变为 300s
影响 CommonReportPolicy.report_interval 和 max_silent_interval |
| threshold_multiplier | threshold_multiplier | float | optional | 变化阈值放大倍数。例如 base 是温差 0.1 度上报,此处设为 5.0,则温差 0.5 度才触发
影响 CommonReportPolicy.change_threshold |
| disable_channel_report | disable_channel_report | bool | optional | --- 流量/高耗能业务熔断 (针对具体业务类型) ---
蜂窝弱网下,强制禁止上报高频通道数据 (如波形/振动),直接丢弃,防止爆卡 |
| disable_log_upload | disable_log_upload | bool | optional | 蜂窝弱网下,强制禁止日常 Log 上传 (只允许严重 Error) |
| force_disable_ack | force_disable_ack | bool | optional | --- 可靠性降级 (省流量策略) ---
强制将所有需要应用层 ACK 的策略降级为不需要 ACK (省去 Server 返回确认包的流量) |
| force_qos_zero | force_qos_zero | bool | optional | 强制将 QoS 降为 0 (发后即忘) |
Nested Enums defined inNetworkDowngradeRule
NetworkInterfaceConfigMessage
网络接口及降级层 (Network Interface & Downgrade Layer)
描述某一个特定网卡(如4G模块、以太网口)的底层配置与降级行为
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| tcp_config | tcp_config | TcpNetworkConfig | optional | TCP/底层协议栈配置 (网络层的参数放这里,不放业务层) |
| downgrade_rule | downgrade_rule | NetworkDowngradeRule | optional | 【核心机制:降级规则】
当设备使用此网络接口时,如何对 BaseBusinessStrategy 进行动态降级计算
如果此字段为空,则表示完全遵守 base_business_strategy (例如有线网) |
Nested Enums defined inNetworkInterfaceConfig
SystemNetworkConfigMessage
系统底层网络管理配置 (System Routing & Fallback)
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| force_network_mode | force_network_mode | int32 | optional | 当前强制使用的网络类型 (0: 自动按硬件优先级, 1: 仅有线, 2: 仅蜂窝) |
| flush_non_critical_cache_on_downgrade | flush_non_critical_cache_on_downgrade | bool | optional | 【容灾控制】切换到昂贵网络 (如 有线->4G) 时,是否清空非关键的历史缓存?
true (推荐): 清空通道和日志等低优缓存,防止几十MB历史数据在4G下补传耗尽流量
false: 强行用4G补传所有历史数据 |
| flush_cache_on_network_downgrade | flush_cache_on_network_downgrade | bool | optional | 【关键设计】切换网络时的缓存处理策略
场景:设备原本在有线网,缓存了 10MB 的高频通道数据没发完,突然网线断了切换到 4G。
这 10MB 数据如果直接通过 4G 发送,会消耗大量流量。
false: 切换到昂贵网络时,清空非关键缓存 (推荐)
true: 无论网络如何切换,缓存数据必须补传 |
| link_failover_strategy | link_failover_strategy | FailoverStrategyConfig | optional | --- 物理网卡的故障转移与回切策略 ---
控制有线网断开切4G,以及插上网线后多久切回有线。 |
Nested Enums defined inSystemNetworkConfig
TcpNetworkConfigMessage
TCP/协议栈底层配置 (TCP Link Layer)
该消息体用于动态下发或预置设备的TCP链路层核心参数,
控制长连接的生命周期、弱网环境下的恢复策略以及网络I/O的性能调优。
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| keep_alive_interval_seconds | keep_alive_interval_seconds | int32 | optional | 心跳与防抖 (Keep-Alive & Dead Peer Detection)
核心目的:及时发现假死连接,清理服务端/客户端无效句柄,防止NAT超时。
心跳包发送间隔(单位:秒)。
建议值:根据运营商NAT超时时间设置,通常移动网络建议在 30s-180s 之间。 |
| max_missed_heartbeats | max_missed_heartbeats | int32 | optional | 最大允许丢失的心跳包次数。
当连续未收到响应的心跳次数达到此值时,判定连接断开,触发重连机制。
建议值:3。即连续三次心跳无响应则认为链路失效。 |
| reconnect_base_delay_ms | reconnect_base_delay_ms | int32 | optional | 重连的初始基础延迟时间(单位:毫秒)。
第一次重连等待时间,后续重连时间通常按指数级增长(如 base * 2^n)。 |
| reconnect_max_delay_ms | reconnect_max_delay_ms | int32 | optional | 重连的最大延迟时间(单位:毫秒)。
限制指数退避的上限,确保设备在长时间断网后依然能以合理频率尝试接入。
建议值:例如 300000 (5分钟) 或 3600000 (1小时),视业务实时性要求而定。 |
| ack_timeout_ms | ack_timeout_ms | int32 | optional | 等待对端确认 (ACK) 的超时时间(单位:毫秒)。
超过此时间未收到业务层ACK,则将放入重传队列。
建议值:需大于RTT(往返时延),弱网环境下可设为 3000ms - 5000ms。 |
| max_retry_count | max_retry_count | int32 | optional | 数据包最大重试次数。
达到最大重传次数仍未收到ACK时,丢弃该包并向上层业务报错,避免内存堆积。 |
| aggregation_window_ms | aggregation_window_ms | int32 | optional | 上报数据打包聚合窗口(单位:毫秒)。
发送机制:当有数据需要发送时,不立即调用 socket.send(),而是开启此时间窗口。
窗口期内产生的所有短小数据(如:温度、GPS位置、状态码)将被拼接成一个大TCP Payload 发送。
建议值:对实时性要求不高的场景可设为 200ms - 1000ms。值为 0 代表关闭聚合,即时发送。 |
| max_frame_size_bytes | max_frame_size_bytes | int32 | optional | 单个 TCP 数据帧的最大允许体积(单位:字节)。
用于内存有限的嵌入式设备限制接收/发送 buffer 大小,防止 OOM (Out of Memory)。
如果聚合的数据超过此大小,应立即切割发送,不等待窗口结束。 |
| compression_threshold_bytes | compression_threshold_bytes | int32 | optional | 触发有效载荷压缩的体积阈值(单位:字节)。
当需要发送的 Payload 大于此值时,才启动压缩算法。因为对过小的数据压缩可能反而导致体积膨胀。
建议值:512 或 1024。 |
| compression_algorithm | compression_algorithm | com.nexus.service.proto.enums.CompressionType | optional | 指定的压缩算法枚举(如:GZIP, ZSTD, SNAPPY, LZ4)。
推荐嵌入式端使用 LZ4 (速度快、内存占用极小) 或 ZSTD。 |
Nested Enums defined inTcpNetworkConfig
CacheRuleMessage
日志缓存规整
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| log_category | log_category | LogCategory | optional | 日志类型 |
| max_count | max_count | int32 | optional | 条数限制 |
| strategy | strategy | DropStrategy | optional | 淘汰策略 |
Nested Enums defined inCacheRule
PeripheralsConfigMessage
交互与外设 (HMI)
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| status_led_mode | status_led_mode | LedBehavior | optional | 状态灯模式 (枚举) |
| buzzer_volume | buzzer_volume | int32 | optional | 蜂鸣器音量 (0-100) |
| screen_timeout_seconds | screen_timeout_seconds | int32 | optional | 熄屏时间 (秒) |
| timezone_offset | timezone_offset | float | optional | 时区偏移 (UTC+8) |
| region_language | region_language | string | optional | 语言地区 |
Nested Enums defined inPeripheralsConfig
SecurityConfigMessage
Nested Enums defined inSecurityConfig
SystemConfigMessage
根配置对象
Nested Enums defined inSystemConfig
DataTypeEnum
数据类型
| Name | Value | Description |
|---|
| TYPE_UNKNOWN | 0 | |
| TYPE_TELEMETRY | 1 | 实时工况 |
| TYPE_EVENT | 2 | 触发事件 |
| TYPE_LOG | 3 | 日志 |
| TYPE_STATUS | 4 | 状态变化 |
DropStrategyEnum
| Name | Value | Description |
|---|
| DROP_OLDEST | 0 | 存满后删除最旧的 (FIFO) |
| DROP_NEWEST | 1 | 存满后丢弃新来的 (保持历史证据) |
| DROP_NONE | 2 | 只有在 Flash 满时才通过全局策略删除 |
LedBehaviorEnum
LED灯交互
| Name | Value | Description |
|---|
| LED_ALWAYS_ON | 0 | 常亮 |
| LED_BLINK_SLOW | 1 | 呼吸/慢闪 |
| LED_BLINK_FAST | 2 | 报警/快闪 |
| LED_OFF | 3 | 全部关闭 |
LogCategoryEnum
日志类型枚举
| Name | Value | Description |
|---|
| LOG_UNKNOWN | 0 | |
| LOG_SYSTEM | 1 | OS系统日志 (syslog/dmesg) |
| LOG_BUSINESS | 2 | 业务运行日志 |
| LOG_COMM | 3 | 通信报文日志 |
| LOG_SECURITY | 4 | 安全与审计日志 |
| LOG_CRASH | 5 | 崩溃堆栈日志 (Dump/Tombstone) |
ActionMessage
具体的控制动作
Nested Enums defined inAction
BinaryCronScheduleMessage
二进制轻量级 Cron (覆盖10%的复杂场景,如仅限每月的15号和30号执行)
位掩码(Bitmask),1代表选中。0代表忽略该维度的限制。
第 N 位对应数值 N (例如 1月使用 bit 1,即 1<<1)
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| month_mask | month_mask | uint32 | optional | bit1-12 表示 1-12月 (0x1FFE) |
| day_mask | day_mask | uint32 | optional | bit1-31 表示 1-31日 (0xFFFFFFFE) |
| dow_mask | dow_mask | uint32 | optional | bit1-7 表示 周一至周日 (0xFE) |
| hour_mask | hour_mask | uint32 | optional | bit0-23 表示 0-23小时 (0xFFFFFF) |
| minute_mask | minute_mask | uint64 | optional | bit0-59 表示 0-59分钟 (0x0FFFFFFFFFFFFFFF) |
Nested Enums defined inBinaryCronSchedule
DelayScheduleMessage
倒计时任务 (注意:断电会重置,MCU只需放入内存中的软件定时器即可)
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| delay_seconds | delay_seconds | uint32 | optional | 下发时告诉设备:距离现在还有多少秒执行 |
Nested Enums defined inDelaySchedule
TaskConfigMessage
单个任务配置
Nested Enums defined inTaskConfig
TaskSettingsMessage
统一下发/上报的定时任务集合
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| tasks | tasks | TaskConfig | repeated | 设备的定时任务列表 |
Nested Enums defined inTaskSettings
TimeOfDayScheduleMessage
每日的固定时刻循环 (MCU最爱,覆盖90%场景)
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| hour | hour | uint32 | optional | 0-23 |
| minute | minute | uint32 | optional | 0-59 |
| dow_mask | dow_mask | uint32 | | 星期掩码: bit0=周一, bit1=周二 ... bit6=周日.
全为0或 0x7F(127) 表示每天执行 |
Nested Enums defined inTimeOfDaySchedule
ClearEnergyDataParamsMessage
具体场景参数定义
场景A:擦除数据参数 (可精细控制擦除范围)
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| data_types | data_types | ClearDataType | repeated | 清除目标 (Target Scope)
要擦除的数据类型列表 |
| start_timestamp | start_timestamp | int64 | optional | 时间过滤 (Time Range Filter)
引入时间区间,比单纯的 before_timestamp 更灵活。
对于历史曲线数据,通常只删除[start_timestamp, end_timestamp] 范围内的数据。
如果均为 0,结合具体的 data_type,可能意味着"清除全部此类型历史记录"。 |
| end_timestamp | end_timestamp | int64 | optional | |
| only_clear_uploaded | only_clear_uploaded | bool | optional | 安全与状态确认 (Safety & Acknowledgement)
【重要】安全删除机制:是否仅清除“已被云端确认接收(ACKed)”的数据?
如果为 true,设备在清理 load_profile 时,会保留那些还没来得及上报的断点续传数据,防止数据永久丢失。 |
| reset_max_demand | reset_max_demand | bool | optional | 计量特有:需量复位标志 (Demand Reset)
需量复位是一个特殊的计量业务,通常将当月最大需量归零,并将当前值转存为上月历史需量。 |
| force_reset_accumulators | force_reset_accumulators | bool | optional | 计量特有:累加器/总电能清零危险操作确认
防止误操作。上位机下发清零总电能等敏感操作时,必须将此位设为 true,否则设备拒绝执行。 |
| auth_code | auth_code | string | optional | 授权码 / 密码 / 令牌 (Authorization Code)
很多计量规范要求,清空“有功总电能”或“防窃电事件”不仅需要协议层的鉴权,指令参数载荷中还必须携带特定的设备管理员密码或随机质询Token。 |
Nested Enums defined inClearEnergyDataParams
CommandParamsMessage
多态的指令参数 (Command Params)
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| clear_energy_data_params | clear_energy_data_params | ClearEnergyDataParams | optional | 对应清除计量/状态数据 |
| wipe_logs_params | wipe_logs_params | WipeLogsParams | optional | 对应擦除日志 |
| restart_comm_params | restart_comm_params | RestartCommParams | optional | 对应网络/通信重启 |
| factory_reset_params | factory_reset_params | FactoryResetParams | optional | 对应恢复出厂设置
(可在此无限扩展其他复杂指令的参数) |
Nested Enums defined inCommandParams
CommandTargetMessage
明确操作层级与寻址对象 (Target Scope)
解决“指令下发给谁”的问题(整体设备、某个模块、还是某个通道)
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| scope | scope | CommandTarget.Scope | optional | 指令作用域 |
| module_serial_number | module_serial_number | string | optional | 当 scope 为 MODULE 或 CHANNEL 时必填。对应 DeviceModule.serial_number |
| channel_index | channel_index | int32 | repeated | 通道索引列表 |
Nested Enums defined inCommandTarget
DeviceCommandRequestMessage
指令请求主体
[服务端 -> 设备] 指令下发请求
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| command_target | command_target | CommandTarget | optional | 指令作用域 |
| system_command_type | system_command_type | SystemCommandType | optional | 指令类型 |
| command_params | command_params | CommandParams | optional | 指令附加参数 |
Nested Enums defined inDeviceCommandRequest
DeviceOperationReportMessage
设备异步任务状态上报
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| task_id | task_id | string | optional | 核心:任务的唯一追踪标识!(服务端下发指令时生成的 UUID)
如果没有这个,用户连续点两次重启,平台就不知道是哪次的响应了 |
| system_command_type | system_command_type | SystemCommandType | optional | 任务类型:OTA, RESTART, LOG_UPLOAD... |
| status | status | OperationStatus | optional | 状态,例如 PENDING, IN_PROGRESS, SUCCESS, FAILED |
| message | message | string | optional | 状态详情描述或错误信息 |
Nested Enums defined inDeviceOperationReport
FactoryResetParamsMessage
场景D:恢复出厂设置参数
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| retain_network_config | retain_network_config | bool | optional | 恢复出厂时,是否保留网络配置 (防止恢复出厂后直接失联) |
| retain_binding_info | retain_binding_info | bool | optional | 恢复出厂时,是否保留配网/绑定信息 |
Nested Enums defined inFactoryResetParams
RestartCommParamsMessage
场景C:重启通信模块的参数
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| force_kill | force_kill | bool | optional | 是否进行强杀 (Force Kill) 进程再重启,还是优雅重启 |
Nested Enums defined inRestartCommParams
WipeLogsParamsMessage
场景B:擦除多种日志参数
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| clear_all | clear_all | bool | optional | 是否一键清除所有类型日志 |
| target_categories | target_categories | com.nexus.service.proto.config.LogCategory | repeated | 指定要擦除的 N 种日志类型。如果为空,则根据 clear_all 判断 |
| retain_last_n_days | retain_last_n_days | int64 | optional | 同样可以支持按时间清理
保留最近N天的日志,其他的删掉 |
Nested Enums defined inWipeLogsParams
ClearDataTypeEnum
计量/嵌入式场景下的可清除数据类型枚举
| Name | Value | Description |
|---|
| CLEAR_DATA_TYPE_UNSPECIFIED | 0 | |
| CLEAR_DATA_TYPE_ENERGY_REGISTERS | 1 | 累加寄存器数据 (Accumulated Registers)
例如:正向有功总电能、无功电能、各费率(尖峰平谷)电能。
注意:在正式计量设备中,这类数据通常被法律/标准要求不可擦除,或仅在特定工厂模式/插上硬件编程跳线时才允许清零。 |
| CLEAR_DATA_TYPE_MAX_DEMAND | 2 | 需量数据 (Max Demand)
例如:当月最大有功需量及发生时间。通常在每月结算日会复位,或者通过指令手动复位。 |
| CLEAR_DATA_TYPE_LOAD_PROFILE | 3 | 负荷曲线/周期冻结数据 (Load Profile / Interval Data)
例如:每15分钟、1小时存储一次的电压、电流、功率、电能快照数据。占用存储空间最大,最常被按时间点清理。 |
| CLEAR_DATA_TYPE_BILLING_PROFILE | 4 | 结算/日冻结数据 (Billing / Daily Freeze Data)
例如:每日零点或每月结算日的电能底码快照。 |
| CLEAR_DATA_TYPE_STATISTICS | 5 | 统计与极值数据 (Statistics & Extremes)
例如:日电压合格率、当日最大/最小电流及发生时间等统计类数据。 |
| CLEAR_DATA_TYPE_GRID_EVENTS | 6 | 业务事件与告警 (Business Events & Alarms)
例如:过压、欠压、失流、逆相序等电网事件。 |
| CLEAR_DATA_TYPE_TAMPER_EVENTS | 7 | 安全与防窃电事件 (Security & Tamper Events)
例如:开箱记录、磁场干扰记录、密码错误记录。通常安全级别极高。 |
ScopeEnum
指令作用域
| Name | Value | Description |
|---|
| SCOPE_UNSPECIFIED | 0 | |
| SCOPE_DEVICE | 1 | 全局/设备级 (Device Level)
作用于整个设备主控本身 (例如:主控全局重启、主控OTA、获取主控日志) |
| SCOPE_DEVICE_ALL_MODULES | 2 | 作用于设备下的【所有模块】 (例如:一键休眠所有模块) |
| SCOPE_DEVICE_ALL_CHANNELS | 3 | 作用于设备下的【所有通道】 (例如:全局紧急停机,关闭所有模块的所有通道) |
| SCOPE_SPECIFIC_MODULE | 21 | 模块级 (Module Level)
仅作用于指定的模块【硬件本身】 (例如:重启某模块、升级某模块固件)
寻址要求:需要填写 module_serial_number |
| SCOPE_MODULE_ALL_CHANNELS | 22 | 作用于指定模块下的【所有通道】 (例如:一键开启某模块下的所有通道输出)
寻址要求:需要填写 module_serial_number |
| SCOPE_SPECIFIC_CHANNELS | 31 | 通道级 (Channel Level)
作用于指定模块下的【指定通道】 (例如:设置某模块某几个通道的电压)
寻址要求:需要填写 module_serial_number + channels 列表 |
OperationStatusEnum
| Name | Value | Description |
|---|
| UNKNOWN | 0 | |
| ACCEPTED | 1 | 设备收到指令,准备执行 (准备重启/准备下载) |
| IN_PROGRESS | 2 | 执行中 |
| SUCCESS | 3 | 成功 |
| FAILED | 4 | 失败 |
SystemCommandTypeEnum
定义系统级指令类型
| Name | Value | Description |
|---|
| CMD_UNSPECIFIED | 0 | 0: 预留 |
| CMD_RESTART_SOFTWARE | 1 | 1-19: 重启与电源管理 (Reboot & Power)
仅重启当前应用软件/服务进程 (Soft Restart) |
| CMD_REBOOT_OS | 2 | 操作系统层面的重启 (Warm Boot) |
| CMD_REBOOT_HARDWARE | 3 | 硬件电源复位 (Hard Reboot/Cold Boot) |
| CMD_REBOOT_TO_BOOTLOADER | 4 | 进入引导加载模式 (Bootloader/Fastboot) |
| CMD_REBOOT_TO_RECOVERY | 5 | 进入恢复模式 (Recovery Mode) |
| CMD_SHUTDOWN | 6 | 关机 (Power Off) |
| CMD_RESTART_COMM_ALL | 20 | 20-39: 通信模块控制 (Communication)
重启所有通信堆栈 (通用) |
| CMD_RESTART_CELLULAR | 21 | 重启蜂窝网模块 (4G/5G/LTE/Modem) |
| CMD_RESTART_WIFI | 22 | 重启 Wi-Fi 模块 |
| CMD_RESTART_ETHERNET | 23 | 重启以太网 (Ethernet) |
| CMD_RESTART_BLUETOOTH | 24 | 重启蓝牙 (Bluetooth) |
| CMD_TOGGLE_AIRPLANE_MODE | 25 | 切换飞行模式 (ON/OFF 逻辑通常由参数携带或拆分指令) |
| CMD_FACTORY_RESET | 40 | 40-59: 数据与存储管理 (Data & Storage)
恢复出厂设置 (擦除所有用户数据、配置、应用) |
| CMD_WIPE_CACHE | 41 | 仅擦除缓存数据 (Cache/Temporary files) |
| CMD_WIPE_LOGS | 42 | 仅擦除日志文件 (Logs) |
| CMD_RESET_CONFIG | 43 | 仅恢复默认系统配置 (Reset Settings, 保留用户文件) |
| CMD_FORMAT_EXTERNAL_STORAGE | 44 | 格式化外部存储 (如 SD 卡/U 盘) |
| CMD_TOGGLE_REMOTE_DEBUG | 61 | 60-79: 系统维护与诊断 (Maintenance & Diagnostic)
开启/关闭 远程调试 (ADB/SSH) |
| CMD_SYSTEM_SELF_CHECK | 62 | 触发系统自检 (Self-Test) |
| CMD_DUMP_DIAGNOSTIC_INFO | 63 | 导出系统诊断日志包 (Dump state/Logcat) |
| CMD_CLEAR_ENERGY_ALL | 80 | 80-99: 电能与计量管理 (Energy & Metering)
清除所有电能数据 (复位总累计电量,通常需要极高权限/出厂级操作) |
DeviceInfoMessage
设备的静态属性
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| serial_number | serial_number | string | optional | === 核心身份 (Identity) ===
设备唯一序列号 (通常印在机身贴纸上) |
| product_model | product_model | string | optional | 产品型号 (商业名称,如 "SmartCamera-Pro") |
| manufacturer | manufacturer | string | optional | 厂商名称 (OEM/ODM 标识) |
| device_type | device_type | string | optional | 设备类型/品类 (如 "gateway", "sensor", "switch") |
| firmware_version | firmware_version | string | optional | === 软硬件版本 (Versioning) - OTA的关键依据 ===
固件版本 (应用层) e.g., "v2.1.0" |
| hardware_version | hardware_version | string | optional | 硬件/PCB版本 (决定了能刷哪个系列的固件) e.g., "Rev.B" |
| bootloader_version | bootloader_version | string | optional | Bootloader版本 (底层引导程序) |
| firmware_version_code | firmware_version_code | int32 | optional | 固件版本代码 (机器可读的整数格式) |
| software_build_info | software_build_info | string | optional | 软件构建时间(用于排查Bug) |
| hardware_capabilities | hardware_capabilities | HardwareCapabilities | optional | === 硬件资源与能力 (Capabilities) ===
描述设备具备哪些外设,前端可根据此动态渲染界面 |
| production_date | production_date | int64 | optional | === 生产制造信息 (Production) ===
出厂日期 (Unix Timestamp) |
| batch_number | batch_number | string | optional | 生产批次号 (Batch Number) |
Nested Enums defined inDeviceInfo
HardwareCapabilitiesMessage
硬件资源能力聚合集
描述设备具备的所有物理特性,用于前端动态渲染 UI 模块
Nested Enums defined inHardwareCapabilities
DeviceHardwareProfileMessage
设备硬件参数/额定值总配置
电气
com.nexus.service.proto.config.ElectricalRatedConfig electrical = 1;
// 网络
NetworkRatedConfig network = 3;
// 指示
IndicatorConfig indicator = 4;
// 本体
BodyConfig body = 5;
// 外设
PeripheralConfig peripheral = 6;
// 性能
PerformanceConfig performance = 7;
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
Nested Enums defined inDeviceHardwareProfile
DoorLockActionMessage
门锁控制指令
Nested Enums defined inDoorLockAction
ElectricalMeasureMessage
--- 汇总/全局数据 (无论DC/AC都适用的总值) ---
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| voltage | voltage | float | optional | 基础测量总值 (DC/AC 均适用)
电压 (V)(保留:小数点后两位) |
| current | current | float | optional | 电流 (A)(保留:小数点后两位) |
| active_power | active_power | float | optional | 有功功率 (W)(保留:小数点后两位) |
| reactive_energy | reactive_energy | float | optional | 正向累加无功电量 (kVarh) |
energydeprecated | energy | float | optional | 正向累计有功电量 (kWh)
历史背景:曾因 float 精度溢出拟废弃。
[现已兼容] 目前在 MapStruct 转换层已处理小数点精度问题,老业务可正常使用;但新业务仍建议优先使用 active_energy。 | | active_energy | active_energy | double | optional | 正向累计有功电量 (kWh)
double 高精度版本。与 energy 字段数据同步,可根据业务对精度的敏感度选择性使用。 |
| frequency | frequency | float | optional | --- AC 特有全局数据 ---
频率 (Hz) |
| leakage_current | leakage_current | float | optional | 漏电流 (mA) |
| ambient_temperature | ambient_temperature | float | optional | --- 环境/其他全局数据 ---
环境温度/模块温度 (非线缆温度) |
| neutral_line_temp | neutral_line_temp | float | optional | N线单独处理 (因为N线通常只有温度,没有电压)
N线温度 |
| neutral_current | neutral_current | float | optional | N线电流 (A) (三相不平衡分析极其重要) |
| phase_details | phase_details | PhaseLineDetail | repeated | --- 详情/分相数据 ---
- DC: 可能只有 1 个 (为空,直接看上面的)
- AC单相: 可能只有 1 个 (L线) (为空,直接看上面的)
- AC三相: 会有 3 个 (A, B, C) |
| reactive_power | reactive_power | float | optional | 无功功率 (Var) |
| apparent_power | apparent_power | float | optional | 视在功率 (VA) |
| power_factor | power_factor | float | optional | 功率因数 (PF) |
| actual_power_type | actual_power_type | com.nexus.service.proto.enums.PowerType | optional | --- 运行时属性 (Runtime Context) ---
当前实际运行的电源类型 (明确这一帧数据是交流还是直流)
场景:针对交直流自适应的通道,明确告诉下游消费者当前数据该按 AC 还是 DC 解析。
取值建议:POWER_TYPE_AC, POWER_TYPE_DC |
Nested Enums defined inElectricalMeasure
ElectricalNodeMessage
定义电气拓扑中的一个节点 (可能是输入、模块或输出通道)
Nested Enums defined inElectricalNode
ElectricalSpecMessage
电气规格 (Electrical Specification)
标识该物理端口/芯片/端子的【物理硬件极限与容忍度】。
作用:纯粹的物理约束。用于配置下发时的安全边界校验(越限拦截),防止配置了超出硬件极限的业务。
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| voltage_level | voltage_level | com.nexus.service.proto.enums.VoltageLevel | optional | 电压等级 (定义它是12V的口,还是220V的口) |
| rated_current | rated_current | float | optional | 标称电流 |
| rated_power | rated_power | float | optional | 标称功率 |
| min_voltage | min_voltage | float | optional | 具体的最小电压范围(针对宽压设备) |
| max_voltage | max_voltage | float | optional | 具体的最大电压范围(针对宽压设备) |
| is_input_adaptive | is_input_adaptive | bool | optional | 是否为“输入决定输出”模式 (母线直通模式)
如果为 true,说明通道自身无变压/整流能力,输出完全跟随 power_inputs。 |
| power_type | power_type | com.nexus.service.proto.enums.PowerType | optional | 电源类型:明确是直流、交流还是交直流通用
物理电源容忍类型:明确该端子在物理上允许通过直流、交流还是交直流通用(如机械干接点)。
重点:如果这里是 通用,不代表业务上它是通用,业务属性由 ChannelType 决定。 |
Nested Enums defined inElectricalSpec
PhaseLineDetailMessage
相线详细信息消息
描述单条相线的具体电气参数,包括电压、电流、功率、功率因数和温度等
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| phase_type | phase_type | com.nexus.service.proto.enums.PhaseType | optional | 标识名称 |
| voltage | voltage | float | optional | 基础电气参数
电压 (V) |
| current | current | float | optional | 电流 (A) |
| active_power | active_power | float | optional | 功率相关 (三相电往往区分视在和有功)
有功功率 (W) |
| apparent_power | apparent_power | float | optional | 视在功率 (VA) |
| power_factor | power_factor | float | optional | 功率因数 (0.0 - 1.0) |
| temperature | temperature | float | optional | 温度监控
线缆/端子温度 (°C) |
Nested Enums defined inPhaseLineDetail
PowerCapacityMessage
功率/负载容量限制 (Power Capacity / Limit)
用于描述物理介质(如PCB、总线、散热系统)的物理承载极限
特征:与电压无关,纯粹的物理量限制
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| max_total_current | max_total_current | float | optional | 总最大电流 (A) |
| max_total_power | max_total_power | float | optional | 总最大功率 (W) |
Nested Enums defined inPowerCapacity
ActiveMonitorStateMessage
== 南向主动监控任务状态集合 (服务端/云端查询入口) ==
[作用] 硬件设备需要维护这棵状态树,当云端要求同步状态时下发该结构。
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| results | results | TaskResult | repeated | 所有的探测结果统一通过这一个列表上报/查询。
业务层遍历此列表,根据 task_id 或 category 处理即可。 |
Nested Enums defined inActiveMonitorState
BatteryStateMessage
电池状态的聚合
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| percentage | percentage | int32 | optional | 电池电量百分比 (0-100) |
| voltage | voltage | float | optional | 电池电压(单位:V) |
Nested Enums defined inBatteryState
CameraTaskResultMessage
安防摄像机任务专属指标
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| snapshot_url | snapshot_url | string | optional | 如果任务是 TASK_SNAPSHOT(抓图),这里可以返回抓取到的图片在网关本地的路径或上传云端后的 URL |
| vendor_error_code | vendor_error_code | string | optional | 视频流诊断相关的私有协议错误码 (如海康 ISAPI 的错误响应码) |
Nested Enums defined inCameraTaskResult
CellularStateMessage
蜂窝状态
Nested Enums defined inCellularState
EthernetStateMessage
有线以太网
Nested Enums defined inEthernetState
HttpTaskResultMessage
HTTP 任务专属指标
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| actual_status_code | actual_status_code | int32 | optional | 实际响应的 HTTP 状态码 (例如预期200,实际返回了 503) |
| response_summary | response_summary | string | optional | 响应头或 Body 提取的特定业务校验码 (按需使用) |
Nested Enums defined inHttpTaskResult
NetworkStateMessage
网络状态
Nested Enums defined inNetworkState
PingTaskResultMessage
Ping 任务专属指标
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| packet_loss_rate | packet_loss_rate | float | optional | 丢包率 (0-100) |
| jitter_ms | jitter_ms | int32 | optional | 网络抖动 (毫秒) |
Nested Enums defined inPingTaskResult
SshTaskResultMessage
SSH 任务专属指标
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| auth_fail_reason | auth_fail_reason | string | optional | 具体的 SSH 阶段错误类型,例如:认证失败、密钥不匹配、握手失败 |
Nested Enums defined inSshTaskResult
SystemStateMessage
系统资源与状态的聚合
Nested Enums defined inSystemState
TaskResultMessage
== 统一的单任务运行结果 ==
Nested Enums defined inTaskResult
TcpTaskResultMessage
TCP 任务专属指标
TCP 目前基础的 latency_ms 和 state 已经够用。
保留一个空结构作为占位,方便未来扩展 (比如增加 TLS 证书过期时间检测结果)
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
Nested Enums defined inTcpTaskResult
WifiStateMessage
WiFi 状态
Nested Enums defined inWifiState
MonitorTaskCategoryEnum
== 任务类型枚举 (用于业务层快速判别) ==
| Name | Value | Description |
|---|
| CATEGORY_UNSPECIFIED | 0 | |
| CATEGORY_PING | 1 | |
| CATEGORY_SSH | 2 | |
| CATEGORY_TCP | 3 | |
| CATEGORY_HTTP | 4 | |
| CATEGORY_CAMERA | 5 | |
| CATEGORY_SNMP | 6 | |
MonitorTaskStateEnum
== 探测任务状态枚举 (通用抽象) ==
| Name | Value | Description |
|---|
| TASK_STATE_UNKNOWN | 0 | |
| TASK_STATE_ONLINE | 1 | 探测成功/在线 (Ping通、TCP握手成功、SSH登录成功、HTTP返回200等) |
| TASK_STATE_OFFLINE | 2 | 探测失败/离线 (明确拒绝连接、HTTP 502、摄像机认证失败等) |
| TASK_STATE_TIMEOUT | 3 | 探测超时 (未收到任何响应) |
| TASK_STATE_ERROR | 4 | 配置错误或其他系统异常 (如 DNS 解析失败、配置缺失) |
AmbientSensorMessage
温湿度传感器详情
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| supported | supported | bool | optional | 功能支持位 |
| status | status | com.nexus.service.proto.enums.ComponentStatus | optional | 传感器综合状态 (NORMAL, FAULT, DISCONNECTED, DISABLED等)
逻辑:如果状态不是 NORMAL/ALARM,下方的数值字段应被视为无效 |
| temperature | temperature | float | optional | 环境温度 (单位: ℃)
逻辑:
1. 如果此字段不存在,说明硬件或固件不支持温度监测
2. 如果此字段存在,且 status 为 NORMAL,则为有效读数 |
| humidity | humidity | float | optional | 环境湿度 (单位: %RH)
逻辑:
1. 如果此字段不存在,说明硬件或固件不支持湿度监测 (例如你提到的“仅温度”场景)
2. 如果此字段存在,且 status 为 NORMAL,则为有效读数 |
Nested Enums defined inAmbientSensor
DoorModuleMessage
--- 门禁系统配置 ---
Nested Enums defined inDoorModule
EnvironmentalSensorsMessage
环境感知子系统
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| ambient | ambient | AmbientSensor | optional | 温湿度监测子系统
如果嵌入式端不支持温湿度功能,此字段不赋值(null/absent) |
| water_leak | water_leak | WaterLeakSensor | optional | 水浸监测子系统 |
Nested Enums defined inEnvironmentalSensors
FanModuleMessage
--- 风扇模块定义 ---
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| index | index | int32 | optional | 风扇模块索引 (设备可能存在多个风扇) |
| state | state | com.nexus.service.proto.enums.BinaryStatus | optional | 风扇运行状态 (RUNNING, STOPPED) |
| status | status | com.nexus.service.proto.enums.ComponentStatus | optional | 风扇运行健康状态 (正常/故障等) |
| speed_rpm | speed_rpm | int32 | optional | 当前风扇转速 (RPM) |
| start_temp_threshold | start_temp_threshold | float | optional | --- 温控配置 ---
自动温控参数 (当 control_mode == AUTO 时生效)
风扇启动触发温度 (单位: 摄氏度)
当温度 >= 此值时,风扇开启 |
| stop_temp_diff | stop_temp_diff | float | optional | 风扇停止温差 (单位: 摄氏度)
逻辑:当温度 <= (start_temp_threshold - stop_temp_diff) 时,风扇关闭
这种设计可以有效防止风扇在临界点频繁启停 |
| current_temp | current_temp | float | optional | 当前实测温度 (可选:关联到风扇感应器的环境温度) |
| control_mode | control_mode | FanControlMode | optional | --- 控制配置 (读写/Read-Write) ---
控制模式:决定了风扇听谁的
模式定义:AUTO (温控), MANUAL (手动控制), FORCE_OFF (强制关闭) |
| manual_target_speed_pct | manual_target_speed_pct | int32 | optional | 手动控制参数 (当 control_mode == MANUAL 时生效)
手动设定的目标转速百分比 (0-100) 或具体 RPM |
| auto_full_speed_temp | auto_full_speed_temp | float | optional | 满载温度 (可选:达到此温度时风扇全速运行,实现平滑调速曲线) |
Nested Enums defined inFanModule
FanSystemMessage
--- 风扇系统配置 ---
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| supported | supported | bool | optional | 全局支持位:整个设备是否具备风扇系统能力 |
| fans | fans | FanModule | repeated | 具体的风扇实例列表 |
Nested Enums defined inFanSystem
MaintenanceSensorsMessage
设备自身维护状态 (防雷、风扇、灯光)
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| surge_protection_enabled | surge_protection_enabled | bool | optional | --- 防雷系统 ---
防雷监测功能使能/是否存在 (true: 有防雷器且监测中, false: 无) |
| surge_protection_effective | surge_protection_effective | bool | optional | 防雷器是否有效 (true: 正常/有效, false: 失效/已熔断)
逻辑:只有当 surge_protection_enabled = true 时,此字段才有意义 |
| surge_count | surge_count | int32 | optional | 防雷动作次数 |
| fill_light_enabled | fill_light_enabled | bool | optional | --- 补光/灯光系统 ---
补光功能使能 (设备是否有灯) |
| fill_light_on | fill_light_on | bool | optional | 补光灯是否开启 (true: 亮, false: 灭) |
| fill_light_health | fill_light_health | com.nexus.service.proto.enums.ComponentStatus | optional | 补光灯故障状态 |
| ambient_lux | ambient_lux | float | optional | 环境光照度 |
| signal_light_color | signal_light_color | SignalLightColor | optional | --- 信号指示 ---
当前信号灯颜色 |
Nested Enums defined inMaintenanceSensors
SecuritySensorsMessage
安防与物理姿态 (倾斜、振动、雷达)
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| tilt_monitor_enabled | tilt_monitor_enabled | bool | optional | --- 姿态监测 ---
倾斜监测使能 |
| tilt_detected | tilt_detected | bool | optional | 是否检测到倾斜告警 |
| tilt_angle_x | tilt_angle_x | float | optional | 倾斜角度 |
| tilt_angle_y | tilt_angle_y | float | optional | |
| radar_monitor_enabled | radar_monitor_enabled | bool | optional | --- 雷达监测 ---
雷达监测使能 |
| radar_object_detected | radar_object_detected | bool | optional | 雷达是否检测到目标 |
| radar_distance | radar_distance | float | optional | 雷达距离 (单位: 米) |
Nested Enums defined inSecuritySensors
SensorStateMessage
聚合消息:传感器总览
Nested Enums defined inSensorState
VibrationConfigMessage
振动监测配置:用于设置防抖和灵敏度
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| supported | supported | bool | optional | 功能支持位
用于前端 UI 判断是否显示该配置项:true 表示设备支持振动监测,false 表示隐藏或置灰 |
| enabled | enabled | bool | optional | 振动监测总开关 |
| threshold | threshold | float | optional | 触发阈值 (单位: m/s^2)
只有振动强度超过此值,防抖计时器才会启动 |
| debounce_on_ms | debounce_on_ms | uint32 | optional | 开启防抖时间 (单位: 毫秒 ms)
振动持续超过此时间才判定为“检测到振动” (例如:防止手指轻碰干扰) |
| debounce_off_ms | debounce_off_ms | uint32 | optional | 消失防抖时间 (单位: 毫秒 ms)
振动消失后需持续此时间,才判定振动真正结束 (防止由于振动波形起伏导致的反复跳变) |
| sensitivity | sensitivity | com.nexus.service.proto.enums.SensitivityLevel | optional | 灵敏度等级 (枚举: 低/中/高) |
Nested Enums defined inVibrationConfig
WaterLeakSensorMessage
水浸传感器详情
Nested Enums defined inWaterLeakSensor
FanControlModeEnum
| Name | Value | Description |
|---|
| FAN_MODE_AUTO | 0 | 自动温控模式 |
| FAN_MODE_MANUAL | 1 | 手动调速模式 |
| FAN_MODE_FORCE_OFF | 2 | 强制关闭模式(优先级最高) |
SignalLightColorEnum
枚举定义 (标准化状态)
信号灯颜色/状态
| Name | Value | Description |
|---|
| LIGHT_COLOR_OFF | 0 | 熄灭 |
| LIGHT_COLOR_GREEN | 1 | 绿灯 (正常) |
| LIGHT_COLOR_RED | 2 | 红灯 (告警) |
| LIGHT_COLOR_YELLOW | 3 | 黄灯 (警告/维护) |
RatedValueItemMessage
通用额定值单元
包含当前生效值和系统建议的默认值
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| value | value | float | optional | 当前设定的值
[读写]:下发配置时,设备只认这个字段。 |
| default_value | default_value | float | optional | 系统出厂默认值
[只读]:仅在设备上报时有效,云端下发时固件应忽略此字段。 |
Nested Enums defined inRatedValueItem
AlarmActionEnum
告警动作
| Name | Value | Description |
|---|
| ALARM_ACTION_TRIGGER | 0 | 触发告警 (Start/Raise) |
| ALARM_ACTION_RECOVER | 1 | 恢复告警 (Clear/Restore) |
| ALARM_ACTION_UPGRADE | 2 |
告警升级 (Upgrade)
表示告警依然存在,但严重程度加重(例如从 2 级变为 3 级)。
业务逻辑:不触发恢复动作,直接更新当前告警实例的等级,保持告警持续时间的连续性。 |
| ALARM_ACTION_DOWNGRADE | 3 |
告警降级 (Downgrade)
表示告警依然存在,但严重程度减轻(例如从 3 级变为 2 级)。
业务逻辑:通常用于情况有所好转但未完全恢复正常的场景,避免误触发“已修复”的相关逻辑。 |
| ALARM_ACTION_DOWNGRADE_OLD | 4 | 旧的没有时间改正,遗留问题 |
BinaryStatusEnum
通用二元状态
注意:尽量避免使用过于通用的枚举,但在某些特定场景(如旧系统兼容)下保留
| Name | Value | Description |
|---|
| FAILURE | 0 | 失败、错误、关闭 |
| SUCCESS | 1 | 成功、正确、开启 |
ConnectivityTypeEnum
通信连接方式类型
| Name | Value | Description |
|---|
| CONN_UNSPECIFIED | 0 | 未指定
--- 蜂窝网络细分 --- |
| CONN_CELLULAR_2G | 1 | 2G (GSM/GPRS/EDGE) |
| CONN_CELLULAR_3G | 2 | 3G (WCDMA/CDMA2000) |
| CONN_CELLULAR_4G | 3 | 4G (LTE Cat 4/6+, EC20等) |
| CONN_CELLULAR_4G_CAT1 | 4 | 4G Cat 1 (中低速率,如 EC800M/EC200U) |
| CONN_CELLULAR_5G | 5 | 5G NR |
| CONN_CELLULAR_NB_IOT | 6 | NB-IoT |
| CONN_WIFI | 7 | WiFi 无线网络 |
| CONN_BLUETOOTH | 8 | 蓝牙/低功耗蓝牙 (BLE) |
| CONN_ETHERNET | 9 | 以太网/有线网络 |
| CONN_LORA | 10 | LoRa 长距离无线通信 |
| CONN_ZIGBEE | 11 | Zigbee 无线组网 |
| CONN_RS485 | 12 | RS485 串行总线 |
| CONN_CAN | 13 | CAN 局域网总线 |
DataUnitEnum
定义数据单位枚举
| Name | Value | Description |
|---|
| D_UNIT_UNSPECIFIED | 0 | |
| D_UNIT_BYTE | 1 | --- 存储容量 (Storage Capacity) --- |
| D_UNIT_KB | 2 | |
| D_UNIT_MB | 3 | |
| D_UNIT_GB | 4 | |
| D_UNIT_TB | 5 | |
| D_UNIT_BPS | 10 | --- 传输速率 (Throughput / Speed) ---
bit per second |
| D_UNIT_KBPS | 11 | |
| D_UNIT_MBPS | 12 | |
| D_UNIT_KBIT | 13 | 某些场景下使用的千比特单位 |
| D_UNIT_PERCENT | 20 | --- 抽象指标 (Metrics) ---
百分比 (%) |
ElectricalUnitEnum
| Name | Value | Description |
|---|
| E_UNIT_UNSPECIFIED | 0 | |
| E_UNIT_VOLT | 1 | 伏特 (V) |
| E_UNIT_MILLIVOLT | 2 | 毫伏 (mV) |
| E_UNIT_KILOVOLT | 3 | 千伏 (kV) |
| E_UNIT_AMPERE | 4 | 安培 (A) |
| E_UNIT_MILLIAMPERE | 5 | 毫安 (mA) |
| E_UNIT_WATT | 6 | 瓦特 (W) |
| E_UNIT_KILOWATT | 7 | 千瓦 (kW) |
| E_UNIT_HERTZ | 8 | 赫兹 (Hz) |
IoInterfaceTypeEnum
工业电气 IO 接口类型
| Name | Value | Description |
|---|
| IO_UNSPECIFIED | 0 | 未指定 |
| IO_RELAY | 1 | 继电器输出 (Relay) |
| IO_DI | 2 | 数字量输入 (DI) |
| IO_DO | 3 | 数字量输出 (DO) |
| IO_AI | 4 | 模拟量输入 (AI - 如 4-20mA) |
MeasurementUnitEnum
物模型物理量/电气量/网络量测量单位枚举
| Name | Value | Description |
|---|
| UNIT_UNSPECIFIED | 0 | 默认值,未指定单位 (无量纲/单纯计数时使用) |
| UNIT_VOLT | 1 | 电压 (Voltage)
V (伏特) |
| UNIT_MILLI_VOLT | 2 | mV (毫伏) |
| UNIT_KILOVOLT | 3 | kV (千伏) |
| UNIT_AMPERE | 10 | 电流 (Current)
A (安培) |
| UNIT_MILLI_AMPERE | 11 | mA (毫安 - 常用于漏电流) |
| UNIT_MICRO_AMPERE | 12 | μA (微安) |
| UNIT_KILO_AMPERE | 13 | kA (千安) |
| UNIT_WATT | 20 | 功率 (Power)
W (瓦特) |
| UNIT_KILOWATT | 21 | kW (千瓦) |
| UNIT_MEGAWATT | 22 | MW (兆瓦) |
| UNIT_VOLT_AMPERE | 25 | VA (伏安) |
| UNIT_KILOVOLT_AMPERE | 26 | kVA (千伏安) |
| UNIT_VAR | 28 | var (乏) |
| UNIT_KILOVAR | 29 | kvar (千乏) |
| UNIT_WATT_HOUR | 30 | 电能/耗电量 (Energy)
Wh (瓦时) |
| UNIT_KILOWATT_HOUR | 31 | kWh (千瓦时/度) |
| UNIT_HERTZ | 40 | 频率 (Frequency)
Hz (赫兹) |
| UNIT_KILOHERTZ | 41 | kHz (千赫兹) |
| UNIT_OHM | 50 | 电阻/阻抗 (Resistance)
Ω (欧姆) |
| UNIT_KILOOHM | 51 | kΩ (千欧) |
| UNIT_MEGAOHM | 52 | MΩ (兆欧) |
| UNIT_CELSIUS | 60 | 环境与物理参数
°C (摄氏度) |
| UNIT_FAHRENHEIT | 61 | °F (华氏度) |
| UNIT_KELVIN | 62 | K (开尔文) |
| UNIT_HUMIDITY | 65 | %RH (相对湿度) |
| UNIT_MILLISECOND | 70 | 时间 (Time)
ms (毫秒) |
| UNIT_SECOND | 71 | s (秒) |
| UNIT_MINUTE | 72 | min (分钟) |
| UNIT_HOUR | 73 | h (小时) |
| UNIT_PERCENT | 80 | 比例与其它 (Ratio & Others)
% (百分比 - 用于丢包率、THD、占空比等) |
| UNIT_PPM | 81 | ppm (百万分比) |
| UNIT_DBM | 90 | 通信与信号 (Signal)
dBm (分贝毫瓦 - 绝对信号强度) |
| UNIT_DB | 91 | dB (分贝 - 相对信号强度/信噪比 SNR) |
| UNIT_BPS | 100 | 网络速率 (Data Rate/Bandwidth)
bps (比特每秒) |
| UNIT_KBPS | 101 | Kbps (千比特每秒) |
| UNIT_MBPS | 102 | Mbps (兆比特每秒) |
| UNIT_BYTE | 110 | 数据容量/流量 (Data Volume/Traffic)
Byte (字节) |
| UNIT_KB | 111 | KB (千字节) |
| UNIT_MB | 112 | MB (兆字节) |
| UNIT_GB | 113 | GB (吉字节) |
| UNIT_CUSTOM | 999 | 预留自定义单位扩展 |
OnlineReasonEnum
上线原因枚举 (上层业务视角 / 网络通信视角)
由应用程序结合 Flash 中保存的业务标志位(如 OTA_FLAG)或网络状态机来综合判断。
| Name | Value | Description |
|---|
| ONLINE_REASON_UNSPECIFIED | 0 | 0: 未知或未指定(Protobuf 推荐规范,0 为默认值) |
| COLD_BOOT | 1 | 正常上电与休眠
首次上电/冷启动 (通常伴随硬件断电后重新通电) |
| WAKE_UP_FROM_SLEEP | 2 | 从深度休眠中唤醒 (低功耗设备常见,如 NB-IoT 水表每天唤醒一次) |
| NETWORK_RECOVERY | 10 | 网络与通信层恢复
网络信号恢复 (如:进出隧道、地下室,设备本身未重启,仅仅是 Socket 断开重连) |
| COMM_MODULE_RESTART | 11 | 通信模组重启 (如:4G/WiFi 模组死机被 MCU 主动复位后重连) |
| NETWORK_CHANNEL_SWITCH | 12 | 切换网络通道 (如:WiFi 断开回退到 4G,或主卡切换到备用卡) |
| DOMAIN_SWITCH | 13 | 切换域名/服务器地址 (因主域名DNS解析失败或服务端负载均衡下发指令导致切换) |
| FALLBACK_DOMAIN_RECOVERY | 14 | 灾备/兜底域名连接 (Disaster Recovery / Fallback)
设备的常规主从域名均无法连接(可能是配错了,也可能是DNS污染),退避到代码固化的最后备用域名(救砖通道)上线 |
| SOFTWARE_RESTART | 20 | 系统与软件重启
软件重启 (Soft Reset,代码逻辑主动触发的重启,如修改了某些非即时生效的配置) |
| SYSTEM_RESTART | 21 | 系统/硬件重启 (Hard Reset,如按下了Reset按键,或看门狗触发) |
| CRASH_RECOVERY | 22 | 系统异常崩溃恢复 (Kernel Panic, Hard Fault, OOM 等导致的被动重启) |
| OTA_UPGRADE_COMPLETE | 30 | 业务与运维管理
OTA 升级完成后的首次上线 (用于服务端闭环判定 OTA 流程彻底成功) |
| REMOTE_COMMAND_RECONNECT | 31 | 远程指令强制重连 (如服务端下发了强制设备重新初始化的指令) |
| ROUTINE_PERIODIC_RECONNECT | 32 | 周期性例行重连 (有些设备设定每隔 X 天强制断开重连一次,以刷新网络状态或获取最新配置) |
| FACTORY_RESET_COMPLETE | 33 | 恢复出厂设置后的首次上线 |
PeripheralTypeEnum
外设与传感器类型
| Name | Value | Description |
|---|
| PERI_UNSPECIFIED | 0 | 未指定 |
| PERI_SCREEN | 1 | LCD/OLED 显示屏 |
| PERI_TOUCH | 2 | 电容或电阻触摸屏 |
| PERI_LED | 3 | LED 状态指示灯 |
| PERI_BUZZER | 4 | 有源或无源蜂鸣器 |
| PERI_BUTTON | 5 | 物理输入按键 |
| PERI_GPS | 10 | GPS/北斗定位模块 |
| PERI_IMU | 11 | 惯性测量单元 (加速度/陀螺仪) |
| PERI_TEMP_HUM | 12 | 温湿度传感器 |
| PERI_CAMERA | 13 | 视频监控摄像头 |
| PERI_RTC | 14 | 硬件实时时钟 (RTC) |
PowerOnStateEnum
定义上电状态的枚举
| Name | Value | Description |
|---|
| POWER_ON_OFF | 0 | 保持关闭状态 |
| POWER_ON_RESTORE | 1 | 恢复为上电前的状态 |
| POWER_ON_ON | 2 | 强制开启状态 |
PowerSourceTypeEnum
电源供应方案类型
| Name | Value | Description |
|---|
| PWR_UNSPECIFIED | 0 | 未指定 |
| PWR_BACKUP_BATTERY | 1 | 备用锂电池供电 |
| PWR_SOLAR | 2 | 太阳能/光伏供电 |
| PWR_BACKUP_CAPACITOR | 3 | 超级电容方案 (支持掉电维持/上报) |
| PWR_NON_RECHARGE | 4 | 一次性电池 (不可充电) |
| PWR_POE | 5 | 以太网供电 (PoE) |
ShutdownReasonEnum
--- 安全关机原因枚举 ---
| Name | Value | Description |
|---|
| SHUTDOWN_REASON_UNKNOWN | 0 | |
| POWER_DEPLETED | 1 | 备用电容/电池电量耗尽 (物理极限) |
| PLATFORM_COMMAND | 2 | 平台下发关机指令 |
| THERMAL_PROTECTION | 3 | 过热自我保护关机 |
| SYSTEM_FAULT | 4 | 严重系统故障触发的安全关机 |
StorageTypeEnum
存储资源类型
| Name | Value | Description |
|---|
| STR_UNSPECIFIED | 0 | 未指定 |
| STR_SD_CARD | 1 | 可插拔 SD/TF 卡 |
| STR_EMMC | 2 | 板载 eMMC 闪存 |
| STR_SPI_FLASH | 3 | SPI Flash 存储器 |
| STR_USB_DISK | 4 | 外部 USB 磁盘/U盘 |
SwitchStateEnum
公共开关状态枚举
| Name | Value | Description |
|---|
| SWITCH_OFF | 0 | 建议加上前缀避免命名冲突,或者保持 OFF = 0 |
| SWITCH_ON | 1 | 通电/打开 |
| SWITCH_RESTART | 2 | 重启 |
TemperatureUnitEnum
| Name | Value | Description |
|---|
| TEMP_UNIT_UNSPECIFIED | 0 | |
| TEMP_UNIT_CELSIUS | 1 | 摄氏度 (℃) |
| TEMP_UNIT_FAHRENHEIT | 2 | 华氏度 (℉) |
| TEMP_UNIT_KELVIN | 3 | 开尔文 (K) |
TimeUnitEnum
| Name | Value | Description |
|---|
| T_UNIT_UNSPECIFIED | 0 | |
| T_UNIT_SECOND | 1 | 秒 (s) |
| T_UNIT_MILLISECOND | 2 | 毫秒 (ms) |
| T_UNIT_MINUTE | 3 | 分 (min) |
| T_UNIT_HOUR | 4 | 小时 (h) |
TriggerSourceEnum
定义触发源枚举
详细列举了所有可能导致设备状态改变的来源
| Name | Value | Description |
|---|
| TRIGGER_SOURCE_UNSPECIFIED | 0 | 未知或未指定 |
| TRIGGER_SOURCE_WEB_MANAGEMENT | 10 | --- 远程/云端触发 (10-19) ---
Web 管理后台触发(通常是管理员在 PC 端运营平台操作) |
| TRIGGER_SOURCE_MOBILE_APP | 11 | 移动端 App 触发(用户通过手机 iOS/Android App 手动操作) |
| TRIGGER_SOURCE_THIRD_PARTY_CLOUD | 12 | 第三方云端对接(如:小爱同学、天猫精灵、或是企业 API 合作伙伴) |
| TRIGGER_SOURCE_CLOUD_RULE_ENGINE | 13 | 云端自动化规则(IoT 平台配置的联锁、定时任务、场景模式等) |
| TRIGGER_SOURCE_LOCAL_PHYSICAL | 20 | --- 设备本地/物理触发 (20-29) ---
本地物理操作(设备自带的按钮、旋钮、触摸屏面板等直接交互) |
| TRIGGER_SOURCE_LOCAL_CONSOLE | 21 | 本地调试接口(通过串口 RS232/485、USB 接口或本地 Web 页面配置) |
| TRIGGER_SOURCE_EDGE_LOGIC | 22 | 边缘端/网关本地联动(无需经过云端,在网关或边缘计算节点触发的逻辑) |
| TRIGGER_SOURCE_SYSTEM_PROTECTION | 30 | --- 自动化与系统逻辑 (30-39) ---
设备内部保护机制(硬件自保护:过热、过压、短路、异常心跳自动复位等) |
| TRIGGER_SOURCE_STATE_SYNC | 31 | 状态同步更新(由于父设备或关联设备状态变化导致的级联更新) |
UpdateReasonEnum
定义状态变更/属性上报的触发原因
| Name | Value | Description |
|---|
| UPDATE_REASON_UNSPECIFIED | 0 | 0 是 proto3 枚举的默认值,通常保留给未指定或未知的原因 |
| UPDATE_REASON_SYSTEM_BOOT | 1 | 系统级别 (System Level)
设备刚上电或重启后的首次全量上报 |
| UPDATE_REASON_NETWORK_RECOVERY | 2 | 设备断网重连后,将离线期间积压的或最新的状态进行同步 |
| UPDATE_REASON_PERIODIC_TIMER | 10 | 周期与数据驱动 (Periodic & Data Driven)
程序内部定时器触发的周期性常态上报 |
| UPDATE_REASON_VALUE_CHANGED | 11 | 属性数值发生变化 (COV - Change of Value),触发主动上报 |
| UPDATE_REASON_PHYSICAL_SWITCH | 20 | 本地干预 (Local Interaction)
本地人员按下了物理开关或旋钮 |
| UPDATE_REASON_HMI_PANEL | 21 | 本地 HMI(人机交互触摸屏)上的操作改变了配置 |
| UPDATE_REASON_SERIAL_COMMAND | 22 | 现场人员通过 RS485/RS232/USB 等本地串口下发的调试指令 |
| UPDATE_REASON_REMOTE_COMMAND | 30 | 远程控制 (Remote Control)
响应来自服务端的远程指令 (RPC / Downlink) 后上报最新状态 |
| UPDATE_REASON_LOCAL_NETWORK_COMMAND | 31 | 响应来自局域网内其他上位机或主控设备的指令 |
| UPDATE_REASON_RULE_ENGINE_TRIGGER | 40 | 自动化与保护逻辑 (Automation & Protection)
本地边缘计算或联动规则引擎触发 (例:环境光变暗触发开灯) |
| UPDATE_REASON_PROTECTION_FAULT | 41 | 设备底层程序的安全保护机制介入 (例:过流、短路、超温引发的自动停机断电) |
WorkModeEnum
工作模式
| Name | Value | Description |
|---|
| MODE_NORMAL | 0 | 默认标准模式 |
| MODE_POWER_SAVING | 1 | 低功耗省电模式 |
| MODE_PERFORMANCE | 2 | 高性能模式 |
| MODE_STEALTH | 3 | 隐蔽模式(关闭声光) |
| MODE_MAINTENANCE | 4 | 维护模式(仅响应指令) |
CompressionTypeEnum
载荷压缩算法
| Name | Value | Description |
|---|
| NONE | 0 | 不使用任何压缩。这是默认值。 |
| GZIP | 1 | GZIP (Zlib) 格式。
权衡: 在 MCU 上需要较多的 RAM (滑动窗口) 和 CPU 计算时间。
嵌入式实现: miniz |
| LZ4 | 2 | LZ4 格式。
优点: 极高的压缩和解压速度,资源消耗均衡。
权衡: 压缩率略低于 GZIP。 |
| HEATSHRINK | 3 | 极端条件 Heatshrink 格式。
优点: RAM 占用极低 (可低至数百字节),专为内存极度受限的 MCU 设计。
权衡: 压缩和解压速度相对较慢。 |
| ZSTD | 4 | Zstandard (Zstd)。
优点:支持字典压缩,针对小包和结构化数据有奇效。
现状:嵌入式移植稍显复杂,作为未来储备。 |
AuthMethodEnum
认证方式
| Name | Value | Description |
|---|
| AUTH_METHOD_UNKNOWN | 0 | |
| PASSWORD | 1 | |
| SIGNATURE | 2 | |
AuthStatusEnum
登录/认证相关的状态码
| Name | Value | Description |
|---|
| AUTH_FAILURE | 0 | |
| AUTH_SUCCESS | 1 | |
| AUTH_USER_NOT_FOUND | 1001 | 用户不存在 |
| AUTH_PASSWORD_ERROR | 1002 | 密码错误 |
| AUTH_CAPTCHA_ERROR | 1003 | 验证码错误 (短信/图形验证码) |
| AUTH_CAPTCHA_EXPIRED | 1004 | 验证码已过期 |
| AUTH_ACCOUNT_BANNED | 2001 | 账号被禁用/封禁 (黑名单) |
| AUTH_ACCOUNT_LOCKED | 2002 | 账号被锁定 (通常因为多次尝试失败) |
| AUTH_ACCOUNT_INACTIVE | 2003 | 账号未激活 (例如需要邮箱验证) |
| AUTH_ACCOUNT_DELETED | 2004 | 账号已注销 |
| AUTH_TOKEN_INVALID | 3001 | Token 无效 (签名错误或格式错误) |
| AUTH_TOKEN_EXPIRED | 3002 | Token 已过期 |
| AUTH_TOKEN_KICKED | 3003 | Token 被顶替 (在其他设备登录) |
| AUTH_LOGIN_FREQUENCY_LIMIT | 4001 | 登录过于频繁 (限流) |
| AUTH_DEVICE_NOT_ALLOWED | 4002 | 设备未授权/禁止该设备登录 |
| AUTH_VERSION_TOO_LOW | 4003 | 客户端版本过低,强制升级 |
| AUTH_UNKNOWN_ERROR | 9999 | 未知认证错误 |
ComponentStatusEnum
通用组件健康状态
| Name | Value | Description |
|---|
| STATUS_FAULT | 0 | 故障/损坏 |
| STATUS_NORMAL | 1 | 正常工作 |
| STATUS_DISCONNECTED | 2 | 离线/未连接 |
| STATUS_ALARM | 3 | 处于告警状态 (如检测到水浸) |
ConnectionStatusEnum
在线状态 (对应PM需求:在线/离线)
| Name | Value | Description |
|---|
| STATUS_UNKNOWN | 0 | |
| STATUS_ONLINE | 1 | 设备已连接且互联网可达 |
| STATUS_OFFLINE | 2 | 物理连接断开或无法获取IP |
| STATUS_LIMITED | 3 | 有物理连接但无法访问外网 (内网模式) |
DoorLockStateEnum
门舌物理状态
| Name | Value | Description |
|---|
| DOOR_LOCK_CLOSED | 0 | |
| DOOR_LOCK_OPEN | 1 | 开 |
| DOOR_LOCK_JAMMED | 2 | 卡死 |
InternetReachabilityEnum
网络连接状态
| Name | Value | Description |
|---|
| REACHABILITY_UNREACHABLE | 0 | 无法访问外网 |
| REACHABILITY_REACHABLE | 1 | 可以访问外网 |
LinkStatusEnum
物理连接状态
| Name | Value | Description |
|---|
| LINK_DISCONNECTED | 0 | 物理连接断开 (网线拔出/WiFi未连接) |
| LINK_CONNECTED | 1 | 物理连接正常 |
RebootReasonEnum
复位/重启原因枚举 (对应 GD32 RCU 寄存器状态)
| Name | Value | Description |
|---|
| REBOOT_UNKNOWN | 0 | |
| REBOOT_POWER_ON | 1 | 上电复位 (POR/PDR) - 真正意义上的物理断电后重新通电 |
| REBOOT_WATCHDOG | 2 | 看门狗复位 (IWDG/WWDG) - 硬件/独立看门狗超时,意味着程序曾发生跑飞、死锁或严重阻塞 |
| REBOOT_SOFTWARE | 3 | 软件复位 (NVIC System Reset) - 代码逻辑主动调用系统复位 (常见于OTA完成、修改关键参数后要求重启) |
| REBOOT_PIN_RESET | 4 | 外部引脚复位 (NRST Pin) - 物理复位按键被按下,或外部看门狗/电源管理芯片拉低了复位引脚 |
| REBOOT_LOW_POWER | 5 | 低功耗唤醒复位 |
SensitivityLevelEnum
灵敏度等级 (可选:低、中、高)
| Name | Value | Description |
|---|
| LOW | 0 | |
| MEDIUM | 1 | |
| HIGH | 2 | |
MonitorTaskTypeEnum
主动监控任务类型枚举
采用分段预留编号的设计,方便未来按类别扩展
| Name | Value | Description |
|---|
| MONITOR_TASK_TYPE_UNSPECIFIED | 0 | [必填] 0 必须作为默认/未知状态,Protobuf v3 规范要求 |
| MONITOR_TASK_TYPE_PING | 1 | [1-9] 基础网络与传输层探测 (L3/L4)
ICMP Ping 存活探测 (对应 PingTask) |
| MONITOR_TASK_TYPE_TCP | 2 | TCP 端口连通性探测 (对应 TcpTask) |
| MONITOR_TASK_TYPE_UDP | 3 | UDP 端口/报文探测 (未来扩展:很多工控或Syslog使用UDP) |
| MONITOR_TASK_TYPE_TRACEROUTE | 4 | 路由追踪 (未来扩展:网络路径故障诊断 MTR/Traceroute) |
| MONITOR_TASK_TYPE_DNS | 5 | DNS 递归/迭代解析测试 (未来扩展:检测DNS劫持或解析延迟) |
| MONITOR_TASK_TYPE_HTTP | 10 | [10-19] 通用应用层探测 (L7)
HTTP/HTTPS 接口及状态码探测 (对应 HttpTask) |
| MONITOR_TASK_TYPE_SSH | 11 | SSH 端口连通及模拟登录测试 (对应 SshTarget) |
| MONITOR_TASK_TYPE_TLS_CERT | 12 | TLS/SSL 证书校验 (未来扩展:监控网关或下游设备的证书是否快过期) |
| MONITOR_TASK_TYPE_NTP | 13 | NTP 时间同步探测 (未来扩展:边缘节点时间不准会导致很多加密认证失败) |
| MONITOR_TASK_TYPE_FTP | 14 | FTP/SFTP 连通性测试 (未来扩展) |
| MONITOR_TASK_TYPE_WEBSOCKET | 15 | WebSocket 长连接测试 (未来扩展) |
| MONITOR_TASK_TYPE_CAMERA | 20 | [20-29] 物联网(IoT)与工控协议特定探测
视频安防设备探测 (对应 CameraTask,如检查 RTSP/ONVIF 流) |
| MONITOR_TASK_TYPE_MODBUS | 21 | Modbus 协议探测 (你在注释中提到了工控机 502 端口,未来可能不仅测 TCP 通不通,还发 Modbus 报文测) |
| MONITOR_TASK_TYPE_MQTT | 22 | MQTT 连通性及 Topic 订阅发布测试 (物联网主流协议) |
| MONITOR_TASK_TYPE_OPC_UA | 23 | OPC UA 工业自动化协议探测 |
| MONITOR_TASK_TYPE_SNMP | 24 | SNMP 网络设备状态主动抓取 (交换机/路由器监控) |
| MONITOR_TASK_TYPE_DATABASE | 30 | [30-39] 复杂/高级业务探测
数据库连通性探测 (如 MySQL, Redis 等 Ping 测试) |
| MONITOR_TASK_TYPE_CUSTOM_SCRIPT | 31 | 自定义脚本探测 (网关下发一段 Python/Shell 脚本执行并解析 Exit Code) |
EncryptionTypeEnum
定义加密算法类型
| Name | Value | Description |
|---|
| ENCRYPT_NONE | 0 | 明文传输 |
| AES_ECB | 1 | 不推荐,安全性较低,不需要IV |
| AES_CBC | 2 | |
| AES_GCM | 3 | |
| SM4 | 4 | 国密算法 |
MessageTypeEnum
定义消息类型枚举
优化策略:枚举 ID 与 WrapperMessage.payload 中的 field ID 保持严格一致,便于代码解析映射
| Name | Value | Description |
|---|
| MESSAGE_TYPE_UNKNOWN | 0 | 0 保留为未知/无效类型
未知消息类型 |
| LOGIN_REQUEST | 51 | --- 会话与基础 (50-69) ---
设备登录认证请求 |
| LOGIN_RESPONSE | 52 | 设备登录认证响应 |
| HEARTBEAT_REQUEST | 61 | 链路心跳保活请求 |
| HEARTBEAT_RESPONSE | 62 | 链路心跳响应 |
| SET_PROPERTIES_REQUEST | 100 | --- 属性控制与管理 (100-199) ---
[下行] 设置设备属性/配置 |
| SET_PROPERTIES_RESPONSE | 101 | [上行] 设置指令的执行结果 |
| GET_PROPERTIES_REQUEST | 102 | [下行] 查询设备属性状态 |
| GET_PROPERTIES_RESPONSE | 103 | [上行] 返回查询到的属性值 |
| EVENT_REPORT | 200 | --- 事件与上报 (200-399) ---
事件上报(报警、故障等) |
| ATTRIBUTE_UPDATE_REQUEST | 201 | [上行] 设备主动上报单点属性变更 |
| PROPERTY_REPORT | 300 | 属性/遥测数据上报(原 ThingModelReport) |
| GENERIC_RESPONSE | 500 | --- 通用结构与透传 (500-699) ---
通用响应消息 (对应 ResponseBody) |
| BINARY_PAYLOAD | 600 | 二进制数据透传 (对应 BinaryPayload) |
| OTA_UPGRADE_NOTIFICATION | 700 | --- OTA 固件升级 (700-799) ---
[下行] 服务端推送升级通知 |
| OTA_UPGRADE_RESPONSE | 701 | [上行] 设备确认升级通知 |
| OTA_PROGRESS_REPORT | 702 | [上行] 升级进度/状态上报 |
| OTA_CHUNK_REQUEST | 703 | [上行] 请求固件分片 (Pull模式) |
| OTA_CHUNK_RESPONSE | 704 | [下行] 下发固件分片数据 |
| OTA_CONFIG_UPDATE | 705 | [下行] 更新 OTA 策略配置 |
AuthModeEnum
认证模式
| Name | Value | Description |
|---|
| AUTH_NONE | 0 | 不验证(仅加密,不防中间人攻击,不推荐) |
| AUTH_SERVER_ONLY | 1 | 单向认证:设备校验服务端证书(标准 HTTPS 模式) |
| AUTH_MUTUAL | 2 | 双向认证 (mTLS):服务端也要校验设备证书(金融/安防级安全) |
FailoverModeEnum
== 枚举定义 (建议提取到 common 包) ==
故障转移模式
| Name | Value | Description |
|---|
| FAILOVER_MODE_COLD_STANDBY | 0 | 冷备模式:主链路断开后才拨号连接备用链路(省流量,切换有延迟) |
| FAILOVER_MODE_HOT_STANDBY | 1 | 热备模式:双链路同时保持在线,随时切换(高可用,消耗双份资源) |
| FAILOVER_MODE_SINGLE_LINK | 2 | 锁定模式:强制仅使用主配置链路,禁用故障转移功能 |
IpAssignmentMethodEnum
IP 分配方式
| Name | Value | Description |
|---|
| IP_METHOD_DHCP | 0 | 自动获取 |
| IP_METHOD_STATIC | 1 | 静态指定 |
NetworkRegStatusEnum
网络注册状态
| Name | Value | Description |
|---|
| REG_UNKNOWN | 0 | 未知 |
| REG_NOT_REGISTERED | 1 | 未注册,且当前没有在搜网 (通常是飞行模式或射频关闭) |
| REG_SEARCHING | 2 | 正在搜索网络 (设备一直在搜网说明附近无基站或天线脱落) |
| REG_REGISTERED_HOME | 3 | 已注册,本地网络 (正常状态) |
| REG_DENIED | 4 | 注册被拒绝 (基站明确拒绝,通常结合 code 字段使用,如位置区不允许) |
| REG_ROAMING | 5 | 已注册,漫游网络 (跨境物流、跨国设备常用) |
ServerWorkModeEnum
服务器工作模式
| Name | Value | Description |
|---|
| WORK_MODE_SINGLE | 0 | 单服模式:只连接一个主地址 |
| WORK_MODE_MASTER_SLAVE | 1 | 主从模式:主故障时切备,通常指服务器地址的灾备 |
| WORK_MODE_DUPLEX | 2 | 双工模式:双通道同时发送或双服务器同时在线 |
SimStatusEnum
| Name | Value | Description |
|---|
| SIM_UNKNOWN | 0 | 未知状态:系统尚未完成初始化,或无法获取当前 SIM 卡状态 |
| SIM_READY | 1 | 就绪:SIM 卡已插入且解锁,工作正常,可以进行网络通信 |
| SIM_NOT_INSERTED | 2 | 未插入:检测到插槽中没有安装 SIM 卡 |
| SIM_PIN_REQUIRED | 3 | 需要 PIN 码:SIM 卡已锁定,需要用户输入 PIN 码才能解锁使用 |
| SIM_ERROR | 4 | 错误:SIM 卡无效、损坏、硬件故障或被永久封锁(如 PUK 错误次数超限) |
| SIM_ARREARS | 20 | --- 扩展的业务与订阅状态 ---
--- 20-29: 运营管控状态 (服务可用性视角) ---
[欠费]:因账户余额不足导致的服务中断(通常缴费后可立即自动恢复) |
| SIM_ADMIN_SUSPENDED | 21 | [行政停机/主动停机]:用户通过平台主动挂失、或者因为设备违规移机被平台下指令停机 |
| SIM_DATA_QUOTA_EXCEEDED | 22 | [流量熔断]:当月流量消耗触发了套餐阈值,被运营商暂时关闭数据功能 |
| SIM_DEACTIVATED | 30 | --- 30-39: 生命周期与合规状态 (业务开通视角) ---
[未激活]:卡片已出库,但尚未在运营商侧激活(通常为测试期或沉默期) |
| SIM_UNREGISTERED | 31 | [未实名]:由于法律法规要求,卡片未完成个人或企业实名登记,被运营商禁止联网 |
| SIM_BINDING_MISMATCH | 40 | --- 40-49: 安全与绑定状态 ---
[机卡绑定失败]:检测到 IMEI 与 ICCID 不匹配,被运营商/平台锁卡 |
| SIM_PUK_REQUIRED | 41 | 需要 PUK 码:PIN 码错误多次,卡片被锁定,需 PUK 解锁(比 PIN 更严重) |
| SIM_NETWORK_LOCKED | 42 | 网络锁定 (Network Lock):SIM 卡与当前运营商网络不匹配(如定制机插了竞品卡) |
| SIM_PROFILE_SWITCHING | 50 | --- 50-59: eSIM / vSIM (云卡/软卡) 特有状态 ---
[Profile 切换中]:eSIM 正在通过 OTA 方式下载或切换运营商 Profile (此时网络会短暂中断) |
| SIM_VSIM_AUTHENTICATING | 51 | [云卡鉴权中]:vSIM (无物理卡) 模式下,正在与云端 Seed 卡服务器进行鉴权并获取本地网络密钥 |
| SIM_ROAMING_RESTRICTED | 60 | --- 60-69: 漫游与网络策略状态 ---
[禁止漫游]:卡片开通了网络限制,设备处于漫游地,被运营商策略拦截无法入网 |
| SIM_TEST_PERIOD_EXPIRED | 61 | [测试期到期/沉默期到期]:物联网卡特有的生命周期。出厂测试流量耗尽,或静默期结束但未激活,导致的断网 |
SignatureTypeEnum
签名算法类型
| Name | Value | Description |
|---|
| SIGN_NONE | 0 | 默认:不签名 (用于调试或内网低安全环境) |
| SHA256 | 1 | 普通 SHA256 (仅做完整性校验,防数据损坏,不防篡改)
计算方式: sha256("tag=val&...") |
| HMAC_SHA256 | 2 | HMAC-SHA256 (完整性 + 身份认证,防篡改)
计算方式: hmac_sha256("tag=val&...", secret) |
| MD5 | 3 | MD5 (仅做完整性校验,防数据损坏,不防篡改) |
AlarmSeverityEnum
定义告警等级枚举
| Name | Value | Description |
|---|
| SEVERITY_UNKNOWN | 0 | |
| SEVERITY_LEVEL_1 | 1 | 1级 |
| SEVERITY_LEVEL_2 | 2 | 2级 |
| SEVERITY_LEVEL_3 | 3 | 3级 |
AlarmThresholdTypeEnum
告警阈值判定类型 (Alarm Threshold Type)
用于说明告警是如何被计算出来的。
| Name | Value | Description |
|---|
| THRESHOLD_TYPE_UNKNOWN | 0 | 未知类型 |
| THRESHOLD_TYPE_ABSOLUTE | 1 |
绝对值判定 (Absolute Threshold)
场景:温度超过 50°C,电压超过 250V。
逻辑:actual_value > limit_value (limit_value 是固定配置的)。 |
| THRESHOLD_TYPE_COEFFICIENT | 2 |
倍数/系数判定 (Coefficient/Multiple Threshold)
场景:电流超过 1.1 倍额定值。
逻辑:limit_value = rated_reference * parameter_snapshot (例如 10A * 1.1)。 |
| THRESHOLD_TYPE_PERCENTAGE | 3 |
百分比判定 (Percentage Threshold)
场景:电池电量低于 20%,或者电压波动超过额定值的 10%。
逻辑:通常用于表示相对偏移量。 |
ElectricalFaultTypeEnum
电气故障类型枚举
| Name | Value | Description |
|---|
| FAULT_TYPE_UNKNOWN | 0 | |
| OVER_VOLTAGE | 1 | --- 基础电压类 ---
适用:DC过压、AC火线过压 |
| UNDER_VOLTAGE | 2 | 适用:DC欠压、AC火线欠压 |
| VOLTAGE_LOST | 3 | 适用:市电停电 |
| OVER_CURRENT | 4 | --- 基础电流类 ---
适用:DC过流、AC过流 |
| LEAKAGE_CURRENT | 5 | 适用:漏电 (AC/DC 通用) |
| OVER_LOAD_POWER | 6 | --- 功率/负载类 ---
适用:整机过载、单通道过载 (强调功率 Power 超过限制) |
| LOAD_MISMATCH | 7 | 适用:负载不匹配 |
| OVER_TEMPERATURE | 8 | --- 温度/环境类 ---
适用:DC过温、AC火线过温、AC零线过温、环境过温 |
| PHASE_LOSS | 9 | --- 高级/波形类 (AC特有,但定义为通用类型) ---
适用:缺相 |
| FREQUENCY_ABNORMAL | 10 | 适用:频率异常 |
| ARC_FAULT | 11 | 适用:电弧故障 |
| AC_INPUT_ABNORMAL | 12 | 适用:交流供电异常 |
| AC_OUTPUT_ABNORMAL | 13 | 适用:交流输出异常 |
| DC_OUTPUT_ABNORMAL | 31 | --- 直流输出及电源模块类 (DC & Power Module) ---
适用:直流输出异常 |
| DC_SHORT_CIRCUIT | 32 | 适用:直流短路 (极度严重的故障,需区别于普通过流) |
| POLARITY_REVERSED | 33 | 适用:极性接反 (DC正负极接反,常见于直流接线故障) |
| RIPPLE_OVER_LIMIT | 34 | 适用:纹波过大 (DC滤波电容老化,导致输出直流质量差,影响精密元器件) |
| POWER_SUPPLY_INTERNAL_ERROR | 35 | 适用:电源模块内部故障 (如开关电源自身的控制芯片损坏、风扇故障) |
| SCOPE_LOGIC_POWER | 36 |
逻辑/芯片电源级 (Logic Power Rail)
范围:控制单元(MCU/CPU)、传感器供电轨(如 3.3V, 5V)。
影响:核心控制功能失效,可能导致设备频繁重启、死机或失去通信能力。 |
| DC_INPUT_ABNORMAL | 37 | 适用:直流输入异常 (针对设备通道供电源,如适配器、电池组、DC总线) |
| OPEN_CIRCUIT | 41 |
适用:运行中电流突然消失、线路断开、负载掉线
区别:它表示电路已经断开,电流“为 0”。 |
| UNDER_CURRENT | 51 |
适用:DC欠流、AC欠流,电流低于正常运行下限。
区别:它表示电路还是通的,只是电流“太小了”。 |
FaultScopeEnum
故障影响范围 (Fault Scope)
用于界定告警发生的物理或逻辑层级。
该字段决定了系统如何隔离故障以及在前端 UI 上如何展示受影响的区域。
| Name | Value | Description |
|---|
| SCOPE_UNKNOWN | 0 | 未知或未定义的范围,通常作为协议定义的默认占位符 |
| SCOPE_DEVICE | 1 | 设备级故障:影响整机全局逻辑或物理运行
场景:整机掉电、系统主进程崩溃、全局配置丢失 |
| SCOPE_MODULE | 2 | 模块级故障:故障局限在特定的硬件模块或扩展插卡内
场景:某个下挂 485 模块离线、板载电表模组通讯异常 |
| SCOPE_CHANNEL | 3 | 通道级故障:故障仅影响最末端的物理端口或逻辑采样通道
场景:某一路插座过流保护、某路传感器接线断路 |
| SCOPE_NETWORK_INTERFACE | 4 | 网络接口级故障:特指通信相关的物理或逻辑接口异常
场景:以太网口 (eth0) 网线拔出、Wi-Fi 模块天线损坏、4G 拨号失败 |
| SCOPE_SYSTEM_COMPONENT | 5 | 系统组件级故障:涉及主控核心计算资源相关的异常
场景:CPU 温度过高、内存 (RAM) 溢出、内部存储 (Flash) 分区损坏 |
InternalAlarmTypeEnum
本体告警类型 (Internal)
| Name | Value | Description |
|---|
| INTERNAL_ALARM_UNKNOWN | 0 | |
| INTERNAL_FUSE_BROKEN | 1 | 保险丝损坏 |
| INTERNAL_PT_FAULT | 2 | 电压互感器故障 |
| INTERNAL_CT_FAULT | 3 | 电流互感器故障 |
| INTERNAL_LEAKAGE_CT_FAULT | 4 | 漏电流互感器故障 |
| INTERNAL_WIRE_TEMP_SENSOR_FAULT | 5 | 线温传感器故障 |
| INTERNAL_COMM_MODULE_FAULT | 6 | 通信模块故障 |
| INTERNAL_POWER_MODULE_FAULT | 7 | 电源模块故障 |
| INTERNAL_LOCATION_MODULE_FAULT | 8 | 定位模块故障 |
NetworkAlarmTypeEnum
网络告警具体分类
| Name | Value | Description |
|---|
| NETWORK_ALARM_TYPE_UNSPECIFIED | 0 | [常规] 未指定的网络告警
场景:占位符或未知类型的网络异常。
表现:无法匹配到具体已知分类的告警类型。 |
| CONNECTION_DISCONNECTED | 1 | [常用] 连接断开 (TCP/MQTT)
场景:设备与云端或业务服务器的业务层链接断开。
表现:TCP socket 意外断开或 MQTT keep-alive 超时。 |
| POE_SWITCH_PORT_NO_DATA | 2 | [常用] POE交换机网口无数据传输
场景:设备与POE交换机的物理连接可能已建立(甚至已正常供电),但网口未进行任何有效的数据包收发。
表现:网口物理 Link 指示灯常亮但 Data 指示灯不闪烁,RX/TX 无流量统计,网络处于“假死”或链路层阻塞状态。 |
| NETWORK_INTERRUPTION | 3 | [常用] 网络中断 (WAN不可达)
场景:设备外网访问受阻,无法连接到互联网。
表现:外网 IP 无法 Ping 通或 HTTP 连通性探测连续失败。 |
| ETHERNET_LINK_DISCONNECTED | 11 | [常用] 网线物理状态(断开/连接)
场景:设备的以太网口网线被拔出,或重新插入。
表现:网口状态变为 No Carrier,物理层链路断开与恢复。 |
| GATEWAY_UNREACHABLE | 12 | [常用] 网关不可达
场景:设备在局域网内无法与默认网关进行通信。
表现:网关 IP 的 Ping 探测连续失败,ARP 可能无法解析。 |
| IP_ADDRESS_CONFLICT | 13 | [偶发] IP地址冲突
场景:局域网内存在两台或多台设备使用了相同的静态/动态 IP。
表现:系统底层检测到 ARP 冲突,导致网络时断时续或彻底无法通信。 |
| DNS_RESOLUTION_FAILURE | 14 | [常用] DNS解析异常
场景:设备需要访问域名,但配置的 DNS 服务器无响应或解析报错。
表现:Ping 域名失败,但 Ping 外网数字 IP 依然可达。 |
| DHCP_DISCOVERY_FAILURE | 15 | [常用] DHCP 获取失败
场景:网线插着/Wi-Fi连着,但路由器 IP 池耗尽或 DHCP 服务宕机。
表现:设备迟迟拿不到 IP,或者只能给自己分配 169.254.x.x。 |
| NO_VALID_ROUTE | 16 | [进阶] 路由表异常 / 无可用路由
场景:多网卡(4G+有线)路由表冲突,或 default gateway 路由记录丢失。
结果:设备有 IP,但数据包不知道往哪发,无法路由出网。 |
| INTERFACE_HARDWARE_FAULT | 17 | [常用] 网卡/模组硬件故障 (驱动级消失)
场景:Linux下 eth0 或 wlan0 等网络接口节点直接消失。
原因:USB 4G模组死机掉线、PCIe网卡过热保护、驱动 Crash(属于设备级故障而非单纯断网)。 |
| LINK_SPEED_DEGRADATION | 20 | 性能/质量指标类 (对应 MultiLevelAlarmConfig)
[性能] 链路降速
场景:有线协商速率从千兆降为百/十兆,或蜂窝网络从4G回落为2G。
表现:网络带宽严重受限,传输速度达不到业务预期。 |
| LATENCY_HIGH | 21 | [性能] 网络高延迟
场景:当前网络物理链路拥堵或信号质量变差。
表现:Ping 延迟飙升,超过了业务设定的容忍阈值。 |
| PACKET_LOSS_HIGH | 22 | [性能] 网络高丢包
场景:物理链路质量恶化、存在电磁干扰或中间节点严重拥塞。
表现:数据包大量重传,ICMP 探测丢包率超过告警阈值。 |
| WIRELESS_SIGNAL_LOW | 23 | [性能] 无线信号差
场景:设备移动到信号盲区、天线松动或距离基站/路由器过远。
表现:RSSI/RSRP 等信号强度指标低于设定下限,极易触发断网。 |
| WIFI_AUTH_FAILURE | 24 | [极高频] Wi-Fi 密码错误或认证被拒
场景:SSID正确且信号满格,但密码被人修改,或企业级路由器加入了 MAC 白名单限制。
表现:设备持续尝试连接,但在认证阶段被 AP 拒绝,无法成功关联。 |
| SIM_CARD_ERROR | 25 | [极高频] SIM 卡异常 (硬件级)
场景:SIM卡未插紧、接触不良、SIM卡损坏,或者 PIN 码被锁。
表现:模组无法读取到 SIM 卡,执行 AT+CPIN? 等指令直接报错。 |
| CELLULAR_NETWORK_DENIED | 26 | [极高频] 蜂窝网络注网被拒 / 拨号失败
场景:SIM卡欠费停机、物联网卡被锁卡/机卡绑定受限、APN配置错误。
特点:信号很好,但基站拒绝你接入,或者驻留基站成功但获取不到数据承载(PDP激活失败)。 |
| DATA_QUOTA_EXCEEDED | 27 | [可选] 流量超额预警/熔断
场景:结合本地流量统计模块,评估到边缘网关的 4G 流量即将超标。
结果:触发断网保护前的预警,或主动阻断业务以避免产生高额资费。 |
| TLS_HANDSHAKE_FAILURE | 31 | [极高频] TLS/SSL 握手失败
场景:设备RTC电池没电导致时间回到1970年使证书"未生效",或内置根证书(Root CA)太老被吊销。
结果:Ping得通、TCP连得上,但 MQTT/HTTPS 死活连不上,极具隐蔽性。 |
| POE_NEGOTIATION_FAILURE | 32 | [供电] PoE 供电协商失败
场景:设备(PD)请求的功率等级(Class)高于交换机(PSE)能提供的上限。例如设备需要 802.3at(30W),但供电端只支持 802.3af(15W)。
表现:网线连接正常,但 PoE 握手失败,对端设备无法上电启动或降级运行。 |
| POE_PORT_OVERLOAD_OR_SHORT | 33 | [供电] PoE 端口过载/短路 (Over-Current / Short-Circuit)
场景:网线内部短路、接头进水,或对端设备硬件故障导致抽取电流远超标准阈值。
表现:PoE 控制芯片触发硬件级保护,强制切断该网口的供电输出,网络随之中断。 |
| POE_TOTAL_BUDGET_EXCEEDED | 34 | [供电] PoE 总功率不足 (Power Budget Exceeded)
场景:主要用于设备作为 PSE (供电交换机/网关) 时,接入的终端总功率超过了电源适配器的总负荷。
表现:为了保护系统,PoE 控制器根据优先级拒绝为新插入的设备供电,或随机断开低优先级端口。 |
| POE_VOLTAGE_ABNORMAL | 35 | [供电] PoE 供电电压异常
场景:供电端输出的电压跌落(例如低于 44V)或输入波动过大。
表现:设备可能会频繁重启,或者在功耗变大(如开启红外灯/高负载计算)时网络瞬间掉线。 |
PeripheralAlarmTypeEnum
外设告警类型 (Peripheral)
| Name | Value | Description |
|---|
| PERIPHERAL_ALARM_UNKNOWN | 0 | |
| PERIPHERAL_ENV_TEMP_OVERHEAT | 1 | --- 环境类 ---
环境温度过温 |
| PERIPHERAL_ENV_HUMIDITY_ABNORMAL | 2 | 环境湿度异常 |
| PERIPHERAL_WATER_LEAK | 3 | --- 状态提醒类 ---
进水/水浸提醒 |
| PERIPHERAL_TILT | 4 | 倾斜提醒 |
| PERIPHERAL_VIBRATION | 5 | 振动提醒 |
| PERIPHERAL_ILLEGAL_DOOR_OPEN | 6 | 非法开门 |
| PERIPHERAL_LIGHT_COMPENSATION_FAULT | 7 | --- 设备故障类 ---
补光异常 |
| PERIPHERAL_LIGHTNING_PROTECTION_FAULT | 8 | 防雷异常 |
| PERIPHERAL_SIGNAL_LIGHT_FAULT | 9 | 信号灯异常 |
| PERIPHERAL_RADAR_FAILURE | 10 | 雷达失效 |
NodeTypeEnum
| Name | Value | Description |
|---|
| NODE_TYPE_UNKNOWN | 0 | |
| NODE_TYPE_INPUT | 1 | --- 电源入口 ---
总输入 (Mains/Input)
场景:PDU的电源插头、配电柜的主路进线 |
| NODE_TYPE_MODULE | 2 | --- 配电层级 ---
模块 (Module)
场景:模块化PDU中的可插拔模块、通信电源的整流模块、UPS的功率模块 |
| NODE_TYPE_BUS | 3 | 母线/汇流排 (Bus/Rail)
场景:直流电源系统的直流母线(总输出点)、内部汇流排 |
| NODE_TYPE_BANK | 4 | 分组/支路 (Bank/Branch/Circuit)
场景:PDU上的 Bank (通常一组插座对应一个断路器)、配电柜的支路开关
这是一个非常关键的层级,通常包含断路器(Breaker)状态 |
| NODE_TYPE_OUTLET | 5 | --- 终端/输出层级 ---
物理插座/输出口 (Outlet/Socket)
场景:设备最终连接的 C13/C19 插孔、接线端子 |
| NODE_TYPE_SENSOR | 6 | --- 辅助设备 ---
环境传感器 (Sensor/Probe)
场景:挂在 PDU 上的温湿度探头、门禁、水浸传感器
它们也是下挂在设备下的节点 |
PhaseTypeEnum
相线类型枚举
| Name | Value | Description |
|---|
| PHASE_TYPE_UNSPECIFIED | 0 | 默认未知 |
| PHASE_A | 1 | A相 |
| PHASE_B | 2 | B相 |
| PHASE_C | 3 | C相 (三相电通常包含C相) |
| PHASE_L | 4 | 火线 (单相电 Line) |
| PHASE_N | 5 | 零线 (Neutral) |
| PHASE_PE | 6 | 地线 (Protect Earth) |
| PHASE_DC_POSITIVE | 7 | 直流正极 |
| PHASE_DC_NEGATIVE | 8 | 直流负极 |
PowerSupplySourceEnum
供电来源/供电模式
| Name | Value | Description |
|---|
| POWER_SOURCE_MAINS | 0 | 市电/电网 |
| POWER_SOURCE_BATTERY | 1 | 电池供电 |
| POWER_SOURCE_UPS | 2 | UPS供电 |
| POWER_SOURCE_POE | 3 | POE供电 |
| POWER_SOURCE_GENERATOR | 4 | 柴油发电机 |
| POWER_SOURCE_SOLAR | 5 | 太阳能/光伏 |
PowerTypeEnum
电源或电流性质:明确是直流、交流还是交直流通用
| Name | Value | Description |
|---|
| POWER_TYPE_UNSPECIFIED | 0 | Protobuf 规定枚举第 0 值必须是 UNSPECIFIED,防止字段未赋值时的歧义 |
| POWER_TYPE_DC | 1 | 直流 (Direct Current) |
| POWER_TYPE_AC | 2 | 交流 (Alternating Current) |
| POWER_TYPE_AC_DC | 3 | 交直流通用 (AC/DC Universal) |
VoltageLevelEnum
仅代表电压等级,不包含电流性质
| Name | Value | Description |
|---|
| VOLTAGE_LEVEL_UNSPECIFIED | 0 | |
| VOLTAGE_5V | 1 | 低压区 (通常用于弱电/控制) |
| VOLTAGE_12V | 2 | |
| VOLTAGE_24V | 3 | |
| VOLTAGE_36V | 4 | |
| VOLTAGE_48V | 5 | |
| VOLTAGE_110V | 20 | 高压区 (通常用于强电/供电) |
| VOLTAGE_220V | 21 | |
| VOLTAGE_380V | 22 | |
| VOLTAGE_CUSTOM | 999 | 特殊/自定义 (为未来扩展留口子) |
AlarmRuntimeContextMessage
告警运行时上下文 (通用快照)
适用于:电气、网络、环境、外设等所有类型的告警
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| level | level | com.nexus.service.proto.enums.AlarmSeverity | optional | --- 基础状态 ---
报警等级 (1, 2, 3) |
| action | action | com.nexus.service.proto.enums.AlarmAction | optional | 动作 (TRIGGER 触发 / RECOVER 恢复) |
| threshold_type | threshold_type | com.nexus.service.proto.enums.AlarmThresholdType | optional | --- 判定逻辑 ---
阈值判定类型:区分是绝对值、倍数还是百分比
作用:决定了 parameter_snapshot 的物理含义 |
| actual_value | actual_value | float | optional | --- 核心数值 (事实真相) ---
核心数值 (事实真相)
触发告警时的【实际采样值】
例如:虽然限值是11A,但实际电流可能瞬间飙升到了 15.5A
对于"市电停电"等状态型告警,此值可为 0 或空 |
| limit_value | limit_value | float | optional | 触发告警时的【生效阈值】 (计算后的绝对值)
重点:如果配置是"1.1倍",设备端需在此处计算出 "10A * 1.1 = 11A" 并上报 11.0
这样云端不需要再去查配置表就能直接展示 "限值: 11A" |
| rated_reference_snapshot | rated_reference_snapshot | float | optional | --- 追溯快照 ---
上下文快照 (用于追溯和UI展示)
【额定参考值快照】
上报当时的额定值配置 (如 10A, 2500W, 220V)
作用:前端展示"额定值 10A"的依据,防止配置修改后历史告警数据费解 |
| parameter_snapshot | parameter_snapshot | float | optional | 【倍数/参数快照】
如果是基于倍数触发,上报 1.1;如果是绝对值触发,传 1.0 |
| duration_ms | duration_ms | uint64 | optional | --- 辅助信息 ---
持续时间 (ms) - 仅在 action = RECOVER 时有效 |
| description | description | string | optional | (可选) 故障简述文本,用于日志直接打印
e.g. "Current 15.5A > Limit 11.0A" |
Nested Enums defined inAlarmRuntimeContext
PeripheralAlarmPayloadMessage
外设告警具体业务数据
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| sensor_type | sensor_type | PeripheralSensorType | optional | 外设传感器类型 (必须) |
| state | state | com.nexus.service.proto.enums.ComponentStatus | optional | 外设具体状态语义 (主要针对开关量/状态型传感器:如门磁、水浸、烟感)
模拟量(温度等)告警通常不填此项,而是依赖 AlarmRuntimeContext 的 actual_value 和 limit_value |
| sub_address | sub_address | int32 | optional | 级联/总线子地址 (可选)
例如:如果接口是 RS485-1,且总线上挂了3个温湿度传感器,这里填 Modbus Slave ID (如 1, 2, 3)
如果是直连的 DI 端口,此项可不填 |
| trigger_source | trigger_source | TriggerSource | optional | 触发归因 |
| operate_user_id | operate_user_id | string | optional | 操作人ID |
Nested Enums defined inPeripheralAlarmPayload
PeripheralSensorTypeEnum
传感器类型枚举
| Name | Value | Description |
|---|
| SENSOR_TYPE_UNSPECIFIED | 0 | |
| SENSOR_TYPE_TEMPERATURE | 1 | 温度 |
| SENSOR_TYPE_HUMIDITY | 2 | 湿度 |
| SENSOR_TYPE_DOOR_CONTACT | 3 | 门磁 (防盗/机柜门) |
| SENSOR_TYPE_VIBRATION | 4 | 震动 |
| SENSOR_TYPE_WATER_LEAK | 5 | 水浸 |
| SENSOR_TYPE_SMOKE | 6 | 烟感 |
TriggerSourceEnum
触发来源
| Name | Value | Description |
|---|
| TRIGGER_SOURCE_UNSPECIFIED | 0 | 未指定 |
| TRIGGER_SOURCE_INSTRUCTION | 1 | 指令下发 (App/后台远程开锁) |
| TRIGGER_SOURCE_PHYSICAL_KEY | 2 | 物理操作 (钥匙/刷卡/本地按钮) |
| TRIGGER_SOURCE_VIOLENT | 3 | 暴力触发 (撬锁、非法闯入) |
| TRIGGER_SOURCE_EXTERNAL_FORCE | 4 | 外力影响 (非开门,仅是震动或碰撞) |
BackupPowerSnapshotMessage
--- 备用电源/停电上下文快照 ---
Nested Enums defined inBackupPowerSnapshot
ElectricalAlarmPayloadMessage
电气电能报警事件
Nested Enums defined inElectricalAlarmPayload
AlarmTargetLocatorMessage
万能告警目标定位器
Nested Enums defined inAlarmTargetLocator
EventMessage
最小粒度的原子业务事件,包含元数据和具体负载。
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| timestamp | timestamp | int64 | optional | 事件实际发生的物理时间戳(业务时间,即“事实真相”)。 |
| context | context | AlarmRuntimeContext | optional | 告警运行时数据 |
| locator | locator | AlarmTargetLocator | optional | 公共元数据:万能故障定位器 (明确指出是哪个层级、哪个模块、哪个通道出问题) |
| event_id | event_id | string | optional |
原子事件的全局唯一标识(Business Event ID)。
【核心作用与场景】:
1. 业务去重(幂等性保障):在弱网环境下,设备可能会因为未收到云端 ACK 而重传报文(如 MQTT QoS 1)。
后端服务(如 Flink 流计算、时序数据库)依靠此 ID 进行精准去重,防止同一条告警/事件被重复处理或重复入库。
2. 微服务链路追踪(拆包后凭证):外层的 EventReport.message_id 用于记录“单次网络请求”,
当 EventReport 在云端网关被拆分成多个独立的 Event 并派发到不同的微服务(或 Kafka Topic)后,
此 event_id 将作为该业务事件的独立“身份证”,用于跨服务的日志聚合与工单溯源。
3. 防丢包/断点续传:云端目前收到了 event_id = 100,下一秒收到了 105,那么云端立刻就知道:设备到云端丢失了 101~104 这四个关键事件!
这时云端可以下发指令:“请把 101~104 重传一遍”。这在对可靠性要求极高的工业 IoT 场景非常常见。
【设备端生成建议(适配 nanopb 弱算力)】:
为了节省 MCU 算力,不强制要求生成标准的 36 字节 UUID。 |
| electrical_alarm_payload | electrical_alarm_payload | ElectricalAlarmPayload | | 电气电能告警 |
| performance_alarm_payload | performance_alarm_payload | PerformanceAlarmPayload | | 本体告警
com.nexus.service.proto.event.InternalAlarmEvent internal_alarm_event = 12;
性能告警 |
| peripheral_alarm_payload | peripheral_alarm_payload | PeripheralAlarmPayload | | 外设告警 |
| network_alarm_payload | network_alarm_payload | NetworkAlarmPayload | | 网络告警 |
Nested Enums defined inEvent
EventReportMessage
批量事件上报容器,用于减少网络交互并支持断点续传。
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| message_id | message_id | string | optional | 全链路追踪ID,用于串联后端多层服务的日志。 |
| gateway_id | gateway_id | string | optional | 代理网关ID,直连设备留空。 |
| events | events | Event | repeated | 原子事件列表,支持批量打包发送。 |
Nested Enums defined inEventReport
EventPayloadTypeEnum
事件负载类型枚举,与 Event 消息中的 oneof payload 字段一一对应。
用于在不解析具体 payload 内容的情况下,快速识别事件类别或进行路由过滤。
| Name | Value | Description |
|---|
| EVENT_PAYLOAD_TYPE_UNSPECIFIED | 0 | Protobuf 枚举建议以 UNSPECIFIED 或 UNKNOWN 开头,值为 0 |
| EVENT_PAYLOAD_TYPE_ELECTRICAL_ALARM | 1 | 电气电能告警 (对应 electrical_alarm_payload) |
| EVENT_PAYLOAD_TYPE_INTERNAL_ALARM | 2 | 本体告警 (对应 internal_alarm_event,虽然目前注释掉了,建议预留) |
| EVENT_PAYLOAD_TYPE_PERFORMANCE_ALARM | 3 | 性能告警 (对应 performance_alarm_payload) |
| EVENT_PAYLOAD_TYPE_PERIPHERAL_ALARM | 4 | 外设告警 (对应 peripheral_alarm_payload) |
| EVENT_PAYLOAD_TYPE_NETWORK_ALARM | 5 | 网络告警 (对应 network_alarm_payload) |
BaseNetworkInfoMessage
基础与通用指标
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| interface_name | interface_name | string | optional | [作用] 操作系统底层的网卡接口名
[场景] 设备有多网卡时,区分是 eth0(有线)、wlan0(Wi-Fi) 还是 ppp0/usb0(4G/5G模块) 掉线。 |
| interface_alias | interface_alias | string | optional | [作用] 业务层给网卡起的别名
[场景] 用于业务日志或UI展示,例如:"WAN口", "LAN1", "内部IPC通信网卡"。 |
| local_ip | local_ip | string | optional | [作用] 本机发生告警时的 IP 地址
[场景] 检查设备是否成功通过 DHCP 获取到了有效 IP(如出现 169.254.x.x 说明 DHCP 失败)。 |
| current_latency_ms | current_latency_ms | int32 | optional | [作用] 到网关或公网测试点(如 114.114.114.114)的 Ping 延迟 (毫秒)
[场景] 业务超时断连时,上报当前的延迟数值,排查是否因为网络拥堵导致。 |
| current_packet_loss_rate | current_packet_loss_rate | float | optional | [作用] 当前的丢包率 (建议用小数,如 0.15 表示 15%)
[场景] 视频流卡顿、花屏时上报,通常丢包率 > 5% 业务就会受严重影响。 |
Nested Enums defined inBaseNetworkInfo
ConnectionDiagnosticInfoMessage
应用连接诊断
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| target_address | target_address | string | optional | [作用] 尝试建立连接的目标 IP 或域名
[场景] 明确设备当下具体在连哪个节点失败了(如连主服失败还是备服失败,亦或流媒体节点不通)。 |
| target_port | target_port | int32 | optional | [作用] 目标服务的端口号
[场景] 配合目标 IP 使用,排查现场防火墙/路由器策略是否恶意封堵了特定的业务端口(如封杀了 1883 端口)。 |
| protocol | protocol | string | optional | [作用] 应用层或传输层使用的通信协议标识
[场景] 填 "TCP", "UDP", "MQTT", "HTTP"。不同协议排查方向不同,UDP大面积丢包可能是QoS限制,TCP多为防火墙拦截。 |
| system_errno | system_errno | int32 | optional | [作用] 操作系统底层的 C 标准错误码 ()
[场景] 精准定位 Socket 级断开原因,如 110(ETIMEDOUT)是建连超时,111(ECONNREFUSED)是服务端没开,104(ECONNRESET)是被网关强制切断。 |
Nested Enums defined inConnectionDiagnosticInfo
DnsDiagnosticInfoMessage
DNS 解析诊断
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| failed_domain | failed_domain | string | optional | [作用] 导致解析失败的具体域名
[场景] 业务无法连通时,排查是某个特定业务域名拼写错误、被劫持,还是整个网络的 DNS 瘫痪。 |
| current_dns_server | current_dns_server | string | optional | [作用] 设备当前正在请求的 DNS 服务器地址 (如 8.8.8.8)
[场景] 发现 DNS 解析超时时,检查是否被分配了无法访问的内网 DNS,或者当地运营商的 DNS 节点挂了。 |
| error_code | error_code | string | optional | [作用] DNS 解析的具体错误码或字符串简述
[场景] 排查原因,如 "NXDOMAIN"(域名不存在/被注销)、"TIMEOUT"(DNS服务器无响应/被防火墙拦截)。 |
Nested Enums defined inDnsDiagnosticInfo
LocalNetworkDiagnosticInfoMessage
局域网与路由诊断
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| gateway_ip | gateway_ip | string | optional | [作用] 当前网络配置下的默认网关 IP 地址
[场景] 若无法 ping 通外网,检查网关 IP 是否为空(DHCP失败),或是否能 ping 通网关以界定是内外网问题。 |
| gateway_mac | gateway_mac | string | optional | [作用] 当前系统缓存中(ARP表)网关的物理 MAC 地址
[场景] 局域网异常时,排查是否发生了“ARP 欺骗”或存在同 IP 的私接路由器冒充网关导致流量被劫持。 |
| conflicting_ip | conflicting_ip | string | optional | [作用] 局域网内检测到与本机发生冲突的 IP 地址
[场景] 静态 IP 配置错误或 DHCP 池异常导致两台设备分到相同 IP,引起网络时断时续。 |
| conflicting_mac | conflicting_mac | string | optional | [作用] 抢占本机 IP 的另一台非法/冲突设备的 MAC 地址
[场景] 提供给现场网络管理员,用于在交换机后台精准定位并封禁该非法设备的物理端口。 |
Nested Enums defined inLocalNetworkDiagnosticInfo
NetworkAlarmPayloadMessage
网络告警业务负载
Nested Enums defined inNetworkAlarmPayload
NetworkDiagnosticInfoMessage
顶层网络诊断信息 (按层分类归纳)
Nested Enums defined inNetworkDiagnosticInfo
PingMetricsSnapshotMessage
== Ping 任务专属快照指标 ==
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| transmitted_packets | transmitted_packets | int32 | optional | 发送包数 (通常就是触发告警前那一轮的发送数量) |
| received_packets | received_packets | int32 | optional | 接收包数 |
| packet_loss_rate | packet_loss_rate | double | optional | 丢包率 (百分比,例如 100.0 表示全丢,50.0 表示丢一半) |
| min_rtt_ms | min_rtt_ms | double | optional | 延时指标 (毫秒) - 如果 100% 丢包,这些值可能为空或为 0 |
| avg_rtt_ms | avg_rtt_ms | double | optional | 平均延时 (毫秒) |
| max_rtt_ms | max_rtt_ms | double | optional | 最大延时 (毫秒) |
| jitter_ms | jitter_ms | double | optional | 抖动 (Jitter) - 诊断网络稳定性的重要指标 |
Nested Enums defined inPingMetricsSnapshot
SecurityDiagnosticInfoMessage
安全与认证诊断
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| tls_error_code | tls_error_code | int32 | optional | [作用] mbedtls/openssl 等底层加密库抛出的错误码
[场景] TCP 连通但 MQTT/HTTPS 失败时,通过此码查明是因为证书不受信任、根证书缺失、还是加密套件不匹配。 |
| current_system_time | current_system_time | int64 | optional | [作用] 设备当前的系统 UNIX 时间戳
[场景] 大量 TLS 握手失败往往是因为设备断电重启后 NTP 未同步,时间停留在 1970 年,导致系统认为服务端证书“未生效”。 |
Nested Enums defined inSecurityDiagnosticInfo
TaskExecutionSnapshotMessage
== 任务执行快照 (统一外壳) ==
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| task_id | task_id | string | optional | 任务基础信息映射
触发告警的任务 ID (对应 PingTask.id) |
| task_type | task_type | com.nexus.service.proto.enums.network.MonitorTaskType | optional | 任务类型 (显式区分是 Ping、HTTP 还是 TCP 拨测)
例如: "PING", "HTTP_GET" |
| configured_target | configured_target | com.nexus.service.proto.config.TargetEndpoint | optional | 目标快照 (直接复用已有的 TargetEndpoint 定义)
为什么要在快照里再存一份?因为拓扑(Topology)对应的实际 IP 可能会变,必须记录告警发生"那一刻"的实际目标 |
| resolved_ip_address | resolved_ip_address | string | optional | [关键] 记录当时实际解析出并进行探测的底层 IP 地址 (非常重要,尤其是域名或拓扑反查场景) |
| error_code | error_code | int32 | optional | 通用执行状态
告警发生时的错误码 (如 0-正常, 1-DNS解析失败, 2-连接超时等系统级错误) |
| error_message | error_message | string | optional | 告警发生时的简明错误信息 (如 "Connection Timed Out") |
| current_retry_attempt | current_retry_attempt | int32 | optional | 记录告警发生时,任务处于第几次重试 (对应 PingTask.retry_count) |
| result_metrics | result_metrics | TaskResultMetrics | optional | 具体任务的指标快照 |
Nested Enums defined inTaskExecutionSnapshot
TaskResultMetricsMessage
== 统一任务指标容器 ==
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| ping | ping | PingMetricsSnapshot | optional | 未来可无缝扩展:
HttpMetricsSnapshot http = 2;
TcpMetricsSnapshot tcp = 3; |
Nested Enums defined inTaskResultMetrics
WifiDiagnosticInfoMessage
Wi-Fi 专用诊断
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| ssid | ssid | string | optional | [作用] 当前连接或尝试连接的 Wi-Fi 名称 (SSID)
[场景] 设备断网时排查是否连错了热点,或者现场修改了路由器名字导致设备连不上。 |
| wifi_channel | wifi_channel | int32 | optional | [作用] 当前 Wi-Fi 工作的物理信道
[场景] 结合周围热点情况,判断是否因为信道拥堵(如 2.4G 的 1, 6, 11 信道重叠冲突)导致网络卡顿或频繁掉线。 |
| rssi | rssi | int32 | optional | [作用] Wi-Fi 接收信号强度指示 (dBm)
[场景] 值一般在 -30 到 -90 之间。低于 -75dBm 通常导致丢包,低于 -85dBm 极易断连,提示客户缩短距离或加装 AP。 |
Nested Enums defined inWifiDiagnosticInfo
HeartbeatRequestMessage
心跳请求消息
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| rsrp | rsrp | sint32 | optional | 手机信号格-接收信号强度指示
电池电量
optional uint32 battery_percent = 2; |
Nested Enums defined inHeartbeatRequest
HeartbeatResponseMessage
心跳响应消息
Nested Enums defined inHeartbeatResponse
LogUploadProgressReportMessage
@message LogUploadProgressReport
@brief 设备 -> 服务器:在后台上传过程中【异步上报】的进度和最终结果。
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| transaction_id | transaction_id | string | | 必须与原始 LogUploadRequest 中的 transaction_id 保持一致 |
| upload_status | upload_status | LogUploadProgressReport.UploadStatus | | |
| progress_percentage | progress_percentage | int32 | | 上传进度百分比 (0-100)
仅在 upload_status 为 UPLOADING 时有意义 |
| error_details | error_details | string | | 可选的、人类可读的错误详情,用于诊断失败原因。
例如,当 upload_status 为 FAILED_SERVER_ERROR 时, details 可以是 "HTTP PUT returned status 403 Forbidden." |
Nested Enums defined inLogUploadProgressReport
LogUploadRequestMessage
@message LogUploadRequest
@brief 服务器 -> 设备:请求设备上传指定的日志文件。
这通常由一个 CommandRequest 触发,或者直接包含在 WrapperMessage 中。
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| transaction_id | transaction_id | string | | 唯一的事务ID,用于将后续的响应和进度报告与此请求关联起来 |
| log_types | log_types | LogUploadRequest.LogType | repeated | 请求上传的日志类型列表,允许一次请求多种日志 |
| start_time | start_time | int64 | | 请求的日志时间范围 (Unix-timestamp, 单位秒)
0 表示不限制 |
| end_time | end_time | int64 | | |
| destination | destination | UploadDestination | | 服务器提供的上传目的地信息 |
Nested Enums defined inLogUploadRequest
LogUploadResponseMessage
@message LogUploadResponse
@brief 设备 -> 服务器:对 LogUploadRequest 的【立即同步响应】。
这个响应仅表示设备是否已接受上传任务,并不代表上传已完成。
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| transaction_id | transaction_id | string | | 必须与收到的 LogUploadRequest 中的 transaction_id 保持一致 |
| status | status | LogUploadResponse.Status | | |
| message | message | string | | 可选的、人类可读的附加信息,主要用于调试。
例如,当 status 为 REJECTED_INVALID_PARAMS 时,message 可以是 "End time cannot be earlier than start time." |
Nested Enums defined inLogUploadResponse
UploadDestinationMessage
@message UploadDestination
@brief 描述日志文件应该被上传到哪里。
Nested Enums defined inUploadDestination
UploadStatusEnum
上传的整体状态
| Name | Value | Description |
|---|
| UPLOAD_STATUS_UNSPECIFIED | 0 | |
| PREPARING | 1 | 准备中 (例如正在压缩日志文件) |
| UPLOADING | 2 | 上传中 |
| COMPLETED_SUCCESS | 3 | 全部成功完成 |
| FAILED_PREPARATION | 4 | 准备阶段失败 (例如压缩失败) |
| FAILED_CONNECTION | 5 | 上传失败:网络连接问题 |
| FAILED_TIMEOUT | 6 | 上传失败:超时 |
| FAILED_SERVER_ERROR | 7 | 上传失败:服务器返回错误 (例如 4xx, 5xx 状态码) |
| FAILED_INTERNAL | 8 | 上传失败:设备内部其他错误 |
LogTypeEnum
要上传的日志类型
| Name | Value | Description |
|---|
| LOG_TYPE_UNSPECIFIED | 0 | |
| SYSTEM | 1 | 系统日志 (dmesg, journalctl) |
| APPLICATION | 2 | 应用主程序日志 |
| MODEM | 3 | 蜂窝模组日志 |
| SECURITY | 4 | 安全相关日志 |
StatusEnum
响应状态码,告知服务器任务是否已被接受
| Name | Value | Description |
|---|
| STATUS_UNSPECIFIED | 0 | |
| ACCEPTED | 1 | 成功接受任务,设备将很快在后台开始上传流程 |
| REJECTED_BUSY | 2 | 拒绝:设备正忙于其他高优先级任务 (例如正在 OTA) |
| REJECTED_INVALID_PARAMS | 3 | 拒绝:请求的参数无效 (例如时间范围不合法) |
| REJECTED_NOT_FOUND | 4 | 拒绝:请求的日志文件不存在 |
| ERROR_INTERNAL | 5 | 内部错误:设备发生内部错误,无法处理该请求 |
UploadMethodEnum
| Name | Value | Description |
|---|
| METHOD_UNSPECIFIED | 0 | |
| HTTP_PUT | 1 | 使用 HTTP PUT 方法上传 |
| FTP_PUT | 2 | 使用 FTP PUT 方法上传 |
LoginRequestMessage
登录请求消息
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| product_model | product_model | string | optional | --- 身份标识 ---
产品Key,标识设备品类,用于映射物模型。设备认证时必填。 |
| username | username | string | optional | 用户名。用户登录时必填。 |
| auth_method | auth_method | enums.AuthMethod | optional | --- 认证信息 --- |
| credential | credential | string | optional | 凭证内容。
如果 auth_method = PASSWORD, 此处为密码。
如果 auth_method = SIGNATURE, 此处为计算出的签名。 |
| client_version | client_version | string | optional | 客户端固件/SDK 版本号 |
| client_version_code | client_version_code | uint32 | optional | |
Nested Enums defined inLoginRequest
LoginResponseMessage
登录响应消息
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| code | code | enums.AuthStatus | optional | 响应状态码 |
| message | message | string | optional | 响应消息, 如 "认证成功" 或 "Token无效" |
| access_token | access_token | string | optional | 鉴权令牌 (登录成功时必填)
后续心跳或业务请求需在 WrapperMessage 头部或 payload 中携带此 Token |
| expires_in | expires_in | int32 | optional | Token 有效期 (秒)
设备端可根据此时间提前发起刷新 Token 或重新登录 |
Nested Enums defined inLoginResponse
OtaConfigMessage
OTA 静态策略配置
通常作为设备的“属性 (Property)”下发并持久化存储。
作用:控制设备在没有收到具体升级任务时的行为模式(如是否主动询问、何时允许重启)。
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| auto_check_update | auto_check_update | bool | |
自动检查更新开关
控制设备是采用“主动拉取 (Pull)”还是“被动接收 (Push)”模式。
- true: 开启 Pull 模式。设备按照 check_interval_minutes 周期性请求服务端。
- false: 开启 Push 模式 (推荐)。设备保持静默,完全依赖服务端下发 OtaUpgradeNotification。
场景:流量敏感型设备(如 NB-IoT/4G)建议设为 false 以节省资费;Wi-Fi 宽带设备可设为 true。 |
| check_interval_minutes | check_interval_minutes | int32 | |
轮询检查周期 (单位: 分钟)
仅当 auto_check_update = true 时生效。
建议值:1440 (24小时) 或 720 (12小时)。
警告:设置过短(如 < 60分钟)会导致服务端并发压力过大,且消耗设备电量和流量。 |
| allowed_update_window | allowed_update_window | string | |
允许升级的时间窗口 (静默安装策略)
格式示例:"02:00-05:00" (24小时制)。
作用:避开业务高峰期,防止设备在关键时刻重启。
逻辑:
1. 设备可以在任意时间下载固件(后台下载)。
2. 下载完成后,必须等待当前时间进入该窗口范围,才执行“安装”和“重启”动作。
场景:防止 POS 机在白天结账时重启,或智能路灯在晚上亮灯时断电升级。 |
Nested Enums defined inOtaConfig
OtaJobMessage
简易升级指令
这是一个轻量级的升级对象,通常用于老旧设备兼容,或非标准流程的测试指令。
注意:在复杂场景下(如包含分片传输、多模块校验),请使用 OtaUpgradeNotification。
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| version | version | string | |
目标版本号
用于显示或简单的版本比对 (String 比较)。 |
| download_url | download_url | string | |
固件下载地址
通常是 HTTP/HTTPS 的 CDN 链接。 |
| checksum | checksum | string | |
文件校验值 (Checksum)
通常为 MD5 或 SHA256 字符串。
作用:防止文件在传输过程中损坏,或被中间人劫持篡改。 |
| file_size | file_size | int32 | |
文件大小 (字节)
作用:设备在下载前进行“磁盘空间预检”。
如果 (剩余空间 < file_size * 2),设备应直接报错拒绝,避免下载完无法安装。 |
| force_update | force_update | bool | |
强制升级开关
- true: 忽略 OtaConfig 中的 allowed_update_window 时间窗口限制,下载完立即重启安装。
- false: 遵循时间窗口策略。
场景:当遇到严重安全漏洞或导致业务瘫痪的 Bug 时,需置为 true。 |
Nested Enums defined inOtaJob
ChecksumAlgorithmEnum
完整性校验算法
用于验证下载后的固件文件是否完整、是否被篡改。
| Name | Value | Description |
|---|
| ALG_SHA256 | 0 |
SHA-256 (推荐标准)
安全性高,碰撞概率极低,适用于绝大多数现代 IoT 设备。 |
| ALG_MD5 | 1 |
MD5 (兼容旧设备)
安全性较低。仅在算力极弱的老旧 8 位/16 位单片机,或为了兼容旧存量设备时使用。 |
OtaErrorCodeEnum
错误码
| Name | Value | Description |
|---|
| ERR_NONE | 0 |
无错误 |
| ERR_DOWNLOAD_TIMEOUT | 1001 |
下载超时
原因:网络不稳定、CDN 无法访问或 TCP 连接频繁中断。 |
| ERR_CHECKSUM_MISMATCH | 1002 |
校验失败
原因:文件下载不完整、被中间人篡改或存储介质损坏导致 Hash 不匹配。 |
| ERR_STORAGE_NOT_ENOUGH | 1003 |
存储空间不足
原因:设备剩余磁盘空间无法容纳新的固件包(通常需要 2 倍包大小用于解压/备份)。 |
| ERR_INSTALL_FAILED | 1004 |
安装失败
原因:解压失败、分区写入错误、安装脚本执行报错或 Bootloader 拒绝引导。 |
| ERR_VERSION_ROLLBACK | 1005 |
版本回退拦截
原因:安全策略限制,试图升级一个比当前版本更旧的固件(防降级)。 |
| ERR_CHUNK_MISSING | 1006 |
分片丢失 (TCP流式特有)
原因:在流式传输过程中,检测到分片索引乱序或丢失,且重传失败。 |
OtaResponseStatusEnum
升级握手响应状态
设备收到 OtaUpgradeNotification 后,回复给服务端的决策结果。
| Name | Value | Description |
|---|
| OTA_ACCEPT | 0 |
接受升级
设备状态正常,准备开始下载/接收分片。 |
| OTA_REJECT_GENERAL | 1 |
拒绝:通用拒绝
未归类的其他拒绝原因(建议在 message 字段附带详细说明)。 |
| OTA_REJECT_LOW_BATTERY | 2 |
拒绝:电量不足
场景:电池供电设备电量低于阈值(如 20%),强制升级可能导致关机变砖。 |
| OTA_REJECT_STORAGE_INSUFFICIENT | 3 |
拒绝:存储空间不足
区别:这是在下载前的“预检查”阶段拒绝,避免浪费流量下载完才发现装不下。 |
| OTA_REJECT_BUSY | 4 |
拒绝:设备忙
场景:设备正在执行关键业务(如正在打印、正在通话、正在报警),不能打断。 |
| OTA_REJECT_VERSION_OLD | 5 |
拒绝:版本过旧
场景:目标版本 <= 当前版本,且服务端未开启 force_update 强制覆盖。 |
OtaStateEnum
OTA 运行状态机
设备在执行升级任务时的生命周期状态。
| Name | Value | Description |
|---|
| STATE_IDLE | 0 |
空闲状态
设备当前没有进行任何 OTA 任务。 |
| STATE_DOWNLOADING | 1 |
下载中
设备正在从 URL 拉取固件,或正在接收 TCP 分片数据。 |
| STATE_VERIFYING | 2 |
校验中
下载完成,正在计算本地文件的 MD5/SHA256 并与服务端下发的指纹比对。 |
| STATE_INSTALLING | 3 |
安装/烧录中
校验通过,正在将固件写入 Flash 或执行安装脚本(此时设备可能离线)。 |
| STATE_SUCCESS | 4 |
升级成功
新固件启动成功,并完成了版本自检(通常在重启后上报)。 |
| STATE_FAILED | 5 |
升级失败
流程中任意环节出错(具体原因见 OtaErrorCode)。 |
OtaTargetScopeEnum
升级目标范围
用于区分 OTA 任务是针对直连设备本身,还是针对其挂载的子设备。
| Name | Value | Description |
|---|
| SCOPE_SELF | 0 |
自身升级
适用场景:直连云端的设备(如网关、4G IPC、Android屏)升级自身的固件。 |
| SCOPE_SUB_DEVICE | 1 |
子设备升级 (代理模式)
适用场景:网关下的 Zigbee/蓝牙/Modbus 子设备。
流程:网关负责下载固件,然后通过本地协议将固件传输给子设备。 |
PackageTypeEnum
升级包技术属性
定义固件包的打包方式,影响设备端的处理逻辑。
| Name | Value | Description |
|---|
| PKG_FULL | 0 |
全量包 (Full Image)
内容:包含完整的固件二进制文件。
优点:可靠性高,不依赖当前版本,可从任意版本直接升级。
缺点:文件大,消耗流量多,下载时间长。 |
| PKG_DIFF | 1 |
差分包/增量包 (Diff/Patch)
内容:基于算法(如 BSDiff)生成的二进制差异数据。
优点:包体积极小(通常只有全量的 1%-10%),极其节省流量。
缺点:
1. 强依赖源版本:必须校验 `required_source_version`,版本不匹配会导致合成失败变砖。
2. 消耗算力:设备需要消耗 CPU 和内存将“旧文件 + 差分包”合成为“新文件”。 |
UpgradeModuleEnum
升级模块类型
定义本次 OTA 针对的具体硬件或软件模块。
IoT 设备通常采用异构架构(如 Linux 主控 + STM32 协处理器 + 4G 模组),需要明确升级对象。
| Name | Value | Description |
|---|
| MODULE_MAIN_APP | 0 |
主业务程序
场景:
1. RTOS/裸机设备:指 Flash 中的 Application 分区固件。
2. Linux/Android 设备:指部署在用户空间的上层业务程序(如 jar 包、bin 文件)。 |
| MODULE_SYSTEM_OS | 1 |
系统镜像 (OS)
场景:Linux 的 RootFS、Kernel 或 Android 的 system.img。
特点:通常文件较大,涉及文件系统重写,风险高于普通 APP 升级。 |
| MODULE_MCU_FIRMWARE | 2 |
外挂 MCU 固件
场景:网关内部通过 UART/SPI 连接的协处理器(如专门负责采集数据的 STM32,或负责 Zigbee 协议栈的芯片)。
流程:主控下载固件 -> 通过串口透传给 MCU -> 触发 MCU 进入 Bootloader 模式刷写。 |
| MODULE_MODEM_FIRMWARE | 3 |
通信模组固件
场景:板载的移远、广和通等 4G/5G/NB-IoT 模组。
流程:通常使用模组厂商提供的 FOTA 指令集(AT+QUPGRADE)进行升级。 |
| MODULE_BOOTLOADER | 4 |
Bootloader 引导程序
场景:U-Boot 或 MCU 的一级引导程序。
警告:【高危操作】一旦断电或刷写失败,设备将彻底变砖且无法远程恢复。通常不建议远程升级此模块。 |
UrgencyEnum
升级紧迫程度
决定设备在收到升级任务后的执行策略。
| Name | Value | Description |
|---|
| URGENCY_NORMAL | 0 |
普通升级 (推荐)
策略:
1. 静默下载。
2. 等待设备进入“闲时状态”或“维护窗口期”再安装。
3. 如果需要用户交互,会弹出提示询问是否安装。 |
| URGENCY_CRITICAL | 1 |
紧急升级 (Critical)
场景:修复重大安全漏洞、修复导致业务瘫痪的 Bug。
策略:
1. 立即下载(可能抢占业务带宽)。
2. 下载完成后,即使设备正在运行业务,也可能强制中断并重启安装。 |
OtaChunkRequestMessage
[TCP] 分片数据请求 (Device -> Server)
模式:Pull (拉取) 模式。
设计理由:
相比服务端主动 Push,由设备主动 Pull 可以实现“背压 (Backpressure)”控制。
设备处理完一片(写入 Flash),再请求下一片,防止低速设备缓冲区溢出。
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| task_id | task_id | string | | |
| chunk_index | chunk_index | int32 | |
请求的分片索引 (从 0 开始)
逻辑:通常是上一次成功接收的 index + 1。
服务端根据此索引计算文件读取位置。 |
| offset | offset | int64 | |
(可选) 字节偏移量 - [双重校验字段]
理论公式:offset = chunk_index * negotiated_chunk_size
设计目的:
虽然该值在数学上是冗余的,但在协议中保留是为了【防止固件错位损坏 (变砖风险)】。
场景:
若服务端与设备端的 "negotiated_chunk_size" 状态不一致(例如服务端重启后重置为 1K,而设备端仍认为是 4K)。
此时:
- 设备请求 index=1 (期望获取 4096~8192 字节)。
- 若无 offset,服务端会按 1K 大小返回 1024~2048 字节。
- 结果:设备将错误的数据写入到了 Flash 的 4096 位置,导致固件损坏。
校验逻辑:
服务端必须校验:(chunk_index * session.chunk_size) == request.offset。
若不相等,应立即拒绝请求并报错。 |
Nested Enums defined inOtaChunkRequest
OtaChunkResponseMessage
[TCP] 分片数据响应 (Server -> Device)
服务端响应设备的 Pull 请求,返回处理过的固件数据。
数据处理流程 (Server):
原始固件切片 -> LZ4压缩 (可选) -> Base64编码 -> 填入 data 字段
数据还原流程 (Device):
读取 data -> Base64解码 -> LZ4解压 (若 compression_type=LZ4) -> 校验 CRC32 -> 写入 Flash
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| task_id | task_id | string | | |
| chunk_index | chunk_index | int32 | |
分片索引确认
设备收到后需校验:此 index 是否等于请求的 index。如果不等,说明发生乱序,需丢弃。 |
| data | data | bytes | |
传输载荷 (Payload)
内容:经过 Base64 编码后的字节流。
为了防止原始二进制数据中的特殊字符(如 0x00, 0x2B(+), 0x0D(\r), 0x0A(\n) 等)
被模组 AT 指令解析器误判或吞掉。
注意:
1. 这是一个 ASCII 字符流。
2. 它是“压缩后”数据的 Base64 表现形式。 |
| data_length | data_length | int32 | |
传输数据长度 (Wire Length)
含义:当前data字段的实际字节长度(即 Base64 编码后的长度)。
用途:
客户端接收时,应使用此长度来申请或检查 Base64 解码前的输入缓冲区。
注意:此长度通常比压缩后的二进制数据大约膨胀 33%。 |
| chunk_crc32 | chunk_crc32 | uint32 | |
原始数据校验码 (CRC32 of RAW DATA)
含义:针对“未压缩、未编码”的原始固件切片计算的 CRC32。
校验时机:
客户端必须完成 [Base64解码] 和 [LZ4解压] 两个步骤,还原出原始数据后,
再计算 CRC32 并与此字段比对。 |
| file_offset | file_offset | int64 | |
绝对字节偏移量 (File Offset)
指示还原后的原始数据应该写入 Flash 的具体字节位置。
(例如:index=1, raw_size=1024, offset=1024) |
| original_size | original_size | int32 | |
原始数据长度 (Raw / Uncompressed Size)
含义:最终还原出来的原始固件切片大小。
用途:
1. LZ4 解压参数:作为 LZ4 解压函数的目标输出缓冲区大小 (destSize)。
2. 写入校验:解压后的数据长度必须等于此值。 |
| compression_type | compression_type | com.nexus.service.proto.enums.CompressionType | |
压缩方式
指示 Base64 解码后的二进制数据,是否还需要进行 LZ4 解压。
NONE: Base64解码后即为原始数据。
LZ4: Base64解码后是 LZ4 压缩流,需进一步解压。 |
Nested Enums defined inOtaChunkResponse
OtaProgressReportMessage
升级进度上报 (Heartbeat)
作用:
1. 更新服务端任务状态(从“已下发”变为“执行中”)。
2. 也是一种心跳机制,防止服务端认为设备离线而超时断开。
建议上报频率:每下载 5%~10% 或每隔 30秒上报一次。
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| task_id | task_id | string | | |
| state | state | OtaState | |
当前流转状态
随着流程推进,状态流转:IDLE -> DOWNLOADING -> VERIFYING -> INSTALLING -> SUCCESS/FAILED。 |
| progress_percent | progress_percent | int32 | |
总体进度百分比 (0-100)
用于管理台 UI 展示进度条。
计算公式:(已下载字节 / file_size_bytes) * 100 |
| error_code | error_code | OtaErrorCode | |
错误码
仅当 state = STATE_FAILED 时有效,用于定位失败原因。 |
| error_message | error_message | string | |
错误详情描述
具体的堆栈信息或错误日志摘要。 |
| current_chunk_index | current_chunk_index | int32 | |
[断点续传] 当前已成功写入的分片索引
仅用于 TCP 模式。
作用:服务端可以将此值记录到 Redis/数据库。
如果网络中断,设备重新连接后,服务端知道从哪一片开始继续发送,无需重头开始。 |
Nested Enums defined inOtaProgressReport
OtaUpgradeResponseMessage
升级任务响应 (握手确认)
流程:Device 收到 OtaUpgradeNotification -> 校验自身条件 -> 立即回复此消息。
作用:
1. 告知服务端“我收到了”。
2. 告知服务端“我是否接受”。
3. (关键) 协商传输参数(如分片大小)。
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| task_id | task_id | string | |
任务 ID
必须回传 Notification 中下发的 task_id,用于服务端关联上下文。
作用:
1. 全链路唯一标识:贯穿握手、进度上报、分片请求全流程,确保服务端能定位到具体的升级会话。
2. 安全校验:防止因网络延迟或设备重启,导致旧任务的残留数据包干扰当前任务。 |
| status | status | OtaResponseStatus | |
响应状态
决策结果:接受 (ACCEPT) 或 拒绝 (REJECT_XXX)。
如果是拒绝,服务端将标记任务失败并终止后续流程。 |
| negotiated_chunk_size | negotiated_chunk_size | int32 | |
[参数协商] 协商后的分片大小 (字节)
仅当使用 TCP 策略时有效。
逻辑:
1. 设备根据自身内存水位 (Heap/Buffer),评估服务端建议的 recommended_chunk_size。
2. 如果设备能承受,填 0 或填原值。
3. 如果设备内存紧张,填一个更小的值 (如 512 或 256)。
4. 服务端收到后,后续下发的分片数据包将严格遵守此大小限制。 |
| message | message | string | |
附加信息
用于携带拒绝的具体原因日志,或调试信息。
例如:"Battery level 15%, threshold is 20%"。 |
Nested Enums defined inOtaUpgradeResponse
OtaUpgradeNotificationMessage
升级任务通知 (Server -> Device)
作用:服务端向设备下发升级指令的核心消息。
触发方式:
1. Push 模式:服务端直接下发给在线设备。
2. Pull 模式:设备主动轮询后,服务端在响应中返回此消息。
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| task_id | task_id | string | |
任务唯一标识
作用:全链路追踪 ID。
设备在后续上报进度 (OtaProgressReport) 和 最终结果时,必须带上此 ID。 |
| product_key | product_key | string | |
[安全核心] 产品标识 (ProductKey)
作用:双重身份校验,防止错误的固件推送到错误的设备型号。
逻辑:设备收到消息后,必须校验 `this.productKey == msg.product_key`。
如果不匹配,说明服务端路由配置错误,设备应直接丢弃消息并报错,严禁尝试下载。 |
| module_type | module_type | UpgradeModule | |
升级模块类型
指定本次升级针对的具体部件(例如:是升级主控 App,还是升级挂载的 4G 模组)。 |
| target_version | target_version | string | |
[展示用] 目标版本名称
示例:"v2.1.0-beta", "release-2025.12.25"
作用:仅用于日志打印、用户界面显示,**不建议**用于核心的版本比对逻辑。 |
| target_version_code | target_version_code | int64 | |
[逻辑用] 目标版本代码
示例:2025122501 (时间戳风格) 或 21000 (语义化风格)。
作用:用于程序内部的版本比对。
逻辑:
1. 升级:if (target_version_code > current_code)
2. 降级/回退:if (target_version_code < current_code)。
通常设备应拒绝降级,除非 force_update 或策略允许。 |
| distinct_hardware_versions | distinct_hardware_versions | string | repeated |
允许升级的硬件版本列表
场景:同一款产品可能有不同的 PCB 版本(如 V1.0 用 ESP32,V2.0 用 RTL8720)。
逻辑:
- 空列表:表示通刷(Compatible All)。
- 非空列表:设备检查自身的 `hardware_version` 是否包含在列表中。若不在,则拒绝升级。 |
| target_scope | target_scope | OtaTargetScope | |
升级目标范围
区分是“自身升级”还是“代理子设备升级”。
针对网关设备,这决定了固件是写给自己,还是通过 Zigbee/蓝牙转发出去。 |
| sub_device_id | sub_device_id | string | |
子设备 ID
仅当 target_scope = SCOPE_SUB_DEVICE 时有效。
标识具体的子设备(如 Zigbee IEEE 地址、Modbus Slave ID)。 |
| package_type | package_type | PackageType | |
升级包类型
标识是“全量包”还是“差分增量包”。 |
| required_source_version | required_source_version | string | |
[仅差分] 必需的源版本
仅当 package_type = PKG_DIFF 时必填。
逻辑:差分包是基于特定旧版本生成的。设备必须校验 `current_version == required_source_version`。
如果版本不匹配强行打补丁,会导致固件损坏。 |
| checksum_algorithm | checksum_algorithm | ChecksumAlgorithm | |
校验算法
指定 file_checksum 使用的是 MD5 还是 SHA256。 |
| file_checksum | file_checksum | string | |
[安全核心] 文件指纹 (Hash)
作用:防止固件在传输过程中被篡改(中间人攻击)或数据损坏。
逻辑:下载完成后,设备必须计算本地文件 Hash 并与此值比对,完全一致才可安装。 |
| file_size_bytes | file_size_bytes | int64 | |
[资源预检] 文件大小 (字节)
作用:
1. 空间检查:设备在下载前检查 `FreeStorage > file_size_bytes * 1.5` (预留解压空间)。
2. 进度计算:用于计算下载百分比。 |
| urgency | urgency | Urgency | |
紧迫程度
- NORMAL: 闲时安装,避开业务高峰。
- CRITICAL: 立即打断业务进行安装。 |
| max_retry_count | max_retry_count | int32 | |
[熔断机制] 最大失败重试次数
建议值:3 ~ 5 次。
作用:防止因网络环境恶劣或固件本身问题导致设备陷入“死循环下载”,造成流量费爆炸。 |
| http_strategy | http_strategy | HttpTransport | |
策略 A: HTTP 拉取模式
适用于:支持 HTTP 协议栈,网络带宽较好的设备(如 Linux 网关、Android 屏)。 |
| tcp_strategy | tcp_strategy | TcpStreamTransport | |
策略 B: TCP 分片流式模式
适用于:仅有 TCP/UDP 能力,或对单包大小限制严格的低功耗设备(如 NB-IoT 模组)。 |
| download_delay_jitter_seconds | download_delay_jitter_seconds | int32 | |
下载启动随机延迟 (单位: 秒)
作用:错峰下载,防止惊群效应。
逻辑:设备收到通知后,不立即开始下载,而是先睡眠一个随机时间。
公式:wait_time = Random(0, download_delay_jitter_seconds)
场景:全网推送时,设置此值为 3600 (1小时),则百万台设备的请求会均匀分散在 1 小时内。 |
Nested Enums defined inOtaUpgradeNotification
HttpTransportMessage
策略 A 详情:HTTP 拉取
Nested Enums defined inHttpTransport
TcpStreamTransportMessage
策略 B 详情:TCP 分片流
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| recommended_chunk_size | recommended_chunk_size | int32 | | 服务端建议的单片大小 (字节) |
Nested Enums defined inTcpStreamTransport
AttributeUpdateRequestMessage
[设备 -> 服务端] 属性变更/状态上报
场景:
1. 定时上报传感器数据 -> 填充 status
2. 本地有人按开关改变了配置 -> 填充 settings
3. 设备启动全量上报 -> 填充 settings + status
Nested Enums defined inAttributeUpdateRequest
PropertyGetRequestMessage
[服务端 -> 设备] 查询请求
Nested Enums defined inPropertyGetRequest
PropertyGetResponseMessage
[设备 -> 服务端] 查询响应
返回完整的物模型视图
Nested Enums defined inPropertyGetResponse
PropertySetRequestMessage
请求/响应消息重新定义
[服务端 -> 设备] 设置/控制请求
Nested Enums defined inPropertySetRequest
PropertySetResponseMessage
[设备 -> 服务端] 设置响应
Nested Enums defined inPropertySetResponse
AlarmSettingsMessage
告警配置
Nested Enums defined inAlarmSettings
PeripheralsMessage
外设
Nested Enums defined inPeripherals
SensorsMessage
传感器
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
Nested Enums defined inSensors
ThingSettingsMessage
可写配置集 (Read-Write)
包含所有服务端可以下发控制、或者修改配置的字段
Nested Enums defined inThingSettings
SettingsModuleEnum
对应 ThingSettings 里的字段索引
| Name | Value | Description |
|---|
| SETTINGS_UNKNOWN | 0 | |
| SETTINGS_DEVICE_INFO | 1 | 对应 device_info (设备基础信息) |
| SETTINGS_SYSTEM_CONFIG | 2 | 对应 system_config (系统配置) |
| SETTINGS_TERMINAL_NETWORK_CONFIG | 3 | 对应 terminal_network_config (网络配置) |
| SETTINGS_DEVICE_TOPOLOGY | 4 | 对应 device_topology |
| SETTINGS_HARDWARE_PROFILE | 20 | 对应 device_hardware_profile |
| SETTINGS_DEVICE_ELECTRICAL_ALARM_PROFILE | 51 | 对应 device_electrical_alarm_profile (设备自身电气告警策略) |
| SETTINGS_PERIPHERAL_ALARM_STRATEGY | 61 | 对应 alarm_strategy (告警策略) |
| SETTINGS_DEVICE_METERING_CONFIG | 101 | 对应 metering_config (计量配置) |
| SETTINGS_TASK_SETTINGS | 111 | 对应 task_settings (定时任务配置) |
ThingStatusMessage
只读状态集 (Read-Only)
包含设备客观存在的状态、采样数据、静态信息,服务端不可修改
Nested Enums defined inThingStatus
StatusModuleEnum
定义可查询的状态模块枚举
命名规范:MODULE_<模块名>
| Name | Value | Description |
|---|
| MODULE_UNSPECIFIED | 0 | 默认值,防错处理 |
| MODULE_SYSTEM | 1 | 对应 system_state |
| MODULE_BATTERY | 2 | 对应 battery_state |
| MODULE_SENSOR | 30 | 对应 sensor_state
注意:只代表"查询传感器模块"。如需指定"风扇"或"开关",
请在外部 Request 的 channel_selector 中指定设备类型/ID,勿在此处无限增加枚举。 |
| MODULE_METERING_STATE | 40 | 对应 metering_state |
| MODULE_NETWORK_STATE | 51 | 对应 network_state |
| ACTIVE_MONITOR_STATE | 61 | 对应 active_monitor_state |
DecimalPointMessage
为每种格式定义一个包含经纬度的 "Point" 消息
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| longitude | longitude | double | optional | 经度 |
| latitude | latitude | double | optional | 纬度 |
| coord_system | coord_system | CoordinateSystem | optional | 坐标系类型
明确告诉后端:这组经纬度是百度家的还是高德家的,防止地图偏移 |
| horizontal_accuracy | horizontal_accuracy | float | optional | 水平精度 (单位: 米)
很多业务场景需要根据精度过滤掉“飘”太远的定位点 |
| altitude | altitude | double | optional | 海拔 |
Nested Enums defined inDecimalPoint
LocationDataMessage
地理位置数据模型
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| decimal_point | decimal_point | DecimalPoint | optional | 标准经纬度 (小数形式)
样例: { longitude: 116.404, latitude: 39.915 } |
| gga_data | gga_data | NmeaGgaData | optional | 上报从 NMEA GGA 语句中解析出的原始字段 |
| source_type | source_type | LocationSourceType | optional | 定位来源 |
| rmc_data | rmc_data | NmeaRmcData | optional | 上报从 NMEA RMC 语句中解析出的原始字段 (包含日期、速度、航向等) |
| location_timestamp_ms | location_timestamp_ms | int64 | optional | 【定位时间戳】
生成逻辑:
1. 结合 RMC 语句的 utc_date (DDMMYY) 与 GGA/RMC 语句的 utc_time (HHMMSS.SS) 获取原始 UTC 时间。
2. 特别注意:NMEA 协议输出的是 UTC 时间(+0时区),嵌入式端在生成时间戳前,必须在该时间基础上【增加 8 小时】。
3. 最终上报:北京时间(东八区)相对于 1970-01-01 00:00:00 的毫秒数。
目的:IOT 网关和后端将直接存储此时间戳,前端展示不再进行时区偏移转换。 |
Nested Enums defined inLocationData
NmeaGgaDataMessage
NMEA GGA 语句的结构化表示(GGA 默认通常是 WGS-84)
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| latitude | latitude | double | optional | 纬度, 格式: ddmm.mmmm (度在前, 分在后并含小数) |
| latitude_hemisphere | latitude_hemisphere | Hemisphere | optional | 纬度半球方向 |
| longitude | longitude | double | optional | 经度, 格式: dddmm.mmmm (度在前, 分在后并含小数) |
| longitude_hemisphere | longitude_hemisphere | Hemisphere | optional | 经度半球方向 |
| fix_quality | fix_quality | FixQuality | optional | 定位质量 |
| satellite_count | satellite_count | int32 | optional | 用于定位的卫星数量 |
| hdop | hdop | float | optional | HDOP - 水平精度因子 |
| altitude | altitude | float | optional | 海拔高度 (单位: 米) |
| water_surface_altitude | water_surface_altitude | float | optional | 大地水准面差距 (单位: 米) |
Nested Enums defined inNmeaGgaData
NmeaRmcDataMessage
NMEA RMC 语句的结构化表示 (Recommended Minimum Specific GPS/TRANSIT Data)
只有 RMC 包含了完整的日期信息、速度和运动方向。
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| utc_time | utc_time | string | optional | UTC 时间, 格式: hhmmss.ss |
| status | status | RmcStatus | optional | 定位状态 (A=有效, V=无效) |
| speed_knots | speed_knots | float | optional | 对地速度 (单位: 节, Knots) -> 1节 = 1.852 km/h |
| course_degrees | course_degrees | float | optional | 对地航向 (单位: 度, Degrees) |
| utc_date | utc_date | string | optional | UTC 日期, 格式: ddmmyy (日月年)
样例: "250324" 代表 2024年3月25日 |
| magnetic_variation | magnetic_variation | float | optional | 磁偏角 (单位: 度, 部分便宜的 GPS 模块可能不输出此项) |
| magnetic_variation_direction | magnetic_variation_direction | Hemisphere | optional | 磁偏角方向 (E/W) |
Nested Enums defined inNmeaRmcData
CoordinateSystemEnum
--- 坐标系类型 ---
| Name | Value | Description |
|---|
| COORD_SYSTEM_UNSPECIFIED | 0 | |
| WGS84 | 1 | WGS-84: 全球标准 GPS 坐标系 (Google Maps 国际版、设备原始输出) |
| GCJ02 | 2 | GCJ-02: 中国国家测绘局标准 (火星坐标系),高德、腾讯、Google 中国使用 |
| BD09 | 3 | BD-09: 百度坐标系,在高德基础上二次加密 |
| CGCS2000 | 4 | CGCS2000: 中国大地坐标系 2000,国家标准,常用于政务、GIS及高精度地图 |
FixQualityEnum
定义 GGA 定位质量指示
| Name | Value | Description |
|---|
| INVALID | 0 | 0 = 无效解 |
| GPS_FIX | 1 | 1 = GPS 单点定位 |
| DGPS_FIX | 2 | 2 = DGPS 差分定位 |
| PPS_FIX | 3 | 3 = PPS 解 |
| REAL_TIME_KINEMATIC | 4 | 4 = RTK 固定解 |
| FLOAT_RTK | 5 | 5 = RTK 浮点解 |
| ESTIMATED | 6 | 6 = 正在估算 |
| MANUAL_INPUT_MODE | 7 | 7 = 手动输入模式 |
| SIMULATION_MODE | 8 | 8 = 模拟模式 |
HemisphereEnum
定义半球方向的枚举
| Name | Value | Description |
|---|
| HEMISPHERE_UNKNOWN | 0 | |
| NORTH | 1 | 北纬 (N) |
| SOUTH | 2 | 南纬 (S) |
| EAST | 3 | 东经 (E) |
| WEST | 4 | 西经 (W) |
LocationSourceTypeEnum
定义定位来源的枚举类型
| Name | Value | Description |
|---|
| SOURCE_UNKNOWN | 0 | 未知来源 |
| GPS | 1 | GPS 定位 |
| WIFI | 2 | Wi-Fi 三角定位 |
| CELLULAR | 3 | 蜂窝网络基站定位 |
| BEI_DOU | 4 | 北斗定位 |
RmcStatusEnum
RMC 定位状态指示
| Name | Value | Description |
|---|
| RMC_STATUS_UNKNOWN | 0 | |
| A_ACTIVE | 1 | A = 数据有效 (已定位) |
| V_VOID | 2 | V = 数据无效 (未定位/导航接收机警告) |
PropertyReportMessage
属性/状态上报消息 (Property/State Report)
用途:
1. 周期性上报设备的运行状态(如温度、电压、开关状态)。
2. 设备上线/重启时上报静态属性(如固件版本、SN号)。
区别:
不同于 Event (瞬时触发、报警),此处数据通常用于时序数据库存储或设备影子更新。
Nested Enums defined inPropertyReport
InitialAttributeReportMessage
设备上线初始化上报,用于同步静态资产与启动状态
Nested Enums defined inInitialAttributeReport
ThingModelReportMessage
物模型定时上报的完整遥测数据 (周期性上报)
Nested Enums defined inThingModelReport
BinaryPayloadMessage
专门用于封装二进制数据的消息对象
| Field | API Name(Java/JSON) | Type | 约束规则 | Description |
|---|
| data | data | bytes | | 这里存放实际的数据 |
Nested Enums defined inBinaryPayload
WrapperMessageMessage
唯一的“包装器”消息,作为所有通信的顶层结构。
Nested Enums defined inWrapperMessage