package electric import ( iotInterface "IotAdmin/iot/interface" "encoding/json" "fmt" ) type MeterPMC350B struct { MeterElectric MeterPMC350BOther } type MeterPMC350BOther struct { //PT int `json:"pt"` //CT int `json:"ct"` PrimaryVolt int `json:"primaryVolt"` SecondVolt int `json:"secondVolt"` PrimaryCurrent int `json:"primaryCurrent"` SecondCurrent int `json:"secondCurrent"` CurrentType int `json:"currentType"` } func NewMeterPMC350B(id string, time int, calc, cfg string) (iotInterface.MeterCalcHandler, error) { meter := &MeterPMC350B{ MeterElectric: MeterElectric{ MeterElectricBase: MeterElectricBase{ Id: id, Time: time, isClean: true, }, MeterElectricRef: MeterElectricRef{ PvRef: 380, LvRef: 220, }, }, MeterPMC350BOther: MeterPMC350BOther{ CurrentType: 1, PrimaryVolt: 380, SecondVolt: 220, PrimaryCurrent: 100, SecondCurrent: 5, }, } if cfg == "" { meter.MeterElectricRef = MeterElectricRef{ PvRef: 380, LvRef: 220, } } else if err := json.Unmarshal([]byte(cfg), meter); err != nil { err = fmt.Errorf("PMC350B配置参数解析失败: %s", err) return nil, err } if calc == "" { meter.isClean = true meter.PowerRate = CalcPowerRate{ MaxPower: 0, Count: 0, SumPower: 0, } meter.TotalEnergy = CalcDataEnergy{ Fq: 0, Tp: 0, Tq: 0, Fp: 0, } meter.DayTotalEnergy = CalcDataEnergy{ Fq: 0, Tp: 0, Tq: 0, Fp: 0, } meter.ClearDayEnergy() } else if err := json.Unmarshal([]byte(calc), meter); err != nil { err = fmt.Errorf("PMC350B计算参数解析失败: %s", err) return nil, err } return meter, nil } func (m *MeterPMC350B) GetMeterData() interface{} { return m.MeterElectric } func (m *MeterPMC350B) SetMeterData(data interface{}) { meter, ok := data.(MeterElectric) if ok { m.MeterElectricBase = meter.MeterElectricBase } } func (mo *MeterPMC350BOther) GetStructData() interface{} { return mo }