Homeassistant meter: add battery parameters (#25110)
This commit is contained in:
parent
5bee21e106
commit
826b802ff6
3 changed files with 7001 additions and 20 deletions
|
|
@ -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)
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -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 }} # %
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue