dtu_config.go 2.6 KB

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