adw300.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package electric
  2. import (
  3. "IotAdmin/core/logger"
  4. iotInterface "IotAdmin/iot/interface"
  5. "encoding/json"
  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.MeterCalc, error) {
  16. meter := &MeterADW300{
  17. MeterElectric: MeterElectric{
  18. MeterElectricBase: MeterElectricBase{
  19. Id: id,
  20. Time: time,
  21. isClean: false,
  22. },
  23. MeterElectricRef: MeterElectricRef{
  24. PvRef: 380,
  25. LvRef: 220,
  26. },
  27. },
  28. MeterADW300Other: MeterADW300Other{
  29. PT: 0,
  30. CT: 0,
  31. },
  32. }
  33. if err := json.Unmarshal([]byte(cfg), meter); err != nil {
  34. logger.Errorf("ADW300配置参数解析失败", err)
  35. return nil, err
  36. }
  37. if calc == "" {
  38. meter.isClean = true
  39. meter.PowerRate = CalcPowerRate{
  40. MaxPower: 0,
  41. Count: 0,
  42. SumPower: 0,
  43. }
  44. meter.TotalEnergy = CalcDataEnergy{
  45. Fq: 0,
  46. Tp: 0,
  47. Tq: 0,
  48. Fp: 0,
  49. }
  50. meter.DayTotalEnergy = CalcDataEnergy{
  51. Fq: 0,
  52. Tp: 0,
  53. Tq: 0,
  54. Fp: 0,
  55. }
  56. } else if err := json.Unmarshal([]byte(calc), meter); err != nil {
  57. logger.Error("ADW300计算参数解析失败", err)
  58. return nil, err
  59. }
  60. return meter, nil
  61. }
  62. func (m *MeterADW300) GetData() interface{} {
  63. return m
  64. }
  65. func (m *MeterADW300) SetCalc(data interface{}) {
  66. meter, ok := data.(MeterElectric)
  67. if ok {
  68. m.MeterElectric = meter
  69. }
  70. }