diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..35410ca
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# 默认忽略的文件
+/shelf/
+/workspace.xml
+# 基于编辑器的 HTTP 客户端请求
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/goInOut.iml b/.idea/goInOut.iml
new file mode 100644
index 0000000..5e764c4
--- /dev/null
+++ b/.idea/goInOut.iml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..695ccf1
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/adaptors/安心云es数据to南京智行.go b/adaptors/安心云es数据to南京智行.go
new file mode 100644
index 0000000..0a64af7
--- /dev/null
+++ b/adaptors/安心云es数据to南京智行.go
@@ -0,0 +1,196 @@
+package adaptors
+
+import (
+ "encoding/hex"
+ "encoding/json"
+ "fmt"
+ "goInOut/consumers/JYES_NJZX"
+ "goInOut/consumers/JYES_NJZX/protoDataFiles"
+ "goInOut/dbOperate"
+ "goInOut/models"
+ "google.golang.org/protobuf/proto"
+ "log"
+ "strings"
+ "time"
+)
+
+// Adaptor_AXYES_NJZX 安心云依加尔山es 特征数据 to 南京智行平台
+type Adaptor_AXYES_NJZX struct {
+ //传感器code转换信息
+ PointInfo map[int64]map[int64]int64
+ StructInfo map[int64]int64
+ //一些必要信息
+ Info map[string]string
+ Redis *dbOperate.RedisHelper
+}
+
+func (the *Adaptor_AXYES_NJZX) Transform(structId int64, factorId int, rawMsg string) []NeedPush {
+ //es查到的数据分装进结构体里面
+ esAggDateHistogram := JYES_NJZX.EsThemeDateValue{}
+ var needPush []NeedPush
+
+ err := json.Unmarshal([]byte(rawMsg), &esAggDateHistogram)
+ if err != nil {
+ return nil
+ }
+
+ Payload := the.EsDataValueChangeToNJZX(structId, factorId, esAggDateHistogram)
+ if len(Payload) == 0 {
+ return needPush
+ }
+
+ needPush = append(needPush, NeedPush{
+ Payload: Payload,
+ })
+ return needPush
+}
+
+func (the *Adaptor_AXYES_NJZX) EsDataValueChangeToNJZX(structId int64, factorId int, esDataValue JYES_NJZX.EsThemeDateValue) (result []byte) {
+ buckets := esDataValue.Hits.Hits
+ //数据汇总
+ complexData := &protoDataFiles.ComplexData{}
+ for _, sensorBucket := range buckets {
+ sensorId := sensorBucket.Source.SensorName //安心云de测点id
+
+ //优先redis获取
+ station := models.Station{}
+ k1 := fmt.Sprintf("station:%d", sensorId)
+ errRedis := the.Redis.GetObj(k1, &station)
+ if errRedis != nil {
+ log.Printf("redis 获取[s:%d,f:%d]测点[%d]标签异常", structId, factorId, sensorId)
+ continue
+ }
+ monitorCodeStr := the.getPointCodeFromLabel(station.Labels)
+ if monitorCodeStr == "" {
+ log.Printf("redis 获取[s:%d,f:%d]测点[%d],标签信息[%s]转换int64异常,跳过", structId, factorId, sensorId, station.Labels)
+ continue
+ }
+
+ dataDefinition := the.ChangeToNJZXData(factorId, monitorCodeStr, sensorBucket)
+
+ complexData.SensorData = append(complexData.SensorData, dataDefinition)
+ }
+
+ //v, _ := json.Marshal(complexData)
+ //log.Printf("[struct:%d,factor:%d] 特征数据=> %s", structId, factorId, v)
+ result, _ = proto.Marshal(complexData)
+ log.Printf("[struct:%d,factor:%d] protobuf数据=> %s", structId, factorId, hex.EncodeToString(result))
+ return result
+}
+
+func (the *Adaptor_AXYES_NJZX) getMonitorTypeByFactorId(factorId int) protoDataFiles.MonitoryType {
+ //监测因素 2温湿度 4温度 18裂缝检测
+ //103净空收敛 102拱顶沉降 96二次衬彻应变
+ //107道床及拱腰结构沉降 156风速 578风向
+ switch factorId {
+ case 2: //温湿度
+ return protoDataFiles.MonitoryType_RHS
+ case 4: //温度
+ return protoDataFiles.MonitoryType_TMP
+ case 18: //裂缝检测
+ return protoDataFiles.MonitoryType_CRK
+ case 103: //净空收敛
+ return protoDataFiles.MonitoryType_INC //无对应
+ case 102: //拱顶沉降
+ return protoDataFiles.MonitoryType_CRK //无对应
+ case 96: //二次衬彻应变
+ return protoDataFiles.MonitoryType_RSG
+ case 107: //道床及拱腰结构沉降
+ return protoDataFiles.MonitoryType_VIB //无对应
+ case 156: //风速
+ return protoDataFiles.MonitoryType_WDS
+ case 578: //风向
+ return protoDataFiles.MonitoryType_WDD
+ default:
+ log.Printf("factorId=%d,无匹配的MonitorType", factorId)
+ return protoDataFiles.MonitoryType_RHS
+ }
+}
+
+func (the *Adaptor_AXYES_NJZX) parseTimeToTimestamp(timeStr string) (int64, error) {
+ // 解析时间字符串为 time.Time 对象
+ parsedTime, err := time.Parse(time.RFC3339, timeStr)
+ if err != nil {
+ return 0, err
+ }
+ // 返回 Unix 时间戳(秒数)
+ return parsedTime.Unix(), nil
+}
+
+func (the *Adaptor_AXYES_NJZX) ChangeToNJZXData(factorId int, monitorCodeStr string, dateBucket JYES_NJZX.Hits) *protoDataFiles.SensorData {
+
+ Atime, _ := the.parseTimeToTimestamp(dateBucket.Source.CollectTime)
+ monitoryType := the.getMonitorTypeByFactorId(factorId)
+ dataDefinitionData := &protoDataFiles.SensorData{
+ MonitorType: monitoryType,
+ SensorNo: monitorCodeStr,
+ UpTime: Atime,
+ }
+
+ switch factorId {
+ case 2: //温湿度
+ dataDefinitionData.DataBody = &protoDataFiles.SensorData_Rhs{Rhs: &protoDataFiles.RHSRealTime{
+ Temperature: []float32{float32(dateBucket.Source.Data["temperature"])},
+ Humidity: []float32{float32(dateBucket.Source.Data["humidity"])},
+ }}
+ case 4: //温度
+ dataDefinitionData.DataBody = &protoDataFiles.SensorData_Tmp{Tmp: &protoDataFiles.TMPRealTime{
+ Temperature: []float32{float32(dateBucket.Source.Data["temperature"])},
+ }}
+ case 18: //裂缝检测
+ dataDefinitionData.DataBody = &protoDataFiles.SensorData_Crk{Crk: &protoDataFiles.CRKRealTime{
+ CrackWidth: []float32{float32(dateBucket.Source.Data["crack"])},
+ }}
+ case 103: //净空收敛//123456789
+ dataDefinitionData.DataBody = &protoDataFiles.SensorData_Rhs{Rhs: &protoDataFiles.RHSRealTime{
+ Temperature: []float32{float32(dateBucket.Source.Data["crack"])},
+ Humidity: []float32{float32(dateBucket.Source.Data["crack"])},
+ }}
+ case 102: //拱顶沉降//123456789
+ dataDefinitionData.DataBody = &protoDataFiles.SensorData_Rhs{Rhs: &protoDataFiles.RHSRealTime{
+ Temperature: []float32{float32(dateBucket.Source.Data["crack"])},
+ Humidity: []float32{float32(dateBucket.Source.Data["crack"])},
+ }}
+ case 96: //二次衬彻应变
+ dataDefinitionData.DataBody = &protoDataFiles.SensorData_Rsg{Rsg: &protoDataFiles.RSGRealTime{
+ Strain: []float32{float32(dateBucket.Source.Data["strain"])},
+ }}
+ case 107: //道床及拱腰结构沉降//123456789
+ dataDefinitionData.DataBody = &protoDataFiles.SensorData_Rhs{Rhs: &protoDataFiles.RHSRealTime{
+ Temperature: []float32{float32(dateBucket.Source.Data["crack"])},
+ Humidity: []float32{float32(dateBucket.Source.Data["crack"])},
+ }}
+ case 156: //风速
+ dataDefinitionData.DataBody = &protoDataFiles.SensorData_Wds{Wds: &protoDataFiles.WDSRealTime{
+ WindSpeed: []float32{float32(dateBucket.Source.Data["speed"])},
+ }}
+ case 578: //风向
+ dataDefinitionData.DataBody = &protoDataFiles.SensorData_Wdd{Wdd: &protoDataFiles.WDDRealTime{
+ WindDirection: []float32{float32(dateBucket.Source.Data["direction"])},
+ }}
+ }
+
+ return dataDefinitionData
+}
+
+func (the *Adaptor_AXYES_NJZX) getUniqueCode(structId int64) (uniqueCode int64) {
+ if v, ok := the.StructInfo[structId]; ok {
+ uniqueCode = v
+ }
+ return uniqueCode
+}
+
+func (the *Adaptor_AXYES_NJZX) getPointCodeFromLabel(label string) string {
+ //解析label {code:wd01}
+ pointUniqueCode := ""
+ if len(label) > 3 {
+ newLabel := strings.TrimLeft(label, "{code:")
+ str := strings.TrimRight(newLabel, "}")
+ if str == "" {
+ log.Printf("测点标签转换异常[%s]", label)
+ }
+ pointUniqueCode = str
+ }
+
+ return pointUniqueCode
+}
diff --git a/adaptors/知物云es主题特征to中交华联.go b/adaptors/知物云es主题特征to中交华联.go
index 1bc74b3..bfbdb94 100644
--- a/adaptors/知物云es主题特征to中交华联.go
+++ b/adaptors/知物云es主题特征to中交华联.go
@@ -149,6 +149,7 @@ func (the *Adaptor_ZWYES_ZJHL) EsAggTopToHBJCAS(structId int64, factorId int, es
log.Printf("[struct:%d,factor:%d] protobuf数据=> %s", structId, factorId, hex.EncodeToString(result))
return result
}
+
func (the *Adaptor_ZWYES_ZJHL) getMonitorTypeByFactorId(factorId int) protoFiles_zjhl_v3.MonitoryType {
//结构温度4 桥墩倾斜 15 裂缝18 支座位移20 桥面振动28 风速156 加速度三项监测592
switch factorId {
diff --git a/configFiles/弃用备份/config_安心云加依尔2号隧道_南京智行.yaml b/configFiles/弃用备份/config_安心云加依尔2号隧道_南京智行.yaml
new file mode 100644
index 0000000..b240308
--- /dev/null
+++ b/configFiles/弃用备份/config_安心云加依尔2号隧道_南京智行.yaml
@@ -0,0 +1,30 @@
+consumer: consumerJYESNJZX
+ioConfig:
+ in:
+ http:
+ url: https://esproxy.anxinyun.cn/savoir_themes/_search
+ out:
+ mqtt:
+ host: 120.205.24.17
+ port: 1883
+ userName:
+ password:
+ clientId: bridge_goinout
+ topics:
+ t/t6540000001/rt
+monitor:
+ cron10min: 8/10 * * * * #31 0/1 * * * #
+info:
+ rc4key: t/gzgyy0219
+queryComponent:
+ redis:
+ address: 10.8.30.160:30379 #按照实际项目来
+#结构物id对应
+structInfo:
+ #加依尔4983 -> 映射对方平台id
+ 4983: 56232
+#点位id对应信息
+pointInfo: #监测因素 2温湿度 4温度 18裂缝检测 103净空收敛 102拱顶沉降 96二次衬彻应变 107道床及拱腰结构沉降 156风速 578风向
+
+
+
diff --git a/consumers/JYES_NJZX/dataModel.go b/consumers/JYES_NJZX/dataModel.go
new file mode 100644
index 0000000..90d6119
--- /dev/null
+++ b/consumers/JYES_NJZX/dataModel.go
@@ -0,0 +1,36 @@
+package JYES_NJZX
+
+type EsThemeDateValue struct {
+ Took int `json:"took"`
+ TimedOut bool `json:"timed_out"`
+ Shards struct {
+ Total int `json:"total"`
+ Successful int `json:"successful"`
+ Skipped int `json:"skipped"`
+ Failed int `json:"failed"`
+ } `json:"_shards"`
+ Hits struct {
+ Total int `json:"total"`
+ MaxScore float64 `json:"max_score"`
+ Hits []Hits `json:"hits"`
+ } `json:"hits"`
+}
+type Hits struct {
+ Index string `json:"_index"`
+ Type int `json:"_type"`
+ Id string `json:"_id"`
+ Score int `json:"_score"`
+ Source Source `json:"_source"`
+}
+type Source struct {
+ SensorName string `json:"sensor_name"`
+ FactorName string `json:"factor_name"`
+ FactorProtoCode string `json:"factor_proto_code"`
+ Data map[string]float64 `json:"data"`
+ Factor int `json:"factor"`
+ CollectTime string `json:"collect_time"`
+ Sensor int `json:"sensor"`
+ Structure int `json:"structure"`
+ IotaDevice []string `json:"iota_device"`
+ CreateTime string `json:"create_time"`
+}
diff --git a/consumers/JYES_NJZX/protoDataFiles/MonitorDataProtocol.pb.go b/consumers/JYES_NJZX/protoDataFiles/MonitorDataProtocol.pb.go
new file mode 100644
index 0000000..1a82615
--- /dev/null
+++ b/consumers/JYES_NJZX/protoDataFiles/MonitorDataProtocol.pb.go
@@ -0,0 +1,3160 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.31.0
+// protoc v5.29.0--rc1
+// source: MonitorDataProtocol.proto
+
+package protoDataFiles
+
+import (
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ sync "sync"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+type MonitoryType int32
+
+const (
+ // 环境温湿度
+ MonitoryType_RHS MonitoryType = 0
+ // 雨量
+ MonitoryType_PWS MonitoryType = 1
+ // 结冰
+ MonitoryType_FRZ MonitoryType = 2
+ // 车辆荷载
+ MonitoryType_HSD MonitoryType = 3
+ // 风速、风向
+ MonitoryType_UAN MonitoryType = 4
+ // 结构温度
+ MonitoryType_TMP MonitoryType = 5
+ // 路面、桥面温度
+ MonitoryType_LMZ MonitoryType = 6
+ // 船舶撞击、地震
+ MonitoryType_VID MonitoryType = 7
+ // 振动
+ MonitoryType_VIB MonitoryType = 8
+ // 自振频率
+ MonitoryType_NFR MonitoryType = 9
+ // 位移(结构响应)
+ MonitoryType_DISR MonitoryType = 10
+ // 索力
+ MonitoryType_DIC MonitoryType = 11
+ // 应变
+ MonitoryType_RSG MonitoryType = 12
+ // 转角
+ MonitoryType_INC MonitoryType = 13
+ // 支座反力
+ MonitoryType_STF MonitoryType = 14
+ // 结构空间变形
+ MonitoryType_GNS MonitoryType = 15
+ // 挠度(变形)
+ MonitoryType_HPT MonitoryType = 16
+ // 基础冲刷
+ MonitoryType_SCO MonitoryType = 17
+ // 位移(结构变化)
+ MonitoryType_DISC MonitoryType = 18
+ // 结构裂缝
+ MonitoryType_CRK MonitoryType = 19
+ // 腐蚀
+ MonitoryType_COR MonitoryType = 20
+ // 体外预应力
+ MonitoryType_STR MonitoryType = 21
+ // (螺栓状态)螺栓紧固力
+ MonitoryType_BTF MonitoryType = 22
+ // 索夹滑移
+ MonitoryType_CSP MonitoryType = 23
+ // 风速
+ MonitoryType_WDS MonitoryType = 24
+ // 风向
+ MonitoryType_WDD MonitoryType = 25
+ // 气压
+ MonitoryType_PRS MonitoryType = 26
+ // 总辐射
+ MonitoryType_RAD MonitoryType = 27
+ // 光照度
+ MonitoryType_ILL MonitoryType = 28
+ // 紫外强度
+ MonitoryType_UVT MonitoryType = 29
+)
+
+// Enum value maps for MonitoryType.
+var (
+ MonitoryType_name = map[int32]string{
+ 0: "RHS",
+ 1: "PWS",
+ 2: "FRZ",
+ 3: "HSD",
+ 4: "UAN",
+ 5: "TMP",
+ 6: "LMZ",
+ 7: "VID",
+ 8: "VIB",
+ 9: "NFR",
+ 10: "DISR",
+ 11: "DIC",
+ 12: "RSG",
+ 13: "INC",
+ 14: "STF",
+ 15: "GNS",
+ 16: "HPT",
+ 17: "SCO",
+ 18: "DISC",
+ 19: "CRK",
+ 20: "COR",
+ 21: "STR",
+ 22: "BTF",
+ 23: "CSP",
+ 24: "WDS",
+ 25: "WDD",
+ 26: "PRS",
+ 27: "RAD",
+ 28: "ILL",
+ 29: "UVT",
+ }
+ MonitoryType_value = map[string]int32{
+ "RHS": 0,
+ "PWS": 1,
+ "FRZ": 2,
+ "HSD": 3,
+ "UAN": 4,
+ "TMP": 5,
+ "LMZ": 6,
+ "VID": 7,
+ "VIB": 8,
+ "NFR": 9,
+ "DISR": 10,
+ "DIC": 11,
+ "RSG": 12,
+ "INC": 13,
+ "STF": 14,
+ "GNS": 15,
+ "HPT": 16,
+ "SCO": 17,
+ "DISC": 18,
+ "CRK": 19,
+ "COR": 20,
+ "STR": 21,
+ "BTF": 22,
+ "CSP": 23,
+ "WDS": 24,
+ "WDD": 25,
+ "PRS": 26,
+ "RAD": 27,
+ "ILL": 28,
+ "UVT": 29,
+ }
+)
+
+func (x MonitoryType) Enum() *MonitoryType {
+ p := new(MonitoryType)
+ *p = x
+ return p
+}
+
+func (x MonitoryType) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (MonitoryType) Descriptor() protoreflect.EnumDescriptor {
+ return file_MonitorDataProtocol_proto_enumTypes[0].Descriptor()
+}
+
+func (MonitoryType) Type() protoreflect.EnumType {
+ return &file_MonitorDataProtocol_proto_enumTypes[0]
+}
+
+func (x MonitoryType) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use MonitoryType.Descriptor instead.
+func (MonitoryType) EnumDescriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{0}
+}
+
+// 复合类型
+type ComplexData struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // 各个监测数据组成的数据,解开后循环解析
+ SensorData []*SensorData `protobuf:"bytes,1,rep,name=sensorData,proto3" json:"sensorData,omitempty"`
+}
+
+func (x *ComplexData) Reset() {
+ *x = ComplexData{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ComplexData) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ComplexData) ProtoMessage() {}
+
+func (x *ComplexData) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ComplexData.ProtoReflect.Descriptor instead.
+func (*ComplexData) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *ComplexData) GetSensorData() []*SensorData {
+ if x != nil {
+ return x.SensorData
+ }
+ return nil
+}
+
+type SensorData struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // 监测类型
+ MonitorType MonitoryType `protobuf:"varint,1,opt,name=monitorType,proto3,enum=protoDataFiles.MonitoryType" json:"monitorType,omitempty"`
+ // 测点编码
+ SensorNo string `protobuf:"bytes,2,opt,name=sensorNo,proto3" json:"sensorNo,omitempty"`
+ // 上传时间戳
+ UpTime int64 `protobuf:"varint,3,opt,name=upTime,proto3" json:"upTime,omitempty"`
+ // Types that are assignable to DataBody:
+ //
+ // *SensorData_Rhs
+ // *SensorData_Pws
+ // *SensorData_Frz
+ // *SensorData_Hsd
+ // *SensorData_Uan
+ // *SensorData_Tmp
+ // *SensorData_Lmz
+ // *SensorData_Vid
+ // *SensorData_Vib
+ // *SensorData_Nfr
+ // *SensorData_Disr
+ // *SensorData_Dic
+ // *SensorData_Rsg
+ // *SensorData_Inc
+ // *SensorData_Stf
+ // *SensorData_Gns
+ // *SensorData_Hpt
+ // *SensorData_Sco
+ // *SensorData_Disc
+ // *SensorData_Crk
+ // *SensorData_Cor
+ // *SensorData_Str
+ // *SensorData_Btf
+ // *SensorData_Csp
+ // *SensorData_Wds
+ // *SensorData_Wdd
+ // *SensorData_Prs
+ // *SensorData_Rad
+ // *SensorData_Ill
+ // *SensorData_Uvt
+ DataBody isSensorData_DataBody `protobuf_oneof:"dataBody"`
+}
+
+func (x *SensorData) Reset() {
+ *x = SensorData{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SensorData) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SensorData) ProtoMessage() {}
+
+func (x *SensorData) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SensorData.ProtoReflect.Descriptor instead.
+func (*SensorData) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *SensorData) GetMonitorType() MonitoryType {
+ if x != nil {
+ return x.MonitorType
+ }
+ return MonitoryType_RHS
+}
+
+func (x *SensorData) GetSensorNo() string {
+ if x != nil {
+ return x.SensorNo
+ }
+ return ""
+}
+
+func (x *SensorData) GetUpTime() int64 {
+ if x != nil {
+ return x.UpTime
+ }
+ return 0
+}
+
+func (m *SensorData) GetDataBody() isSensorData_DataBody {
+ if m != nil {
+ return m.DataBody
+ }
+ return nil
+}
+
+func (x *SensorData) GetRhs() *RHSRealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Rhs); ok {
+ return x.Rhs
+ }
+ return nil
+}
+
+func (x *SensorData) GetPws() *PWSRealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Pws); ok {
+ return x.Pws
+ }
+ return nil
+}
+
+func (x *SensorData) GetFrz() *FRZRealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Frz); ok {
+ return x.Frz
+ }
+ return nil
+}
+
+func (x *SensorData) GetHsd() *HSDRealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Hsd); ok {
+ return x.Hsd
+ }
+ return nil
+}
+
+func (x *SensorData) GetUan() *UANRealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Uan); ok {
+ return x.Uan
+ }
+ return nil
+}
+
+func (x *SensorData) GetTmp() *TMPRealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Tmp); ok {
+ return x.Tmp
+ }
+ return nil
+}
+
+func (x *SensorData) GetLmz() *LMZRealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Lmz); ok {
+ return x.Lmz
+ }
+ return nil
+}
+
+func (x *SensorData) GetVid() *VIDRealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Vid); ok {
+ return x.Vid
+ }
+ return nil
+}
+
+func (x *SensorData) GetVib() *VIBRealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Vib); ok {
+ return x.Vib
+ }
+ return nil
+}
+
+func (x *SensorData) GetNfr() *NFRRealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Nfr); ok {
+ return x.Nfr
+ }
+ return nil
+}
+
+func (x *SensorData) GetDisr() *DISRRealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Disr); ok {
+ return x.Disr
+ }
+ return nil
+}
+
+func (x *SensorData) GetDic() *DICRealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Dic); ok {
+ return x.Dic
+ }
+ return nil
+}
+
+func (x *SensorData) GetRsg() *RSGRealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Rsg); ok {
+ return x.Rsg
+ }
+ return nil
+}
+
+func (x *SensorData) GetInc() *INCRealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Inc); ok {
+ return x.Inc
+ }
+ return nil
+}
+
+func (x *SensorData) GetStf() *STFRealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Stf); ok {
+ return x.Stf
+ }
+ return nil
+}
+
+func (x *SensorData) GetGns() *GNSRealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Gns); ok {
+ return x.Gns
+ }
+ return nil
+}
+
+func (x *SensorData) GetHpt() *HPTRealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Hpt); ok {
+ return x.Hpt
+ }
+ return nil
+}
+
+func (x *SensorData) GetSco() *SCORealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Sco); ok {
+ return x.Sco
+ }
+ return nil
+}
+
+func (x *SensorData) GetDisc() *DISCRealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Disc); ok {
+ return x.Disc
+ }
+ return nil
+}
+
+func (x *SensorData) GetCrk() *CRKRealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Crk); ok {
+ return x.Crk
+ }
+ return nil
+}
+
+func (x *SensorData) GetCor() *CORRealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Cor); ok {
+ return x.Cor
+ }
+ return nil
+}
+
+func (x *SensorData) GetStr() *STRRealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Str); ok {
+ return x.Str
+ }
+ return nil
+}
+
+func (x *SensorData) GetBtf() *BTFRealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Btf); ok {
+ return x.Btf
+ }
+ return nil
+}
+
+func (x *SensorData) GetCsp() *CSPRealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Csp); ok {
+ return x.Csp
+ }
+ return nil
+}
+
+func (x *SensorData) GetWds() *WDSRealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Wds); ok {
+ return x.Wds
+ }
+ return nil
+}
+
+func (x *SensorData) GetWdd() *WDDRealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Wdd); ok {
+ return x.Wdd
+ }
+ return nil
+}
+
+func (x *SensorData) GetPrs() *PRSRealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Prs); ok {
+ return x.Prs
+ }
+ return nil
+}
+
+func (x *SensorData) GetRad() *RADRealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Rad); ok {
+ return x.Rad
+ }
+ return nil
+}
+
+func (x *SensorData) GetIll() *ILLRealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Ill); ok {
+ return x.Ill
+ }
+ return nil
+}
+
+func (x *SensorData) GetUvt() *UVTRealTime {
+ if x, ok := x.GetDataBody().(*SensorData_Uvt); ok {
+ return x.Uvt
+ }
+ return nil
+}
+
+type isSensorData_DataBody interface {
+ isSensorData_DataBody()
+}
+
+type SensorData_Rhs struct {
+ // 环境温湿度
+ Rhs *RHSRealTime `protobuf:"bytes,4,opt,name=rhs,proto3,oneof"`
+}
+
+type SensorData_Pws struct {
+ // 雨量
+ Pws *PWSRealTime `protobuf:"bytes,5,opt,name=pws,proto3,oneof"`
+}
+
+type SensorData_Frz struct {
+ // 结冰
+ Frz *FRZRealTime `protobuf:"bytes,6,opt,name=frz,proto3,oneof"`
+}
+
+type SensorData_Hsd struct {
+ // 车辆荷载
+ Hsd *HSDRealTime `protobuf:"bytes,7,opt,name=hsd,proto3,oneof"`
+}
+
+type SensorData_Uan struct {
+ // 风速、风向
+ Uan *UANRealTime `protobuf:"bytes,8,opt,name=uan,proto3,oneof"`
+}
+
+type SensorData_Tmp struct {
+ // 结构温度
+ Tmp *TMPRealTime `protobuf:"bytes,9,opt,name=tmp,proto3,oneof"`
+}
+
+type SensorData_Lmz struct {
+ // 路面、桥面温度
+ Lmz *LMZRealTime `protobuf:"bytes,10,opt,name=lmz,proto3,oneof"`
+}
+
+type SensorData_Vid struct {
+ // 船舶撞击、地震
+ Vid *VIDRealTime `protobuf:"bytes,11,opt,name=vid,proto3,oneof"`
+}
+
+type SensorData_Vib struct {
+ // 振动
+ Vib *VIBRealTime `protobuf:"bytes,12,opt,name=vib,proto3,oneof"`
+}
+
+type SensorData_Nfr struct {
+ // 自振频率
+ Nfr *NFRRealTime `protobuf:"bytes,13,opt,name=nfr,proto3,oneof"`
+}
+
+type SensorData_Disr struct {
+ // 位移(结构响应)
+ Disr *DISRRealTime `protobuf:"bytes,14,opt,name=disr,proto3,oneof"`
+}
+
+type SensorData_Dic struct {
+ // 索力
+ Dic *DICRealTime `protobuf:"bytes,15,opt,name=dic,proto3,oneof"`
+}
+
+type SensorData_Rsg struct {
+ // 应变
+ Rsg *RSGRealTime `protobuf:"bytes,16,opt,name=rsg,proto3,oneof"`
+}
+
+type SensorData_Inc struct {
+ // 转角
+ Inc *INCRealTime `protobuf:"bytes,17,opt,name=inc,proto3,oneof"`
+}
+
+type SensorData_Stf struct {
+ // 支座反力
+ Stf *STFRealTime `protobuf:"bytes,18,opt,name=stf,proto3,oneof"`
+}
+
+type SensorData_Gns struct {
+ // 结构空间变形
+ Gns *GNSRealTime `protobuf:"bytes,19,opt,name=gns,proto3,oneof"`
+}
+
+type SensorData_Hpt struct {
+ // 挠度(变形)
+ Hpt *HPTRealTime `protobuf:"bytes,20,opt,name=hpt,proto3,oneof"`
+}
+
+type SensorData_Sco struct {
+ // 基础冲刷
+ Sco *SCORealTime `protobuf:"bytes,21,opt,name=sco,proto3,oneof"`
+}
+
+type SensorData_Disc struct {
+ // 位移(结构变化)
+ Disc *DISCRealTime `protobuf:"bytes,22,opt,name=disc,proto3,oneof"`
+}
+
+type SensorData_Crk struct {
+ // 结构裂缝
+ Crk *CRKRealTime `protobuf:"bytes,23,opt,name=crk,proto3,oneof"`
+}
+
+type SensorData_Cor struct {
+ // 腐蚀
+ Cor *CORRealTime `protobuf:"bytes,24,opt,name=cor,proto3,oneof"`
+}
+
+type SensorData_Str struct {
+ // 体外预应力
+ Str *STRRealTime `protobuf:"bytes,25,opt,name=str,proto3,oneof"`
+}
+
+type SensorData_Btf struct {
+ // (螺栓状态)螺栓紧固力
+ Btf *BTFRealTime `protobuf:"bytes,26,opt,name=btf,proto3,oneof"`
+}
+
+type SensorData_Csp struct {
+ // 索夹滑移
+ Csp *CSPRealTime `protobuf:"bytes,27,opt,name=csp,proto3,oneof"`
+}
+
+type SensorData_Wds struct {
+ // 风速
+ Wds *WDSRealTime `protobuf:"bytes,28,opt,name=wds,proto3,oneof"`
+}
+
+type SensorData_Wdd struct {
+ // 风向
+ Wdd *WDDRealTime `protobuf:"bytes,29,opt,name=wdd,proto3,oneof"`
+}
+
+type SensorData_Prs struct {
+ // 气压
+ Prs *PRSRealTime `protobuf:"bytes,30,opt,name=prs,proto3,oneof"`
+}
+
+type SensorData_Rad struct {
+ // 总辐射
+ Rad *RADRealTime `protobuf:"bytes,31,opt,name=rad,proto3,oneof"`
+}
+
+type SensorData_Ill struct {
+ // 光照度
+ Ill *ILLRealTime `protobuf:"bytes,32,opt,name=ill,proto3,oneof"`
+}
+
+type SensorData_Uvt struct {
+ // 紫外强度
+ Uvt *UVTRealTime `protobuf:"bytes,33,opt,name=uvt,proto3,oneof"`
+}
+
+func (*SensorData_Rhs) isSensorData_DataBody() {}
+
+func (*SensorData_Pws) isSensorData_DataBody() {}
+
+func (*SensorData_Frz) isSensorData_DataBody() {}
+
+func (*SensorData_Hsd) isSensorData_DataBody() {}
+
+func (*SensorData_Uan) isSensorData_DataBody() {}
+
+func (*SensorData_Tmp) isSensorData_DataBody() {}
+
+func (*SensorData_Lmz) isSensorData_DataBody() {}
+
+func (*SensorData_Vid) isSensorData_DataBody() {}
+
+func (*SensorData_Vib) isSensorData_DataBody() {}
+
+func (*SensorData_Nfr) isSensorData_DataBody() {}
+
+func (*SensorData_Disr) isSensorData_DataBody() {}
+
+func (*SensorData_Dic) isSensorData_DataBody() {}
+
+func (*SensorData_Rsg) isSensorData_DataBody() {}
+
+func (*SensorData_Inc) isSensorData_DataBody() {}
+
+func (*SensorData_Stf) isSensorData_DataBody() {}
+
+func (*SensorData_Gns) isSensorData_DataBody() {}
+
+func (*SensorData_Hpt) isSensorData_DataBody() {}
+
+func (*SensorData_Sco) isSensorData_DataBody() {}
+
+func (*SensorData_Disc) isSensorData_DataBody() {}
+
+func (*SensorData_Crk) isSensorData_DataBody() {}
+
+func (*SensorData_Cor) isSensorData_DataBody() {}
+
+func (*SensorData_Str) isSensorData_DataBody() {}
+
+func (*SensorData_Btf) isSensorData_DataBody() {}
+
+func (*SensorData_Csp) isSensorData_DataBody() {}
+
+func (*SensorData_Wds) isSensorData_DataBody() {}
+
+func (*SensorData_Wdd) isSensorData_DataBody() {}
+
+func (*SensorData_Prs) isSensorData_DataBody() {}
+
+func (*SensorData_Rad) isSensorData_DataBody() {}
+
+func (*SensorData_Ill) isSensorData_DataBody() {}
+
+func (*SensorData_Uvt) isSensorData_DataBody() {}
+
+// 环境温湿度
+type RHSRealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Temperature []float32 `protobuf:"fixed32,1,rep,packed,name=temperature,proto3" json:"temperature,omitempty"`
+ Humidity []float32 `protobuf:"fixed32,2,rep,packed,name=humidity,proto3" json:"humidity,omitempty"`
+}
+
+func (x *RHSRealTime) Reset() {
+ *x = RHSRealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RHSRealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RHSRealTime) ProtoMessage() {}
+
+func (x *RHSRealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RHSRealTime.ProtoReflect.Descriptor instead.
+func (*RHSRealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *RHSRealTime) GetTemperature() []float32 {
+ if x != nil {
+ return x.Temperature
+ }
+ return nil
+}
+
+func (x *RHSRealTime) GetHumidity() []float32 {
+ if x != nil {
+ return x.Humidity
+ }
+ return nil
+}
+
+// 雨量
+type PWSRealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Rainfall []float32 `protobuf:"fixed32,1,rep,packed,name=rainfall,proto3" json:"rainfall,omitempty"`
+}
+
+func (x *PWSRealTime) Reset() {
+ *x = PWSRealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PWSRealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PWSRealTime) ProtoMessage() {}
+
+func (x *PWSRealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PWSRealTime.ProtoReflect.Descriptor instead.
+func (*PWSRealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *PWSRealTime) GetRainfall() []float32 {
+ if x != nil {
+ return x.Rainfall
+ }
+ return nil
+}
+
+// 结冰
+type FRZRealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ IceThickness []float32 `protobuf:"fixed32,1,rep,packed,name=iceThickness,proto3" json:"iceThickness,omitempty"`
+}
+
+func (x *FRZRealTime) Reset() {
+ *x = FRZRealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *FRZRealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FRZRealTime) ProtoMessage() {}
+
+func (x *FRZRealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use FRZRealTime.ProtoReflect.Descriptor instead.
+func (*FRZRealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *FRZRealTime) GetIceThickness() []float32 {
+ if x != nil {
+ return x.IceThickness
+ }
+ return nil
+}
+
+// 车辆荷载
+type HSDRealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // 车道号
+ LaneNo int32 `protobuf:"varint,1,opt,name=laneNo,proto3" json:"laneNo,omitempty"`
+ // 上下行
+ Direction int32 `protobuf:"varint,2,opt,name=direction,proto3" json:"direction,omitempty"`
+ // 轴数
+ AxleNumber int32 `protobuf:"varint,3,opt,name=axleNumber,proto3" json:"axleNumber,omitempty"`
+ // 车速
+ Speed int32 `protobuf:"varint,4,opt,name=speed,proto3" json:"speed,omitempty"`
+ // 总重(kg)
+ Weight int32 `protobuf:"varint,5,opt,name=weight,proto3" json:"weight,omitempty"`
+ // 车长(cm)
+ Length int32 `protobuf:"varint,6,opt,name=length,proto3" json:"length,omitempty"`
+ // 车型
+ CarType int32 `protobuf:"varint,7,opt,name=carType,proto3" json:"carType,omitempty"`
+ // 轴重(kg)
+ AxleWeights string `protobuf:"bytes,8,opt,name=axleWeights,proto3" json:"axleWeights,omitempty"`
+ // 轴距(cm)
+ AxleBases string `protobuf:"bytes,9,opt,name=axleBases,proto3" json:"axleBases,omitempty"`
+ // 车牌
+ PlateNumber string `protobuf:"bytes,10,opt,name=plateNumber,proto3" json:"plateNumber,omitempty"`
+}
+
+func (x *HSDRealTime) Reset() {
+ *x = HSDRealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *HSDRealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*HSDRealTime) ProtoMessage() {}
+
+func (x *HSDRealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use HSDRealTime.ProtoReflect.Descriptor instead.
+func (*HSDRealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *HSDRealTime) GetLaneNo() int32 {
+ if x != nil {
+ return x.LaneNo
+ }
+ return 0
+}
+
+func (x *HSDRealTime) GetDirection() int32 {
+ if x != nil {
+ return x.Direction
+ }
+ return 0
+}
+
+func (x *HSDRealTime) GetAxleNumber() int32 {
+ if x != nil {
+ return x.AxleNumber
+ }
+ return 0
+}
+
+func (x *HSDRealTime) GetSpeed() int32 {
+ if x != nil {
+ return x.Speed
+ }
+ return 0
+}
+
+func (x *HSDRealTime) GetWeight() int32 {
+ if x != nil {
+ return x.Weight
+ }
+ return 0
+}
+
+func (x *HSDRealTime) GetLength() int32 {
+ if x != nil {
+ return x.Length
+ }
+ return 0
+}
+
+func (x *HSDRealTime) GetCarType() int32 {
+ if x != nil {
+ return x.CarType
+ }
+ return 0
+}
+
+func (x *HSDRealTime) GetAxleWeights() string {
+ if x != nil {
+ return x.AxleWeights
+ }
+ return ""
+}
+
+func (x *HSDRealTime) GetAxleBases() string {
+ if x != nil {
+ return x.AxleBases
+ }
+ return ""
+}
+
+func (x *HSDRealTime) GetPlateNumber() string {
+ if x != nil {
+ return x.PlateNumber
+ }
+ return ""
+}
+
+// 风速、风向
+type UANRealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ WindSpeed []float32 `protobuf:"fixed32,1,rep,packed,name=windSpeed,proto3" json:"windSpeed,omitempty"`
+ WindDirection []float32 `protobuf:"fixed32,2,rep,packed,name=windDirection,proto3" json:"windDirection,omitempty"`
+ HorizontalWindSpeed []float32 `protobuf:"fixed32,3,rep,packed,name=horizontalWindSpeed,proto3" json:"horizontalWindSpeed,omitempty"`
+ WindAttackAngle []float32 `protobuf:"fixed32,4,rep,packed,name=windAttackAngle,proto3" json:"windAttackAngle,omitempty"`
+}
+
+func (x *UANRealTime) Reset() {
+ *x = UANRealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UANRealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UANRealTime) ProtoMessage() {}
+
+func (x *UANRealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[6]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UANRealTime.ProtoReflect.Descriptor instead.
+func (*UANRealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *UANRealTime) GetWindSpeed() []float32 {
+ if x != nil {
+ return x.WindSpeed
+ }
+ return nil
+}
+
+func (x *UANRealTime) GetWindDirection() []float32 {
+ if x != nil {
+ return x.WindDirection
+ }
+ return nil
+}
+
+func (x *UANRealTime) GetHorizontalWindSpeed() []float32 {
+ if x != nil {
+ return x.HorizontalWindSpeed
+ }
+ return nil
+}
+
+func (x *UANRealTime) GetWindAttackAngle() []float32 {
+ if x != nil {
+ return x.WindAttackAngle
+ }
+ return nil
+}
+
+// 结构温度
+type TMPRealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Temperature []float32 `protobuf:"fixed32,1,rep,packed,name=temperature,proto3" json:"temperature,omitempty"`
+}
+
+func (x *TMPRealTime) Reset() {
+ *x = TMPRealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *TMPRealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TMPRealTime) ProtoMessage() {}
+
+func (x *TMPRealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[7]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TMPRealTime.ProtoReflect.Descriptor instead.
+func (*TMPRealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *TMPRealTime) GetTemperature() []float32 {
+ if x != nil {
+ return x.Temperature
+ }
+ return nil
+}
+
+// 路面、桥面温度
+type LMZRealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Temperature []float32 `protobuf:"fixed32,1,rep,packed,name=temperature,proto3" json:"temperature,omitempty"`
+}
+
+func (x *LMZRealTime) Reset() {
+ *x = LMZRealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *LMZRealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LMZRealTime) ProtoMessage() {}
+
+func (x *LMZRealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[8]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use LMZRealTime.ProtoReflect.Descriptor instead.
+func (*LMZRealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *LMZRealTime) GetTemperature() []float32 {
+ if x != nil {
+ return x.Temperature
+ }
+ return nil
+}
+
+// 船舶撞击、地震
+type VIDRealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Acceleration []float32 `protobuf:"fixed32,1,rep,packed,name=acceleration,proto3" json:"acceleration,omitempty"`
+}
+
+func (x *VIDRealTime) Reset() {
+ *x = VIDRealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[9]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *VIDRealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VIDRealTime) ProtoMessage() {}
+
+func (x *VIDRealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[9]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use VIDRealTime.ProtoReflect.Descriptor instead.
+func (*VIDRealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{9}
+}
+
+func (x *VIDRealTime) GetAcceleration() []float32 {
+ if x != nil {
+ return x.Acceleration
+ }
+ return nil
+}
+
+// 振动
+type VIBRealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Acceleration []float32 `protobuf:"fixed32,1,rep,packed,name=acceleration,proto3" json:"acceleration,omitempty"`
+}
+
+func (x *VIBRealTime) Reset() {
+ *x = VIBRealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[10]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *VIBRealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VIBRealTime) ProtoMessage() {}
+
+func (x *VIBRealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[10]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use VIBRealTime.ProtoReflect.Descriptor instead.
+func (*VIBRealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{10}
+}
+
+func (x *VIBRealTime) GetAcceleration() []float32 {
+ if x != nil {
+ return x.Acceleration
+ }
+ return nil
+}
+
+// 自振频率
+type NFRRealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Frequency []float32 `protobuf:"fixed32,1,rep,packed,name=frequency,proto3" json:"frequency,omitempty"`
+ DampingRatio []float32 `protobuf:"fixed32,2,rep,packed,name=dampingRatio,proto3" json:"dampingRatio,omitempty"`
+}
+
+func (x *NFRRealTime) Reset() {
+ *x = NFRRealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[11]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *NFRRealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NFRRealTime) ProtoMessage() {}
+
+func (x *NFRRealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[11]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use NFRRealTime.ProtoReflect.Descriptor instead.
+func (*NFRRealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{11}
+}
+
+func (x *NFRRealTime) GetFrequency() []float32 {
+ if x != nil {
+ return x.Frequency
+ }
+ return nil
+}
+
+func (x *NFRRealTime) GetDampingRatio() []float32 {
+ if x != nil {
+ return x.DampingRatio
+ }
+ return nil
+}
+
+// 位移(结构响应)
+type DISRRealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Displacement []float32 `protobuf:"fixed32,1,rep,packed,name=displacement,proto3" json:"displacement,omitempty"`
+}
+
+func (x *DISRRealTime) Reset() {
+ *x = DISRRealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[12]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DISRRealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DISRRealTime) ProtoMessage() {}
+
+func (x *DISRRealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[12]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DISRRealTime.ProtoReflect.Descriptor instead.
+func (*DISRRealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{12}
+}
+
+func (x *DISRRealTime) GetDisplacement() []float32 {
+ if x != nil {
+ return x.Displacement
+ }
+ return nil
+}
+
+// 索力
+type DICRealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ CableForce []float32 `protobuf:"fixed32,1,rep,packed,name=cableForce,proto3" json:"cableForce,omitempty"`
+}
+
+func (x *DICRealTime) Reset() {
+ *x = DICRealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[13]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DICRealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DICRealTime) ProtoMessage() {}
+
+func (x *DICRealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[13]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DICRealTime.ProtoReflect.Descriptor instead.
+func (*DICRealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{13}
+}
+
+func (x *DICRealTime) GetCableForce() []float32 {
+ if x != nil {
+ return x.CableForce
+ }
+ return nil
+}
+
+// 应变
+type RSGRealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Strain []float32 `protobuf:"fixed32,1,rep,packed,name=strain,proto3" json:"strain,omitempty"`
+}
+
+func (x *RSGRealTime) Reset() {
+ *x = RSGRealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[14]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RSGRealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RSGRealTime) ProtoMessage() {}
+
+func (x *RSGRealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[14]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RSGRealTime.ProtoReflect.Descriptor instead.
+func (*RSGRealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{14}
+}
+
+func (x *RSGRealTime) GetStrain() []float32 {
+ if x != nil {
+ return x.Strain
+ }
+ return nil
+}
+
+// 转角
+type INCRealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ X []float32 `protobuf:"fixed32,1,rep,packed,name=x,proto3" json:"x,omitempty"`
+ Y []float32 `protobuf:"fixed32,2,rep,packed,name=y,proto3" json:"y,omitempty"`
+}
+
+func (x *INCRealTime) Reset() {
+ *x = INCRealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[15]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *INCRealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*INCRealTime) ProtoMessage() {}
+
+func (x *INCRealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[15]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use INCRealTime.ProtoReflect.Descriptor instead.
+func (*INCRealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{15}
+}
+
+func (x *INCRealTime) GetX() []float32 {
+ if x != nil {
+ return x.X
+ }
+ return nil
+}
+
+func (x *INCRealTime) GetY() []float32 {
+ if x != nil {
+ return x.Y
+ }
+ return nil
+}
+
+// 支座反力
+type STFRealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ SupportAction []float32 `protobuf:"fixed32,1,rep,packed,name=supportAction,proto3" json:"supportAction,omitempty"`
+}
+
+func (x *STFRealTime) Reset() {
+ *x = STFRealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[16]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *STFRealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*STFRealTime) ProtoMessage() {}
+
+func (x *STFRealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[16]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use STFRealTime.ProtoReflect.Descriptor instead.
+func (*STFRealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{16}
+}
+
+func (x *STFRealTime) GetSupportAction() []float32 {
+ if x != nil {
+ return x.SupportAction
+ }
+ return nil
+}
+
+// 结构空间变形
+type GNSRealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ X []float32 `protobuf:"fixed32,1,rep,packed,name=x,proto3" json:"x,omitempty"`
+ Y []float32 `protobuf:"fixed32,2,rep,packed,name=y,proto3" json:"y,omitempty"`
+ Z []float32 `protobuf:"fixed32,3,rep,packed,name=z,proto3" json:"z,omitempty"`
+}
+
+func (x *GNSRealTime) Reset() {
+ *x = GNSRealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[17]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GNSRealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GNSRealTime) ProtoMessage() {}
+
+func (x *GNSRealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[17]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GNSRealTime.ProtoReflect.Descriptor instead.
+func (*GNSRealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{17}
+}
+
+func (x *GNSRealTime) GetX() []float32 {
+ if x != nil {
+ return x.X
+ }
+ return nil
+}
+
+func (x *GNSRealTime) GetY() []float32 {
+ if x != nil {
+ return x.Y
+ }
+ return nil
+}
+
+func (x *GNSRealTime) GetZ() []float32 {
+ if x != nil {
+ return x.Z
+ }
+ return nil
+}
+
+// 挠度(变形)
+type HPTRealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Deflection []float32 `protobuf:"fixed32,1,rep,packed,name=deflection,proto3" json:"deflection,omitempty"`
+}
+
+func (x *HPTRealTime) Reset() {
+ *x = HPTRealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[18]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *HPTRealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*HPTRealTime) ProtoMessage() {}
+
+func (x *HPTRealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[18]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use HPTRealTime.ProtoReflect.Descriptor instead.
+func (*HPTRealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{18}
+}
+
+func (x *HPTRealTime) GetDeflection() []float32 {
+ if x != nil {
+ return x.Deflection
+ }
+ return nil
+}
+
+// 基础冲刷
+type SCORealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Depth []float32 `protobuf:"fixed32,1,rep,packed,name=depth,proto3" json:"depth,omitempty"`
+}
+
+func (x *SCORealTime) Reset() {
+ *x = SCORealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[19]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SCORealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SCORealTime) ProtoMessage() {}
+
+func (x *SCORealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[19]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SCORealTime.ProtoReflect.Descriptor instead.
+func (*SCORealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{19}
+}
+
+func (x *SCORealTime) GetDepth() []float32 {
+ if x != nil {
+ return x.Depth
+ }
+ return nil
+}
+
+// 位移(结构变化)
+type DISCRealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ X []float32 `protobuf:"fixed32,1,rep,packed,name=x,proto3" json:"x,omitempty"`
+ Y []float32 `protobuf:"fixed32,2,rep,packed,name=y,proto3" json:"y,omitempty"`
+ Z []float32 `protobuf:"fixed32,3,rep,packed,name=z,proto3" json:"z,omitempty"`
+}
+
+func (x *DISCRealTime) Reset() {
+ *x = DISCRealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[20]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DISCRealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DISCRealTime) ProtoMessage() {}
+
+func (x *DISCRealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[20]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DISCRealTime.ProtoReflect.Descriptor instead.
+func (*DISCRealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{20}
+}
+
+func (x *DISCRealTime) GetX() []float32 {
+ if x != nil {
+ return x.X
+ }
+ return nil
+}
+
+func (x *DISCRealTime) GetY() []float32 {
+ if x != nil {
+ return x.Y
+ }
+ return nil
+}
+
+func (x *DISCRealTime) GetZ() []float32 {
+ if x != nil {
+ return x.Z
+ }
+ return nil
+}
+
+// 结构裂缝
+type CRKRealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ CrackWidth []float32 `protobuf:"fixed32,1,rep,packed,name=crackWidth,proto3" json:"crackWidth,omitempty"`
+}
+
+func (x *CRKRealTime) Reset() {
+ *x = CRKRealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[21]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CRKRealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CRKRealTime) ProtoMessage() {}
+
+func (x *CRKRealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[21]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CRKRealTime.ProtoReflect.Descriptor instead.
+func (*CRKRealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{21}
+}
+
+func (x *CRKRealTime) GetCrackWidth() []float32 {
+ if x != nil {
+ return x.CrackWidth
+ }
+ return nil
+}
+
+// 腐蚀
+type CORRealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ChlorideConcentration []float32 `protobuf:"fixed32,1,rep,packed,name=chlorideConcentration,proto3" json:"chlorideConcentration,omitempty"`
+ CorrosionDepth []float32 `protobuf:"fixed32,2,rep,packed,name=corrosionDepth,proto3" json:"corrosionDepth,omitempty"`
+}
+
+func (x *CORRealTime) Reset() {
+ *x = CORRealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[22]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CORRealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CORRealTime) ProtoMessage() {}
+
+func (x *CORRealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[22]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CORRealTime.ProtoReflect.Descriptor instead.
+func (*CORRealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{22}
+}
+
+func (x *CORRealTime) GetChlorideConcentration() []float32 {
+ if x != nil {
+ return x.ChlorideConcentration
+ }
+ return nil
+}
+
+func (x *CORRealTime) GetCorrosionDepth() []float32 {
+ if x != nil {
+ return x.CorrosionDepth
+ }
+ return nil
+}
+
+// 体外预应力
+type STRRealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Stress []float32 `protobuf:"fixed32,1,rep,packed,name=stress,proto3" json:"stress,omitempty"`
+}
+
+func (x *STRRealTime) Reset() {
+ *x = STRRealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[23]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *STRRealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*STRRealTime) ProtoMessage() {}
+
+func (x *STRRealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[23]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use STRRealTime.ProtoReflect.Descriptor instead.
+func (*STRRealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{23}
+}
+
+func (x *STRRealTime) GetStress() []float32 {
+ if x != nil {
+ return x.Stress
+ }
+ return nil
+}
+
+// (螺栓状态)螺栓紧固力
+type BTFRealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ BoltTightForce []float32 `protobuf:"fixed32,1,rep,packed,name=boltTightForce,proto3" json:"boltTightForce,omitempty"`
+}
+
+func (x *BTFRealTime) Reset() {
+ *x = BTFRealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[24]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *BTFRealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BTFRealTime) ProtoMessage() {}
+
+func (x *BTFRealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[24]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use BTFRealTime.ProtoReflect.Descriptor instead.
+func (*BTFRealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{24}
+}
+
+func (x *BTFRealTime) GetBoltTightForce() []float32 {
+ if x != nil {
+ return x.BoltTightForce
+ }
+ return nil
+}
+
+// 索夹滑移
+type CSPRealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Displacement []float32 `protobuf:"fixed32,1,rep,packed,name=displacement,proto3" json:"displacement,omitempty"`
+}
+
+func (x *CSPRealTime) Reset() {
+ *x = CSPRealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[25]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CSPRealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CSPRealTime) ProtoMessage() {}
+
+func (x *CSPRealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[25]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CSPRealTime.ProtoReflect.Descriptor instead.
+func (*CSPRealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{25}
+}
+
+func (x *CSPRealTime) GetDisplacement() []float32 {
+ if x != nil {
+ return x.Displacement
+ }
+ return nil
+}
+
+// 风速
+type WDSRealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ WindSpeed []float32 `protobuf:"fixed32,1,rep,packed,name=windSpeed,proto3" json:"windSpeed,omitempty"`
+}
+
+func (x *WDSRealTime) Reset() {
+ *x = WDSRealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[26]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *WDSRealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*WDSRealTime) ProtoMessage() {}
+
+func (x *WDSRealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[26]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use WDSRealTime.ProtoReflect.Descriptor instead.
+func (*WDSRealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{26}
+}
+
+func (x *WDSRealTime) GetWindSpeed() []float32 {
+ if x != nil {
+ return x.WindSpeed
+ }
+ return nil
+}
+
+// 风向
+type WDDRealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ WindDirection []float32 `protobuf:"fixed32,1,rep,packed,name=windDirection,proto3" json:"windDirection,omitempty"`
+}
+
+func (x *WDDRealTime) Reset() {
+ *x = WDDRealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[27]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *WDDRealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*WDDRealTime) ProtoMessage() {}
+
+func (x *WDDRealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[27]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use WDDRealTime.ProtoReflect.Descriptor instead.
+func (*WDDRealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{27}
+}
+
+func (x *WDDRealTime) GetWindDirection() []float32 {
+ if x != nil {
+ return x.WindDirection
+ }
+ return nil
+}
+
+// 气压
+type PRSRealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Pressure []float32 `protobuf:"fixed32,1,rep,packed,name=pressure,proto3" json:"pressure,omitempty"`
+}
+
+func (x *PRSRealTime) Reset() {
+ *x = PRSRealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[28]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PRSRealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PRSRealTime) ProtoMessage() {}
+
+func (x *PRSRealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[28]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PRSRealTime.ProtoReflect.Descriptor instead.
+func (*PRSRealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{28}
+}
+
+func (x *PRSRealTime) GetPressure() []float32 {
+ if x != nil {
+ return x.Pressure
+ }
+ return nil
+}
+
+// 总辐射
+type RADRealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Radiation []float32 `protobuf:"fixed32,1,rep,packed,name=radiation,proto3" json:"radiation,omitempty"`
+}
+
+func (x *RADRealTime) Reset() {
+ *x = RADRealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[29]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RADRealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RADRealTime) ProtoMessage() {}
+
+func (x *RADRealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[29]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RADRealTime.ProtoReflect.Descriptor instead.
+func (*RADRealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{29}
+}
+
+func (x *RADRealTime) GetRadiation() []float32 {
+ if x != nil {
+ return x.Radiation
+ }
+ return nil
+}
+
+// 光照度
+type ILLRealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Illumination []float32 `protobuf:"fixed32,1,rep,packed,name=illumination,proto3" json:"illumination,omitempty"`
+}
+
+func (x *ILLRealTime) Reset() {
+ *x = ILLRealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[30]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ILLRealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ILLRealTime) ProtoMessage() {}
+
+func (x *ILLRealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[30]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ILLRealTime.ProtoReflect.Descriptor instead.
+func (*ILLRealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{30}
+}
+
+func (x *ILLRealTime) GetIllumination() []float32 {
+ if x != nil {
+ return x.Illumination
+ }
+ return nil
+}
+
+// 紫外强度
+type UVTRealTime struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Ultraviolet []float32 `protobuf:"fixed32,1,rep,packed,name=ultraviolet,proto3" json:"ultraviolet,omitempty"`
+}
+
+func (x *UVTRealTime) Reset() {
+ *x = UVTRealTime{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[31]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UVTRealTime) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UVTRealTime) ProtoMessage() {}
+
+func (x *UVTRealTime) ProtoReflect() protoreflect.Message {
+ mi := &file_MonitorDataProtocol_proto_msgTypes[31]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UVTRealTime.ProtoReflect.Descriptor instead.
+func (*UVTRealTime) Descriptor() ([]byte, []int) {
+ return file_MonitorDataProtocol_proto_rawDescGZIP(), []int{31}
+}
+
+func (x *UVTRealTime) GetUltraviolet() []float32 {
+ if x != nil {
+ return x.Ultraviolet
+ }
+ return nil
+}
+
+var File_MonitorDataProtocol_proto protoreflect.FileDescriptor
+
+var file_MonitorDataProtocol_proto_rawDesc = []byte{
+ 0x0a, 0x19, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f,
+ 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x45, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, 0x70, 0x6c,
+ 0x65, 0x78, 0x44, 0x61, 0x74, 0x61, 0x12, 0x36, 0x0a, 0x0a, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72,
+ 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x44, 0x61,
+ 0x74, 0x61, 0x52, 0x0a, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, 0xd4,
+ 0x0b, 0x0a, 0x0a, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3a, 0x0a,
+ 0x0b, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e,
+ 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x6f,
+ 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6e,
+ 0x73, 0x6f, 0x72, 0x4e, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x6e,
+ 0x73, 0x6f, 0x72, 0x4e, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2b, 0x0a,
+ 0x03, 0x72, 0x68, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x52, 0x48, 0x53, 0x52, 0x65, 0x61, 0x6c, 0x54,
+ 0x69, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x03, 0x72, 0x68, 0x73, 0x12, 0x2b, 0x0a, 0x03, 0x70, 0x77,
+ 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x46,
+ 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x50, 0x57, 0x53, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65,
+ 0x48, 0x00, 0x52, 0x03, 0x70, 0x77, 0x73, 0x12, 0x2b, 0x0a, 0x03, 0x66, 0x72, 0x7a, 0x18, 0x06,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x46, 0x69, 0x6c, 0x65,
+ 0x73, 0x2e, 0x46, 0x52, 0x5a, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x48, 0x00, 0x52,
+ 0x03, 0x66, 0x72, 0x7a, 0x12, 0x2b, 0x0a, 0x03, 0x68, 0x73, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x48,
+ 0x53, 0x44, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x03, 0x68, 0x73,
+ 0x64, 0x12, 0x2b, 0x0a, 0x03, 0x75, 0x61, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x55, 0x41, 0x4e, 0x52,
+ 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x03, 0x75, 0x61, 0x6e, 0x12, 0x2b,
+ 0x0a, 0x03, 0x74, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x54, 0x4d, 0x50, 0x52, 0x65, 0x61, 0x6c,
+ 0x54, 0x69, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x03, 0x74, 0x6d, 0x70, 0x12, 0x2b, 0x0a, 0x03, 0x6c,
+ 0x6d, 0x7a, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x4c, 0x4d, 0x5a, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d,
+ 0x65, 0x48, 0x00, 0x52, 0x03, 0x6c, 0x6d, 0x7a, 0x12, 0x2b, 0x0a, 0x03, 0x76, 0x69, 0x64, 0x18,
+ 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x46, 0x69, 0x6c,
+ 0x65, 0x73, 0x2e, 0x56, 0x49, 0x44, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x48, 0x00,
+ 0x52, 0x03, 0x76, 0x69, 0x64, 0x12, 0x2b, 0x0a, 0x03, 0x76, 0x69, 0x62, 0x18, 0x0c, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e,
+ 0x56, 0x49, 0x42, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x03, 0x76,
+ 0x69, 0x62, 0x12, 0x2b, 0x0a, 0x03, 0x6e, 0x66, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x4e, 0x46, 0x52,
+ 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x03, 0x6e, 0x66, 0x72, 0x12,
+ 0x2e, 0x0a, 0x04, 0x64, 0x69, 0x73, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x44, 0x49, 0x53, 0x52, 0x52,
+ 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x04, 0x64, 0x69, 0x73, 0x72, 0x12,
+ 0x2b, 0x0a, 0x03, 0x64, 0x69, 0x63, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x44, 0x49, 0x43, 0x52, 0x65, 0x61,
+ 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x03, 0x64, 0x69, 0x63, 0x12, 0x2b, 0x0a, 0x03,
+ 0x72, 0x73, 0x67, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x52, 0x53, 0x47, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69,
+ 0x6d, 0x65, 0x48, 0x00, 0x52, 0x03, 0x72, 0x73, 0x67, 0x12, 0x2b, 0x0a, 0x03, 0x69, 0x6e, 0x63,
+ 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x46, 0x69,
+ 0x6c, 0x65, 0x73, 0x2e, 0x49, 0x4e, 0x43, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x48,
+ 0x00, 0x52, 0x03, 0x69, 0x6e, 0x63, 0x12, 0x2b, 0x0a, 0x03, 0x73, 0x74, 0x66, 0x18, 0x12, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x73,
+ 0x2e, 0x53, 0x54, 0x46, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x03,
+ 0x73, 0x74, 0x66, 0x12, 0x2b, 0x0a, 0x03, 0x67, 0x6e, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x47, 0x4e,
+ 0x53, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x03, 0x67, 0x6e, 0x73,
+ 0x12, 0x2b, 0x0a, 0x03, 0x68, 0x70, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x48, 0x50, 0x54, 0x52, 0x65,
+ 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x03, 0x68, 0x70, 0x74, 0x12, 0x2b, 0x0a,
+ 0x03, 0x73, 0x63, 0x6f, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x53, 0x43, 0x4f, 0x52, 0x65, 0x61, 0x6c, 0x54,
+ 0x69, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x03, 0x73, 0x63, 0x6f, 0x12, 0x2e, 0x0a, 0x04, 0x64, 0x69,
+ 0x73, 0x63, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x44, 0x49, 0x53, 0x43, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69,
+ 0x6d, 0x65, 0x48, 0x00, 0x52, 0x04, 0x64, 0x69, 0x73, 0x63, 0x12, 0x2b, 0x0a, 0x03, 0x63, 0x72,
+ 0x6b, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x46,
+ 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x43, 0x52, 0x4b, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65,
+ 0x48, 0x00, 0x52, 0x03, 0x63, 0x72, 0x6b, 0x12, 0x2b, 0x0a, 0x03, 0x63, 0x6f, 0x72, 0x18, 0x18,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x46, 0x69, 0x6c, 0x65,
+ 0x73, 0x2e, 0x43, 0x4f, 0x52, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x48, 0x00, 0x52,
+ 0x03, 0x63, 0x6f, 0x72, 0x12, 0x2b, 0x0a, 0x03, 0x73, 0x74, 0x72, 0x18, 0x19, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x53,
+ 0x54, 0x52, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x03, 0x73, 0x74,
+ 0x72, 0x12, 0x2b, 0x0a, 0x03, 0x62, 0x74, 0x66, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x42, 0x54, 0x46, 0x52,
+ 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x03, 0x62, 0x74, 0x66, 0x12, 0x2b,
+ 0x0a, 0x03, 0x63, 0x73, 0x70, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x43, 0x53, 0x50, 0x52, 0x65, 0x61, 0x6c,
+ 0x54, 0x69, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x03, 0x63, 0x73, 0x70, 0x12, 0x2b, 0x0a, 0x03, 0x77,
+ 0x64, 0x73, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x57, 0x44, 0x53, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d,
+ 0x65, 0x48, 0x00, 0x52, 0x03, 0x77, 0x64, 0x73, 0x12, 0x2b, 0x0a, 0x03, 0x77, 0x64, 0x64, 0x18,
+ 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x46, 0x69, 0x6c,
+ 0x65, 0x73, 0x2e, 0x57, 0x44, 0x44, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x48, 0x00,
+ 0x52, 0x03, 0x77, 0x64, 0x64, 0x12, 0x2b, 0x0a, 0x03, 0x70, 0x72, 0x73, 0x18, 0x1e, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e,
+ 0x50, 0x52, 0x53, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x03, 0x70,
+ 0x72, 0x73, 0x12, 0x2b, 0x0a, 0x03, 0x72, 0x61, 0x64, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x52, 0x41, 0x44,
+ 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x64, 0x12,
+ 0x2b, 0x0a, 0x03, 0x69, 0x6c, 0x6c, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x49, 0x4c, 0x4c, 0x52, 0x65, 0x61,
+ 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x03, 0x69, 0x6c, 0x6c, 0x12, 0x2b, 0x0a, 0x03,
+ 0x75, 0x76, 0x74, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x55, 0x56, 0x54, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69,
+ 0x6d, 0x65, 0x48, 0x00, 0x52, 0x03, 0x75, 0x76, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x64, 0x61, 0x74,
+ 0x61, 0x42, 0x6f, 0x64, 0x79, 0x22, 0x53, 0x0a, 0x0b, 0x52, 0x48, 0x53, 0x52, 0x65, 0x61, 0x6c,
+ 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72, 0x61, 0x74,
+ 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x74,
+ 0x65, 0x6d, 0x70, 0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x08, 0x68, 0x75,
+ 0x6d, 0x69, 0x64, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01,
+ 0x52, 0x08, 0x68, 0x75, 0x6d, 0x69, 0x64, 0x69, 0x74, 0x79, 0x22, 0x2d, 0x0a, 0x0b, 0x50, 0x57,
+ 0x53, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x08, 0x72, 0x61, 0x69,
+ 0x6e, 0x66, 0x61, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52,
+ 0x08, 0x72, 0x61, 0x69, 0x6e, 0x66, 0x61, 0x6c, 0x6c, 0x22, 0x35, 0x0a, 0x0b, 0x46, 0x52, 0x5a,
+ 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x69, 0x63, 0x65, 0x54,
+ 0x68, 0x69, 0x63, 0x6b, 0x6e, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02,
+ 0x10, 0x01, 0x52, 0x0c, 0x69, 0x63, 0x65, 0x54, 0x68, 0x69, 0x63, 0x6b, 0x6e, 0x65, 0x73, 0x73,
+ 0x22, 0xa5, 0x02, 0x0a, 0x0b, 0x48, 0x53, 0x44, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65,
+ 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x61, 0x6e, 0x65, 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x06, 0x6c, 0x61, 0x6e, 0x65, 0x4e, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65,
+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x64, 0x69, 0x72,
+ 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x78, 0x6c, 0x65, 0x4e, 0x75,
+ 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x61, 0x78, 0x6c, 0x65,
+ 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x70, 0x65, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06,
+ 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x77, 0x65,
+ 0x69, 0x67, 0x68, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x06,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07,
+ 0x63, 0x61, 0x72, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x63,
+ 0x61, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x78, 0x6c, 0x65, 0x57, 0x65,
+ 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x78, 0x6c,
+ 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x78, 0x6c, 0x65,
+ 0x42, 0x61, 0x73, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x78, 0x6c,
+ 0x65, 0x42, 0x61, 0x73, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4e,
+ 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x6c, 0x61,
+ 0x74, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0xbd, 0x01, 0x0a, 0x0b, 0x55, 0x41, 0x4e,
+ 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x77, 0x69, 0x6e, 0x64,
+ 0x53, 0x70, 0x65, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52,
+ 0x09, 0x77, 0x69, 0x6e, 0x64, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x0d, 0x77, 0x69,
+ 0x6e, 0x64, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28,
+ 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x77, 0x69, 0x6e, 0x64, 0x44, 0x69, 0x72, 0x65, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x13, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74,
+ 0x61, 0x6c, 0x57, 0x69, 0x6e, 0x64, 0x53, 0x70, 0x65, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28,
+ 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x13, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61,
+ 0x6c, 0x57, 0x69, 0x6e, 0x64, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x0f, 0x77, 0x69,
+ 0x6e, 0x64, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x41, 0x6e, 0x67, 0x6c, 0x65, 0x18, 0x04, 0x20,
+ 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x77, 0x69, 0x6e, 0x64, 0x41, 0x74, 0x74,
+ 0x61, 0x63, 0x6b, 0x41, 0x6e, 0x67, 0x6c, 0x65, 0x22, 0x33, 0x0a, 0x0b, 0x54, 0x4d, 0x50, 0x52,
+ 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x65,
+ 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01,
+ 0x52, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x33, 0x0a,
+ 0x0b, 0x4c, 0x4d, 0x5a, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0b,
+ 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28,
+ 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72, 0x61, 0x74, 0x75,
+ 0x72, 0x65, 0x22, 0x35, 0x0a, 0x0b, 0x56, 0x49, 0x44, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d,
+ 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x61, 0x63, 0x63,
+ 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x35, 0x0a, 0x0b, 0x56, 0x49, 0x42,
+ 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65,
+ 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02,
+ 0x10, 0x01, 0x52, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x22, 0x57, 0x0a, 0x0b, 0x4e, 0x46, 0x52, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12,
+ 0x20, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x03,
+ 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63,
+ 0x79, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x61, 0x6d, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x69,
+ 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x64, 0x61, 0x6d,
+ 0x70, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x22, 0x36, 0x0a, 0x0c, 0x44, 0x49, 0x53,
+ 0x52, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73,
+ 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x42,
+ 0x02, 0x10, 0x01, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e,
+ 0x74, 0x22, 0x31, 0x0a, 0x0b, 0x44, 0x49, 0x43, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65,
+ 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x01,
+ 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x46,
+ 0x6f, 0x72, 0x63, 0x65, 0x22, 0x29, 0x0a, 0x0b, 0x52, 0x53, 0x47, 0x52, 0x65, 0x61, 0x6c, 0x54,
+ 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20,
+ 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x06, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x22,
+ 0x31, 0x0a, 0x0b, 0x49, 0x4e, 0x43, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x10,
+ 0x0a, 0x01, 0x78, 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x01, 0x78,
+ 0x12, 0x10, 0x0a, 0x01, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52,
+ 0x01, 0x79, 0x22, 0x37, 0x0a, 0x0b, 0x53, 0x54, 0x46, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d,
+ 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69,
+ 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x73, 0x75,
+ 0x70, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x43, 0x0a, 0x0b, 0x47,
+ 0x4e, 0x53, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x01, 0x78, 0x18,
+ 0x01, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x01, 0x78, 0x12, 0x10, 0x0a, 0x01,
+ 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x01, 0x79, 0x12, 0x10,
+ 0x0a, 0x01, 0x7a, 0x18, 0x03, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x01, 0x7a,
+ 0x22, 0x31, 0x0a, 0x0b, 0x48, 0x50, 0x54, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12,
+ 0x22, 0x0a, 0x0a, 0x64, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20,
+ 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x64, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x22, 0x27, 0x0a, 0x0b, 0x53, 0x43, 0x4f, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69,
+ 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x05, 0x64, 0x65, 0x70, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28,
+ 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x05, 0x64, 0x65, 0x70, 0x74, 0x68, 0x22, 0x44, 0x0a, 0x0c,
+ 0x44, 0x49, 0x53, 0x43, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x01,
+ 0x78, 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x01, 0x78, 0x12, 0x10,
+ 0x0a, 0x01, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x01, 0x79,
+ 0x12, 0x10, 0x0a, 0x01, 0x7a, 0x18, 0x03, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52,
+ 0x01, 0x7a, 0x22, 0x31, 0x0a, 0x0b, 0x43, 0x52, 0x4b, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d,
+ 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x72, 0x61, 0x63, 0x6b, 0x57, 0x69, 0x64, 0x74, 0x68, 0x18,
+ 0x01, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x63, 0x72, 0x61, 0x63, 0x6b,
+ 0x57, 0x69, 0x64, 0x74, 0x68, 0x22, 0x73, 0x0a, 0x0b, 0x43, 0x4f, 0x52, 0x52, 0x65, 0x61, 0x6c,
+ 0x54, 0x69, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x15, 0x63, 0x68, 0x6c, 0x6f, 0x72, 0x69, 0x64, 0x65,
+ 0x43, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20,
+ 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x15, 0x63, 0x68, 0x6c, 0x6f, 0x72, 0x69, 0x64,
+ 0x65, 0x43, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a,
+ 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x6f, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x70, 0x74, 0x68,
+ 0x18, 0x02, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x72,
+ 0x6f, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x70, 0x74, 0x68, 0x22, 0x29, 0x0a, 0x0b, 0x53, 0x54,
+ 0x52, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x06, 0x73, 0x74, 0x72,
+ 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x06, 0x73,
+ 0x74, 0x72, 0x65, 0x73, 0x73, 0x22, 0x39, 0x0a, 0x0b, 0x42, 0x54, 0x46, 0x52, 0x65, 0x61, 0x6c,
+ 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0e, 0x62, 0x6f, 0x6c, 0x74, 0x54, 0x69, 0x67, 0x68,
+ 0x74, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01,
+ 0x52, 0x0e, 0x62, 0x6f, 0x6c, 0x74, 0x54, 0x69, 0x67, 0x68, 0x74, 0x46, 0x6f, 0x72, 0x63, 0x65,
+ 0x22, 0x35, 0x0a, 0x0b, 0x43, 0x53, 0x50, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12,
+ 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18,
+ 0x01, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c,
+ 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x2f, 0x0a, 0x0b, 0x57, 0x44, 0x53, 0x52, 0x65,
+ 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x77, 0x69, 0x6e, 0x64, 0x53, 0x70,
+ 0x65, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x09, 0x77,
+ 0x69, 0x6e, 0x64, 0x53, 0x70, 0x65, 0x65, 0x64, 0x22, 0x37, 0x0a, 0x0b, 0x57, 0x44, 0x44, 0x52,
+ 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x77, 0x69, 0x6e, 0x64, 0x44,
+ 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02,
+ 0x10, 0x01, 0x52, 0x0d, 0x77, 0x69, 0x6e, 0x64, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x22, 0x2d, 0x0a, 0x0b, 0x50, 0x52, 0x53, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65,
+ 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x73, 0x73, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x03,
+ 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x08, 0x70, 0x72, 0x65, 0x73, 0x73, 0x75, 0x72, 0x65,
+ 0x22, 0x2f, 0x0a, 0x0b, 0x52, 0x41, 0x44, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12,
+ 0x20, 0x0a, 0x09, 0x72, 0x61, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03,
+ 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x09, 0x72, 0x61, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x22, 0x35, 0x0a, 0x0b, 0x49, 0x4c, 0x4c, 0x52, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65,
+ 0x12, 0x26, 0x0a, 0x0c, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x69, 0x6c, 0x6c, 0x75,
+ 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x33, 0x0a, 0x0b, 0x55, 0x56, 0x54, 0x52,
+ 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0b, 0x75, 0x6c, 0x74, 0x72, 0x61,
+ 0x76, 0x69, 0x6f, 0x6c, 0x65, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01,
+ 0x52, 0x0b, 0x75, 0x6c, 0x74, 0x72, 0x61, 0x76, 0x69, 0x6f, 0x6c, 0x65, 0x74, 0x2a, 0x9e, 0x02,
+ 0x0a, 0x0c, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x07,
+ 0x0a, 0x03, 0x52, 0x48, 0x53, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x50, 0x57, 0x53, 0x10, 0x01,
+ 0x12, 0x07, 0x0a, 0x03, 0x46, 0x52, 0x5a, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x48, 0x53, 0x44,
+ 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x55, 0x41, 0x4e, 0x10, 0x04, 0x12, 0x07, 0x0a, 0x03, 0x54,
+ 0x4d, 0x50, 0x10, 0x05, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x4d, 0x5a, 0x10, 0x06, 0x12, 0x07, 0x0a,
+ 0x03, 0x56, 0x49, 0x44, 0x10, 0x07, 0x12, 0x07, 0x0a, 0x03, 0x56, 0x49, 0x42, 0x10, 0x08, 0x12,
+ 0x07, 0x0a, 0x03, 0x4e, 0x46, 0x52, 0x10, 0x09, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x49, 0x53, 0x52,
+ 0x10, 0x0a, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x49, 0x43, 0x10, 0x0b, 0x12, 0x07, 0x0a, 0x03, 0x52,
+ 0x53, 0x47, 0x10, 0x0c, 0x12, 0x07, 0x0a, 0x03, 0x49, 0x4e, 0x43, 0x10, 0x0d, 0x12, 0x07, 0x0a,
+ 0x03, 0x53, 0x54, 0x46, 0x10, 0x0e, 0x12, 0x07, 0x0a, 0x03, 0x47, 0x4e, 0x53, 0x10, 0x0f, 0x12,
+ 0x07, 0x0a, 0x03, 0x48, 0x50, 0x54, 0x10, 0x10, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x43, 0x4f, 0x10,
+ 0x11, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x49, 0x53, 0x43, 0x10, 0x12, 0x12, 0x07, 0x0a, 0x03, 0x43,
+ 0x52, 0x4b, 0x10, 0x13, 0x12, 0x07, 0x0a, 0x03, 0x43, 0x4f, 0x52, 0x10, 0x14, 0x12, 0x07, 0x0a,
+ 0x03, 0x53, 0x54, 0x52, 0x10, 0x15, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x54, 0x46, 0x10, 0x16, 0x12,
+ 0x07, 0x0a, 0x03, 0x43, 0x53, 0x50, 0x10, 0x17, 0x12, 0x07, 0x0a, 0x03, 0x57, 0x44, 0x53, 0x10,
+ 0x18, 0x12, 0x07, 0x0a, 0x03, 0x57, 0x44, 0x44, 0x10, 0x19, 0x12, 0x07, 0x0a, 0x03, 0x50, 0x52,
+ 0x53, 0x10, 0x1a, 0x12, 0x07, 0x0a, 0x03, 0x52, 0x41, 0x44, 0x10, 0x1b, 0x12, 0x07, 0x0a, 0x03,
+ 0x49, 0x4c, 0x4c, 0x10, 0x1c, 0x12, 0x07, 0x0a, 0x03, 0x55, 0x56, 0x54, 0x10, 0x1d, 0x42, 0x0e,
+ 0x5a, 0x0c, 0x2e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x62, 0x06,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_MonitorDataProtocol_proto_rawDescOnce sync.Once
+ file_MonitorDataProtocol_proto_rawDescData = file_MonitorDataProtocol_proto_rawDesc
+)
+
+func file_MonitorDataProtocol_proto_rawDescGZIP() []byte {
+ file_MonitorDataProtocol_proto_rawDescOnce.Do(func() {
+ file_MonitorDataProtocol_proto_rawDescData = protoimpl.X.CompressGZIP(file_MonitorDataProtocol_proto_rawDescData)
+ })
+ return file_MonitorDataProtocol_proto_rawDescData
+}
+
+var file_MonitorDataProtocol_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_MonitorDataProtocol_proto_msgTypes = make([]protoimpl.MessageInfo, 32)
+var file_MonitorDataProtocol_proto_goTypes = []interface{}{
+ (MonitoryType)(0), // 0: protoDataFiles.MonitoryType
+ (*ComplexData)(nil), // 1: protoDataFiles.ComplexData
+ (*SensorData)(nil), // 2: protoDataFiles.SensorData
+ (*RHSRealTime)(nil), // 3: protoDataFiles.RHSRealTime
+ (*PWSRealTime)(nil), // 4: protoDataFiles.PWSRealTime
+ (*FRZRealTime)(nil), // 5: protoDataFiles.FRZRealTime
+ (*HSDRealTime)(nil), // 6: protoDataFiles.HSDRealTime
+ (*UANRealTime)(nil), // 7: protoDataFiles.UANRealTime
+ (*TMPRealTime)(nil), // 8: protoDataFiles.TMPRealTime
+ (*LMZRealTime)(nil), // 9: protoDataFiles.LMZRealTime
+ (*VIDRealTime)(nil), // 10: protoDataFiles.VIDRealTime
+ (*VIBRealTime)(nil), // 11: protoDataFiles.VIBRealTime
+ (*NFRRealTime)(nil), // 12: protoDataFiles.NFRRealTime
+ (*DISRRealTime)(nil), // 13: protoDataFiles.DISRRealTime
+ (*DICRealTime)(nil), // 14: protoDataFiles.DICRealTime
+ (*RSGRealTime)(nil), // 15: protoDataFiles.RSGRealTime
+ (*INCRealTime)(nil), // 16: protoDataFiles.INCRealTime
+ (*STFRealTime)(nil), // 17: protoDataFiles.STFRealTime
+ (*GNSRealTime)(nil), // 18: protoDataFiles.GNSRealTime
+ (*HPTRealTime)(nil), // 19: protoDataFiles.HPTRealTime
+ (*SCORealTime)(nil), // 20: protoDataFiles.SCORealTime
+ (*DISCRealTime)(nil), // 21: protoDataFiles.DISCRealTime
+ (*CRKRealTime)(nil), // 22: protoDataFiles.CRKRealTime
+ (*CORRealTime)(nil), // 23: protoDataFiles.CORRealTime
+ (*STRRealTime)(nil), // 24: protoDataFiles.STRRealTime
+ (*BTFRealTime)(nil), // 25: protoDataFiles.BTFRealTime
+ (*CSPRealTime)(nil), // 26: protoDataFiles.CSPRealTime
+ (*WDSRealTime)(nil), // 27: protoDataFiles.WDSRealTime
+ (*WDDRealTime)(nil), // 28: protoDataFiles.WDDRealTime
+ (*PRSRealTime)(nil), // 29: protoDataFiles.PRSRealTime
+ (*RADRealTime)(nil), // 30: protoDataFiles.RADRealTime
+ (*ILLRealTime)(nil), // 31: protoDataFiles.ILLRealTime
+ (*UVTRealTime)(nil), // 32: protoDataFiles.UVTRealTime
+}
+var file_MonitorDataProtocol_proto_depIdxs = []int32{
+ 2, // 0: protoDataFiles.ComplexData.sensorData:type_name -> protoDataFiles.SensorData
+ 0, // 1: protoDataFiles.SensorData.monitorType:type_name -> protoDataFiles.MonitoryType
+ 3, // 2: protoDataFiles.SensorData.rhs:type_name -> protoDataFiles.RHSRealTime
+ 4, // 3: protoDataFiles.SensorData.pws:type_name -> protoDataFiles.PWSRealTime
+ 5, // 4: protoDataFiles.SensorData.frz:type_name -> protoDataFiles.FRZRealTime
+ 6, // 5: protoDataFiles.SensorData.hsd:type_name -> protoDataFiles.HSDRealTime
+ 7, // 6: protoDataFiles.SensorData.uan:type_name -> protoDataFiles.UANRealTime
+ 8, // 7: protoDataFiles.SensorData.tmp:type_name -> protoDataFiles.TMPRealTime
+ 9, // 8: protoDataFiles.SensorData.lmz:type_name -> protoDataFiles.LMZRealTime
+ 10, // 9: protoDataFiles.SensorData.vid:type_name -> protoDataFiles.VIDRealTime
+ 11, // 10: protoDataFiles.SensorData.vib:type_name -> protoDataFiles.VIBRealTime
+ 12, // 11: protoDataFiles.SensorData.nfr:type_name -> protoDataFiles.NFRRealTime
+ 13, // 12: protoDataFiles.SensorData.disr:type_name -> protoDataFiles.DISRRealTime
+ 14, // 13: protoDataFiles.SensorData.dic:type_name -> protoDataFiles.DICRealTime
+ 15, // 14: protoDataFiles.SensorData.rsg:type_name -> protoDataFiles.RSGRealTime
+ 16, // 15: protoDataFiles.SensorData.inc:type_name -> protoDataFiles.INCRealTime
+ 17, // 16: protoDataFiles.SensorData.stf:type_name -> protoDataFiles.STFRealTime
+ 18, // 17: protoDataFiles.SensorData.gns:type_name -> protoDataFiles.GNSRealTime
+ 19, // 18: protoDataFiles.SensorData.hpt:type_name -> protoDataFiles.HPTRealTime
+ 20, // 19: protoDataFiles.SensorData.sco:type_name -> protoDataFiles.SCORealTime
+ 21, // 20: protoDataFiles.SensorData.disc:type_name -> protoDataFiles.DISCRealTime
+ 22, // 21: protoDataFiles.SensorData.crk:type_name -> protoDataFiles.CRKRealTime
+ 23, // 22: protoDataFiles.SensorData.cor:type_name -> protoDataFiles.CORRealTime
+ 24, // 23: protoDataFiles.SensorData.str:type_name -> protoDataFiles.STRRealTime
+ 25, // 24: protoDataFiles.SensorData.btf:type_name -> protoDataFiles.BTFRealTime
+ 26, // 25: protoDataFiles.SensorData.csp:type_name -> protoDataFiles.CSPRealTime
+ 27, // 26: protoDataFiles.SensorData.wds:type_name -> protoDataFiles.WDSRealTime
+ 28, // 27: protoDataFiles.SensorData.wdd:type_name -> protoDataFiles.WDDRealTime
+ 29, // 28: protoDataFiles.SensorData.prs:type_name -> protoDataFiles.PRSRealTime
+ 30, // 29: protoDataFiles.SensorData.rad:type_name -> protoDataFiles.RADRealTime
+ 31, // 30: protoDataFiles.SensorData.ill:type_name -> protoDataFiles.ILLRealTime
+ 32, // 31: protoDataFiles.SensorData.uvt:type_name -> protoDataFiles.UVTRealTime
+ 32, // [32:32] is the sub-list for method output_type
+ 32, // [32:32] is the sub-list for method input_type
+ 32, // [32:32] is the sub-list for extension type_name
+ 32, // [32:32] is the sub-list for extension extendee
+ 0, // [0:32] is the sub-list for field type_name
+}
+
+func init() { file_MonitorDataProtocol_proto_init() }
+func file_MonitorDataProtocol_proto_init() {
+ if File_MonitorDataProtocol_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_MonitorDataProtocol_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ComplexData); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SensorData); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RHSRealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PWSRealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*FRZRealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*HSDRealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UANRealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*TMPRealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*LMZRealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*VIDRealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*VIBRealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NFRRealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DISRRealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DICRealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RSGRealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*INCRealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*STFRealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GNSRealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*HPTRealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SCORealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DISCRealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CRKRealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CORRealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*STRRealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BTFRealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CSPRealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WDSRealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WDDRealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PRSRealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RADRealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ILLRealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UVTRealTime); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ file_MonitorDataProtocol_proto_msgTypes[1].OneofWrappers = []interface{}{
+ (*SensorData_Rhs)(nil),
+ (*SensorData_Pws)(nil),
+ (*SensorData_Frz)(nil),
+ (*SensorData_Hsd)(nil),
+ (*SensorData_Uan)(nil),
+ (*SensorData_Tmp)(nil),
+ (*SensorData_Lmz)(nil),
+ (*SensorData_Vid)(nil),
+ (*SensorData_Vib)(nil),
+ (*SensorData_Nfr)(nil),
+ (*SensorData_Disr)(nil),
+ (*SensorData_Dic)(nil),
+ (*SensorData_Rsg)(nil),
+ (*SensorData_Inc)(nil),
+ (*SensorData_Stf)(nil),
+ (*SensorData_Gns)(nil),
+ (*SensorData_Hpt)(nil),
+ (*SensorData_Sco)(nil),
+ (*SensorData_Disc)(nil),
+ (*SensorData_Crk)(nil),
+ (*SensorData_Cor)(nil),
+ (*SensorData_Str)(nil),
+ (*SensorData_Btf)(nil),
+ (*SensorData_Csp)(nil),
+ (*SensorData_Wds)(nil),
+ (*SensorData_Wdd)(nil),
+ (*SensorData_Prs)(nil),
+ (*SensorData_Rad)(nil),
+ (*SensorData_Ill)(nil),
+ (*SensorData_Uvt)(nil),
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_MonitorDataProtocol_proto_rawDesc,
+ NumEnums: 1,
+ NumMessages: 32,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_MonitorDataProtocol_proto_goTypes,
+ DependencyIndexes: file_MonitorDataProtocol_proto_depIdxs,
+ EnumInfos: file_MonitorDataProtocol_proto_enumTypes,
+ MessageInfos: file_MonitorDataProtocol_proto_msgTypes,
+ }.Build()
+ File_MonitorDataProtocol_proto = out.File
+ file_MonitorDataProtocol_proto_rawDesc = nil
+ file_MonitorDataProtocol_proto_goTypes = nil
+ file_MonitorDataProtocol_proto_depIdxs = nil
+}
diff --git a/consumers/consumerGZG2ZJHL.go b/consumers/consumerGZG2ZJHL.go
index 62888f9..b00bc85 100644
--- a/consumers/consumerGZG2ZJHL.go
+++ b/consumers/consumerGZG2ZJHL.go
@@ -128,6 +128,7 @@ func (the *consumerGZG2ZJHL) getStructIds() []int64 {
}
return structIds
}
+
func (the *consumerGZG2ZJHL) getEs1HourAggData() {
start, end := utils.GetTimeRangeByHour(-1)
log.Printf("查询数据时间范围 %s - %s", start, end)
@@ -187,7 +188,6 @@ func (the *consumerGZG2ZJHL) getEs10minAggData() {
}
}
}
-
}
func (the *consumerGZG2ZJHL) crc16rc4(transBytes []byte) []byte {
diff --git a/consumers/consumerHBJCAS.go b/consumers/consumerHBJCAS.go
index de30dc8..f400144 100644
--- a/consumers/consumerHBJCAS.go
+++ b/consumers/consumerHBJCAS.go
@@ -201,6 +201,7 @@ func (the *consumerHBJCAS) crc16rc4(transBytes []byte) []byte {
cipher1.XORKeyStream(dest1, needRC4)
return dest1
}
+
func (the *consumerHBJCAS) getESQueryStrByHour(structureId int64, factorId int, start, end string) string {
aggSubSql := getEsAggSubSqlByAxyFactorId(factorId)
esQuery := fmt.Sprintf(`
diff --git a/consumers/consumerJYESNJZX.go b/consumers/consumerJYESNJZX.go
new file mode 100644
index 0000000..eabb436
--- /dev/null
+++ b/consumers/consumerJYESNJZX.go
@@ -0,0 +1,205 @@
+package consumers
+
+import (
+ "crypto/rc4"
+ "encoding/hex"
+ "fmt"
+ "goInOut/adaptors"
+ "goInOut/consumers/HBJCAS"
+ "goInOut/dbOperate"
+ "goInOut/monitors"
+ "goInOut/utils"
+ "gopkg.in/yaml.v3"
+ "log"
+ "time"
+)
+
+type consumerJYESNJZX struct {
+ //数据缓存管道
+ ch chan []adaptors.NeedPush
+ //具体配置
+ Info HBJCAS.ConfigFile
+ InHttp *dbOperate.HttpHelper
+ outMqtt *dbOperate.MqttHelper
+ monitor *monitors.CommonMonitor
+ infoRedis *dbOperate.RedisHelper
+}
+
+func (the *consumerJYESNJZX) LoadConfig(cfgStr string) {
+ // 将 yaml 格式的数据解析到结构体中
+ err := yaml.Unmarshal([]byte(cfgStr), &the.Info)
+ if err != nil {
+ log.Printf("读取配置文件[%s]异常 err=%v", cfgStr, err.Error())
+ panic(err)
+ }
+}
+
+func (the *consumerJYESNJZX) Initial(cfg string) error {
+ the.LoadConfig(cfg)
+ err := the.InputInitial()
+ if err != nil {
+ return err
+ }
+ err = the.OutputInitial()
+ if err != nil {
+ return err
+ }
+ err = the.infoComponentInitial()
+ return err
+}
+
+func (the *consumerJYESNJZX) InputInitial() error {
+ the.ch = make(chan []adaptors.NeedPush, 200)
+ //数据入口
+ the.InHttp = &dbOperate.HttpHelper{Url: the.Info.IoConfig.In.Http.Url, Token: ""}
+ the.monitor = &monitors.CommonMonitor{
+ MonitorHelper: &monitors.MonitorHelper{},
+ }
+
+ the.monitor.Start()
+ for _, cron := range the.Info.Monitor {
+ the.monitor.RegisterTask(cron, the.getEsAggData)
+ }
+ return nil
+}
+
+func (the *consumerJYESNJZX) OutputInitial() error {
+ //数据出口
+ the.outMqtt = dbOperate.MqttInitial(
+ the.Info.IoConfig.Out.Mqtt.Host,
+ the.Info.IoConfig.Out.Mqtt.Port,
+ the.Info.IoConfig.Out.Mqtt.ClientId,
+ the.Info.IoConfig.Out.Mqtt.UserName,
+ the.Info.IoConfig.Out.Mqtt.Password,
+ false, //按照具体项目来
+ "")
+ return nil
+}
+
+func (the *consumerJYESNJZX) infoComponentInitial() error {
+ //数据出口
+ addr := the.Info.QueryComponent.Redis.Address
+ the.infoRedis = dbOperate.NewRedisHelper("", addr)
+ return nil
+}
+
+func (the *consumerJYESNJZX) getEsAggData() {
+ start, end := utils.GetTimeRangeBy1minByOffset(-5)
+ //取向前偏移5分钟的一分钟的数据
+ log.Printf("查询数据时间范围 %s - %s", start, end)
+ factorIds := []int{2, 4, 18, 103, 102, 96, 107, 156, 578}
+ //监测因素 2温湿度 4温度 18裂缝检测 103净空收敛 102拱顶沉降 96二次衬彻应变 107道床及拱腰结构沉降 156风速 578风向
+
+ //架伊尔大桥的结构物id
+ var structId int64
+ for strutId, _ := range the.Info.StructInfo {
+ structId = strutId
+ }
+
+ adaptor := the.getAdaptor()
+ adaptor.PointInfo = the.Info.PointInfo
+ adaptor.StructInfo = the.Info.StructInfo
+ for _, factorId := range factorIds {
+ esQuery := the.getESQueryStr(structId, factorId, start, end)
+ auth := map[string]string{"Authorization": "Bear 85a441d4-022b-4613-abba-aaa8e2693bf7"}
+ esAggResultStr := the.InHttp.HttpGetWithHeader(esQuery, auth)
+ log.Printf("esAggResultStr[%s]", esAggResultStr)
+
+ needPushes := adaptor.Transform(structId, factorId, esAggResultStr)
+ for i := range needPushes {
+ needPushes[i].Payload = the.crc16rc4(needPushes[i].Payload)
+ log.Printf("topic[%s],Payload=> %s", needPushes[i].Topic, hex.EncodeToString(needPushes[i].Payload))
+ }
+
+ if len(needPushes) > 0 {
+ the.ch <- needPushes
+ }
+ }
+}
+
+func (the *consumerJYESNJZX) getAdaptor() (adaptor adaptors.Adaptor_AXYES_NJZX) {
+
+ return adaptors.Adaptor_AXYES_NJZX{
+ Redis: the.infoRedis,
+ }
+}
+
+func (the *consumerJYESNJZX) crc16rc4(transBytes []byte) []byte {
+ resultByCrc16 := utils.NewCRC16CCITT().GetWCRCin(transBytes)
+ needRC4 := append(transBytes, resultByCrc16...)
+ rc4KeyStr, ok := the.Info.OtherInfo["rc4key"]
+ if !ok {
+ log.Panicf("未配置 rc4key")
+ }
+ rc4Key := []byte(rc4KeyStr) //the.RC4Key
+ // 加密操作
+ dest1 := make([]byte, len(needRC4))
+ rc4.NewCipher(rc4Key)
+ cipher1, _ := rc4.NewCipher(rc4Key)
+ cipher1.XORKeyStream(dest1, needRC4)
+ return dest1
+}
+
+func (the *consumerJYESNJZX) getESQueryStr(structureId int64, factorId int, start, end string) string {
+ esQuery := fmt.Sprintf(`
+{
+ "size": 20,
+ "query": {
+ "bool": {
+ "must": [
+ {
+ "term": {
+ "structure": {
+ "value": %d
+ }
+ }
+ },
+ {
+ "term": {
+ "factor": {
+ "value": %d
+ }
+ }
+ },
+ {
+ "range": {
+ "collect_time": {
+ "gte": "%s",
+ "lte": "%s"
+ }
+ }
+ }
+ ]
+ }
+ },
+}
+`, structureId, factorId, start, end)
+
+ return esQuery
+}
+
+func (the *consumerJYESNJZX) Work() {
+ go func() {
+ for {
+ needPushList := <-the.ch
+ if len(the.ch) > 0 {
+ log.Printf("取出ch数据,剩余[%d] ", len(the.ch))
+ }
+
+ for _, push := range needPushList {
+ if push.Topic != "" {
+ the.outMqtt.Publish(push.Topic, push.Payload)
+ continue
+ }
+
+ //没有标记topic 的 按照配置文件里面的推送
+ for _, topic := range the.Info.IoConfig.Out.Mqtt.Topics {
+ the.outMqtt.Publish(topic, push.Payload)
+ }
+
+ }
+
+ time.Sleep(100 * time.Millisecond)
+ }
+ }()
+}
diff --git a/consumers/consumerManage.go b/consumers/consumerManage.go
index 8751634..ac5e1e5 100644
--- a/consumers/consumerManage.go
+++ b/consumers/consumerManage.go
@@ -38,6 +38,9 @@ func GetConsumer(name string) (consumer IConsumer) {
case "consumerGZG2ZJHL":
consumer = new(consumerGZG2ZJHL)
+ case "consumerJYESNJZX":
+ consumer = new(consumerJYESNJZX)
+
default:
consumer = nil
}
diff --git a/go.mod b/go.mod
index c645c01..e140131 100644
--- a/go.mod
+++ b/go.mod
@@ -14,7 +14,7 @@ require (
github.com/redis/go-redis/v9 v9.7.0
github.com/robfig/cron/v3 v3.0.1
golang.org/x/text v0.17.0
- google.golang.org/protobuf v1.31.0
+ google.golang.org/protobuf v1.36.6
gopkg.in/natefinch/lumberjack.v2 v2.2.1
gopkg.in/yaml.v3 v3.0.1
)
@@ -28,6 +28,7 @@ require (
github.com/eapache/go-resiliency v1.7.0 // indirect
github.com/eapache/go-xerial-snappy v0.0.0-20230731223053-c322873962e3 // indirect
github.com/eapache/queue v1.1.0 // indirect
+ github.com/golang/protobuf v1.5.4 // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/google/uuid v1.3.1 // indirect
github.com/gorilla/websocket v1.5.0 // indirect
diff --git a/go.sum b/go.sum
index f6f7541..9f192c1 100644
--- a/go.sum
+++ b/go.sum
@@ -33,6 +33,8 @@ github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHqu
github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
+github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
@@ -171,6 +173,8 @@ golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8T
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
+google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
diff --git a/utils/timeRange.go b/utils/timeRange.go
index 8b90dfb..ecbccd4 100644
--- a/utils/timeRange.go
+++ b/utils/timeRange.go
@@ -35,3 +35,13 @@ func GetTimeRangeBy10minByOffset(offsetMin int) (start, stop string) {
stop = startTime.Format("2006-01-02T15:04:00.000+08:00")
return
}
+
+func GetTimeRangeBy1minByOffset(offsetMin int) (start, stop string) {
+ offset := time.Duration(offsetMin) * time.Minute
+ now := time.Now().Add(offset)
+ m := now.Second() // 获取当前时间的秒数,1分钟的偏移点
+ startTime := now.Add(time.Second * -1 * time.Duration(m)) // 调整到当前分钟的开始
+ start = startTime.Format("2006-01-02T15:04:00.000+08:00") // 格式化为所需的时间字符串
+ stop = startTime.Add(time.Minute).Format("2006-01-02T15:04:00.000+08:00") // 结束时间是当前分钟的下一分钟
+ return
+}