Skip to content

Anlauferkennung, Betriebsmodus zurücksetzen, Befehle für Pläne#3588

Merged
LKuemmel merged 14 commits into
openWB:feature_consumerfrom
LKuemmel:consumer_dev
Jun 24, 2026
Merged

Anlauferkennung, Betriebsmodus zurücksetzen, Befehle für Pläne#3588
LKuemmel merged 14 commits into
openWB:feature_consumerfrom
LKuemmel:consumer_dev

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

Erweitert die Verbraucher-Logik um Anlauferkennung (“wait for start”), neue/erweiterte MQTT-Set-Topics sowie Commands zum Anlegen/Löschen von Verbraucher-Plänen; zusätzlich wird ein nächtliches Zurücksetzen bestimmter Zustände implementiert.

Changes:

  • Mitternachts-Handler setzt wait_for_start-State und (optional) den Lademodus zurück.
  • MQTT-Handling erweitert: Consumer-/set/* Topics werden zugelassen, validiert und in SubData/ConsumerData.Set verarbeitet (inkl. Enum-Decoding).
  • Commands für Verbraucher-Zielladen-/Zeitladen-Pläne hinzugefügt sowie neue Tests für die Wait-for-start-Statemachine.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
packages/main.py Setzt Verbraucher-Zustände um Mitternacht zurück.
packages/helpermodules/update_config.py Whitelist um Consumer-/set/* Topics erweitert.
packages/helpermodules/timecheck.py Typen für neue Consumer-Plan-Klassen ergänzt.
packages/helpermodules/subdata.py Enum-Werte aus MQTT-Payloads werden für Klassenattribute gesetzt.
packages/helpermodules/setdata.py Validierung für neue Consumer-/set/* Topics ergänzt.
packages/helpermodules/command.py Neue Commands zum Hinzufügen/Löschen von Verbraucher-Plänen.
packages/helpermodules/abstract_plans.py Default-Namen für Consumer-Plan-Typen angepasst.
packages/control/consumer/consumer.py Neue Wait-for-start-Logik, Reset-Funktionen, Anpassungen an min_current/min_intervall.
packages/control/consumer/consumer_test.py Neue Tests für wait_for_start_handler.
packages/control/consumer/consumer_data.py Neue Enums/Reset-Konfig, Umzug min_current/min_intervall in ConsumerConfig, neue Set-Topics.

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

Comment thread packages/control/consumer/consumer.py Outdated
Comment on lines 352 to 355
def wait_for_start_handler(
self, func: Callable[[], Tuple[int, str, Optional[str], int]]) -> Tuple[int, str, Optional[str], int]:
self, func: Callable[[], Tuple[int, str, Optional[str], int]]
) -> Tuple[int, Chargemode, Optional[Chargemode], int]:
if self.data.usage.wait_for_start_active:
Comment on lines +1216 to +1224
# check if "payload" contains "data.copy"
if "data" in payload and "copy" in payload["data"] and usage.scheduled_charging.plans is not None:
for plan in usage.scheduled_charging.plans:
if plan.id == payload["data"]["copy"]:
new_consumer_schedule_plan = copy.deepcopy(plan)
break
new_consumer_schedule_plan.name = f'Kopie von {new_consumer_schedule_plan.name}'
else:
new_consumer_schedule_plan = GET_PLAN_CLASS_FOR_USAGE[usage.type]()
Comment on lines +1241 to +1245
if self.max_id_consumer_scheduled_plan < payload["data"]["plan"]:
log.error(
payload, connection_id,
f'Die ID \'{payload["data"]["plan"]}\' ist größer als die maximal vergebene '
f'ID \'{self.max_id_usage_plan}\'.', MessageType.ERROR)
f'ID \'{self.max_id_consumer_scheduled_plan}\'.', MessageType.ERROR)
Comment on lines +1261 to +1269
# check if "payload" contains "data.copy"
if "data" in payload and "copy" in payload["data"]:
for plan in usage.time_charging.plans:
if plan.id == payload["data"]["copy"]:
new_time_charging_plan = copy.deepcopy(plan)
break
new_time_charging_plan.name = f'Kopie von {new_time_charging_plan.name}'
else:
new_time_charging_plan = TimeChargingPlanConsumer()
Comment on lines +1286 to +1289
if self.max_id_consumer_time_plan < payload["data"]["plan"]:
log.error(payload, connection_id, "Die ID ist größer als die maximal vergebene ID.",
MessageType.ERROR)
for plan in usage.time_charging.plans:
Comment on lines +111 to +121
def scheduled_charging(self) -> Tuple[Chargemode, str]:
return self.data.config.min_current, "Zielladen noch nicht implementiert", Chargemode.STOP, Chargemode.STOP
plan_data, remaining_time, duration = self._find_recent_plan(self.data.usage.scheduled_charging.plans)
if plan_data:
control_parameter.current_plan = plan_data.id
else:
control_parameter.current_plan = None
return self.scheduled_charging_calc_current(
plan_data,
remaining_time,
duration)
Comment thread packages/control/consumer/consumer.py Outdated
Comment on lines +439 to +441
if ((submode == "time_charging" and self.data.control_parameter.chargemode != "time_charging") or
(submode != "time_charging" and
self.data.control_parameter.chargemode != mode)):
Comment on lines +399 to +413
def reset_chargemode_at_midnight(self):
if self.data.usage.reset_chargemode.mode == ResetModes.MIDNIGHT:
if self.data.usage.chargemode != self.data.usage.reset_chargemode.chargemode:
log.info(f"Zurücksetzen des Lademodus auf {self.data.usage.reset_chargemode.chargemode} "
f"für Verbraucher {self.num} um Mitternacht.")
self.data.usage.chargemode = self.data.usage.reset_chargemode.chargemode

def reset_chargemode_at_time(self):
if (self.data.usage.reset_chargemode.mode == ResetModes.TIME and
self.data.usage.reset_chargemode.time is not None):
if timecheck.create_timestamp() > self.data.usage.reset_chargemode.time:
if self.data.usage.chargemode != self.data.usage.reset_chargemode.chargemode:
log.info(f"Zurücksetzen des Lademodus auf {self.data.usage.reset_chargemode.chargemode} "
f"für Verbraucher {self.num} um definierte Zeit.")
self.data.usage.chargemode = self.data.usage.reset_chargemode.chargemode
LKuemmel and others added 5 commits June 23, 2026 16:17
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@LKuemmel LKuemmel merged commit 35ce6da into openWB:feature_consumer Jun 24, 2026
1 check passed
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.

2 participants