package electric import ( "IotAdmin/core/logger" iotInterface "IotAdmin/iot/interface" "encoding/json" ) type MeterADW300 struct { MeterElectric MeterADW300Other } type MeterADW300Other struct { PT int `json:"pt"` CT int `json:"ct"` } func NewMeterADW300(id string, time int, calc, cfg string) (iotInterface.MeterCalc, error) { meter := &MeterADW300{ MeterElectric: MeterElectric{ MeterElectricBase: MeterElectricBase{ Id: id, Time: time, isClean: false, }, MeterElectricRef: MeterElectricRef{ PvRef: 380, LvRef: 220, }, }, MeterADW300Other: MeterADW300Other{ PT: 0, CT: 0, }, } if err := json.Unmarshal([]byte(cfg), meter); err != nil { logger.Errorf("ADW300配置参数解析失败", 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, } } else if err := json.Unmarshal([]byte(calc), meter); err != nil { logger.Error("ADW300计算参数解析失败", err) return nil, err } return meter, nil } func (m *MeterADW300) GetData() interface{} { return m } func (m *MeterADW300) SetCalc(data interface{}) { meter, ok := data.(MeterElectric) if ok { m.MeterElectric = meter } }