pmc350B.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package electric
  2. import (
  3. iotInterface "IotAdmin/iot/interface"
  4. "encoding/json"
  5. "fmt"
  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: true,
  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 cfg == "" {
  42. meter.MeterElectricRef = MeterElectricRef{
  43. PvRef: 380,
  44. LvRef: 220,
  45. }
  46. } else if err := json.Unmarshal([]byte(cfg), meter); err != nil {
  47. err = fmt.Errorf("PMC350B配置参数解析失败: %s", err)
  48. return nil, err
  49. }
  50. if calc == "" {
  51. meter.isClean = true
  52. meter.PowerRate = CalcPowerRate{
  53. MaxPower: 0,
  54. Count: 0,
  55. SumPower: 0,
  56. }
  57. meter.TotalEnergy = CalcDataEnergy{
  58. Fq: 0,
  59. Tp: 0,
  60. Tq: 0,
  61. Fp: 0,
  62. }
  63. meter.DayTotalEnergy = CalcDataEnergy{
  64. Fq: 0,
  65. Tp: 0,
  66. Tq: 0,
  67. Fp: 0,
  68. }
  69. } else if err := json.Unmarshal([]byte(calc), meter); err != nil {
  70. err = fmt.Errorf("PMC350B计算参数解析失败: %s", err)
  71. return nil, err
  72. }
  73. meter.ClearDayEnergy()
  74. return meter, nil
  75. }
  76. func (m *MeterPMC350B) GetMeterData() interface{} {
  77. return m.MeterElectric
  78. }
  79. func (m *MeterPMC350B) SetMeterData(data interface{}) {
  80. meter, ok := data.(MeterElectric)
  81. if ok {
  82. m.MeterElectricBase = meter.MeterElectricBase
  83. }
  84. }