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()
|
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)
|
var _ api.PhaseVoltages = (*HomeWizard)(nil)
|
||||||
|
|
||||||
// Voltages implements the api.PhaseVoltages interface
|
// 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
|
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
|
// Voltages implements the api.PhaseVoltages interface
|
||||||
func (c *Connection) Voltages() (float64, float64, float64, error) {
|
func (c *Connection) Voltages() (float64, float64, float64, error) {
|
||||||
res, err := c.dataG.Get()
|
res, err := c.dataG.Get()
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,9 @@ type StateResponse struct {
|
||||||
// https://homewizard-energy-api.readthedocs.io/endpoints.html#state-api-v1-state
|
// https://homewizard-energy-api.readthedocs.io/endpoints.html#state-api-v1-state
|
||||||
type DataResponse struct {
|
type DataResponse struct {
|
||||||
ActivePowerW float64 `json:"active_power_w"`
|
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"`
|
TotalPowerImportT1kWh float64 `json:"total_power_import_t1_kwh"`
|
||||||
TotalPowerImportT2kWh float64 `json:"total_power_import_t2_kwh"`
|
TotalPowerImportT2kWh float64 `json:"total_power_import_t2_kwh"`
|
||||||
TotalPowerImportT3kWh float64 `json:"total_power_import_t3_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(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(85.951), res.TotalPowerExportT1kWh+res.TotalPowerExportT2kWh+res.TotalPowerExportT3kWh+res.TotalPowerExportT4kWh)
|
||||||
assert.Equal(t, float64(543), res.ActivePowerW)
|
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.4), res.ActiveVoltageL1V)
|
||||||
assert.Equal(t, float64(235.8), res.ActiveVoltageL2V)
|
assert.Equal(t, float64(235.8), res.ActiveVoltageL2V)
|
||||||
assert.Equal(t, float64(236.1), res.ActiveVoltageL3V)
|
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(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(13823.608), res.TotalPowerExportT1kWh+res.TotalPowerExportT2kWh+res.TotalPowerExportT3kWh+res.TotalPowerExportT4kWh)
|
||||||
assert.Equal(t, float64(203), res.ActivePowerW)
|
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(228), res.ActiveVoltageL1V)
|
||||||
assert.Equal(t, float64(226), res.ActiveVoltageL2V)
|
assert.Equal(t, float64(226), res.ActiveVoltageL2V)
|
||||||
assert.Equal(t, float64(225), res.ActiveVoltageL3V)
|
assert.Equal(t, float64(225), res.ActiveVoltageL3V)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue