Skip to content

Feature extended filter: use enum type#3248

Open
ndrsnhs wants to merge 33 commits intoopenWB:masterfrom
ndrsnhs:feature-extended-filter
Open

Feature extended filter: use enum type#3248
ndrsnhs wants to merge 33 commits intoopenWB:masterfrom
ndrsnhs:feature-extended-filter

Conversation

@ndrsnhs
Copy link
Copy Markdown
Contributor

@ndrsnhs ndrsnhs commented Mar 27, 2026

openWB/openwb-ui-settings#938

  • enum type für bat, counter, inverter nutzen
  • Beispiele ergänzen

@ndrsnhs ndrsnhs requested a review from LKuemmel March 27, 2026 14:45
@LKuemmel LKuemmel requested a review from Copilot March 30, 2026 07:34
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the extended filter/peak-filter integration to use the shared ComponentType enum (instead of string literals) across device modules, and extends/updates examples accordingly.

Changes:

  • Refactor PeakFilter to take ComponentType and update all call sites (BAT/COUNTER/INVERTER) across device implementations.
  • Extend Sonnen consumption counter path to create/use a PeakFilter and pass it into the API method.
  • Update sample code in docs/samples/* to show PeakFilter usage with ComponentType and check_values.

Reviewed changes

Copilot reviewed 211 out of 211 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
python_test.sh Adds a repo-local test/lint helper command.
packages/modules/common/utils/peak_filter.py Switch PeakFilter “type” argument to ComponentType and compare against enum values.
packages/modules/common/utils/test_peak_filter.py Update PeakFilter unit tests to use ComponentType values in test cases.
packages/modules/devices/youless/youless/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/vzlogger/vzlogger/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/vzlogger/vzlogger/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/victron/victron_3p75ct/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/victron/victron/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/victron/victron/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/victron/victron/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/varta/varta/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/varta/varta/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/varta/varta/bat_modbus.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/upower/upower/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/upower/upower/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/upower/upower/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/thermia/thermia/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/tasmota/tasmota/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/tasmota/tasmota/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/tasmota/tasmota/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/sunways/sunways/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/sungrow/sungrow_sh/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/sungrow/sungrow_sh/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/sungrow/sungrow_sh/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/sungrow/sungrow_sg/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/sungrow/sungrow_sg/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/sungrow/sungrow_micro/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/sungrow/sungrow_ihm/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/sungrow/sungrow_ihm/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/sungrow/sungrow_ihm/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/studer/studer/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/studer/studer/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/sonnen/sonnenbatterie/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/sonnen/sonnenbatterie/counter_consumption.py Add PeakFilter creation and pass it into the consumption-counter API update.
packages/modules/devices/sonnen/sonnenbatterie/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/sonnen/sonnenbatterie/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/sonnen/sonnenbatterie/api.py Extend update_consumption_counter to accept/use PeakFilter.
packages/modules/devices/solis/solis/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/solis/solis/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/solis/solis/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/solax/solax/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/solax/solax/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/solax/solax/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/solarmax/solarmax/inverter_maxstorage.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/solarmax/solarmax/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/solarmax/solarmax/counter_maxstorage.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/solarmax/solarmax/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/solaredge/solaredge/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/solaredge/solaredge/external_inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/solaredge/solaredge/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/solaredge/solaredge/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/solar_world/solar_world/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/solar_world/solar_world/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/solar_watt/solar_watt/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/solar_watt/solar_watt/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/solar_watt/solar_watt/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/solar_view/solar_view/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/solar_view/solar_view/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/solar_log/solar_log/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/solar_log/solar_log/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/solakon/solakon_one/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/solakon/solakon_one/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/sofar/sofar/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/sofar/sofar/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/sofar/sofar/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/smartfox/smartfox/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/smart_me/smart_me/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/smart_me/smart_me/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/sma/sma_webbox/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/sma/sma_sunny_island/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/sma/sma_sunny_boy/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/sma/sma_sunny_boy/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/sma/sma_sunny_boy/bat_tesvolt.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/sma/sma_sunny_boy/bat_smart_energy.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/sma/sma_sunny_boy/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/sigenergy/sigenergy/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/sigenergy/sigenergy/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/sigenergy/sigenergy/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/siemens/siemens_sentron/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/siemens/siemens_sentron/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/siemens/siemens_sentron/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/siemens/siemens/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/siemens/siemens/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/siemens/siemens/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/shelly/shelly/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/shelly/shelly/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/shelly/shelly/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/saxpower/saxpower/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/saxpower/saxpower/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/rct/rct/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/rct/rct/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/rct/rct/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/qcells/qcells/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/qcells/qcells/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/qcells/qcells/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/powerfox/powerfox/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/powerfox/powerfox/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/powerdog/powerdog/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/powerdog/powerdog/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/orno/orno/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/openwb/openwb_flex/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/openwb/openwb_flex/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/openwb/openwb_flex/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/nibe/nibe/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/mystrom/mystrom/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/mtec/mtec/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/mtec/mtec/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/mtec/mtec/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/marstek/venus_c_e/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/lg/lg/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/lg/lg/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/lg/lg/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/kostal/kostal_steca/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/kostal/kostal_sem/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/kostal/kostal_plenticore/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/kostal/kostal_plenticore/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/kostal/kostal_plenticore/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/kostal/kostal_piko_old/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/kostal/kostal_piko_ci/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/kostal/kostal_piko_ci/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/kostal/kostal_piko/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/kostal/kostal_piko/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/kaco/kaco_tx/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/kaco/kaco_nh/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/kaco/kaco_nh/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/kaco/kaco_nh/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/janitza/janitza/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/janitza/janitza/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/janitza/janitza/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/idm/idm/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/huawei/huawei_smartlogger/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/huawei/huawei_smartlogger/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/huawei/huawei_smartlogger/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/huawei/huawei_emma/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/huawei/huawei_emma/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/huawei/huawei_emma/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/huawei/huawei/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/huawei/huawei/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/huawei/huawei/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/growatt/growatt/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/growatt/growatt/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/growatt/growatt/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/good_we/good_we/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/good_we/good_we/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/good_we/good_we/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/generic/mqtt/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/generic/mqtt/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/generic/mqtt/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/generic/json/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/generic/json/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/generic/json/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/generic/http/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/generic/http/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/generic/http/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/fronius/fronius/inverter_secondary.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/fronius/fronius/inverter_production_meter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/fronius/fronius/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/fronius/fronius/counter_sm.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/fronius/fronius/counter_s0.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/fronius/fronius/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/fox_ess/fox_ess/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/fox_ess/fox_ess/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/fox_ess/fox_ess/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/fems/fems/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/fems/fems/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/fems/fems/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/enphase/enphase/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/enphase/enphase/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/enphase/enphase/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/elgris/elgris/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/elgris/elgris/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/elgris/elgris/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/e3dc/e3dc/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/e3dc/e3dc/external_inverter.py Add PeakFilter creation and apply check_values to external PV power.
packages/modules/devices/e3dc/e3dc/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/e3dc/e3dc/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/discovergy/discovergy/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/discovergy/discovergy/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/deye/deye/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/deye/deye/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/deye/deye/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/chint/chint/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/carlo_gavazzi/carlo_gavazzi/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/byd/byd/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/batterx/batterx/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/batterx/batterx/external_inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/batterx/batterx/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/batterx/batterx/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/azzurro_zcs/azzurro_zcs_3p/pv_inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/azzurro_zcs/azzurro_zcs/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/azzurro_zcs/azzurro_zcs/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/azzurro_zcs/azzurro_zcs/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/avm/avm/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/ampere/ampere/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/ampere/ampere/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/ampere/ampere/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/alpha_ess/alpha_ess/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/alpha_ess/alpha_ess/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/alpha_ess/alpha_ess/bat.py Use ComponentType.BAT when constructing PeakFilter.
packages/modules/devices/algodue/algodue/inverter.py Use ComponentType.INVERTER when constructing PeakFilter.
packages/modules/devices/algodue/algodue/counter.py Use ComponentType.COUNTER when constructing PeakFilter.
packages/modules/devices/algodue/algodue/bat.py Use ComponentType.BAT when constructing PeakFilter.
docs/samples/sample_request_by_device/sample_request_by_device/inverter.py Update example to create/use PeakFilter with ComponentType.
docs/samples/sample_request_by_device/sample_request_by_device/counter.py Update example to create/use PeakFilter with ComponentType.
docs/samples/sample_request_by_device/sample_request_by_device/bat.py Update example to create/use PeakFilter with ComponentType.
docs/samples/sample_request_by_component/sample_request_by_component/inverter.py Update example to create/use PeakFilter with ComponentType.
docs/samples/sample_request_by_component/sample_request_by_component/counter.py Update example to create/use PeakFilter with ComponentType.
docs/samples/sample_request_by_component/sample_request_by_component/bat.py Update example to create/use PeakFilter with ComponentType.
docs/samples/sample_modbus/sample_modbus/inverter.py Update modbus example to validate via PeakFilter and use returned exported value.
docs/samples/sample_modbus/sample_modbus/counter.py Update modbus example to validate via PeakFilter and use returned imported/exported values.
docs/samples/sample_modbus/sample_modbus/bat.py Update modbus example to validate via PeakFilter and use returned imported/exported values.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

python_test.sh Outdated
@@ -0,0 +1 @@
PYTHONPATH="/var/www/html/openWB/packages" python3.9 -m pytest -vv -o log_cli=true --log-cli-level=DEBUG; python3.9 -m flake8 --max-line-length 120 /var/www/html/openWB/packages --exclude='/var/www/html/openWB/packages/modules/display_themes','/var/www/html/openWB/packages/modules/web_themes'
Copy link

Copilot AI Mar 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pytest and flake8 are chained with ;, so a failing test run won't stop the script and the final exit code will be from flake8 (potentially masking test failures). Use set -e (or && chaining) and consider adding a bash shebang so this behaves predictably when executed.

Copilot uses AI. Check for mistakes.
Comment on lines 12 to 14
def __init__(self, type: ComponentType, component_id: int, fault_state: FaultState):
self.type = type
self.component_id = component_id
Copy link

Copilot AI Mar 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The constructor parameter/attribute name type shadows Python's built-in type. Since this is a public-ish utility used widely, consider renaming to component_type (and self.component_type) for clarity and to reduce confusion in debugging/type hints.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Contributor

@LKuemmel LKuemmel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ich schließe mich Copilot an.

@benderl benderl mentioned this pull request Mar 31, 2026
@benderl
Copy link
Copy Markdown
Contributor

benderl commented Mar 31, 2026

Benutzerverwaltung in #3256 erweitert.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 210 out of 210 changed files in this pull request and generated 1 comment.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +76 to +80
if self.startup:
self.startup = False
else:
if total_energy is not None:
if previous_total_energy is None:
Copy link

Copilot AI Apr 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new startup flag is handled inside check_total_energy(), but check_imported_exported() calls check_total_energy() twice per interval (imported then exported). This means the first update will skip validation for only the first energy value (typically imported) while still validating exported, leading to inconsistent behavior and potentially unexpected warnings/None results. Consider handling startup once in check_imported_exported() (e.g., skip both energy plausibility checks on the first cycle and just seed self.imported/self.exported), or track separate startup state for imported vs exported.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants