Meter (HomeWizard): expose per-phase power for signed grid currents (#30218)
This commit is contained in:
parent
d57d3f9743
commit
933a57b2ac
4 changed files with 25 additions and 0 deletions
|
|
@ -70,6 +70,13 @@ func (c *HomeWizard) Currents() (float64, float64, float64, error) {
|
|||
return c.conn.Currents()
|
||||
}
|
||||
|
||||
var _ api.PhasePowers = (*HomeWizard)(nil)
|
||||
|
||||
// Powers implements the api.PhasePowers interface
|
||||
func (c *HomeWizard) Powers() (float64, float64, float64, error) {
|
||||
return c.conn.Powers()
|
||||
}
|
||||
|
||||
var _ api.PhaseVoltages = (*HomeWizard)(nil)
|
||||
|
||||
// Voltages implements the api.PhaseVoltages interface
|
||||
|
|
|
|||
|
|
@ -125,6 +125,15 @@ func (c *Connection) Currents() (float64, float64, float64, error) {
|
|||
return res.ActiveCurrentL1A, res.ActiveCurrentL2A, res.ActiveCurrentL3A, err
|
||||
}
|
||||
|
||||
// Powers implements the api.PhasePowers interface
|
||||
func (c *Connection) Powers() (float64, float64, float64, error) {
|
||||
res, err := c.dataG.Get()
|
||||
if c.usage == "pv" {
|
||||
return -res.ActivePowerL1W, -res.ActivePowerL2W, -res.ActivePowerL3W, err
|
||||
}
|
||||
return res.ActivePowerL1W, res.ActivePowerL2W, res.ActivePowerL3W, err
|
||||
}
|
||||
|
||||
// Voltages implements the api.PhaseVoltages interface
|
||||
func (c *Connection) Voltages() (float64, float64, float64, error) {
|
||||
res, err := c.dataG.Get()
|
||||
|
|
|
|||
|
|
@ -17,6 +17,9 @@ type StateResponse struct {
|
|||
// https://homewizard-energy-api.readthedocs.io/endpoints.html#state-api-v1-state
|
||||
type DataResponse struct {
|
||||
ActivePowerW float64 `json:"active_power_w"`
|
||||
ActivePowerL1W float64 `json:"active_power_l1_w"`
|
||||
ActivePowerL2W float64 `json:"active_power_l2_w"`
|
||||
ActivePowerL3W float64 `json:"active_power_l3_w"`
|
||||
TotalPowerImportT1kWh float64 `json:"total_power_import_t1_kwh"`
|
||||
TotalPowerImportT2kWh float64 `json:"total_power_import_t2_kwh"`
|
||||
TotalPowerImportT3kWh float64 `json:"total_power_import_t3_kwh"`
|
||||
|
|
|
|||
|
|
@ -44,6 +44,9 @@ func TestUnmarshalKwhDataResponse(t *testing.T) {
|
|||
assert.Equal(t, float64(30.511), res.TotalPowerImportT1kWh+res.TotalPowerImportT2kWh+res.TotalPowerImportT3kWh+res.TotalPowerImportT4kWh)
|
||||
assert.Equal(t, float64(85.951), res.TotalPowerExportT1kWh+res.TotalPowerExportT2kWh+res.TotalPowerExportT3kWh+res.TotalPowerExportT4kWh)
|
||||
assert.Equal(t, float64(543), res.ActivePowerW)
|
||||
assert.Equal(t, float64(28), res.ActivePowerL1W)
|
||||
assert.Equal(t, float64(0), res.ActivePowerL2W)
|
||||
assert.Equal(t, float64(-181), res.ActivePowerL3W)
|
||||
assert.Equal(t, float64(235.4), res.ActiveVoltageL1V)
|
||||
assert.Equal(t, float64(235.8), res.ActiveVoltageL2V)
|
||||
assert.Equal(t, float64(236.1), res.ActiveVoltageL3V)
|
||||
|
|
@ -64,6 +67,9 @@ func TestUnmarshalP1DataResponse(t *testing.T) {
|
|||
assert.Equal(t, float64(18664.997), res.TotalPowerImportT1kWh+res.TotalPowerImportT2kWh+res.TotalPowerImportT3kWh+res.TotalPowerImportT4kWh)
|
||||
assert.Equal(t, float64(13823.608), res.TotalPowerExportT1kWh+res.TotalPowerExportT2kWh+res.TotalPowerExportT3kWh+res.TotalPowerExportT4kWh)
|
||||
assert.Equal(t, float64(203), res.ActivePowerW)
|
||||
assert.Equal(t, float64(-21), res.ActivePowerL1W)
|
||||
assert.Equal(t, float64(57), res.ActivePowerL2W)
|
||||
assert.Equal(t, float64(168), res.ActivePowerL3W)
|
||||
assert.Equal(t, float64(228), res.ActiveVoltageL1V)
|
||||
assert.Equal(t, float64(226), res.ActiveVoltageL2V)
|
||||
assert.Equal(t, float64(225), res.ActiveVoltageL3V)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue