Skip to content

Verbrauchersteuerung - #3808

Draft
LKuemmel wants to merge 38 commits into
feature_loadmanagement_prio_listfrom
feature_consumer
Draft

Verbrauchersteuerung#3808
LKuemmel wants to merge 38 commits into
feature_loadmanagement_prio_listfrom
feature_consumer

Conversation

@LKuemmel

Copy link
Copy Markdown
Contributor

No description provided.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

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 introduces “Verbrauchersteuerung” (consumer/device load control) across the backend control loop, MQTT plumbing, logging/graphing, and multiple web themes, while also aligning some MQTT topic paths (notably battery mode) and removing the PV “feed-in limit” option from charge templates/UI.

Changes:

  • Add a full consumer domain model (configs, usage modes, state/store/simcounter, control-loop integration, MQTT subscription/publication, logging & graph support).
  • Update UIs (Koala, Cards, Standard Legacy, Colors) to display and interact with consumers, and add consumer datasets to charts/totals.
  • Update MQTT topics for battery mode/power reserve and remove PV feed-in-limit controls across UIs and templates; refactor Shelly status handling reuse.

Reviewed changes

Copilot reviewed 187 out of 226 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
simpleAPI/src/ParameterHandler.php Update MQTT topic path for battery mode setting.
simpleAPI/simpleAPI_mqtt.py Update MQTT topic paths for battery mode and power reserve operations.
packages/modules/web_themes/standard_legacy/web/setupMqttServices.js Subscribe to updated battery mode topic.
packages/modules/web_themes/standard_legacy/web/processAllMqttMsg.js Remove feed-in-limit UI handling; update battery mode topic handling.
packages/modules/web_themes/standard_legacy/web/index.html Update battery mode publish topic; remove feed-in-limit control from PV settings.
packages/modules/web_themes/koala/source/src/stores/mqtt-store-model.ts Extend MQTT data model: consumers + consumer datasets in graph points; remove feed-in-limit field.
packages/modules/web_themes/koala/source/src/stores/localData-store.ts Switch legend hide/show storage from label text to stable dataset keys.
packages/modules/web_themes/koala/source/src/pages/IndexPage.vue Add “Verbraucher” tab/panel and availability gating.
packages/modules/web_themes/koala/source/src/css/quasar.variables.scss Add consumer color variable and expose as CSS var.
packages/modules/web_themes/koala/source/src/components/ConsumerModeButtons.vue New consumer mode selector UI component.
packages/modules/web_themes/koala/source/src/components/ConsumerMessage.vue New consumer status/fault message component.
packages/modules/web_themes/koala/source/src/components/ConsumerInformation.vue New consumer overview/grid/carousel component.
packages/modules/web_themes/koala/source/src/components/charts/historyChart/HistoryChartLegendStandard.vue Legend now uses dataset keys (not label text) and typed categorized items.
packages/modules/web_themes/koala/source/src/components/charts/historyChart/HistoryChartLegendCategory.vue Same legend keying/type updates for categorized legend menu.
packages/modules/web_themes/koala/source/src/components/charts/historyChart/HistoryChartLegendCategoriesGroup.vue Add consumer legend category and refine menu props/styles.
packages/modules/web_themes/koala/source/src/components/charts/historyChart/HistoryChartLegend.vue Introduce stable dataset keys/categories; add consumer category; keep hidden state by key.
packages/modules/web_themes/koala/source/src/components/charts/historyChart/history-chart-model.ts Add consumer category + dataset keys/constants and consumer dataset key helper.
packages/modules/web_themes/koala/source/src/components/charts/energyFlowChart/EnergyFlowChart.vue Add consumer node to energy flow chart including styling/animation.
packages/modules/web_themes/koala/source/src/components/charts/dailyTotals/DailyTotalsRow.vue Add consumer icon mapping/power direction handling.
packages/modules/web_themes/koala/source/src/components/charts/dailyTotals/DailyTotals.vue Add consumer totals and per-consumer expansion rows.
packages/modules/web_themes/koala/source/src/components/ChargePointPvSettings.vue Remove feed-in-limit toggle from PV settings.
packages/modules/web_themes/koala/source/src/assets/icons/owbConsumer.svg Add consumer SVG icon asset.
packages/modules/web_themes/koala/source/src/assets/icons/icon_Data.md Document icon source attribution URL.
packages/modules/web_themes/colors/source/src/components/chargePointList/model.ts Remove feed-in-limit field and accessors from chargepoint model/template.
packages/modules/web_themes/colors/source/src/components/chargePointList/cpConfig/ConfigPv.vue Remove feed-in-limit configuration item from PV config panel.
packages/modules/loadvars.py Add threaded update handling for consumer modules during loadvars.
packages/modules/display_themes/colors/source/src/components/chargePointList/model.ts Remove feed-in-limit field and accessors.
packages/modules/display_themes/colors/source/src/components/chargePointList/configPanels/ConfigPv.vue Remove feed-in-limit config item.
packages/modules/display_themes/cards/source/src/views/ChargePointsView.vue Remove feed-in-limit UI/actions from cards theme chargepoint config.
packages/modules/display_themes/cards/source/src/stores/mqtt.js Update battery mode topic; add consumer power getter; remove feed-in-limit getter.
packages/modules/display_themes/cards/source/src/main.scss Add consumer color CSS variable.
packages/modules/display_themes/cards/source/src/components/Dashboard/FlowCard.vue Add consumer component to flow visualization.
packages/modules/display_themes/cards/source/src/components/Battery/BatteryModeModal.vue Update battery mode topics used to publish changes.
packages/modules/display_themes/cards/source/src/assets/icons/owbConsumer.svg Add consumer SVG icon asset for cards theme.
packages/modules/display_themes/cards/source/src/App.vue Subscribe to consumer total power topic and updated battery mode topic.
packages/modules/devices/shelly/shelly/inverter.py Refactor to shared Shelly status handler (request/parse).
packages/modules/devices/shelly/shelly/device.py Refactor generation detection to shared helper.
packages/modules/devices/shelly/shelly/constants.py Remove unused constants (alphabetical index).
packages/modules/devices/shelly/shelly/bat.py Refactor to shared Shelly status handler (request/parse).
packages/modules/devices/generic/virtual/counter_test.py Fix CounterAll import path.
packages/modules/devices/generic/http/api.py Add helper to create POST functions for generic HTTP integrations.
packages/modules/consumers/viessmann/viessmann_heat_pump/consumer.py Add Viessmann heat pump consumer module (Modbus switch).
packages/modules/consumers/viessmann/viessmann_heat_pump/config.py Add Viessmann heat pump consumer config setup.
packages/modules/consumers/viessmann/viessmann_heat_pump/init.py Package init for Viessmann heat pump consumer.
packages/modules/consumers/viessmann/vendor.py Add Viessmann vendor descriptor.
packages/modules/consumers/viessmann/init.py Package init for Viessmann consumers.
packages/modules/consumers/vendors.py Introduce consumer vendor grouping enum.
packages/modules/consumers/stiebel/vendor.py Add Stiebel vendor descriptor.
packages/modules/consumers/stiebel/stiebel/consumer.py Add Stiebel consumer module (Modbus on/off).
packages/modules/consumers/stiebel/stiebel/config.py Add Stiebel consumer config setup.
packages/modules/consumers/stiebel/stiebel/init.py Package init for Stiebel consumer module.
packages/modules/consumers/stiebel/init.py Package init for Stiebel consumers.
packages/modules/consumers/solvis/vendor.py Add Solvis vendor descriptor.
packages/modules/consumers/solvis/solvis/consumer.py Add Solvis consumer module (Modbus metering).
packages/modules/consumers/solvis/solvis/config.py Add Solvis consumer config setup.
packages/modules/consumers/solvis/solvis/init.py Package init for Solvis consumer module.
packages/modules/consumers/solvis/init.py Package init for Solvis consumers.
packages/modules/consumers/shelly/vendor.py Add Shelly consumer vendor descriptor.
packages/modules/consumers/shelly/shelly_pm/consumer.py Add Shelly PM consumer (metering + switching).
packages/modules/consumers/shelly/shelly_pm/config.py Add Shelly PM consumer config setup.
packages/modules/consumers/shelly/shelly_pm/init.py Package init for Shelly PM consumer module.
packages/modules/consumers/shelly/shelly_em/consumer.py Add Shelly EM consumer (metering).
packages/modules/consumers/shelly/shelly_em/config.py Add Shelly EM consumer config setup.
packages/modules/consumers/shelly/shelly_em/init.py Package init for Shelly EM consumer module.
packages/modules/consumers/shelly/init.py Package init for Shelly consumers.
packages/modules/consumers/ratiotherm/vendor.py Add Ratiotherm vendor descriptor.
packages/modules/consumers/ratiotherm/ratiotherm/consumer.py Add Ratiotherm consumer (power limit set via Modbus).
packages/modules/consumers/ratiotherm/ratiotherm/config.py Add Ratiotherm consumer config setup.
packages/modules/consumers/ratiotherm/ratiotherm/init.py Package init for Ratiotherm consumer module.
packages/modules/consumers/ratiotherm/init.py Package init for Ratiotherm consumers.
packages/modules/consumers/ovum/vendor.py Add Ovum vendor descriptor.
packages/modules/consumers/ovum/ovum/config.py Add Ovum consumer config setup.
packages/modules/consumers/ovum/ovum/init.py Package init for Ovum consumer module.
packages/modules/consumers/ovum/init.py Package init for Ovum consumers.
packages/modules/consumers/nibe/vendor.py Add Nibe vendor descriptor.
packages/modules/consumers/nibe/nibe_s_series/consumer.py Add Nibe S-Series consumer (Modbus metering).
packages/modules/consumers/nibe/nibe_s_series/config.py Add Nibe S-Series consumer config setup.
packages/modules/consumers/nibe/nibe_s_series/init.py Package init for Nibe S-Series consumer module.
packages/modules/consumers/nibe/init.py Package init for Nibe consumers.
packages/modules/consumers/mystrom/vendor.py Add MyStrom vendor descriptor.
packages/modules/consumers/mystrom/mystrom/consumer.py Add MyStrom consumer (HTTP report + relay).
packages/modules/consumers/mystrom/mystrom/config.py Add MyStrom consumer config setup.
packages/modules/consumers/mystrom/mystrom/init.py Package init for MyStrom consumer module.
packages/modules/consumers/mystrom/init.py Package init for MyStrom consumers.
packages/modules/consumers/my_pv/vendor.py Add my-PV vendor descriptor.
packages/modules/consumers/my_pv/elwa_e/consumer.py Add Elwa-E consumer (Modbus metering + setpoint).
packages/modules/consumers/my_pv/elwa_e/config.py Add Elwa-E consumer config setup.
packages/modules/consumers/my_pv/elwa_e/init.py Package init for Elwa-E consumer module.
packages/modules/consumers/my_pv/acthor/consumer.py Add Acthor consumer (Modbus metering + setpoint).
packages/modules/consumers/my_pv/acthor/config.py Add Acthor consumer config setup.
packages/modules/consumers/my_pv/acthor/init.py Package init for Acthor consumer module.
packages/modules/consumers/my_pv/init.py Package init for my-PV consumers.
packages/modules/consumers/lambda_/vendor.py Add Lambda vendor descriptor.
packages/modules/consumers/lambda_/lambda_/consumer.py Add Lambda consumer (Modbus send_values + metering + set_limit).
packages/modules/consumers/lambda_/lambda_/config.py Add Lambda consumer config setup.
packages/modules/consumers/lambda_/lambda_/init.py Package init for Lambda consumer module.
packages/modules/consumers/lambda_/init.py Package init for Lambda consumers.
packages/modules/consumers/idm/vendor.py Add IDM vendor descriptor.
packages/modules/consumers/idm/idm/consumer.py Add IDM consumer (Modbus send_values + metering + set_limit).
packages/modules/consumers/idm/idm/config.py Add IDM consumer config setup.
packages/modules/consumers/idm/idm/init.py Package init for IDM consumer module.
packages/modules/consumers/idm/init.py Package init for IDM consumers.
packages/modules/consumers/generic/vendor.py Add generic consumer vendor descriptor.
packages/modules/consumers/generic/mqtt/consumer.py Add generic MQTT consumer module (subscribe get/, publish set/).
packages/modules/consumers/generic/mqtt/config.py Add generic MQTT consumer config setup.
packages/modules/consumers/generic/mqtt/init.py Package init for generic MQTT consumer.
packages/modules/consumers/generic/json/consumer.py Add generic JSON consumer module (HTTPS + jq extraction + POST hooks).
packages/modules/consumers/generic/json/config.py Add generic JSON consumer config setup.
packages/modules/consumers/generic/json/init.py Package init for generic JSON consumer.
packages/modules/consumers/generic/http/consumer.py Add generic HTTP consumer module (HTTPS + GET/POST paths).
packages/modules/consumers/generic/http/config.py Add generic HTTP consumer config setup.
packages/modules/consumers/generic/http/init.py Package init for generic HTTP consumer.
packages/modules/consumers/generic/dac/model.py Add DAC model enum scaffold.
packages/modules/consumers/generic/dac/consumer.py Add DAC consumer skeleton (set_limit placeholder).
packages/modules/consumers/generic/dac/config.py Add DAC consumer config setup.
packages/modules/consumers/generic/dac/init.py Package init for generic DAC consumer.
packages/modules/consumers/generic/init.py Package init for generic consumers.
packages/modules/consumers/avm/vendor.py Add AVM vendor descriptor.
packages/modules/consumers/avm/avm/config.py Add AVM consumer config setup (credentials/session fields).
packages/modules/consumers/avm/avm/init.py Package init for AVM consumer module.
packages/modules/consumers/avm/init.py Package init for AVM consumers.
packages/modules/consumers/askoma/vendor.py Add ASKOMA vendor descriptor.
packages/modules/consumers/askoma/askoheat/consumer.py Add ASKOMA consumer module (Modbus metering + set_limit).
packages/modules/consumers/askoma/askoheat/config.py Add ASKOMA consumer config setup.
packages/modules/consumers/askoma/askoheat/init.py Package init for ASKOMA consumer module.
packages/modules/consumers/askoma/init.py Package init for ASKOMA consumers.
packages/modules/consumers/init.py Package init for consumers root package.
packages/modules/common/utils/peak_filter.py Extend peak filter to support consumer components.
packages/modules/common/store/_inverter_test.py Fix CounterAll import path.
packages/modules/common/store/_factory.py Add consumer store selection to component store factory.
packages/modules/common/store/_counter_test.py Fix CounterAll import path.
packages/modules/common/store/_consumer.py Add consumer value store publishing + extra-meter purge wrapper.
packages/modules/common/simcount/_simcounter.py Add SimCounterConsumer for consumer energy simulation/counting.
packages/modules/common/consumer_setup.py Add base ConsumerSetup type (name/type/id/vendor/usage/color).
packages/modules/common/configurable_consumer.py Add configurable consumer wrapper (init/update/switch/set_limit/send_values).
packages/modules/common/component_type.py Add CONSUMER (and VEHICLE) component types and topic/type mapping.
packages/modules/common/component_state.py Add ConsumerState to shared component state definitions.
packages/modules/common/abstract_consumer.py Add CurrentValues dataclass used for SELF_CONTROLLED consumer integrations.
packages/main.py Call consumer midnight handlers within midnight processing.
packages/helpermodules/update_config_test.py Add datastore upgrade test coverage for v139 EV chargemode conversion.
packages/helpermodules/timecheck.py Extend plan/time utilities to support consumer schedule/time plans.
packages/helpermodules/subdata.py Subscribe/process consumer topics; add Enum parsing; wire consumer module loading.
packages/helpermodules/mosquitto_dynsec/missing_role_topics_test.py Add missing-role topics for consumer plan IDs.
packages/helpermodules/measurement_logging/write_log.py Add consumer logging; skip extra-meter counters; include consumer names/colors.
packages/helpermodules/measurement_logging/write_log_test.py Update tests to include consumer names.
packages/helpermodules/measurement_logging/update_yields.py Include consumer yields in daily yield publishing.
packages/helpermodules/measurement_logging/test_data_analyse_percentage_totals.json Extend test data for consumer percentage totals.
packages/helpermodules/measurement_logging/process_log.py Add consumer sections into processing/analysis and ensure colors are aggregated.
packages/helpermodules/measurement_logging/process_log_unit_test.py Extend percentage totals unit tests to include consumer totals.
packages/helpermodules/graph.py Add consumer power series to graph data output.
packages/helpermodules/create_debug.py Update debug output to new chargemode_config structure and fix indentation.
packages/helpermodules/constants.py Add default consumer color.
packages/helpermodules/command_test_data.py Update command test data to include consumer and PV changes.
packages/helpermodules/changed_values_handler.py Include consumer values in changed-values publishing.
packages/helpermodules/auto_str.py Add repr generation to auto_str helper.
packages/helpermodules/abstract_plans.py Add consumer variants of time/scheduled plans.
packages/control/process.py Integrate consumers into algorithm result processing (state updates + control threads).
packages/control/prepare.py Ensure consumers are updated and summed during preparation step.
packages/control/loadmanagement_test.py Adjust signature usage in test to match implementation changes.
packages/control/load_protocol.py Introduce protocol/dataclasses to generalize “load” across chargepoints/consumers.
packages/control/ev/ev.py Remove feed-in-limit dependency and use new surplus config fields.
packages/control/ev/charge_template.py Remove feed-in-limit from PV charging template; mark prio as obsolete.
packages/control/data.py Add consumer data/all-data to core data container and copying logic.
packages/control/counter_test.py Update tests for hierarchy/load naming changes and surplus config refactors.
packages/control/counter_all/loadmanagement_prio.py Add loadmanagement priority mixin supporting consumer entries.
packages/control/counter_all/hierarchy_test.py Rename/extend hierarchy helpers from “chargepoints” to generic “loads”.
packages/control/counter_all/counter_home_consumption_test.py Fix CounterAll import path.
packages/control/consumer/usage.py Add consumer usage enum and “not controlled” grouping.
packages/control/consumer/consumer_data.py Add consumer data model (usage/config/get/set/reset/wait states).
packages/control/consumer/consumer_all.py Add aggregate consumer totals/fault reporting.
packages/control/chargepoint/get_phases_test.py Update tests to new surplus config path.
packages/control/chargepoint/control_parameter.py Change current_plan type; remove prio from control parameters.
packages/control/chargepoint/chargepoint.py Make Chargepoint implement Load protocol; remove prio propagation/logging; add stop-allowed hook.
packages/control/chargepoint/chargepoint_test.py Update tests to new surplus config path.
packages/control/chargelog/chargelog_test.py Include consumer sections in logged data fixtures.
packages/control/auto_phase_switch_test.py Update test call signature for auto_phase_switch (no charge_template arg).
packages/control/algorithm/no_current.py Generalize “no current” logic to handle consumers as loads.
packages/control/algorithm/min_current.py Generalize min-current handling to grouped loads per counter, not just chargepoints.
packages/control/algorithm/integration_test/conftest.py Extend integration test setup to include consumers in hierarchy/prios.
packages/control/algorithm/common_test.py Update tests for renamed “available_current_for_load” helper.
packages/control/algorithm/chargemodes.py Simplify charge mode ordering tuples and adjust considered-mode sets.
packages/control/algorithm/bidi_charging.py Refactor to new load filtering helpers; keep bidi logic on chargepoints.
packages/control/algorithm/algorithm.py Update auto_phase_switch invocation signature.
packages/control/algorithm/additional_current.py Generalize additional-current allocation to loads, not just chargepoints.
packages/conftest.py Fix CounterAll import path.
docs/samples/sample_consumer/vendor.py Add vendor descriptor for the sample consumer package.
docs/samples/sample_consumer/sample_consumer/consumer.py Add sample consumer implementation (Modbus example).
docs/samples/sample_consumer/sample_consumer/config.py Add sample consumer config setup.
docs/samples/sample_consumer/sample_consumer/init.py Package init for sample consumer module.
docs/samples/sample_consumer/init.py Package init for sample consumer docs package.
data/config/mosquitto/public/role-templates.json Add dynamic security role templates for consumer access/write access.
data/config/mosquitto/local/openwb_local.conf Update version marker; add consumer topic bridging; broaden counter get/# bridging.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread packages/control/data.py
Comment thread packages/modules/consumers/my_pv/elwa_e/consumer.py Outdated
Comment thread packages/modules/consumers/my_pv/elwa_e/consumer.py Outdated
Comment thread packages/modules/consumers/generic/json/consumer.py Outdated
Comment thread packages/modules/consumers/generic/json/consumer.py Outdated
Comment thread docs/samples/sample_consumer/sample_consumer/consumer.py Outdated
@LKuemmel
LKuemmel changed the base branch from master to feature_loadmanagement_prio_list August 18, 2026 09:37
@LKuemmel
LKuemmel requested a balanced review from Copilot August 19, 2026 09:57

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

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 107 out of 113 changed files in this pull request and generated 1 comment.

Suppressed comments (8)

data/config/mosquitto/public/default-dynamic-security.json:1791

  • The three send ACLs omit the broker's openWB/set/... prefix, unlike the charge-point configuration ACLs above and the per-consumer role template. With user management enabled, writes to config, module, and usage are therefore denied. Add set to all three send topics; keep the receive topics unchanged.
					"topic": "openWB/consumer/+/config",

packages/modules/web_themes/koala/source/src/components/charts/dailyTotals/DailyTotalsRow.vue:138

  • Only the aggregate consumer ID is handled. Expanded rows use IDs such as consumer-7, so their nonzero power is rendered with the no-current horizontal line. Resolve consumer-* IDs with consumerPower, as is already done for individual counters.
    packages/control/counter_all/loadmanagement_prio.py:24
  • Vehicle IDs and consumer IDs use separate namespaces, but removal now matches only the numeric ID and removes the first vehicle or consumer entry encountered. Deleting consumer 2 can therefore remove vehicle 2's priority entry (or vice versa). Pass the component type through the removal API and require both type and ID to match.
    packages/control/counter_all/hierarchy.py:56
  • Returning consumers here exposes a caller incompatibility: Counter._get_loadmanagement_state() iterates this result but always indexes data.data.cp_data[load_key]. If a counter enters fault state with a consumer below it, that raises KeyError and aborts counter setup, leaving its load-management limits stale. Update that caller to resolve both cp... and consumer... keys before including consumers here.
                elif child["type"] == ComponentType.CONSUMER.value:
                    self.connected_loads.append(f"consumer{child['id']}")

