55 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Protocol Buffer
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Protocol Buffer
		
	
	
	
	
	
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;   // 按预定顺序排列的采集值
 | 
						|
} |