pmc350B.go 1.7 KB

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