diff --git a/meter/homeassistant.go b/meter/homeassistant.go index 21876f16a..889a49219 100644 --- a/meter/homeassistant.go +++ b/meter/homeassistant.go @@ -1,6 +1,6 @@ package meter -//go:generate go tool decorate -f decorateHomeAssistant -b *HomeAssistant -r api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" -t "api.Battery,Soc,func() (float64, error)" +//go:generate go tool decorate -f decorateHomeAssistant -b *HomeAssistant -r api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" -t "api.Battery,Soc,func() (float64, error)" -t "api.BatteryCapacity,Capacity,func() float64" -t "api.BatterySocLimiter,GetSocLimits,func() (float64, float64)" -t "api.BatteryPowerLimiter,GetPowerLimits,func() (float64, float64)" -t "api.BatteryController,SetBatteryMode,func(api.BatteryMode) error" -t "api.MaxACPowerGetter,MaxACPower,func() float64" import ( "errors" @@ -23,7 +23,7 @@ func init() { // NewHomeAssistantFromConfig creates a HomeAssistant meter from generic config func NewHomeAssistantFromConfig(other map[string]any) (api.Meter, error) { - var cc struct { + cc := struct { URI string Token string Power string @@ -31,6 +31,19 @@ func NewHomeAssistantFromConfig(other map[string]any) (api.Meter, error) { Currents []string Voltages []string Soc string + + // pv + pvMaxACPower `mapstructure:",squash"` + + // battery + batteryCapacity `mapstructure:",squash"` + batterySocLimits `mapstructure:",squash"` + batteryPowerLimits `mapstructure:",squash"` + }{ + batterySocLimits: batterySocLimits{ + MinSoc: 20, + MaxSoc: 95, + }, } if err := util.DecodeOther(other, &cc); err != nil { @@ -79,7 +92,11 @@ func NewHomeAssistantFromConfig(other map[string]any) (api.Meter, error) { soc = func() (float64, error) { return conn.GetFloatState(cc.Soc) } } - return decorateHomeAssistant(m, energy, currents, voltages, soc), nil + return decorateHomeAssistant(m, + energy, currents, voltages, soc, + cc.batteryCapacity.Decorator(), cc.batterySocLimits.Decorator(), cc.batteryPowerLimits.Decorator(), nil, + cc.pvMaxACPower.Decorator(), + ), nil } var _ api.Meter = (*HomeAssistant)(nil) diff --git a/meter/homeassistant_decorators.go b/meter/homeassistant_decorators.go index b83974192..e023562a2 100644 --- a/meter/homeassistant_decorators.go +++ b/meter/homeassistant_decorators.go @@ -6,12 +6,12 @@ import ( "github.com/evcc-io/evcc/api" ) -func decorateHomeAssistant(base *HomeAssistant, meterEnergy func() (float64, error), phaseCurrents func() (float64, float64, float64, error), phaseVoltages func() (float64, float64, float64, error), battery func() (float64, error)) api.Meter { +func decorateHomeAssistant(base *HomeAssistant, meterEnergy func() (float64, error), phaseCurrents func() (float64, float64, float64, error), phaseVoltages func() (float64, float64, float64, error), battery func() (float64, error), batteryCapacity func() float64, batterySocLimiter func() (float64, float64), batteryPowerLimiter func() (float64, float64), batteryController func(api.BatteryMode) error, maxACPowerGetter func() float64) api.Meter { switch { - case battery == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + case battery == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return base - case battery == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + case battery == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *HomeAssistant api.MeterEnergy @@ -22,7 +22,7 @@ func decorateHomeAssistant(base *HomeAssistant, meterEnergy func() (float64, err }, } - case battery == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + case battery == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *HomeAssistant api.PhaseCurrents @@ -33,7 +33,7 @@ func decorateHomeAssistant(base *HomeAssistant, meterEnergy func() (float64, err }, } - case battery == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + case battery == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *HomeAssistant api.MeterEnergy @@ -48,7 +48,7 @@ func decorateHomeAssistant(base *HomeAssistant, meterEnergy func() (float64, err }, } - case battery == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + case battery == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *HomeAssistant api.PhaseVoltages @@ -59,7 +59,7 @@ func decorateHomeAssistant(base *HomeAssistant, meterEnergy func() (float64, err }, } - case battery == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + case battery == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *HomeAssistant api.MeterEnergy @@ -74,7 +74,7 @@ func decorateHomeAssistant(base *HomeAssistant, meterEnergy func() (float64, err }, } - case battery == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + case battery == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *HomeAssistant api.PhaseCurrents @@ -89,7 +89,7 @@ func decorateHomeAssistant(base *HomeAssistant, meterEnergy func() (float64, err }, } - case battery == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + case battery == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *HomeAssistant api.MeterEnergy @@ -108,7 +108,7 @@ func decorateHomeAssistant(base *HomeAssistant, meterEnergy func() (float64, err }, } - case battery != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *HomeAssistant api.Battery @@ -119,7 +119,7 @@ func decorateHomeAssistant(base *HomeAssistant, meterEnergy func() (float64, err }, } - case battery != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *HomeAssistant api.Battery @@ -134,7 +134,7 @@ func decorateHomeAssistant(base *HomeAssistant, meterEnergy func() (float64, err }, } - case battery != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *HomeAssistant api.Battery @@ -149,7 +149,7 @@ func decorateHomeAssistant(base *HomeAssistant, meterEnergy func() (float64, err }, } - case battery != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *HomeAssistant api.Battery @@ -168,7 +168,7 @@ func decorateHomeAssistant(base *HomeAssistant, meterEnergy func() (float64, err }, } - case battery != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *HomeAssistant api.Battery @@ -183,7 +183,7 @@ func decorateHomeAssistant(base *HomeAssistant, meterEnergy func() (float64, err }, } - case battery != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *HomeAssistant api.Battery @@ -202,7 +202,7 @@ func decorateHomeAssistant(base *HomeAssistant, meterEnergy func() (float64, err }, } - case battery != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *HomeAssistant api.Battery @@ -221,7 +221,7 @@ func decorateHomeAssistant(base *HomeAssistant, meterEnergy func() (float64, err }, } - case battery != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *HomeAssistant api.Battery @@ -243,6 +243,6918 @@ func decorateHomeAssistant(base *HomeAssistant, meterEnergy func() (float64, err phaseVoltages: phaseVoltages, }, } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatterySocLimiter + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatterySocLimiter + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatterySocLimiter + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatterySocLimiter + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatterySocLimiter + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatterySocLimiter + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatterySocLimiter + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatterySocLimiter + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatterySocLimiter + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatterySocLimiter + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatterySocLimiter + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatterySocLimiter + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatterySocLimiter + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatterySocLimiter + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatterySocLimiter + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatterySocLimiter + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatterySocLimiter + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatterySocLimiter + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatterySocLimiter + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatterySocLimiter + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatterySocLimiter + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatterySocLimiter + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatterySocLimiter + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatterySocLimiter + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.MaxACPowerGetter + }{ + HomeAssistant: base, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.MaxACPowerGetter + api.MeterEnergy + }{ + HomeAssistant: base, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.MaxACPowerGetter + api.PhaseCurrents + }{ + HomeAssistant: base, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.MaxACPowerGetter + api.PhaseVoltages + }{ + HomeAssistant: base, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.MaxACPowerGetter + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.MaxACPowerGetter + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.MaxACPowerGetter + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.MaxACPowerGetter + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.MaxACPowerGetter + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.MaxACPowerGetter + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.MaxACPowerGetter + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.MaxACPowerGetter + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.MaxACPowerGetter + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.MaxACPowerGetter + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.MaxACPowerGetter + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatterySocLimiter + api.MaxACPowerGetter + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatterySocLimiter + api.MaxACPowerGetter + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.MaxACPowerGetter + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MaxACPowerGetter + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.MaxACPowerGetter + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.MaxACPowerGetter + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.MaxACPowerGetter + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.MaxACPowerGetter + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.MaxACPowerGetter + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.MaxACPowerGetter + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.MaxACPowerGetter + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.MaxACPowerGetter + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.MaxACPowerGetter + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.MaxACPowerGetter + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatterySocLimiter + api.MaxACPowerGetter + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatterySocLimiter + api.MaxACPowerGetter + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *HomeAssistant + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + HomeAssistant: base, + Battery: &decorateHomeAssistantBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateHomeAssistantBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateHomeAssistantBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateHomeAssistantBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateHomeAssistantBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateHomeAssistantMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } } return nil @@ -256,6 +7168,46 @@ func (impl *decorateHomeAssistantBatteryImpl) Soc() (float64, error) { return impl.battery() } +type decorateHomeAssistantBatteryCapacityImpl struct { + batteryCapacity func() float64 +} + +func (impl *decorateHomeAssistantBatteryCapacityImpl) Capacity() float64 { + return impl.batteryCapacity() +} + +type decorateHomeAssistantBatteryControllerImpl struct { + batteryController func(api.BatteryMode) error +} + +func (impl *decorateHomeAssistantBatteryControllerImpl) SetBatteryMode(p0 api.BatteryMode) error { + return impl.batteryController(p0) +} + +type decorateHomeAssistantBatteryPowerLimiterImpl struct { + batteryPowerLimiter func() (float64, float64) +} + +func (impl *decorateHomeAssistantBatteryPowerLimiterImpl) GetPowerLimits() (float64, float64) { + return impl.batteryPowerLimiter() +} + +type decorateHomeAssistantBatterySocLimiterImpl struct { + batterySocLimiter func() (float64, float64) +} + +func (impl *decorateHomeAssistantBatterySocLimiterImpl) GetSocLimits() (float64, float64) { + return impl.batterySocLimiter() +} + +type decorateHomeAssistantMaxACPowerGetterImpl struct { + maxACPowerGetter func() float64 +} + +func (impl *decorateHomeAssistantMaxACPowerGetterImpl) MaxACPower() float64 { + return impl.maxACPowerGetter() +} + type decorateHomeAssistantMeterEnergyImpl struct { meterEnergy func() (float64, error) } diff --git a/templates/definition/meter/homeassistant.yaml b/templates/definition/meter/homeassistant.yaml index 76f9e1b9e..2d0baaf91 100644 --- a/templates/definition/meter/homeassistant.yaml +++ b/templates/definition/meter/homeassistant.yaml @@ -103,6 +103,12 @@ params: help: en: Entity ID for battery state of charge in percent de: Entitäts-ID für Batterieladestand in Prozent + - name: capacity + - name: minsoc + - name: maxsoc + - name: maxchargepower + - name: maxdischargepower + - name: maxacpower render: | type: homeassistant uri: {{ .uri }} @@ -117,4 +123,10 @@ render: | - {{ .voltageL1 }} - {{ .voltageL2 }} - {{ .voltageL3 }} + maxacpower: {{ .maxacpower }} # W soc: {{ .soc }} + capacity: {{ .capacity }} # kWh + maxchargepower: {{ .maxchargepower }} # W + maxdischargepower: {{ .maxdischargepower }} # W + minsoc: {{ .minsoc }} # % + maxsoc: {{ .maxsoc }} # %