packages/modules/devices/shelly/shelly/status_handler.py:119

  • For em1:0 devices, total power and currents apply factor, but the per-phase powers value does not. With any factor other than 1, the emitted phase power no longer sums to total power. Apply the same factor here.
    packages/control/general.py:61
  • The consumer surplus switch-on delay defaults to 30 seconds here, while datastore initialization adds the same topic with 60 seconds (helpermodules/update_config.py:666). This makes behavior depend on whether the value came from the dataclass or initialized broker data. Use one default consistently.
    data/config/mosquitto/public/default-dynamic-security.json:1776
  • The consumer configuration role has no ACL for the addConsumer or removeConsumer command topics. Unlike the charge-point configuration role at lines 1674-1684, a user granted this role cannot actually create or delete consumers. Add both command ACLs to this role.
			"acls": [

data/config/mosquitto/public/default-dynamic-security.json:1815

  • The configuration role never grants access to openWB/set/consumer/+/extra_meter or its corresponding receive topic, although consumer creation and configuration use that topic. Users relying on this role cannot configure an external meter. Add scoped send and receive ACLs for extra_meter.
					"topic": "openWB/system/configurable/consumers",

},
{
"acltype": "publishClientSend",
"topic": "openWB/set/command/+/todo/addConsumerSchedulePlan",
@LKuemmel
LKuemmel requested a review from ndrsnhs August 19, 2026 11:01
@LKuemmel
LKuemmel changed the base branch from feature_loadmanagement_prio_list to feature_chargemode_enums August 19, 2026 13:59
@LKuemmel
LKuemmel changed the base branch from feature_chargemode_enums to feature_loadmanagement_prio_list August 20, 2026 08:51
LKuemmel and others added 6 commits August 21, 2026 09:57
* draft

* Anlauferkennung

* Betriebsmodus zurücksetzen

* ammend

* Anlauferkennung

* draft

* draft scheduled charging

* add scheduled und time plan commands for adding and removing

* flake8

* update config

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* review

* fix pytest

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* on_time

* eco default price, typo
Brett-S-OWB and others added 28 commits August 21, 2026 09:58
* Add consumer to energy flow chart

* Add consumer row to daily totals chart

* Add consumer total to history chart

* add consumer color to store

* Align legend category dropdowns
* Add consumer component to display flow chart

* Add user management role
* energy percentage, set usage per json

* consider min interval

* fixes

* pv

* fix

* pycheck, fix extra meter

* ammend

* fixes

* ammend

* fix

* switch interval elapsed

* flake8
* add shelly, flake8, pytest consumer chargemodes

* fix shelly

* existing pytests running

* review
* fix colors, lookup dict names and colors for consumers

* review
* fix colors, lookup dict names and colors for consumers

* review

* extend tests

* add colors for yearly graph data

* remove extra meters from log data

* remove comment

* flake8
* usage type self controlled

* fix

* review
* calc on time

* review
* fix pytest

* fixes, pytest

* review

* fix
* typo

* fix

* pytest
* IDM: send PV/Hausverbrauch/Batterie via GLT statt Leistungsvorgabe

* Lambda: PV-Überschuss statt power_limit an E-Manager senden

* Add OVUM CubeSpeicher/MPlus consumer module

* IDM: revert scaling factor, fix flake8 formatting

* flake8

* Rename send_grid_values to send_values in config.py

* Adjust surplus calculation to account for charging power

Include charging power in surplus calculation to avoid misreporting surplus to the heat pump.

* Update send_values function to send grid power

* Add Self_Controlled for IDM and Lambda

* flake8: fix syntax error and whitespace in consumer modules

Stray pasted line broke lambda_ consumer.py syntax; idm/lambda_/ovum
files had trailing whitespace on blank lines and missing EOF newlines.
* clean up

* fix loadmanagement

* review

* review

* flake8
#3840)

* no charge for loads

* consider non charging for consumers and update consumer state messages

* flake8

* review
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.

5 participants