syntax = "proto3"; package device; import "google/protobuf/any.proto"; option go_package = "internal/app/service/device/proto"; // --- 通用指令结构 --- // 指令类型 enum MethodType { SWITCH = 0; // 启停 COLLECT = 1; // 采集 } // 指令 (所有空中数据都会被包装在这里面) message Instruction { MethodType method = 1; google.protobuf.Any data = 2; } // Switch 指令的载荷 message Switch { string device_action = 1; // 指令 int32 bus_number = 2; // 总线号 int32 bus_address = 3; // 总线地址 int32 relay_channel = 4; // 继电器通道号 } // --- 批量采集相关结构 --- // BatchCollectCommand // 用于在平台内部构建一个完整的、包含所有元数据的批量采集任务。 // 这个消息本身不会被发送到设备。 message BatchCollectCommand { string correlation_id = 1; // 用于关联请求和响应的唯一ID repeated CollectTask tasks = 2; // 采集任务列表 } // CollectTask // 定义了单个采集任务的“意图”。 message CollectTask { string device_action = 1; // 指令 int32 bus_number = 2; // 总线号 int32 bus_address = 3; // 总线地址 } // CollectResult // 这是设备响应的、极致精简的数据包。 message CollectResult { string correlation_id = 1; // 从下行指令中原样返回的关联ID repeated float values = 2; // 按预定顺序排列的采集值 }