adw300.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package electric
  2. import (
  3. iotInterface "IotAdmin/iot/interface"
  4. "encoding/json"
  5. "fmt"
  6. )
  7. type MeterADW300 struct {
  8. MeterElectric
  9. MeterADW300Other
  10. }
  11. type MeterADW300Other struct {
  12. PT int `json:"pt"`
  13. CT int `json:"ct"`
  14. }
  15. func NewMeterADW300(id string, time int, calc, cfg string) (iotInterface.MeterCalcHandler, error) {
  16. meter := &MeterADW300{
  17. MeterElectric: MeterElectric{
  18. MeterElectricBase: MeterElectricBase{
  19. Id: id,
  20. Time: time,
  21. isClean: true,
  22. },
  23. MeterElectricRef: MeterElectricRef{
  24. PvRef: 380,
  25. LvRef: 220,
  26. },
  27. },
  28. MeterADW300Other: MeterADW300Other{
  29. PT: 1,
  30. CT: 1,
  31. },
  32. }
  33. if cfg == "" {
  34. meter.MeterElectricRef = MeterElectricRef{
  35. PvRef: 380,
  36. LvRef: 220,
  37. }
  38. } else if err := json.Unmarshal([]byte(cfg), meter); err != nil {
  39. err = fmt.Errorf("ADW300配置参数解析失败: %s", err)
  40. return nil, err
  41. }
  42. if calc == "" {
  43. meter.isClean = true
  44. meter.PowerRate = CalcPowerRate{
  45. MaxPower: 0,
  46. Count: 0,
  47. SumPower: 0,
  48. }
  49. meter.TotalEnergy = CalcDataEnergy{
  50. Fq: 0,
  51. Tp: 0,
  52. Tq: 0,
  53. Fp: 0,
  54. }
  55. meter.DayTotalEnergy = CalcDataEnergy{
  56. Fq: 0,
  57. Tp: 0,
  58. Tq: 0,
  59. Fp: 0,
  60. }
  61. meter.ClearDayEnergy()
  62. } else if err := json.Unmarshal([]byte(calc), meter); err != nil {
  63. err = fmt.Errorf("ADW300计算参数解析失败: %s", err)
  64. return nil, err
  65. }
  66. return meter, nil
  67. }
  68. func (m *MeterADW300) GetMeterData() interface{} {
  69. return m.MeterElectric
  70. }
  71. func (m *MeterADW300) SetMeterData(data interface{}) {
  72. meter, ok := data.(MeterElectric)
  73. if ok {
  74. m.MeterElectricBase = meter.MeterElectricBase
  75. }
  76. }
  77. func (mo *MeterADW300Other) GetStructData() interface{} {
  78. return mo
  79. }