dtu_config.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. package iotStruct
  2. import (
  3. "encoding/json"
  4. "reflect"
  5. "strings"
  6. )
  7. type DtuConfig struct {
  8. Enable bool `json:"enable"`
  9. Sn string `json:"sn"`
  10. Name string `json:"name"`
  11. Mode int `json:"mode"`
  12. Cycle int `json:"cycle"`
  13. SlaveConfig *[]SlaveConfig `json:"slaveConfig"`
  14. }
  15. type SlaveConfig struct {
  16. No string `json:"no"`
  17. Addr int `json:"addr"` //表计串口地址
  18. //LvRef float32 `json:"lvRef"` //表计线电压基准(220)
  19. //PvRef float32 `json:"pvRef"` //表计相电压基准(380)
  20. Protocol string `json:"protocol"` //表计协议
  21. ReportConfig *[]ReportConfig `json:"reportConfig"`
  22. OtherConfig string `json:"other"` // 其他配置
  23. }
  24. type ReportConfig struct {
  25. Host string `json:"host"`
  26. Protocol string `json:"protocol"`
  27. ST string `json:"st"`
  28. MN string `json:"mn"`
  29. User string `json:"user"`
  30. Pwd string `json:"pwd"`
  31. BmYz *BmYz `json:"bmYz"` //编码因子
  32. }
  33. type BmYz struct {
  34. P string
  35. Pa string
  36. Pb string
  37. Pc string
  38. Q string
  39. Qa string
  40. Qb string
  41. Qc string
  42. Pf string
  43. Pfa string
  44. Pfb string
  45. Pfc string
  46. Ua string
  47. Ub string
  48. Uc string
  49. Uab string
  50. Ubc string
  51. Uca string
  52. Ia string
  53. Ib string
  54. Ic string
  55. Iz string
  56. Uaw string
  57. Ubw string
  58. Ucw string
  59. Uabw string
  60. Ubcw string
  61. Ucaw string
  62. F string
  63. FW string
  64. IUnbalance string
  65. UUnbalance string
  66. Dp string
  67. Pv string
  68. Tpe string
  69. Tqe string
  70. Fpe string
  71. Fqe string
  72. Tps string
  73. Tqs string
  74. Fps string
  75. Fqs string
  76. T string
  77. T2 string
  78. T3 string
  79. T4 string
  80. T5 string
  81. T6 string
  82. T7 string
  83. }
  84. // GetBmYzKey 获取BmYz的键
  85. func (rc *ReportConfig) GetBmYzKey(key string) string {
  86. return rc.GetBmYzKeyOrDefault(key, strings.ToLower(key))
  87. }
  88. // GetBmYzKeyOrDefault 获取BmYz的键
  89. func (rc *ReportConfig) GetBmYzKeyOrDefault(key string, defaultValue string) string {
  90. if rc.BmYz == nil {
  91. return defaultValue
  92. }
  93. v := reflect.ValueOf(rc.BmYz).Elem()
  94. field := v.FieldByName(key)
  95. if field.IsValid() {
  96. return field.String()
  97. }
  98. return defaultValue
  99. }
  100. func (bm *BmYz) BuildBmYzArray(data string) (*map[string]BmYz, error) {
  101. var err error
  102. mp := make(map[string]BmYz)
  103. if data != "" {
  104. err = json.Unmarshal([]byte(data), &mp)
  105. }
  106. return &mp, err
  107. }