diff --git a/meter/mbmd.go b/meter/mbmd.go index be773b5b9..98fb16cbb 100644 --- a/meter/mbmd.go +++ b/meter/mbmd.go @@ -35,6 +35,7 @@ func NewMbmdFromConfig(ctx context.Context, other map[string]any) (api.Meter, er batterySocLimits `mapstructure:",squash"` modbus.Settings `mapstructure:",squash"` Power, Energy, Soc string + ReturnEnergy string Currents []string Voltages []string Powers []string @@ -103,6 +104,15 @@ func NewMbmdFromConfig(ctx context.Context, other map[string]any) (api.Meter, er implement.Has(m, implement.MeterEnergy(totalEnergy)) } + // decorate return energy + if cc.ReturnEnergy != "" { + returnEnergy, err := mbmd.deviceOp(ops, cc.ReturnEnergy) + if err != nil { + return nil, fmt.Errorf("invalid measurement for returnenergy: %s", cc.ReturnEnergy) + } + implement.Has(m, implement.MeterReturnEnergy(returnEnergy)) + } + // decorate soc if cc.Soc != "" { soc, err := mbmd.deviceOp(ops, cc.Soc) diff --git a/templates/definition/meter/abb-ab.yaml b/templates/definition/meter/abb-ab.yaml index 71635c732..4b6439b4f 100644 --- a/templates/definition/meter/abb-ab.yaml +++ b/templates/definition/meter/abb-ab.yaml @@ -24,6 +24,7 @@ render: | {{- if ne .usage "pv" }} power: Power energy: Import + returnenergy: Export currents: - CurrentL1 - CurrentL2 @@ -35,6 +36,7 @@ render: | {{- else }} power: -Power energy: Export + returnenergy: Import currents: - -CurrentL1 - -CurrentL2 diff --git a/templates/definition/meter/be-mpm3pm.yaml b/templates/definition/meter/be-mpm3pm.yaml index cb6f8054d..0bff34b9d 100644 --- a/templates/definition/meter/be-mpm3pm.yaml +++ b/templates/definition/meter/be-mpm3pm.yaml @@ -15,6 +15,7 @@ render: | {{- if ne .usage "pv" }} power: Power energy: Import + returnenergy: Export currents: - CurrentL1 - CurrentL2 @@ -26,6 +27,7 @@ render: | {{- else }} power: -Power energy: Export + returnenergy: Import currents: - -CurrentL1 - -CurrentL2 diff --git a/templates/definition/meter/cg-em24.yaml b/templates/definition/meter/cg-em24.yaml index fb311ffe8..d47831889 100644 --- a/templates/definition/meter/cg-em24.yaml +++ b/templates/definition/meter/cg-em24.yaml @@ -24,6 +24,7 @@ render: | {{- if ne .usage "pv" }} power: Power energy: Import + returnenergy: Export currents: - CurrentL1 - CurrentL2 @@ -35,6 +36,7 @@ render: | {{- else }} power: -Power energy: Export + returnenergy: Import currents: - -CurrentL1 - -CurrentL2 diff --git a/templates/definition/meter/cg-em24_e1.yaml b/templates/definition/meter/cg-em24_e1.yaml index ced48879b..ca9aaac2c 100644 --- a/templates/definition/meter/cg-em24_e1.yaml +++ b/templates/definition/meter/cg-em24_e1.yaml @@ -26,6 +26,7 @@ render: | {{- if ne .usage "pv" }} power: Power energy: Import + returnenergy: Export currents: - CurrentL1 - CurrentL2 @@ -37,6 +38,7 @@ render: | {{- else }} power: -Power energy: Export + returnenergy: Import currents: - -CurrentL1 - -CurrentL2 diff --git a/templates/definition/meter/cg-emt3xx.yaml b/templates/definition/meter/cg-emt3xx.yaml index 8e0a44491..8a15f6f29 100644 --- a/templates/definition/meter/cg-emt3xx.yaml +++ b/templates/definition/meter/cg-emt3xx.yaml @@ -30,6 +30,7 @@ render: | {{- if ne .usage "pv" }} power: Power energy: Import + returnenergy: Export currents: - CurrentL1 - CurrentL2 @@ -41,6 +42,7 @@ render: | {{- else }} power: -Power energy: Export + returnenergy: Import currents: - -CurrentL1 - -CurrentL2 diff --git a/templates/definition/meter/dzg.yaml b/templates/definition/meter/dzg.yaml index 3a35f7400..373bc8133 100644 --- a/templates/definition/meter/dzg.yaml +++ b/templates/definition/meter/dzg.yaml @@ -15,6 +15,7 @@ render: | {{- if ne .usage "pv" }} power: ImportPower energy: Import + returnenergy: Export currents: - CurrentL1 - CurrentL2 @@ -22,6 +23,7 @@ render: | {{- else }} power: -ExportPower energy: Export + returnenergy: Import currents: - -CurrentL1 - -CurrentL2 diff --git a/templates/definition/meter/eastron-sdm220_230.yaml b/templates/definition/meter/eastron-sdm220_230.yaml index 83e4a502d..b64802106 100644 --- a/templates/definition/meter/eastron-sdm220_230.yaml +++ b/templates/definition/meter/eastron-sdm220_230.yaml @@ -21,7 +21,9 @@ render: | {{- if ne .usage "pv" }} power: Power energy: Import + returnenergy: Export {{- else }} power: -Power energy: Export + returnenergy: Import {{- end }} diff --git a/templates/definition/meter/eastron-sdm54.yaml b/templates/definition/meter/eastron-sdm54.yaml index 249d7283c..85ae91c9f 100644 --- a/templates/definition/meter/eastron-sdm54.yaml +++ b/templates/definition/meter/eastron-sdm54.yaml @@ -15,6 +15,7 @@ render: | {{- if ne .usage "pv" }} power: Power energy: Import + returnenergy: Export currents: - CurrentL1 - CurrentL2 @@ -26,6 +27,7 @@ render: | {{- else }} power: -Power energy: Export + returnenergy: Import currents: - -CurrentL1 - -CurrentL2 diff --git a/templates/definition/meter/eastron-sdm72.yaml b/templates/definition/meter/eastron-sdm72.yaml index 2d87ed2ae..f73cc36a3 100644 --- a/templates/definition/meter/eastron-sdm72.yaml +++ b/templates/definition/meter/eastron-sdm72.yaml @@ -15,7 +15,9 @@ render: | {{- if ne .usage "pv" }} power: Power energy: Import + returnenergy: Export {{- else }} power: -Power energy: Export + returnenergy: Import {{- end }} diff --git a/templates/definition/meter/eastron-sdm72v2_630.yaml b/templates/definition/meter/eastron-sdm72v2_630.yaml index 5dcfeaf8b..c3f891a0e 100644 --- a/templates/definition/meter/eastron-sdm72v2_630.yaml +++ b/templates/definition/meter/eastron-sdm72v2_630.yaml @@ -27,6 +27,7 @@ render: | {{- if ne .usage "pv" }} power: Power energy: Import + returnenergy: Export currents: - CurrentL1 - CurrentL2 @@ -38,6 +39,7 @@ render: | {{- else }} power: -Power energy: Export + returnenergy: Import currents: - -CurrentL1 - -CurrentL2 diff --git a/templates/definition/meter/eastron-smart-x96-1a.yaml b/templates/definition/meter/eastron-smart-x96-1a.yaml index 401658cb0..88bc949f0 100644 --- a/templates/definition/meter/eastron-smart-x96-1a.yaml +++ b/templates/definition/meter/eastron-smart-x96-1a.yaml @@ -15,6 +15,7 @@ render: | {{- if ne .usage "pv" }} power: Power energy: Import + returnenergy: Export currents: - CurrentL1 - CurrentL2 @@ -26,6 +27,7 @@ render: | {{- else }} power: -Power energy: Export + returnenergy: Import currents: - -CurrentL1 - -CurrentL2 diff --git a/templates/definition/meter/finder-7m24.yaml b/templates/definition/meter/finder-7m24.yaml index de97c5765..8259c1ac2 100644 --- a/templates/definition/meter/finder-7m24.yaml +++ b/templates/definition/meter/finder-7m24.yaml @@ -15,7 +15,9 @@ render: | {{- if ne .usage "pv" }} power: Power energy: Import + returnenergy: Export {{- else }} power: -Power energy: Export + returnenergy: Import {{- end }} diff --git a/templates/definition/meter/finder-7m38.yaml b/templates/definition/meter/finder-7m38.yaml index daddcad88..25b516128 100644 --- a/templates/definition/meter/finder-7m38.yaml +++ b/templates/definition/meter/finder-7m38.yaml @@ -15,6 +15,7 @@ render: | {{- if ne .usage "pv" }} power: Power energy: Import + returnenergy: Export currents: - CurrentL1 - CurrentL2 @@ -26,6 +27,7 @@ render: | {{- else }} power: -Power energy: Export + returnenergy: Import currents: - -CurrentL1 - -CurrentL2 diff --git a/templates/definition/meter/inepro.yaml b/templates/definition/meter/inepro.yaml index 14202f6a1..9418fce3f 100644 --- a/templates/definition/meter/inepro.yaml +++ b/templates/definition/meter/inepro.yaml @@ -15,6 +15,7 @@ render: | {{- if ne .usage "pv" }} power: Power energy: Import + returnenergy: Export currents: - CurrentL1 - CurrentL2 @@ -26,6 +27,7 @@ render: | {{- else }} power: -Power energy: Export + returnenergy: Import currents: - -CurrentL1 - -CurrentL2 diff --git a/templates/definition/meter/janitza.yaml b/templates/definition/meter/janitza.yaml index 7d2aa83db..d3d514edc 100644 --- a/templates/definition/meter/janitza.yaml +++ b/templates/definition/meter/janitza.yaml @@ -18,6 +18,7 @@ render: | {{- if ne .usage "pv" }} power: Power energy: Import + returnenergy: Export currents: - CurrentL1 - CurrentL2 @@ -29,6 +30,7 @@ render: | {{- else }} power: -Power energy: Export + returnenergy: Import currents: - -CurrentL1 - -CurrentL2 diff --git a/templates/definition/meter/lovato-dmg610.yaml b/templates/definition/meter/lovato-dmg610.yaml index eefb1e511..de0cf6ef7 100644 --- a/templates/definition/meter/lovato-dmg610.yaml +++ b/templates/definition/meter/lovato-dmg610.yaml @@ -15,6 +15,7 @@ render: | {{- if ne .usage "pv" }} power: Power energy: Import + returnenergy: Export currents: - CurrentL1 - CurrentL2 @@ -26,6 +27,7 @@ render: | {{- else }} power: -Power energy: Export + returnenergy: Import currents: - -CurrentL1 - -CurrentL2 diff --git a/templates/definition/meter/orno-we525_526.yaml b/templates/definition/meter/orno-we525_526.yaml index c947322dc..ca70e03f3 100644 --- a/templates/definition/meter/orno-we525_526.yaml +++ b/templates/definition/meter/orno-we525_526.yaml @@ -18,7 +18,9 @@ render: | {{- if ne .usage "pv" }} power: Power energy: Import + returnenergy: Export {{- else }} power: -Power energy: Export + returnenergy: Import {{- end }} diff --git a/templates/definition/meter/orno.yaml b/templates/definition/meter/orno.yaml index df71cd368..76a227d54 100644 --- a/templates/definition/meter/orno.yaml +++ b/templates/definition/meter/orno.yaml @@ -19,6 +19,7 @@ render: | {{- if ne .usage "pv" }} power: Power energy: Import + returnenergy: Export currents: - CurrentL1 - CurrentL2 @@ -30,6 +31,7 @@ render: | {{- else }} power: -Power energy: Export + returnenergy: Import currents: - -CurrentL1 - -CurrentL2 diff --git a/templates/definition/meter/sbc-axx3.yaml b/templates/definition/meter/sbc-axx3.yaml index 4e00f4c79..9cd8e05e2 100644 --- a/templates/definition/meter/sbc-axx3.yaml +++ b/templates/definition/meter/sbc-axx3.yaml @@ -18,6 +18,7 @@ render: | {{- if ne .usage "pv" }} power: Power energy: Import + returnenergy: Export currents: - CurrentL1 - CurrentL2 @@ -29,6 +30,7 @@ render: | {{- else }} power: -Power energy: Export + returnenergy: Import currents: - -CurrentL1 - -CurrentL2 diff --git a/templates/definition/meter/schneider-iem3000.yaml b/templates/definition/meter/schneider-iem3000.yaml index 2a319c104..e2df806a2 100644 --- a/templates/definition/meter/schneider-iem3000.yaml +++ b/templates/definition/meter/schneider-iem3000.yaml @@ -15,6 +15,7 @@ render: | {{- if ne .usage "pv" }} power: Power energy: Import + returnenergy: Export currents: - CurrentL1 - CurrentL2 @@ -26,6 +27,7 @@ render: | {{- else }} power: -Power energy: Export + returnenergy: Import currents: - -CurrentL1 - -CurrentL2 diff --git a/templates/definition/meter/siemens-pac2200.yaml b/templates/definition/meter/siemens-pac2200.yaml index 2fd389297..a3d40a104 100644 --- a/templates/definition/meter/siemens-pac2200.yaml +++ b/templates/definition/meter/siemens-pac2200.yaml @@ -15,6 +15,7 @@ render: | {{- if ne .usage "pv" }} power: Power energy: Import + returnenergy: Export currents: - CurrentL1 - CurrentL2 @@ -26,6 +27,7 @@ render: | {{- else }} power: -Power energy: Export + returnenergy: Import currents: - -CurrentL1 - -CurrentL2 diff --git a/templates/definition/meter/solaredge-se-mtr-3y.yaml b/templates/definition/meter/solaredge-se-mtr-3y.yaml index 5092ad628..829cd0212 100644 --- a/templates/definition/meter/solaredge-se-mtr-3y.yaml +++ b/templates/definition/meter/solaredge-se-mtr-3y.yaml @@ -15,6 +15,7 @@ render: | {{- if ne .usage "pv" }} power: Power energy: Import + returnenergy: Export currents: - CurrentL1 - CurrentL2 @@ -26,6 +27,7 @@ render: | {{- else }} power: -Power energy: Export + returnenergy: Import currents: - -CurrentL1 - -CurrentL2 diff --git a/templates/definition/meter/wago-879-30xx.yaml b/templates/definition/meter/wago-879-30xx.yaml index b7c95a079..119e3a976 100644 --- a/templates/definition/meter/wago-879-30xx.yaml +++ b/templates/definition/meter/wago-879-30xx.yaml @@ -15,6 +15,7 @@ render: | {{- if ne .usage "pv" }} power: Power energy: Import + returnenergy: Export currents: - CurrentL1 - CurrentL2 @@ -26,6 +27,7 @@ render: | {{- else }} power: -Power energy: Export + returnenergy: Import currents: - -CurrentL1 - -CurrentL2