From c036e7e4a58430bbcee7faeea275f8adbbb3f42b Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Mon, 28 Oct 2024 09:27:46 +0100 Subject: [PATCH 01/75] paragraph 14a --- .../control/algorithm/additional_current.py | 11 +-- .../algorithm/additional_current_test.py | 5 +- packages/control/algorithm/common.py | 4 +- .../integration_test/instant_charging_test.py | 8 -- .../integration_test/pv_charging_test.py | 11 --- packages/control/algorithm/min_current.py | 3 +- .../control/algorithm/surplus_controlled.py | 14 +-- packages/control/chargepoint/chargepoint.py | 26 +----- .../control/chargepoint/chargepoint_data.py | 1 + packages/control/counter.py | 23 ++++- packages/control/data.py | 47 +++++++++- packages/control/ev/ev.py | 6 +- packages/control/general.py | 45 +--------- packages/control/io_device.py | 57 ++++++++++++ packages/control/limiting_value.py | 3 + packages/control/loadmanagement.py | 70 ++++++++++++--- packages/control/loadmanagement_test.py | 32 +++++-- .../dataclass_utils/_dataclass_from_dict.py | 15 +++- .../_dataclass_from_dict_test.py | 19 +++- packages/helpermodules/command.py | 59 ++++++++++++- .../data_migration/data_migration.py | 7 +- packages/helpermodules/setdata.py | 30 ++++++- packages/helpermodules/subdata.py | 86 +++++++++++++++---- packages/helpermodules/update_config.py | 18 ++-- packages/modules/common/abstract_io.py | 16 ++++ packages/modules/common/component_state.py | 12 ++- packages/modules/common/component_type.py | 2 +- packages/modules/common/configurable_io.py | 39 +++++++++ .../configurable_ripple_control_receiver.py | 27 ------ packages/modules/common/fault_state.py | 2 +- packages/modules/common/io_setup.py | 27 ++++++ packages/modules/common/modbus.py | 3 + packages/modules/common/store/__init__.py | 2 +- packages/modules/common/store/_io.py | 30 +++++++ .../common/store/_ripple_control_receiver.py | 19 ---- .../dimm_kit => io_actions}/__init__.py | 0 .../gpio => io_actions/dimming}/__init__.py | 0 packages/modules/io_actions/dimming/api.py | 33 +++++++ packages/modules/io_actions/dimming/config.py | 25 ++++++ .../dimming_direct_control/__init__.py | 0 .../io_actions/dimming_direct_control/api.py | 24 ++++++ .../dimming_direct_control/config.py | 22 +++++ packages/modules/io_actions/groups.py | 5 ++ .../ripple_control_receiver/__init__.py | 0 .../io_actions/ripple_control_receiver/api.py | 24 ++++++ .../ripple_control_receiver/config.py | 24 ++++++ packages/modules/io_devices/__init__.py | 0 .../modules/io_devices/add_on/__init__.py | 0 packages/modules/io_devices/add_on/api.py | 56 ++++++++++++ packages/modules/io_devices/add_on/config.py | 21 +++++ .../modules/io_devices/dimm_kit/__init__.py | 0 packages/modules/io_devices/dimm_kit/api.py | 54 ++++++++++++ .../modules/io_devices/dimm_kit/config.py | 43 ++++++++++ packages/modules/loadvars.py | 35 +++++--- .../dimm_kit/config.py | 18 ---- .../dimm_kit/ripple_control_receiver.py | 57 ------------ .../ripple_control_receivers/gpio/config.py | 13 --- .../gpio/ripple_control_receiver.py | 49 ----------- 58 files changed, 911 insertions(+), 371 deletions(-) create mode 100644 packages/control/io_device.py create mode 100644 packages/modules/common/abstract_io.py create mode 100644 packages/modules/common/configurable_io.py delete mode 100644 packages/modules/common/configurable_ripple_control_receiver.py create mode 100644 packages/modules/common/io_setup.py create mode 100644 packages/modules/common/store/_io.py delete mode 100644 packages/modules/common/store/_ripple_control_receiver.py rename packages/modules/{ripple_control_receivers/dimm_kit => io_actions}/__init__.py (100%) rename packages/modules/{ripple_control_receivers/gpio => io_actions/dimming}/__init__.py (100%) create mode 100644 packages/modules/io_actions/dimming/api.py create mode 100644 packages/modules/io_actions/dimming/config.py create mode 100644 packages/modules/io_actions/dimming_direct_control/__init__.py create mode 100644 packages/modules/io_actions/dimming_direct_control/api.py create mode 100644 packages/modules/io_actions/dimming_direct_control/config.py create mode 100644 packages/modules/io_actions/groups.py create mode 100644 packages/modules/io_actions/ripple_control_receiver/__init__.py create mode 100644 packages/modules/io_actions/ripple_control_receiver/api.py create mode 100644 packages/modules/io_actions/ripple_control_receiver/config.py create mode 100644 packages/modules/io_devices/__init__.py create mode 100644 packages/modules/io_devices/add_on/__init__.py create mode 100644 packages/modules/io_devices/add_on/api.py create mode 100644 packages/modules/io_devices/add_on/config.py create mode 100644 packages/modules/io_devices/dimm_kit/__init__.py create mode 100644 packages/modules/io_devices/dimm_kit/api.py create mode 100644 packages/modules/io_devices/dimm_kit/config.py delete mode 100644 packages/modules/ripple_control_receivers/dimm_kit/config.py delete mode 100644 packages/modules/ripple_control_receivers/dimm_kit/ripple_control_receiver.py delete mode 100644 packages/modules/ripple_control_receivers/gpio/config.py delete mode 100644 packages/modules/ripple_control_receivers/gpio/ripple_control_receiver.py diff --git a/packages/control/algorithm/additional_current.py b/packages/control/algorithm/additional_current.py index ad92724e14..1e76a3f52a 100644 --- a/packages/control/algorithm/additional_current.py +++ b/packages/control/algorithm/additional_current.py @@ -3,11 +3,9 @@ from control.algorithm import common from control.algorithm.chargemodes import CONSIDERED_CHARGE_MODES_ADDITIONAL_CURRENT from control.loadmanagement import LimitingValue, Loadmanagement -from control.counter import Counter from control.chargepoint.chargepoint import Chargepoint from control.algorithm.filter_chargepoints import (get_chargepoints_by_mode_and_counter, get_preferenced_chargepoint_charging) -from modules.common.utils.component_parser import get_component_name_by_id log = logging.getLogger(__name__) @@ -28,14 +26,14 @@ def set_additional_current(self) -> None: while len(preferenced_chargepoints): cp = preferenced_chargepoints[0] missing_currents, counts = common.get_missing_currents_left(preferenced_chargepoints) - available_currents, limit = Loadmanagement().get_available_currents(missing_currents, counter) + available_currents, limit = Loadmanagement().get_available_currents(missing_currents, counter, cp) log.debug(f"cp {cp.num} available currents {available_currents} missing currents " f"{missing_currents} limit {limit}") cp.data.control_parameter.limit = limit available_for_cp = common.available_current_for_cp(cp, counts, available_currents, missing_currents) current = common.get_current_to_set( cp.data.set.current, available_for_cp, cp.data.set.target_current) - self._set_loadmangement_message(current, limit, cp, counter) + self._set_loadmangement_message(current, limit, cp) common.set_current_counterdiff( cp.data.control_parameter.min_current, current, @@ -49,8 +47,7 @@ def set_additional_current(self) -> None: def _set_loadmangement_message(self, current: float, limit: LimitingValue, - chargepoint: Chargepoint, - counter: Counter) -> None: + chargepoint: Chargepoint) -> None: # Strom muss an diesem Zähler geändert werden log.debug( f"current {current} target {chargepoint.data.set.target_current} set current {chargepoint.data.set.current}" @@ -60,4 +57,4 @@ def _set_loadmangement_message(self, round(current, 2) != round(max( chargepoint.data.control_parameter.required_currents), 2)): chargepoint.set_state_and_log(f"Es kann nicht mit der vorgegebenen Stromstärke geladen werden" - f"{limit.value.format(get_component_name_by_id(counter.num))}") + f"{limit}") diff --git a/packages/control/algorithm/additional_current_test.py b/packages/control/algorithm/additional_current_test.py index 89c552aeff..c1b588e710 100644 --- a/packages/control/algorithm/additional_current_test.py +++ b/packages/control/algorithm/additional_current_test.py @@ -1,4 +1,3 @@ -from unittest.mock import Mock import pytest from control.algorithm import additional_current @@ -34,11 +33,9 @@ def test_set_loadmangement_message(set_current, limit, expected_msg, monkeypatch cp1 = Chargepoint(1, None) cp1.data = ChargepointData(set=Set(current=set_current), control_parameter=ControlParameter(required_currents=[8]*3)) - mockget_component_name_by_id = Mock(return_value="Garage") - monkeypatch.setattr(additional_current, "get_component_name_by_id", mockget_component_name_by_id) # execution - additional_current.AdditionalCurrent()._set_loadmangement_message(7, limit, cp1, Mock()) + additional_current.AdditionalCurrent()._set_loadmangement_message(7, limit, cp1) # evaluation assert cp1.data.get.state_str == expected_msg diff --git a/packages/control/algorithm/common.py b/packages/control/algorithm/common.py index 2e5e2b66f8..b2a8bddb4d 100644 --- a/packages/control/algorithm/common.py +++ b/packages/control/algorithm/common.py @@ -74,7 +74,7 @@ def set_current_counterdiff(diff_curent: float, if surplus: data.data.counter_data[counter].update_surplus_values_left(diffs) else: - data.data.counter_data[counter].update_values_left(diffs) + data.data.counter_data[counter].update_values_left(diffs, chargepoint) chargepoint.data.set.current = current log.info(f"LP{chargepoint.num}: Stromstärke {current}A") @@ -145,7 +145,7 @@ def update_raw_data(preferenced_chargepoints: List[Chargepoint], if surplus: data.data.counter_data[counter].update_surplus_values_left(diffs) else: - data.data.counter_data[counter].update_values_left(diffs) + data.data.counter_data[counter].update_values_left(diffs, chargepoint) def consider_less_charging_chargepoint_in_loadmanagement(cp: Chargepoint, set_current: float) -> bool: diff --git a/packages/control/algorithm/integration_test/instant_charging_test.py b/packages/control/algorithm/integration_test/instant_charging_test.py index f0582261d5..21d0216481 100644 --- a/packages/control/algorithm/integration_test/instant_charging_test.py +++ b/packages/control/algorithm/integration_test/instant_charging_test.py @@ -1,9 +1,7 @@ from dataclasses import dataclass, field from typing import List -from unittest.mock import Mock import pytest -from control.algorithm import additional_current from control.algorithm.integration_test.conftest import ParamsExpectedSetCurrent, assert_expected_current from control.chargemode import Chargemode from control import data @@ -63,8 +61,6 @@ def test_start_instant_charging(all_cp_instant_charging_1p, all_cp_not_charging, data.data.counter_data["counter0"].data.set.raw_power_left = 21310 data.data.counter_data["counter0"].data.set.raw_currents_left = [32, 30, 31] data.data.counter_data["counter6"].data.set.raw_currents_left = [16, 12, 14] - mockget_component_name_by_id = Mock(return_value="Garage") - monkeypatch.setattr(additional_current, "get_component_name_by_id", mockget_component_name_by_id) # execution Algorithm().calc_current() @@ -122,8 +118,6 @@ def test_instant_charging_limit(params: ParamsLimit, all_cp_instant_charging_1p, data.data.counter_data["counter0"].data.set.raw_power_left = params.raw_power_left data.data.counter_data["counter0"].data.set.raw_currents_left = params.raw_currents_left_counter0 data.data.counter_data["counter6"].data.set.raw_currents_left = params.raw_currents_left_counter6 - mockget_component_name_by_id = Mock(return_value="Garage") - monkeypatch.setattr(additional_current, "get_component_name_by_id", mockget_component_name_by_id) # execution Algorithm().calc_current() @@ -199,8 +193,6 @@ def test_control_parameter_instant_charging(params: ParamsControlParameter, all_ data.data.counter_data["counter0"].data.set.raw_power_left = 22080 data.data.counter_data["counter0"].data.set.raw_currents_left = [32]*3 data.data.counter_data["counter6"].data.set.raw_currents_left = [16]*3 - mockget_component_name_by_id = Mock(return_value="Garage") - monkeypatch.setattr(additional_current, "get_component_name_by_id", mockget_component_name_by_id) # execution Algorithm().calc_current() diff --git a/packages/control/algorithm/integration_test/pv_charging_test.py b/packages/control/algorithm/integration_test/pv_charging_test.py index c15eda4952..10ceefffe5 100644 --- a/packages/control/algorithm/integration_test/pv_charging_test.py +++ b/packages/control/algorithm/integration_test/pv_charging_test.py @@ -3,7 +3,6 @@ from unittest.mock import Mock import pytest -from control.algorithm import additional_current, surplus_controlled from control.algorithm.integration_test.conftest import ParamsExpectedSetCurrent, assert_expected_current from control.chargemode import Chargemode from control import data @@ -121,8 +120,6 @@ def test_start_pv_delay(all_cp_pv_charging_3p, all_cp_not_charging, monkeypatch) data.data.counter_data["counter0"].data.set.raw_currents_left = [32, 30, 31] data.data.counter_data["counter6"].data.set.raw_currents_left = [16, 12, 14] data.data.counter_data["counter0"].data.set.reserved_surplus = 0 - mockget_component_name_by_id = Mock(return_value="Garage") - monkeypatch.setattr(additional_current, "get_component_name_by_id", mockget_component_name_by_id) # execution Algorithm().calc_current() @@ -159,8 +156,6 @@ def test_pv_delay_expired(all_cp_pv_charging_3p, all_cp_not_charging, monkeypatc "cp4"].data.control_parameter.state = ChargepointState.SWITCH_ON_DELAY data.data.cp_data[ "cp5"].data.control_parameter.timestamp_switch_on_off = None - mockget_component_name_by_id = Mock(return_value="Garage") - monkeypatch.setattr(additional_current, "get_component_name_by_id", mockget_component_name_by_id) # execution Algorithm().calc_current() @@ -227,8 +222,6 @@ def test_surplus(params: ParamsSurplus, all_cp_pv_charging_3p, all_cp_charging_3 data.data.counter_data["counter0"].data.set.raw_power_left = params.raw_power_left data.data.counter_data["counter0"].data.set.raw_currents_left = params.raw_currents_left_counter0 data.data.counter_data["counter6"].data.set.raw_currents_left = params.raw_currents_left_counter6 - mockget_component_name_by_id = Mock(return_value="Garage") - monkeypatch.setattr(surplus_controlled, "get_component_name_by_id", mockget_component_name_by_id) # execution Algorithm().calc_current() @@ -275,8 +268,6 @@ def test_phase_switch(all_cp_pv_charging_3p, all_cp_charging_3p, monkeypatch): data.data.counter_data["counter0"].data.set.raw_power_left = cases_phase_switch[0].raw_power_left data.data.counter_data["counter0"].data.set.raw_currents_left = cases_phase_switch[0].raw_currents_left_counter0 data.data.counter_data["counter6"].data.set.raw_currents_left = cases_phase_switch[0].raw_currents_left_counter6 - mockget_component_name_by_id = Mock(return_value="Garage") - monkeypatch.setattr(surplus_controlled, "get_component_name_by_id", mockget_component_name_by_id) mockget_get_phases_chargemode = Mock(return_value=0) monkeypatch.setattr(algorithm_data.data.general_data, "get_phases_chargemode", mockget_get_phases_chargemode) data.data.cp_data[ @@ -300,8 +291,6 @@ def test_phase_switch_1p_3p(all_cp_pv_charging_1p, monkeypatch): data.data.counter_data["counter0"].data.set.raw_power_left = cases_phase_switch[1].raw_power_left data.data.counter_data["counter0"].data.set.raw_currents_left = cases_phase_switch[1].raw_currents_left_counter0 data.data.counter_data["counter6"].data.set.raw_currents_left = cases_phase_switch[1].raw_currents_left_counter6 - mockget_component_name_by_id = Mock(return_value="Garage") - monkeypatch.setattr(surplus_controlled, "get_component_name_by_id", mockget_component_name_by_id) mockget_get_phases_chargemode = Mock(return_value=0) monkeypatch.setattr(algorithm_data.data.general_data, "get_phases_chargemode", mockget_get_phases_chargemode) data.data.cp_data["cp3"].data.get.currents = [32, 0, 0] diff --git a/packages/control/algorithm/min_current.py b/packages/control/algorithm/min_current.py index 87d7d9a134..fb8fce61b2 100644 --- a/packages/control/algorithm/min_current.py +++ b/packages/control/algorithm/min_current.py @@ -24,7 +24,8 @@ def set_min_current(self) -> None: cp = preferenced_chargepoints[0] missing_currents, counts = common.get_min_current(cp) if max(missing_currents) > 0: - available_currents, limit = Loadmanagement().get_available_currents(missing_currents, counter) + available_currents, limit = Loadmanagement().get_available_currents( + missing_currents, counter, cp) cp.data.control_parameter.limit = limit available_for_cp = common.available_current_for_cp( cp, counts, available_currents, missing_currents) diff --git a/packages/control/algorithm/surplus_controlled.py b/packages/control/algorithm/surplus_controlled.py index 51e0aaa1c7..a36193f700 100644 --- a/packages/control/algorithm/surplus_controlled.py +++ b/packages/control/algorithm/surplus_controlled.py @@ -10,7 +10,6 @@ from control.chargepoint.charging_type import ChargingType from control.chargepoint.chargepoint import Chargepoint from control.chargepoint.chargepoint_state import ChargepointState, CHARGING_STATES -from modules.common.utils.component_parser import get_component_name_by_id from control.counter import ControlRangeState, Counter from control.loadmanagement import LimitingValue, Loadmanagement @@ -53,7 +52,8 @@ def _set(self, missing_currents, counts = common.get_missing_currents_left(chargepoints) available_currents, limit = Loadmanagement().get_available_currents_surplus(missing_currents, counter, - feed_in_yield) + cp, + feed_in=feed_in_yield) cp.data.control_parameter.limit = limit available_for_cp = common.available_current_for_cp(cp, counts, available_currents, missing_currents) if counter.get_control_range_state(feed_in_yield) == ControlRangeState.MIDDLE: @@ -70,8 +70,9 @@ def _set(self, else: current = available_for_cp - current = common.get_current_to_set(cp.data.set.current, current, cp.data.set.target_current) - self._set_loadmangement_message(current, limit, cp, counter) + current = common.get_current_to_set(cp.data.set.current, current, + available_for_cp, cp.data.set.target_current) + self._set_loadmangement_message(current, limit, cp) limited_current = self._limit_adjust_current(cp, current) common.set_current_counterdiff( cp.data.control_parameter.min_current, @@ -83,8 +84,7 @@ def _set(self, def _set_loadmangement_message(self, current: float, limit: LimitingValue, - chargepoint: Chargepoint, - counter: Counter) -> None: + chargepoint: Chargepoint) -> None: # Strom muss an diesem Zähler geändert werden if (current != chargepoint.data.set.current and # Strom erreicht nicht die vorgegebene Stromstärke @@ -92,7 +92,7 @@ def _set_loadmangement_message(self, # im PV-Laden wird der Strom immer durch die Leistung begrenzt limit != LimitingValue.POWER): chargepoint.set_state_and_log(f"Es kann nicht mit der vorgegebenen Stromstärke geladen werden" - f"{limit.value.format(get_component_name_by_id(counter.num))}") + f"{limit}") # tested def filter_by_feed_in_limit(self, chargepoints: List[Chargepoint]) -> Tuple[List[Chargepoint], List[Chargepoint]]: diff --git a/packages/control/chargepoint/chargepoint.py b/packages/control/chargepoint/chargepoint.py index cf01d0cb67..4f3388c863 100644 --- a/packages/control/chargepoint/chargepoint.py +++ b/packages/control/chargepoint/chargepoint.py @@ -106,22 +106,6 @@ def _is_grid_protection_inactive(self) -> Tuple[bool, Optional[str]]: message = "Ladepunkt gesperrt, da der Netzschutz aktiv ist." return state, message - def _is_ripple_control_receiver_inactive(self) -> Tuple[bool, Optional[str]]: - """ prüft, dass der Rundsteuerempfängerkontakt nicht geschlossen ist. - """ - state = True - message = None - general_data = data.data.general_data.data - if general_data.ripple_control_receiver.module: - if general_data.ripple_control_receiver.get.override_value == 0: - state = False - message = "Ladepunkt gesperrt, da der Rundsteuerempfängerkontakt geschlossen ist." - elif general_data.ripple_control_receiver.get.fault_state == 2: - state = False - message = ("Ladepunkt gesperrt, da der Rundsteuerempfänger ein Problem meldet. " - "Bitte im Status des RSE nachsehen.") - return state, message - def _is_loadmanagement_available(self) -> Tuple[bool, Optional[str]]: """ prüft, ob Lastmanagement verfügbar ist. Wenn keine Werte vom EVU-Zähler empfangen werden, darf nicht geladen werden. @@ -191,15 +175,13 @@ def is_charging_possible(self) -> Tuple[bool, Optional[str]]: try: charging_possible, message = self._is_grid_protection_inactive() if charging_possible: - charging_possible, message = self._is_ripple_control_receiver_inactive() + charging_possible, message = self._is_loadmanagement_available() if charging_possible: - charging_possible, message = self._is_loadmanagement_available() + charging_possible, message = self._is_manual_lock_inactive() if charging_possible: - charging_possible, message = self._is_manual_lock_inactive() + charging_possible, message = self._is_ev_plugged() if charging_possible: - charging_possible, message = self._is_ev_plugged() - if charging_possible: - charging_possible, message = self._is_autolock_inactive() + charging_possible, message = self._is_autolock_inactive() except Exception: log.exception("Fehler in der Ladepunkt-Klasse von "+str(self.num)) return False, "Keine Ladung, da ein interner Fehler aufgetreten ist: "+traceback.format_exc() diff --git a/packages/control/chargepoint/chargepoint_data.py b/packages/control/chargepoint/chargepoint_data.py index 9d2f9bb02c..0e1509a858 100644 --- a/packages/control/chargepoint/chargepoint_data.py +++ b/packages/control/chargepoint/chargepoint_data.py @@ -97,6 +97,7 @@ class Get: currents: List[float] = field(default_factory=currents_list_factory) daily_imported: float = 0 daily_exported: float = 0 + dimming_via_direct_control: bool = False error_timestamp: int = 0 evse_current: Optional[float] = None exported: float = 0 diff --git a/packages/control/counter.py b/packages/control/counter.py index 80531f12a9..3be3fc75e5 100644 --- a/packages/control/counter.py +++ b/packages/control/counter.py @@ -73,6 +73,7 @@ def get_factory() -> Get: @dataclass class Set: error_timer: Optional[float] = field(default=None, metadata={"topic": "set/error_timer"}) + dimming_power_left: float = field(default=0, metadata={"topic": "set/dimming_power_left"}) reserved_surplus: float = field(default=0, metadata={"topic": "set/reserved_surplus"}) released_surplus: float = field(default=0, metadata={"topic": "set/released_surplus"}) raw_power_left: float = 0 @@ -107,6 +108,7 @@ def setup_counter(self): loadmanagement_available = self._get_loadmanagement_state() self._set_current_left(loadmanagement_available) self._set_power_left(loadmanagement_available) + self._set_dimming_power_left() if loadmanagement_available is False: self.data.get.power = 0 return @@ -191,12 +193,27 @@ def _set_power_left(self, loadmanagement_available: bool) -> None: else: self.data.set.raw_power_left = None - def update_values_left(self, diffs) -> None: + def _set_dimming_power_left(self) -> None: + if self.num == data.data.counter_all_data.get_evu_counter(): + if data.data.general_data.data.dimming.get.active: + self.data.set.dimming_power_left = data.data.general_data.data.dimming.set.max_import_power + else: + self.data.set.dimming_power_left = None + + def update_values_left(self, diffs, cp) -> None: self.data.set.raw_currents_left = list(map(operator.sub, self.data.set.raw_currents_left, diffs)) if self.data.set.raw_power_left: self.data.set.raw_power_left -= sum(diffs) * 230 - log.debug(f'Zähler {self.num}: {self.data.set.raw_currents_left}A verbleibende Ströme, ' - f'{self.data.set.raw_power_left}W verbleibende Leistung') + dimming_power_left = None + for io in data.data.io_device.values(): + dimming_power_left = io.dimming_set_import_power_left(sum(diffs)*230, cp.num) + if dimming_power_left is not None: + log.debug(f'Zähler {self.num}: {self.data.set.raw_currents_left}A verbleibende Ströme, ' + f'{self.data.set.raw_power_left}W verbleibende Leistung, ' + f'{self.data.set.dimming_power_left}W verbleibende Dimmleistung') + else: + log.debug(f'Zähler {self.num}: {self.data.set.raw_currents_left}A verbleibende Ströme, ' + f'{self.data.set.raw_power_left}W verbleibende Leistung') def update_surplus_values_left(self, diffs) -> None: self.data.set.raw_currents_left = list(map(operator.sub, self.data.set.raw_currents_left, diffs)) diff --git a/packages/control/data.py b/packages/control/data.py index 68bf8b7da4..de82190cdc 100644 --- a/packages/control/data.py +++ b/packages/control/data.py @@ -24,8 +24,10 @@ from control.ev.ev import Ev from control.ev.ev_template import EvTemplate from control.general import General +from control.io_device import IoActions, IoStates from control.optional import Optional from modules.common.abstract_device import AbstractDevice +from modules.common.abstract_io import AbstractIo log = logging.getLogger(__name__) bat_data_lock = threading.Lock() @@ -40,6 +42,8 @@ ev_data_lock = threading.Lock() ev_template_data_lock = threading.Lock() general_data_lock = threading.Lock() +io_actions_lock = threading.Lock() +io_states_lock = threading.Lock() optional_data_lock = threading.Lock() pv_data_lock = threading.Lock() pv_all_data_lock = threading.Lock() @@ -75,6 +79,8 @@ def __init__(self, event_module_update_completed: threading.Event): self._ev_template_data: Dict[str, EvTemplate] = {} self._general_data = General() self._graph_data = Graph() + self._io_actions: IoActions = {} + self._io_states: Dict[str, IoStates] = {} self._optional_data = Optional() self._pv_data: Dict[str, Pv] = {} self._pv_all_data = PvAll() @@ -197,6 +203,24 @@ def general_data(self) -> General: def general_data(self, value): self._general_data = value + @property + def io_actions(self) -> IoActions: + return self._io_actions + + @io_actions.setter + @locked(io_actions_lock) + def io_actions(self, value): + self._io_actions = value + + @property + def io_states(self) -> Dict[str, IoStates]: + return self._io_states + + @io_states.setter + @locked(io_states_lock) + def io_states(self, value): + self._io_states = value + @property def optional_data(self) -> Optional: return self._optional_data @@ -247,11 +271,14 @@ def print_all(self): log.info(f"general_data\n{self._general_data.data}") log.info(f"general_data-display\n{self._general_data.data.extern_display_mode}") log.info(f"graph_data\n{self._graph_data.data}") + self._print_io_actions(self._io_actions) + self._print_dictionaries(self._io_states) log.info(f"optional_data\n{self._optional_data.data}") self._print_dictionaries(self._pv_data) log.info(f"pv_all_data\n{self._pv_all_data.data}") self._print_dictionaries(self._system_data) self._print_device_config(self._system_data) + self._print_io_device_config(self._system_data) log.info("\n") def _print_dictionaries(self, data): @@ -284,6 +311,21 @@ def _print_device_config(self, data: Dict[str, AbstractDevice]): except Exception: log.exception("Fehler im Data-Modul") + def _print_io_device_config(self, data: Dict[str, AbstractIo]): + for key, value in data.items(): + try: + if isinstance(value, AbstractIo): + log.info(f"{key}\n{dataclass_utils.asdict(value.config)}") + except Exception: + log.exception("Fehler im Data-Modul") + + def _print_io_actions(self, data: IoActions): + for key, value in data.actions.items(): + try: + log.info(f"{key}\n{dataclass_utils.asdict(value.config)}") + except Exception: + log.exception("Fehler im Data-Modul") + def copy_system_data(self) -> None: with ModuleDataReceivedContext(self.event_module_update_completed): self.__copy_system_data() @@ -298,7 +340,8 @@ def __copy_system_data(self) -> None: # werden, sodass die Nutzung einer Referenz vorerst funktioniert. self.system_data = { "system": copy.deepcopy(SubData.system_data["system"])} | { - k: SubData.system_data[k] for k in SubData.system_data if "device" in k} + k: SubData.system_data[k] for k in SubData.system_data if "device" in k} | { + k: SubData.system_data[k] for k in SubData.system_data if "io" in k} self.general_data = copy.deepcopy(SubData.general_data) self.__copy_cp_data() except Exception: @@ -393,6 +436,8 @@ def copy_data(self) -> None: with ModuleDataReceivedContext(self.event_module_update_completed): try: self.general_data = copy.deepcopy(SubData.general_data) + self.io_actions = copy.deepcopy(SubData.io_actions) + self.io_states = copy.deepcopy(SubData.io_states) self.optional_data = copy.deepcopy(SubData.optional_data) self.__copy_ev_data() self.__copy_cp_data() diff --git a/packages/control/ev/ev.py b/packages/control/ev/ev.py index 2f31fd1425..5f22826304 100644 --- a/packages/control/ev/ev.py +++ b/packages/control/ev/ev.py @@ -8,6 +8,7 @@ """ from dataclasses import dataclass, field import logging +import re from typing import List, Optional, Tuple from control import data @@ -308,8 +309,11 @@ def _check_phase_switch_conditions(self, feed_in_yield = 0 all_surplus = data.data.counter_all_data.get_evu_counter().get_usable_surplus(feed_in_yield) required_surplus = control_parameter.min_current * max_phases_ev * 230 - get_power + unblanced_load_limit_reached = ( + limit is not None and + re.search(re.escape(LimitingValue.UNBALANCED_LOAD.value).replace(r'\{\}', r'.+'), limit)) condition_1_to_3 = (((max(get_currents) > max_current and - all_surplus > required_surplus) or limit == LimitingValue.UNBALANCED_LOAD.value) and + all_surplus > required_surplus) or unblanced_load_limit_reached) and phases_in_use == 1) condition_3_to_1 = max(get_currents) < min_current and all_surplus <= 0 and phases_in_use > 1 if condition_1_to_3 or condition_3_to_1: diff --git a/packages/control/general.py b/packages/control/general.py index 7950eada3d..8207891937 100644 --- a/packages/control/general.py +++ b/packages/control/general.py @@ -1,19 +1,14 @@ """Allgemeine Einstellungen """ from dataclasses import dataclass, field -from enum import Enum import logging import random -from typing import Dict, List, Optional +from typing import List, Optional from control import data from control.bat_all import BatConsiderationMode from control.chargemode import Chargemode -from helpermodules.constants import NO_ERROR from helpermodules import timecheck -from modules.common.configurable_ripple_control_receiver import ConfigurableRcr -from modules.ripple_control_receivers.gpio.config import GpioRcr -from modules.ripple_control_receivers.gpio.ripple_control_receiver import create_ripple_control_receiver log = logging.getLogger(__name__) @@ -111,42 +106,6 @@ def chargemode_config_factory() -> ChargemodeConfig: return ChargemodeConfig() -@dataclass -class RippleControlReceiverGet: - fault_state: int = field(default=0, metadata={ - "topic": "ripple_control_receiver/get/fault_state"}) - fault_str: str = field(default=NO_ERROR, metadata={ - "topic": "ripple_control_receiver/get/fault_str"}) - override_value: float = field(default=100, metadata={ - "topic": "ripple_control_receiver/get/override_value"}) - - -def rcr_get_factory() -> RippleControlReceiverGet: - return RippleControlReceiverGet() - - -def gpio_rcr_factory() -> ConfigurableRcr: - return create_ripple_control_receiver(GpioRcr()) - - -class OverrideReference(Enum): - EVU = "evu" - CHARGEPOINT = "chargepoint" - - -@dataclass -class RippleControlReceiver: - get: RippleControlReceiverGet = field(default_factory=rcr_get_factory) - module: Optional[Dict] = field(default=None, metadata={ - "topic": "ripple_control_receiver/module"}) - override_reference: OverrideReference = field(default=OverrideReference.CHARGEPOINT, metadata={ - "topic": "ripple_control_receiver/override_reference"}) - - -def ripple_control_receiver_factory() -> RippleControlReceiver: - return RippleControlReceiver() - - @dataclass class Prices: bat: float = field(default=0.0002, metadata={"topic": "prices/bat"}) @@ -181,7 +140,6 @@ class GeneralData: mqtt_bridge: bool = False prices: Prices = field(default_factory=prices_factory) range_unit: str = "km" - ripple_control_receiver: RippleControlReceiver = field(default_factory=ripple_control_receiver_factory) class General: @@ -190,7 +148,6 @@ class General: def __init__(self): self.data: GeneralData = GeneralData() - self.ripple_control_receiver: ConfigurableRcr = None def get_phases_chargemode(self, chargemode: str, submode: str) -> Optional[int]: """ gibt die Anzahl Phasen zurück, mit denen im jeweiligen Lademodus geladen wird. diff --git a/packages/control/io_device.py b/packages/control/io_device.py new file mode 100644 index 0000000000..30b8193c68 --- /dev/null +++ b/packages/control/io_device.py @@ -0,0 +1,57 @@ +from dataclasses import dataclass, field +from typing import Dict, Union +from modules.io_actions.dimming.api import Dimming +from modules.io_actions.dimming_direct_control.api import DimmingDirectControl +from modules.io_actions.ripple_control_receiver.api import RippleControlReceiver + + +@dataclass +class Get: + analog_input: Dict[int, float] = None + digital_input: Dict[int, bool] = None + analog_output: Dict[int, float] = None + digital_output: Dict[int, bool] = None + + +def get_factory(): + return Get() + + +@dataclass +class IoDeviceData: + get: Get = field(default_factory=get_factory) + + +class IoStates: + def __init__(self, num: int): + self.num = num + self.data = IoDeviceData() + + +class IoActions: + def __init__(self): + self.actions: Dict[int, Union[Dimming, DimmingDirectControl, RippleControlReceiver]] = {} + + def dimming_get_import_power_left(self, cp_num: int) -> float: + for action in self.actions.values(): + if isinstance(action, Dimming): + if cp_num in action.config.config.cp_ids: + return action.dimming_get_import_power_left(cp_num) + + def dimming_set_import_power_left(self, cp_num: int, used_power: float) -> float: + for action in self.actions.values(): + if isinstance(action, Dimming): + if cp_num in action.config.config.cp_ids: + return action.dimming_set_import_power_left(cp_num, used_power) + + def dimming_via_direct_control(self, cp_num: int) -> float: + for action in self.actions.values(): + if isinstance(action, DimmingDirectControl): + if cp_num == action.config.config.cp_id: + return action.dimming_via_direct_control(cp_num) + + def ripple_control_receiver(self, cp_num: int) -> float: + for action in self.actions.values(): + if isinstance(action, RippleControlReceiver): + if cp_num in action.config.config.cp_ids: + return action.ripple_control_receiver(cp_num) diff --git a/packages/control/limiting_value.py b/packages/control/limiting_value.py index 6d114caee1..44ac46861c 100644 --- a/packages/control/limiting_value.py +++ b/packages/control/limiting_value.py @@ -5,3 +5,6 @@ class LimitingValue(Enum): CURRENT = ", da der Maximal-Strom an Zähler {} erreicht ist." POWER = ", da die maximale Leistung an Zähler {} erreicht ist." UNBALANCED_LOAD = ", da die maximale Schieflast an Zähler {} erreicht ist." + DIMMING = ", da die Dimmung aktiv ist." + DIMMING_VIA_DIRECT_CONTROL = ", da die Dimmung per Direkt-Steuerung an diesem Ladepunkt aktiv ist." + RIPPLE_CONTROL_RECEIVER = ", da die Abschaltung per RSE-Kontakt an diesem Ladepunkt aktiv ist." diff --git a/packages/control/loadmanagement.py b/packages/control/loadmanagement.py index 649a81061b..163d5934c5 100644 --- a/packages/control/loadmanagement.py +++ b/packages/control/loadmanagement.py @@ -3,8 +3,10 @@ from typing import List, Optional, Tuple from control import data +from control.chargepoint.chargepoint import Chargepoint from control.counter import Counter from control.limiting_value import LimitingValue +from modules.common.utils.component_parser import get_component_name_by_id log = logging.getLogger(__name__) @@ -14,11 +16,16 @@ class Loadmanagement: def get_available_currents(self, missing_currents: List[float], counter: Counter, - feed_in: int = 0) -> Tuple[List[float], Optional[LimitingValue]]: + cp: Chargepoint, + feed_in: int = 0, + surplus: bool = False) -> Tuple[List[float], Optional[str]]: raw_currents_left = counter.data.set.raw_currents_left - available_currents, limit = self._limit_by_current(missing_currents, raw_currents_left) + available_currents, limit = self._limit_by_dimming_via_direct_control(missing_currents, cp) + available_currents, limit = self._limit_by_dimming(available_currents, surplus, counter, cp) + available_currents, limit = self._limit_by_ripple_control_receiver(available_currents, cp) + available_currents, limit = self._limit_by_current(counter, available_currents, raw_currents_left) available_currents, limit_power = self._limit_by_power( - available_currents, counter.data.set.raw_power_left, feed_in) + counter, available_currents, counter.data.set.raw_power_left, feed_in) if limit_power is not None: limit = limit_power if f"counter{counter.num}" == data.data.counter_all_data.get_evu_counter_str(): @@ -32,9 +39,12 @@ def get_available_currents(self, def get_available_currents_surplus(self, missing_currents: List[float], counter: Counter, - feed_in: int = 0) -> Tuple[List[float], Optional[LimitingValue]]: + cp: Chargepoint, + feed_in: int = 0) -> Tuple[List[float], Optional[str]]: raw_currents_left = counter.data.set.raw_currents_left - available_currents, limit = self._limit_by_current(missing_currents, raw_currents_left) + available_currents, limit = self._limit_by_dimming_via_direct_control(missing_currents, cp) + available_currents, limit = self._limit_by_ripple_control_receiver(available_currents, cp) + available_currents, limit = self._limit_by_current(available_currents, raw_currents_left) available_currents, limit_power = self._limit_by_power( available_currents, counter.data.set.surplus_power_left, feed_in) if limit_power is not None: @@ -51,7 +61,7 @@ def _limit_by_unbalanced_load(self, counter: Counter, available_currents: List[float], raw_currents_left: List[float], - phases_to_use: int) -> Tuple[List[float], Optional[LimitingValue]]: + phases_to_use: int) -> Tuple[List[float], Optional[str]]: raw_currents_left_charging = list(map(operator.sub, raw_currents_left, available_currents)) max_exceeding = counter.get_unbalanced_load_exceeding(raw_currents_left_charging) limit = None @@ -59,16 +69,17 @@ def _limit_by_unbalanced_load(self, if phases_to_use < 3 and phases_to_use > 0: available_currents = list(map(operator.sub, available_currents, max_exceeding)) log.debug(f"Schieflast {max_exceeding}A korrigieren: {available_currents}") - limit = LimitingValue.UNBALANCED_LOAD + limit = LimitingValue.UNBALANCED_LOAD.value.format(get_component_name_by_id(counter.num)) elif phases_to_use == 3: log.debug("Schieflastkorrektur nicht möglich, da alle Phasen genutzt werden.") return available_currents, limit # tested def _limit_by_power(self, + counter: Counter, available_currents: List[float], raw_power_left: Optional[float], - feed_in: Optional[float]) -> Tuple[List[float], Optional[LimitingValue]]: + feed_in: Optional[float]) -> Tuple[List[float], Optional[str]]: currents = available_currents.copy() limit = None if raw_power_left: @@ -80,18 +91,55 @@ def _limit_by_power(self, # Am meisten belastete Phase trägt am meisten zur Leistungsreduktion bei. currents[i] = available_currents[i] / sum(available_currents) * raw_power_left / 230 log.debug(f"Leistungsüberschreitung auf {raw_power_left}W korrigieren: {available_currents}") - limit = LimitingValue.POWER + limit = LimitingValue.POWER.value.format(get_component_name_by_id(counter.num)) return currents, limit # tested def _limit_by_current(self, + counter: Counter, missing_currents: List[float], - raw_currents_left: List[float]) -> Tuple[List[float], Optional[LimitingValue]]: + raw_currents_left: List[float]) -> Tuple[List[float], Optional[str]]: available_currents = [0.0]*3 limit = None for i in range(0, 3): available_currents[i] = min(missing_currents[i], raw_currents_left[i]) if available_currents != missing_currents: log.debug(f"Stromüberschreitung {missing_currents}W korrigieren: {available_currents}") - limit = LimitingValue.CURRENT + limit = LimitingValue.CURRENT.value.format(get_component_name_by_id(counter.num)) return available_currents, limit + + def _limit_by_dimming_via_direct_control(self, + missing_currents: List[float], + cp: Chargepoint) -> Tuple[List[float], Optional[str]]: + if data.data.io_actions.dimming_via_direct_control(cp.num): + phases = 3-missing_currents.count(0) + current_per_phase = 4.2/phases + available_currents = [current_per_phase if c > 0 else 0 for c in missing_currents] + log.debug(f"Dimmung per Direkt-Steuerung: {available_currents}A") + return available_currents, LimitingValue.DIMMING_VIA_DIRECT_CONTROL.value + else: + return missing_currents, None + + def _limit_by_dimming(self, + available_currents: List[float], + surplus: bool, + counter: Counter, + cp: Chargepoint) -> Tuple[List[float], Optional[str]]: + dimming_power_left = data.data.io_actions.dimming_get_import_power_left(cp.num) + if (counter.data.set.dimming_power_left is not None and + surplus is False): + if sum(available_currents)*230 > dimming_power_left: + phases = 3-available_currents.count(0) + overload_per_phase = (sum(available_currents) - dimming_power_left/230)/phases + available_currents = [c - overload_per_phase if c > 0 else 0 for c in available_currents] + return available_currents, LimitingValue.DIMMING.value + return available_currents, None + + def _limit_by_ripple_control_receiver(self, + missing_currents: List[float], + cp: Chargepoint) -> Tuple[List[float], Optional[str]]: + if data.data.io_actions.ripple_control_receiver(cp.num): + log.debug("Abschaltung per RSE-Kontakt") + return [0]*3, LimitingValue.RIPPLE_CONTROL_RECEIVER.value + else: + return missing_currents, None diff --git a/packages/control/loadmanagement_test.py b/packages/control/loadmanagement_test.py index 0d143dcda5..7bc16e0495 100644 --- a/packages/control/loadmanagement_test.py +++ b/packages/control/loadmanagement_test.py @@ -1,22 +1,33 @@ from typing import List +from unittest.mock import Mock import pytest +from control import loadmanagement +from control.counter import Counter from control.loadmanagement import LimitingValue, Loadmanagement +COUNTER_NAME = "test counter" + @pytest.mark.parametrize( "available_currents, raw_power_left, expected_currents", [ pytest.param([5, 10, 15], 6900, ([5, 10, 15], None)), pytest.param([5, 10, 25], 1000, ([0.5434782608695652, 1.0869565217391304, - 2.717391304347826], LimitingValue.POWER)), + 2.717391304347826], LimitingValue.POWER.value.format(COUNTER_NAME))), pytest.param([5, 10, 25], 5000, ([2.717391304347826, 5.434782608695652, - 13.58695652173913], LimitingValue.POWER)), + 13.58695652173913], LimitingValue.POWER.value.format(COUNTER_NAME))), ]) -def test_limit_by_power(available_currents: List[float], raw_power_left: float, expected_currents: List[float]): - # setup & evaluation - currents = Loadmanagement()._limit_by_power(available_currents, raw_power_left, None) +def test_limit_by_power(available_currents: List[float], + raw_power_left: float, + expected_currents: List[float], + monkeypatch): + # setup + counter_name_mock = Mock(return_value=COUNTER_NAME) + monkeypatch.setattr(loadmanagement, "get_component_name_by_id", counter_name_mock) + # evaluation + currents = Loadmanagement()._limit_by_power(Counter(0), available_currents, raw_power_left, None) # assertion assert currents == expected_currents @@ -26,12 +37,15 @@ def test_limit_by_power(available_currents: List[float], raw_power_left: float, "missing_currents, raw_currents_left, expected_currents", [ pytest.param([5, 10, 15], [20]*3, ([5, 10, 15], None)), - pytest.param([5, 10, 15], [5, 8, 5], ([5, 8, 5], LimitingValue.CURRENT)), + pytest.param([5, 10, 15], [5, 8, 5], ([5, 8, 5], LimitingValue.CURRENT.value.format(COUNTER_NAME))), ]) def test_limit_by_current( - missing_currents: List[float], raw_currents_left: List[float], expected_currents: List[float]): - # setup & evaluation - currents = Loadmanagement()._limit_by_current(missing_currents, raw_currents_left) + missing_currents: List[float], raw_currents_left: List[float], expected_currents: List[float], monkeypatch): + # setup + counter_name_mock = Mock(return_value=COUNTER_NAME) + monkeypatch.setattr(loadmanagement, "get_component_name_by_id", counter_name_mock) + # evaluation + currents = Loadmanagement()._limit_by_current(Counter(0), missing_currents, raw_currents_left) # assertion assert currents == expected_currents diff --git a/packages/dataclass_utils/_dataclass_from_dict.py b/packages/dataclass_utils/_dataclass_from_dict.py index e26a91db23..46b7598d72 100644 --- a/packages/dataclass_utils/_dataclass_from_dict.py +++ b/packages/dataclass_utils/_dataclass_from_dict.py @@ -1,7 +1,7 @@ import inspect -from inspect import FullArgSpec +from inspect import FullArgSpec, isclass import typing -from typing import TypeVar, Type, Union +from typing import TypeVar, Type, Union, get_origin T = TypeVar('T') @@ -15,7 +15,14 @@ def dataclass_from_dict(cls: Type[T], args: Union[dict, T]) -> T: In case the supplied `args` is already of the desired type, `args` is returned unchanged """ - if isinstance(args, cls): + if isclass(cls): + if isinstance(args, cls): + return args + elif get_origin(cls): + # Generische Typen wie Dict[int, float] + if isinstance(args, get_origin(cls)): + return args + elif isinstance(args, type(cls)): return args arg_spec = inspect.getfullargspec(cls.__init__) return cls(*[_get_argument_value(arg_spec, index, args) for index in range(1, len(arg_spec.args))]) @@ -41,7 +48,7 @@ def _dataclass_from_dict_recurse(value, requested_type: Type[T]): return dataclass_from_dict(requested_type, value) \ if isinstance(value, dict) and not ( _is_optional_of_dict(requested_type) or - issubclass(requested_type, dict)) \ + issubclass(requested_type if isclass(requested_type) else type(bool), dict)) \ else value diff --git a/packages/dataclass_utils/_dataclass_from_dict_test.py b/packages/dataclass_utils/_dataclass_from_dict_test.py index 63f6ac5992..21eb10eb2c 100644 --- a/packages/dataclass_utils/_dataclass_from_dict_test.py +++ b/packages/dataclass_utils/_dataclass_from_dict_test.py @@ -1,4 +1,4 @@ -from typing import Generic, Optional, Type, TypeVar +from typing import Dict, Generic, Optional, Type, TypeVar import pytest @@ -35,6 +35,12 @@ def __init__(self, a: str, o: Optional[dict] = None): self.o = o +class GnericDict: + def __init__(self, a: str, o: Dict[int, float] = None): + self.a = a + self.o = o + + def test_from_dict_simple(): # execution actual = dataclass_from_dict(SimpleSample, {"b": "bValue", "a": "aValue"}) @@ -82,6 +88,15 @@ def test_from_dict_extends_generic(): assert actual.a == "aValue" +def test_generic_dict(): + # execution + actual = dataclass_from_dict(GnericDict, {"a": "aValue", "o": {1: 1.0}}) + + # evaluation + assert actual.a == "aValue" + assert actual.o == {1: 1.0} + + @pytest.mark.parametrize(["type", "invalid_parameter"], [ pytest.param(SimpleSample, "a", id="class with some default values"), pytest.param(NestedSample, "normal", id="class with no default values"), @@ -91,7 +106,7 @@ def test_from_dict_fails_on_invalid_properties(type: Type[T], invalid_parameter: with pytest.raises(Exception) as e: dataclass_from_dict(type, {"invalid": "dict"}) assert str(e.value) == "Cannot determine value for parameter " + invalid_parameter + \ - ": not given in {'invalid': 'dict'} and no default value specified" + ": not given in {'invalid': 'dict'} and no default value specified" def test_from_dict_wit_optional(): diff --git a/packages/helpermodules/command.py b/packages/helpermodules/command.py index edba8e6098..63224ace8c 100644 --- a/packages/helpermodules/command.py +++ b/packages/helpermodules/command.py @@ -57,7 +57,10 @@ class Command: ("chargepoint_template", "chargepoint/template", 0), ("device", "system/device", -1), ("ev_template", "vehicle/template/ev_template", 0), - ("vehicle", "vehicle", 0)] + ("vehicle", "vehicle", 0), + ("io_action", "io/action", -1), + ("io_device", "io/device", -1), + ] def __init__(self, event_command_completed: threading.Event): try: @@ -170,6 +173,60 @@ def removeDevice(self, connection_id: str, payload: dict) -> None: f'Die ID \'{payload["data"]["id"]}\' ist größer als die maximal vergebene ID \'{self.max_id_device}\'.', MessageType.ERROR) + def addIoAction(self, connection_id: str, payload: dict) -> None: + new_id = self.max_id_io_action + 1 + dev = importlib.import_module(".io_actions."+payload["data"]["type"]+".api", "modules") + descritpor = dev.device_descriptor.configuration_factory() + device_default = dataclass_utils.asdict(descritpor) + device_default["id"] = new_id + Pub().pub(f'openWB/set/io/action/{new_id}/config', device_default) + self.max_id_io_action = new_id + Pub().pub("openWB/set/command/max_id/io_action", self.max_id_io_action) + pub_user_message( + payload, connection_id, + f'Neues IO-Gerät vom Typ \'{payload["data"]["type"]}\' mit ID \'{new_id}\' hinzugefügt.', + MessageType.SUCCESS) + + def removeIoAction(self, connection_id: str, payload: dict) -> None: + if self.max_id_io_action >= payload["data"]["id"]: + ProcessBrokerBranch(f'io/{payload["data"]["id"]}/').remove_topics() + pub_user_message(payload, connection_id, f'IO-Gerät mit ID \'{payload["data"]["id"]}\' gelöscht.', + MessageType.SUCCESS) + else: + pub_user_message( + payload, connection_id, + f'Die ID \'{payload["data"]["id"]}\' ist größer als die maximal vergebene ID \'{self.max_id_io_action}\'.', + MessageType.ERROR) + + def addIoDevice(self, connection_id: str, payload: dict) -> None: + """ sendet das Topic, zu dem ein neues Io-Device erstellt werden soll. + """ + new_id = self.max_id_io_device + 1 + dev = importlib.import_module(".io_devices."+payload["data"]["type"]+".api", "modules") + descritpor = dev.device_descriptor.configuration_factory() + device_default = dataclass_utils.asdict(descritpor) + device_default["id"] = new_id + Pub().pub(f'openWB/set/system/io/{new_id}/config', device_default) + self.max_id_io_device = new_id + Pub().pub("openWB/set/command/max_id/io_device", self.max_id_io_device) + pub_user_message( + payload, connection_id, + f'Neues IO-Gerät vom Typ \'{payload["data"]["type"]}\' mit ID \'{new_id}\' hinzugefügt.', + MessageType.SUCCESS) + + def removeIoDevice(self, connection_id: str, payload: dict) -> None: + """ löscht ein Io-Device. + """ + if self.max_id_io_device >= payload["data"]["id"]: + ProcessBrokerBranch(f'io/{payload["data"]["id"]}/').remove_topics() + pub_user_message(payload, connection_id, f'IO-Gerät mit ID \'{payload["data"]["id"]}\' gelöscht.', + MessageType.SUCCESS) + else: + pub_user_message( + payload, connection_id, + f'Die ID \'{payload["data"]["id"]}\' ist größer als die maximal vergebene ID \'{self.max_id_io_device}\'.', + MessageType.ERROR) + def addChargepoint(self, connection_id: str, payload: dict) -> None: """ sendet das Topic, zu dem ein neuer Chargepoint erstellt werden soll. """ diff --git a/packages/helpermodules/data_migration/data_migration.py b/packages/helpermodules/data_migration/data_migration.py index 369641a846..d91f3ed0ba 100644 --- a/packages/helpermodules/data_migration/data_migration.py +++ b/packages/helpermodules/data_migration/data_migration.py @@ -21,7 +21,6 @@ from control import data from control.ev import ev from dataclass_utils import dataclass_from_dict -import dataclass_utils from helpermodules.data_migration.id_mapping import MapId from helpermodules.hardware_configuration import update_hardware_configuration from helpermodules.measurement_logging.process_log import get_totals, string_to_float, string_to_int @@ -30,7 +29,6 @@ from helpermodules.utils import joined_thread_handler from helpermodules.pub import Pub from helpermodules.utils.json_file_handler import write_and_check -from modules.ripple_control_receivers.gpio.config import GpioRcr import re log = logging.getLogger("data_migration") @@ -568,8 +566,9 @@ def _move_cloud_data(self) -> None: {"command": "connectCloud", "data": {"username": cloud_user, "password": cloud_pw, "partner": 0}}) def _move_rse(self) -> None: - if bool(self._get_openwb_conf_value("rseenabled", "0")): - Pub().pub("openWB/set/general/ripple_control_receiver/module", dataclass_utils.asdict(GpioRcr())) + pass + # if bool(self._get_openwb_conf_value("rseenabled", "0")): + # Pub().pub("openWB/set/general/ripple_control_receiver/module", dataclass_utils.asdict(GpioRcr())) def _move_max_c_socket(self): try: diff --git a/packages/helpermodules/setdata.py b/packages/helpermodules/setdata.py index dec04bf379..e1b0359273 100644 --- a/packages/helpermodules/setdata.py +++ b/packages/helpermodules/setdata.py @@ -84,6 +84,8 @@ def on_message(self, client: mqtt.Client, userdata, msg: mqtt.MQTTMessage): self.process_bat_topic(msg) elif "openWB/set/general/" in msg.topic: self.process_general_topic(msg) + elif "openWB/set/io/" in msg.topic: + self.process_io_topic(msg) elif "openWB/set/optional/" in msg.topic: self.process_optional_topic(msg) elif "openWB/set/counter/" in msg.topic: @@ -618,7 +620,8 @@ def process_chargepoint_get_topics(self, msg): elif "/get/phases_in_use" in msg.topic: self._validate_value(msg, int, [(0, 3)]) elif ("/get/charge_state" in msg.topic or - "/get/plug_state" in msg.topic): + "/get/plug_state" in msg.topic or + "/ge/dimming_via_direct_control" in msg.topic): self._validate_value(msg, bool) elif "/get/fault_state" in msg.topic: self._validate_value(msg, int, [(0, 2)]) @@ -843,6 +846,28 @@ def process_general_topic(self, msg: mqtt.MQTTMessage): except Exception: log.exception(f"Fehler im setdata-Modul: Topic {msg.topic}, Value: {msg.payload}") + def process_io_topic(self, msg: mqtt.MQTTMessage): + """ Handler für die Allgemeinen-Topics + + Parameters + ---------- + + msg: + enthält Topic und Payload + """ + try: + if "config" in msg.topic: + self._validate_value(msg, "json") + elif ("get/digital_input" in msg.topic or + "get/digital_output" in msg.topic or + "get/analog_input" in msg.topic or + "get/analog_output" in msg.topic): + self._validate_value(msg, "json") + else: + self.__unknown_topic(msg) + except Exception: + log.exception(f"Fehler im setdata-Modul: Topic {msg.topic}, Value: {msg.payload}") + def process_optional_topic(self, msg: mqtt.MQTTMessage): """ Handler für die Optionalen-Topics @@ -1070,6 +1095,9 @@ def process_system_topic(self, msg: mqtt.MQTTMessage): self._validate_value(msg, bool) else: self.__unknown_topic(msg) + elif "io" in msg.topic: + if "/config" in msg.topic: + self._validate_value(msg, "json") else: # hier kommen auch noch alte Topics ohne json-Format an. # log.error("Unbekanntes set-Topic: "+str(msg.topic)+", "+ diff --git a/packages/helpermodules/subdata.py b/packages/helpermodules/subdata.py index f834771322..e4ab4eb6db 100644 --- a/packages/helpermodules/subdata.py +++ b/packages/helpermodules/subdata.py @@ -9,7 +9,7 @@ import subprocess import paho.mqtt.client as mqtt -from control import bat_all, bat, counter, counter_all, general, optional, pv, pv_all +from control import bat_all, bat, counter, counter_all, general, io_device, optional, pv, pv_all from control.chargepoint import chargepoint from control.chargepoint.chargepoint_all import AllChargepoints from control.chargepoint.chargepoint_data import Log @@ -29,7 +29,6 @@ from dataclass_utils import dataclass_from_dict from modules.common.abstract_vehicle import CalculatedSocState, GeneralVehicleConfig from modules.common.configurable_backup_cloud import ConfigurableBackupCloud -from modules.common.configurable_ripple_control_receiver import ConfigurableRcr from modules.common.configurable_tariff import ConfigurableElectricityTariff from modules.common.simcount.simcounter_state import SimCounterState from modules.internal_chargepoint_handler.internal_chargepoint_handler_config import ( @@ -64,6 +63,8 @@ class SubData: "cp1": InternalChargepoint(), "global_data": GlobalHandlerData(), "rfid_data": RfidData()} + io_actions = io_device.IoActions() + io_states: Dict[str, io_device.IoStates] = {} optional_data = optional.Optional() system_data = {"system": system.System()} graph_data = graph.Graph() @@ -129,6 +130,7 @@ def on_connect(self, client: mqtt.Client, userdata, flags: dict, rc: int): ("openWB/bat/#", 2), ("openWB/general/#", 2), ("openWB/graph/#", 2), + ("openWB/io/#", 2), ("openWB/optional/#", 2), ("openWB/counter/#", 2), ("openWB/command/command_completed", 2), @@ -142,6 +144,7 @@ def on_connect(self, client: mqtt.Client, userdata, flags: dict, rc: int): ("openWB/system/backup_cloud/#", 2), ("openWB/system/device/module_update_completed", 2), ("openWB/system/device/+/config", 2), + ("openWB/system/io/#", 2), ("openWB/LegacySmartHome/Status/wattnichtHaus", 2), ]) Pub().pub("openWB/system/subdata_initialized", True) @@ -171,6 +174,10 @@ def on_message(self, client: mqtt.Client, userdata, msg: mqtt.MQTTMessage): self.process_general_topic(self.general_data, msg) elif "openWB/graph/" in msg.topic: self.process_graph_topic(self.graph_data, msg) + elif "openWB/io/action" in msg.topic: + self.process_io_topic(self.io_actions, msg) + elif "openWB/io/states" in msg.topic: + self.process_io_topic(self.io_states, msg) elif "openWB/internal_chargepoint/" in msg.topic: self.process_internal_chargepoint_topic(client, self.internal_chargepoint_data, msg) elif "openWB/optional/" in msg.topic: @@ -240,6 +247,9 @@ def set_json_payload_class(self, class_obj: Dict, msg: mqtt.MQTTMessage): log.error("Elemente können nur aus Dictionaries entfernt werden, nicht aus Klassen.") else: raise Exception(f"Key konnte nicht aus Topic {msg.topic} ermittelt werden.") + except AttributeError: + pass + # manche Topics werden nicht in einem Attribut gespeichert except Exception: log.exception("Fehler im subdata-Modul") @@ -579,23 +589,7 @@ def process_general_topic(self, var: general.General, msg: mqtt.MQTTMessage): """ try: if re.search("/general/", msg.topic) is not None: - if re.search("/general/ripple_control_receiver/module", msg.topic) is not None: - config_dict = decode_payload(msg.payload) - if config_dict["type"] is None: - var.data.ripple_control_receiver.module = None - var.ripple_control_receiver = None - else: - mod = importlib.import_module(".ripple_control_receivers." + - config_dict["type"]+".ripple_control_receiver", "modules") - config = dataclass_from_dict(mod.device_descriptor.configuration_factory, config_dict) - var.data.ripple_control_receiver.module = config_dict - var.ripple_control_receiver = ConfigurableRcr( - config=config, component_initializer=mod.create_ripple_control_receiver) - elif re.search("/general/ripple_control_receiver/get/", msg.topic) is not None: - self.set_json_payload_class(var.data.ripple_control_receiver.get, msg) - elif re.search("/general/ripple_control_receiver/", msg.topic) is not None: - return - elif re.search("/general/prices/", msg.topic) is not None: + if re.search("/general/prices/", msg.topic) is not None: self.set_json_payload_class(var.data.prices, msg) elif re.search("/general/chargemode_config/", msg.topic) is not None: if re.search("/general/chargemode_config/pv_charging/", msg.topic) is not None: @@ -640,6 +634,46 @@ def process_general_topic(self, var: general.General, msg: mqtt.MQTTMessage): except Exception: log.exception("Fehler im subdata-Modul") + def process_io_topic(self, var: Dict[str, Union[io_device.IoActions, io_device.IoStates]], msg: mqtt.MQTTMessage): + """ Handler für die Graph-Topics + + Parameter + ---------- + var : Dictionary + enthält aktuelle Daten + msg : + enthält Topic und Payload + """ + try: + if re.search("/io/states/", msg.topic) is not None: + index = get_index(msg.topic) + payload = decode_payload(msg.payload) + if payload == "": + if "io_states"+index in var: + var.pop("io_states"+index) + else: + if "io_states"+index not in var: + var["io_states"+index] = io_device.IoStates(int(index)) + if re.search("/io/states/[0-9]+/get", msg.topic) is not None: + # Sonst werden Dicts als Payload verwendet, aber es wird alles in ein eigenes Attribut gespeichert + # Typ ist hier auch kein typing.Dict, sondern ein generisches Dict[int, bool] + setattr(var["io_states"+index].data.get, msg.topic.split("/")[-1], payload) + else: + self.set_json_payload_class(var["io_states"+index].data, msg) + elif re.search("/io/action/[0-9]+/config", msg.topic) is not None: + index = get_index(msg.topic) + payload = decode_payload(msg.payload) + if payload == "": + if index in var.actions: + var.actions.pop(index) + else: + if index not in var.actions: + mod = importlib.import_module(f".io_actions.{payload['type']}.api", "modules") + config = dataclass_from_dict(mod.device_descriptor.configuration_factory, payload) + var.actions[f"io_action{index}"] = mod.create_action(config) + except Exception: + log.exception("Fehler im subdata-Modul") + def process_optional_topic(self, var: optional.Optional, msg: mqtt.MQTTMessage): """ Handler für die Optionalen-Topics @@ -847,6 +881,20 @@ def process_system_topic(self, client: mqtt.Client, var: dict, msg: mqtt.MQTTMes Pub().pub("openWB/set/command/removeCloudBridge/todo", { "command": "removeCloudBridge" }) + elif re.search("^.+/io/[0-9]+/config$", msg.topic) is not None: + index = get_index(msg.topic) + if decode_payload(msg.payload) == "": + if "io"+index in var: + var.pop("io"+index) + else: + log.error("Es konnte kein IO-Device mit der ID " + + str(index)+" gefunden werden.") + else: + io_config = decode_payload(msg.payload) + dev = importlib.import_module(f".io_devices.{io_config['type']}.api", + "modules") + config = dataclass_from_dict(dev.device_descriptor.configuration_factory, io_config) + var["io"+index] = dev.create_io(config) else: if "module_update_completed" in msg.topic: self.event_module_update_completed.set() diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index 1ef2073582..eead81a5cc 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -41,7 +41,6 @@ from modules.common.component_type import ComponentType from modules.devices.sungrow.sungrow.version import Version from modules.display_themes.cards.config import CardsDisplayTheme -from modules.ripple_control_receivers.gpio.config import GpioRcr from modules.web_themes.standard_legacy.config import StandardLegacyWebTheme from modules.devices.good_we.good_we.version import GoodWeVersion @@ -245,6 +244,12 @@ class UpdateConfig: "^openWB/internal_chargepoint/[0-1]/data/phases_to_use$", "^openWB/internal_chargepoint/[0-1]/data/parent_cp$", + "^openWB/io/states/[0-9]+/get/digital_input$", + "^openWB/io/states/[0-9]+/get/digital_output$", + "^openWB/io/states/[0-9]+/get/analog_input$", + "^openWB/io/states/[0-9]+/get/analog_output$", + "^openWB/io/action/[0-9]+/config$", + "^openWB/set/log/request", "^openWB/set/log/data", @@ -429,6 +434,7 @@ class UpdateConfig: "^openWB/system/device/[0-9]+/component/[0-9]+/simulation/timestamp_present$", "^openWB/system/device/[0-9]+/config$", "^openWB/system/device/module_update_completed$", + "^openWB/system/io/[0-9]+/config$", "^openWB/system/ip_address$", "^openWB/system/lastlivevaluesJson$", "^openWB/system/mqtt/bridge/[0-9]+$", @@ -1322,11 +1328,11 @@ def convert_file(file): convert_file(file) self.__update_topic("openWB/system/datastore_version", 36) - def upgrade_datastore_36(self) -> None: - if hardware_configuration.get_hardware_configuration_setting("ripple_control_receiver_configured", False): - Pub().pub("openWB/set/general/ripple_control_receiver/module", dataclass_utils.asdict(GpioRcr())) - hardware_configuration.remove_setting_hardware_configuration("ripple_control_receiver_configured") - self.__update_topic("openWB/system/datastore_version", 37) + # def upgrade_datastore_36(self) -> None: + # if hardware_configuration.get_hardware_configuration_setting("ripple_control_receiver_configured", False): + # Pub().pub("openWB/set/general/ripple_control_receiver/module", dataclass_utils.asdict(GpioRcr())) + # hardware_configuration.remove_setting_hardware_configuration("ripple_control_receiver_configured") + # self.__update_topic("openWB/system/datastore_version", 37) def upgrade_datastore_37(self) -> None: def collect_names(topic: str, payload) -> None: diff --git a/packages/modules/common/abstract_io.py b/packages/modules/common/abstract_io.py new file mode 100644 index 0000000000..6e9ce6da2d --- /dev/null +++ b/packages/modules/common/abstract_io.py @@ -0,0 +1,16 @@ +from abc import abstractmethod +from typing import Dict + + +class AbstractIo: + @abstractmethod + def __init__(self, io_config: dict) -> None: + pass + + @abstractmethod + def read(self) -> None: + pass + + @abstractmethod + def write(self, digital_output: Dict[int, int]) -> None: + pass diff --git a/packages/modules/common/component_state.py b/packages/modules/common/component_state.py index 3a56202ea0..d19165579b 100644 --- a/packages/modules/common/component_state.py +++ b/packages/modules/common/component_state.py @@ -207,6 +207,12 @@ def __init__(self, @auto_str -class RcrState: - def __init__(self, override_value: float) -> None: - self.override_value = override_value +class IoState: + def __init__(self, analog_input: Dict[int, float] = None, + digital_input: Dict[int, bool] = None, + analog_output: Dict[int, float] = None, + digital_output: Dict[int, bool] = None) -> None: + self.analog_input = analog_input + self.digital_input = digital_input + self.analog_output = analog_output + self.digital_output = digital_output diff --git a/packages/modules/common/component_type.py b/packages/modules/common/component_type.py index 896f1f5737..83a9761d3f 100644 --- a/packages/modules/common/component_type.py +++ b/packages/modules/common/component_type.py @@ -9,7 +9,7 @@ class ComponentType(Enum): COUNTER = "counter" ELECTRICITY_TARIFF = "electricity_tariff" INVERTER = "inverter" - RIPPLE_CONTROL_RECEIVER = "ripple_control_receiver" + IO = "ripple_control_receiver" def special_to_general_type_mapping(component_type: str) -> ComponentType: diff --git a/packages/modules/common/configurable_io.py b/packages/modules/common/configurable_io.py new file mode 100644 index 0000000000..2bbf7948c1 --- /dev/null +++ b/packages/modules/common/configurable_io.py @@ -0,0 +1,39 @@ +from typing import Dict, Optional, TypeVar, Generic, Callable, Union + +from modules.common import store +from modules.common.abstract_io import AbstractIo +from modules.common.component_context import SingleComponentUpdateContext +from modules.common.component_state import IoState +from modules.common.component_type import ComponentType +from modules.common.fault_state import ComponentInfo, FaultState + + +T_IO_CONFIG = TypeVar("T_IO_CONFIG") + + +class ConfigurableIo(Generic[T_IO_CONFIG], AbstractIo): + def __init__(self, + config: T_IO_CONFIG, + component_reader: Callable[[], IoState], + component_writer: Callable[[Dict[int, Union[float, int]]], Optional[IoState]]) -> None: + self.config = config + self.fault_state = FaultState(ComponentInfo(None, self.config.name, + ComponentType.IO.value)) + self.store = store.get_io_value_store(self.config.id) + with SingleComponentUpdateContext(self.fault_state): + self.component_reader = component_reader + self.component_writer = component_writer + + def read(self): + if hasattr(self, "component_reader"): + # Wenn beim Initialisieren etwas schief gelaufen ist, ursprüngliche Fehlermeldung beibehalten + with SingleComponentUpdateContext(self.fault_state): + self.store.set(self.component_reader()) + + def write(self): + if hasattr(self, "component_writer"): + # Wenn beim Initialisieren etwas schief gelaufen ist, ursprüngliche Fehlermeldung beibehalten + with SingleComponentUpdateContext(self.fault_state): + io_state = self.component_writer() + if io_state is not None: + self.store.set(io_state) diff --git a/packages/modules/common/configurable_ripple_control_receiver.py b/packages/modules/common/configurable_ripple_control_receiver.py deleted file mode 100644 index e15475604b..0000000000 --- a/packages/modules/common/configurable_ripple_control_receiver.py +++ /dev/null @@ -1,27 +0,0 @@ -from typing import TypeVar, Generic, Callable - -from modules.common import store -from modules.common.component_context import SingleComponentUpdateContext -from modules.common.component_type import ComponentType -from modules.common.fault_state import ComponentInfo, FaultState - - -T_RCR_CONFIG = TypeVar("T_RCR_CONFIG") - - -class ConfigurableRcr(Generic[T_RCR_CONFIG]): - def __init__(self, - config: T_RCR_CONFIG, - component_initializer: Callable[[], float]) -> None: - self.config = config - self.fault_state = FaultState(ComponentInfo(None, self.config.name, - ComponentType.RIPPLE_CONTROL_RECEIVER.value)) - with SingleComponentUpdateContext(self.fault_state): - self._component_updater = component_initializer(config) - self.store = store.get_ripple_control_receiver_value_store() - - def update(self): - if hasattr(self, "_component_updater"): - # Wenn beim Initialisieren etwas schief gelaufen ist, ursprüngliche Fehlermeldung beibehalten - with SingleComponentUpdateContext(self.fault_state): - self.store.set(self._component_updater()) diff --git a/packages/modules/common/fault_state.py b/packages/modules/common/fault_state.py index 7c1dd19254..7a8766593f 100644 --- a/packages/modules/common/fault_state.py +++ b/packages/modules/common/fault_state.py @@ -53,7 +53,7 @@ def store_error(self) -> None: topic = component_type.type_to_topic_mapping(self.component_info.type) if self.component_info.type == component_type.ComponentType.ELECTRICITY_TARIFF.value: topic_prefix = f"openWB/set/{topic}" - elif self.component_info.type == component_type.ComponentType.RIPPLE_CONTROL_RECEIVER.value: + elif self.component_info.type == component_type.ComponentType.IO.value: topic_prefix = f"openWB/set/general/{topic}" else: topic_prefix = f"openWB/set/{topic}/{self.component_info.id}" diff --git a/packages/modules/common/io_setup.py b/packages/modules/common/io_setup.py new file mode 100644 index 0000000000..3974bb3db3 --- /dev/null +++ b/packages/modules/common/io_setup.py @@ -0,0 +1,27 @@ + +from typing import Dict, Generic, Optional, TypeVar + +from dataclass_utils.factories import empty_dict_factory + + +T = TypeVar("T") + + +class IoDeviceSetup(Generic[T]): + def __init__(self, + name: str, + type: str, + id: int, + configuration: T, + analog_input: Optional[Dict[int, float]] = None, + analog_output: Optional[Dict[int, float]] = None, + digital_input: Optional[Dict[int, float]] = None, + digital_output: Optional[Dict[int, float]] = None) -> None: + self.name = name + self.type = type + self.id = id + self.configuration = configuration + self.analog_input = analog_input if analog_input is not None else empty_dict_factory() + self.analog_output = analog_output if analog_output is not None else empty_dict_factory() + self.digital_input = digital_input if digital_input is not None else empty_dict_factory() + self.digital_output = digital_output if digital_output is not None else empty_dict_factory() diff --git a/packages/modules/common/modbus.py b/packages/modules/common/modbus.py index f81f28b41e..c492a5356e 100644 --- a/packages/modules/common/modbus.py +++ b/packages/modules/common/modbus.py @@ -188,6 +188,9 @@ def read_coils(self, address: int, count: int, **kwargs): def write_registers(self, address: int, value: Any, **kwargs): self._delegate.write_registers(address, value, **kwargs) + def write_single_coil(self, address: int, value: Any, **kwargs): + self._delegate.write_coil(address, value, **kwargs) + class ModbusTcpClient_(ModbusClient): def __init__(self, diff --git a/packages/modules/common/store/__init__.py b/packages/modules/common/store/__init__.py index 79530f7414..451f2ce2c1 100644 --- a/packages/modules/common/store/__init__.py +++ b/packages/modules/common/store/__init__.py @@ -5,7 +5,7 @@ from modules.common.store._chargepoint_internal import get_internal_chargepoint_value_store from modules.common.store._counter import get_counter_value_store from modules.common.store._inverter import get_inverter_value_store -from modules.common.store._ripple_control_receiver import get_ripple_control_receiver_value_store +from modules.common.store._io import get_io_value_store from modules.common.store._tariff import get_electricity_tariff_value_store from modules.common.store.ramdisk.io import ramdisk_write, ramdisk_read, ramdisk_read_float, ramdisk_read_int, \ RAMDISK_PATH diff --git a/packages/modules/common/store/_io.py b/packages/modules/common/store/_io.py new file mode 100644 index 0000000000..35ae63de58 --- /dev/null +++ b/packages/modules/common/store/_io.py @@ -0,0 +1,30 @@ +from modules.common.component_state import IoState +from modules.common.fault_state import FaultState +from modules.common.store import ValueStore +from modules.common.store._api import LoggingValueStore +from modules.common.store._broker import pub_to_broker + + +class IoValueStoreBroker(ValueStore[IoState]): + def __init__(self, num: int) -> None: + self.num = num + + def set(self, state: IoState) -> None: + self.state = state + + def update(self): + try: + if self.state.digital_input: + pub_to_broker(f"openWB/set/io/states/{self.num}/get/digital_input", self.state.digital_input) + if self.state.digital_output: + pub_to_broker(f"openWB/set/io/states/{self.num}/get/digital_output", self.state.digital_output) + if self.state.analog_input: + pub_to_broker(f"openWB/set/io/states/{self.num}/get/analog_input", self.state.analog_input) + if self.state.analog_output: + pub_to_broker(f"openWB/set/io/states/{self.num}/get/analog_output", self.state.analog_output) + except Exception as e: + raise FaultState.from_exception(e) + + +def get_io_value_store(num: int) -> ValueStore[IoState]: + return LoggingValueStore(IoValueStoreBroker(num)) diff --git a/packages/modules/common/store/_ripple_control_receiver.py b/packages/modules/common/store/_ripple_control_receiver.py deleted file mode 100644 index c92ddec83f..0000000000 --- a/packages/modules/common/store/_ripple_control_receiver.py +++ /dev/null @@ -1,19 +0,0 @@ -from modules.common.component_state import RcrState -from modules.common.store import ValueStore -from modules.common.store._api import LoggingValueStore -from modules.common.store._broker import pub_to_broker - - -class RippleControlReceiverValueStore(ValueStore[RcrState]): - def __init__(self): - pass - - def set(self, state: RcrState) -> None: - self.state = state - - def update(self): - pub_to_broker("openWB/set/general/ripple_control_receiver/get/override_value", self.state.override_value) - - -def get_ripple_control_receiver_value_store() -> ValueStore[RcrState]: - return LoggingValueStore(RippleControlReceiverValueStore()) diff --git a/packages/modules/ripple_control_receivers/dimm_kit/__init__.py b/packages/modules/io_actions/__init__.py similarity index 100% rename from packages/modules/ripple_control_receivers/dimm_kit/__init__.py rename to packages/modules/io_actions/__init__.py diff --git a/packages/modules/ripple_control_receivers/gpio/__init__.py b/packages/modules/io_actions/dimming/__init__.py similarity index 100% rename from packages/modules/ripple_control_receivers/gpio/__init__.py rename to packages/modules/io_actions/dimming/__init__.py diff --git a/packages/modules/io_actions/dimming/api.py b/packages/modules/io_actions/dimming/api.py new file mode 100644 index 0000000000..6267c395c7 --- /dev/null +++ b/packages/modules/io_actions/dimming/api.py @@ -0,0 +1,33 @@ +from control import data +from modules.common.abstract_device import DeviceDescriptor +from modules.io_actions.dimming.config import DimmingSetup + + +class Dimming: + def __init__(self, config: DimmingSetup): + self.config = config + # wird jeden zyklus kopiert und daher zurückgesetzt + self.import_power_left = self.config.config.max_import_power + + def dimming_get_import_power_left(self, cp_num: int) -> None: + if cp_num in self.config.config.cp_ids: + if data.data.io_states[self.config.config.io_device].get.digital_input[self.config.config.digital_input]: + return self.import_power_left + else: + return None + else: + return None + + def dimming_set_import_power_left(self, cp_num: int, used_power: float) -> None: + if cp_num in self.config.config.cp_ids: + self.import_power_left -= used_power + return self.import_power_left + else: + return None + + +def create_action(config: DimmingSetup): + return Dimming(config=config) + + +device_descriptor = DeviceDescriptor(configuration_factory=DimmingSetup) diff --git a/packages/modules/io_actions/dimming/config.py b/packages/modules/io_actions/dimming/config.py new file mode 100644 index 0000000000..defb50b3ec --- /dev/null +++ b/packages/modules/io_actions/dimming/config.py @@ -0,0 +1,25 @@ +from dataclasses import dataclass, field +from typing import List +from dataclass_utils.factories import empty_list_factory +from modules.io_actions.groups import ActionGroup + + +@dataclass +class DimmingConfig: + io_device: int = 0 + digital_input: int = 0 + cp_ids: List[int] = field(default_factory=empty_list_factory) + max_import_power: int = 0 + + +class DimmingSetup: + def __init__(self, + name: str = "Dimmen", + type: str = "dimming", + id: int = 0, + config: DimmingConfig = None): + self.name = name + self.id = id + self.config = config or DimmingConfig() + self.type = type + self.group = ActionGroup.CONTROLLABLE_CONSUMERS_ACTIONS.value diff --git a/packages/modules/io_actions/dimming_direct_control/__init__.py b/packages/modules/io_actions/dimming_direct_control/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/modules/io_actions/dimming_direct_control/api.py b/packages/modules/io_actions/dimming_direct_control/api.py new file mode 100644 index 0000000000..3ed69984e6 --- /dev/null +++ b/packages/modules/io_actions/dimming_direct_control/api.py @@ -0,0 +1,24 @@ +from control import data +from modules.common.abstract_device import DeviceDescriptor +from modules.io_actions.dimming_direct_control.config import DimmingDirectControlSetup + + +class DimmingDirectControl: + def __init__(self, config: DimmingDirectControlSetup): + self.config = config + + def dimming_via_direct_control(self, cp_num: int) -> None: + if cp_num == self.config.config.cp_id: + if data.data.io_states[self.config.config.io_device].get.digital_input[self.config.config.digital_input]: + return 4200 + else: + return None + else: + return None + + +def create_action(config: DimmingDirectControlSetup): + return DimmingDirectControl(config=config) + + +device_descriptor = DeviceDescriptor(configuration_factory=DimmingDirectControlSetup) diff --git a/packages/modules/io_actions/dimming_direct_control/config.py b/packages/modules/io_actions/dimming_direct_control/config.py new file mode 100644 index 0000000000..897e7267db --- /dev/null +++ b/packages/modules/io_actions/dimming_direct_control/config.py @@ -0,0 +1,22 @@ +from dataclasses import dataclass +from modules.io_actions.groups import ActionGroup + + +@dataclass +class DimmingDirectControlConfig: + io_device: int = 0 + digital_input: int = 0 + cp_id: int = None + + +class DimmingDirectControlSetup: + def __init__(self, + name: str = "Dimmen per Direktsteuerung", + type: str = "dimming_direct_control", + id: int = 0, + config: DimmingDirectControlConfig = None): + self.name = name + self.type = type + self.id = id + self.config = config or DimmingDirectControlConfig() + self.group = ActionGroup.CONTROLLABLE_CONSUMERS_ACTIONS.value diff --git a/packages/modules/io_actions/groups.py b/packages/modules/io_actions/groups.py new file mode 100644 index 0000000000..0c97f9e47b --- /dev/null +++ b/packages/modules/io_actions/groups.py @@ -0,0 +1,5 @@ +from enum import Enum + + +class ActionGroup(Enum): + CONTROLLABLE_CONSUMERS_ACTIONS = "controllable_consumers_actions" diff --git a/packages/modules/io_actions/ripple_control_receiver/__init__.py b/packages/modules/io_actions/ripple_control_receiver/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/modules/io_actions/ripple_control_receiver/api.py b/packages/modules/io_actions/ripple_control_receiver/api.py new file mode 100644 index 0000000000..8534a1dd6d --- /dev/null +++ b/packages/modules/io_actions/ripple_control_receiver/api.py @@ -0,0 +1,24 @@ +from control import data +from modules.common.abstract_device import DeviceDescriptor +from modules.io_actions.ripple_control_receiver.config import RippleControlReceiverSetup + + +class RippleControlReceiver: + def __init__(self, config: RippleControlReceiverSetup): + self.config = config + + def ripple_control_receiver(self, cp_num: int) -> None: + if cp_num in self.config.config.cp_ids: + if data.data.io_states[self.config.config.io_device].get.digital_input[self.config.config.digital_input]: + return 0 + else: + return None + else: + return None + + +def create_action(config: RippleControlReceiverSetup): + return RippleControlReceiver(config=config) + + +device_descriptor = DeviceDescriptor(configuration_factory=RippleControlReceiverSetup) diff --git a/packages/modules/io_actions/ripple_control_receiver/config.py b/packages/modules/io_actions/ripple_control_receiver/config.py new file mode 100644 index 0000000000..e74cc07c83 --- /dev/null +++ b/packages/modules/io_actions/ripple_control_receiver/config.py @@ -0,0 +1,24 @@ +from dataclasses import dataclass, field +from typing import List +from dataclass_utils.factories import empty_list_factory +from modules.io_actions.groups import ActionGroup + + +@dataclass +class RippleControlReceiverConfig: + io_device: int = 0 + digital_input: int = 0 + cp_ids: List[int] = field(default_factory=empty_list_factory) + + +class RippleControlReceiverSetup: + def __init__(self, + name: str = "RSE-Kontakt", + type: str = "ripple_control_receiver", + id: int = 0, + config: RippleControlReceiverConfig = None): + self.name = name + self.id = id + self.config = config or RippleControlReceiverConfig() + self.type = type + self.group = ActionGroup.CONTROLLABLE_CONSUMERS_ACTIONS.value diff --git a/packages/modules/io_devices/__init__.py b/packages/modules/io_devices/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/modules/io_devices/add_on/__init__.py b/packages/modules/io_devices/add_on/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/modules/io_devices/add_on/api.py b/packages/modules/io_devices/add_on/api.py new file mode 100644 index 0000000000..acbd2226a2 --- /dev/null +++ b/packages/modules/io_devices/add_on/api.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python3 +import logging +from typing import Dict, Tuple + +from modules.common.abstract_device import DeviceDescriptor +from modules.common.component_state import IoState +from modules.common.configurable_io import ConfigurableIo +from modules.io_devices.add_on.config import AddOn + +log = logging.getLogger(__name__) +has_gpio = True + +try: + import RPi.GPIO as GPIO +except ImportError: + has_gpio = False + log.info("failed to import RPi.GPIO! maybe we are not running on a pi") + log.warning("RSE disabled!") + + +def create_io(config: AddOn): + def read() -> Tuple[bool, bool]: + if has_gpio: + return IoState(digital_input={21: GPIO.input(21) == GPIO.LOW, + 24: GPIO.input(24) == GPIO.LOW, + 31: GPIO.input(31) == GPIO.LOW, + 32: GPIO.input(32) == GPIO.LOW, + 33: GPIO.input(33) == GPIO.LOW, + 36: GPIO.input(36) == GPIO.LOW, + 40: GPIO.input(40) == GPIO.LOW}) + else: + return IoState() + + def write(digital_output: Dict[int, int]): + if has_gpio: + for i, value in digital_output.items(): + GPIO.output(i, GPIO.HIGH if value else GPIO.LOW) + return IoState(dict(digital_output=digital_output)) + + if has_gpio: + GPIO.setmode(GPIO.BOARD) + GPIO.setup(21, GPIO.IN, pull_up_down=GPIO.PUD_UP) # RSE 2 + GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_UP) # RSE 1 + GPIO.setup(31, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Taster 3 PV + GPIO.setup(32, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Taster 1 Sofortladen + GPIO.setup(33, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Taster 4 Stop + GPIO.setup(36, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Taster 2 Min+PV + GPIO.setup(40, GPIO.IN, pull_up_down=GPIO.PUD_UP) # TAster 5 Standby + GPIO.setup(7, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.digital_output[7] else GPIO.PUD_DOWN) # LED 3 + GPIO.setup(16, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.digital_output[16] else GPIO.PUD_DOWN) # LED 2 + GPIO.setup(18, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.digital_output[18] else GPIO.PUD_DOWN) # LED 1 + + return ConfigurableIo(config=config, component_reader=read, component_writer=write) + + +device_descriptor = DeviceDescriptor(configuration_factory=AddOn) diff --git a/packages/modules/io_devices/add_on/config.py b/packages/modules/io_devices/add_on/config.py new file mode 100644 index 0000000000..7d0fe49f1c --- /dev/null +++ b/packages/modules/io_devices/add_on/config.py @@ -0,0 +1,21 @@ +from modules.common.io_setup import IoDeviceSetup + + +class AddOnConfiguration: + def __init__(self): + pass + + +class AddOn(IoDeviceSetup[AddOnConfiguration]): + def __init__(self, + name: str = "GPIOs auf der AddOn-Platine", + type: str = "add_on", + id: int = 0, + configuration: AddOnConfiguration = None) -> None: + self.name = name + self.type = type + self.id = id + self.configuration = configuration or AddOnConfiguration() + super().__init__(name, type, id, configuration or AddOnConfiguration()) + self.digital_input = {i: False for i in range(1, 9)} + self.digital_output = {i: False for i in range(1, 9)} diff --git a/packages/modules/io_devices/dimm_kit/__init__.py b/packages/modules/io_devices/dimm_kit/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/modules/io_devices/dimm_kit/api.py b/packages/modules/io_devices/dimm_kit/api.py new file mode 100644 index 0000000000..921341cee7 --- /dev/null +++ b/packages/modules/io_devices/dimm_kit/api.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python3 +from typing import Dict +from modules.common.component_state import IoState +from modules.common.configurable_io import ConfigurableIo +from modules.io_devices.dimm_kit.config import IoLan +from modules.common.version_by_telnet import get_version_by_telnet +from modules.common.modbus import ModbusDataType, ModbusTcpClient_ +import logging +import socket + +from modules.common.abstract_device import DeviceDescriptor + +log = logging.getLogger(__name__) + + +VALID_VERSIONS = ["openWB DimmModul"] + + +def create_io(config: IoLan): + def read(): + return IoState( + # 1-4th channel test 0-5V voltage, 5-8th channel test 0-25mA current value + analog_input={i: client.read_input_registers( + i-1, ModbusDataType.UINT_8, unit=config.configuration.modbus_id)/1024 for i in range(1, 9)}, + digital_input={i: client.read_coils(i-1, 1, unit=config.configuration.modbus_id) for i in range(1, 9)}, + digital_output={i: client.read_coils(i-1, 1, unit=config.configuration.modbus_id) for i in range(16, 24)}) + + def write(digital_output: Dict[int, int]) -> None: + for i, value in digital_output.items(): + client.write_single_coil(i-1, value, unit=config.configuration.modbus_id) + + version = False + client = ModbusTcpClient_(config.configuration.ip_address, config.configuration.port) + if config.configuration.ip_address: + try: + parsed_answer = get_version_by_telnet(VALID_VERSIONS[0], config.configuration.ip_address) + for version in VALID_VERSIONS: + if version in parsed_answer: + version = True + log.debug("Firmware des openWB Dimm-& Control-Kit ist mit openWB software2 kompatibel.") + else: + version = False + raise ValueError + except (ConnectionRefusedError, ValueError): + log.exception("Dimm-Kit") + raise Exception("Firmware des openWB Dimm-& Control-Kit ist nicht mit openWB software2 kompatibel. " + "Bitte den Support kontaktieren.") + except socket.timeout: + log.exception("Dimm-Kit") + raise Exception("Die IP-Adresse ist nicht erreichbar. Bitte den Support kontaktieren.") + return ConfigurableIo(config=config, component_reader=read, component_writer=write) + + +device_descriptor = DeviceDescriptor(configuration_factory=IoLan) diff --git a/packages/modules/io_devices/dimm_kit/config.py b/packages/modules/io_devices/dimm_kit/config.py new file mode 100644 index 0000000000..86d4b9f2e6 --- /dev/null +++ b/packages/modules/io_devices/dimm_kit/config.py @@ -0,0 +1,43 @@ +from typing import Dict, Optional + +from helpermodules.auto_str import auto_str +from modules.common.io_setup import IoDeviceSetup + + +class IoLanConfiguration: + def __init__(self, ip_address: Optional[str] = None, port: int = 8899, modbus_id: int = 1): + self.ip_address = ip_address + self.port = port + self.modbus_id = modbus_id + + +def analog_input_init(): + return {i: 0 for i in range(1, 9)} + + +def digital_input_init(): + return {i: False for i in range(1, 9)} + + +def digital_output_init(): + return {i: False for i in range(16, 24)} + + +@auto_str +class IoLan(IoDeviceSetup[IoLanConfiguration]): + def __init__(self, + name: str = "openWB Dimm- & Control-Kit", + type: str = "dimm_kit", + id: int = 0, + configuration: IoLanConfiguration = None, + analog_input: Dict[int, float] = None, + digital_input: Dict[int, bool] = None, + digital_output: Dict[int, bool] = None) -> None: + if analog_input is None: + analog_input = analog_input_init() + if digital_input is None: + digital_input = digital_input_init() + if digital_output is None: + digital_output = digital_output_init() + super().__init__(name, type, id, configuration or IoLanConfiguration(), analog_input=analog_input, + digital_input=digital_input, digital_output=digital_output) diff --git a/packages/modules/loadvars.py b/packages/modules/loadvars.py index 4036c4e934..33fd751829 100644 --- a/packages/modules/loadvars.py +++ b/packages/modules/loadvars.py @@ -3,6 +3,7 @@ from typing import List from control import data +from modules.common.abstract_io import AbstractIo from modules.utils import wait_for_module_update_completed from modules.common.abstract_device import AbstractDevice from modules.common.component_type import ComponentType, type_to_topic_mapping @@ -28,8 +29,8 @@ def get_values(self) -> None: wait_for_module_update_completed(self.event_module_update_completed, topic) data.data.copy_module_data() wait_for_module_update_completed(self.event_module_update_completed, topic) - joined_thread_handler(self._get_general(), data.data.general_data.data.control_interval/3) - joined_thread_handler(self._set_general(), data.data.general_data.data.control_interval/3) + joined_thread_handler(self._get_io(), data.data.general_data.data.control_interval/3) + joined_thread_handler(self._set_io(), data.data.general_data.data.control_interval/3) wait_for_module_update_completed(self.event_module_update_completed, topic) except Exception: log.exception("Fehler im loadvars-Modul") @@ -84,27 +85,33 @@ def thread_without_set_value(self, return True return False - def _get_general(self) -> List[threading.Thread]: + def _get_io(self) -> List[threading.Thread]: threads = [] # type: List[threading.Thread] try: - # Beim ersten Durchlauf wird in jedem Fall eine Exception geworfen, - # da die Daten erstmalig ins data-Modul kopiert werden müssen. - if data.data.general_data.data.ripple_control_receiver.module: - threads.append( - threading.Thread(target=data.data.general_data.ripple_control_receiver.update, - args=(), name="get ripple control receiver")) + for io_device in data.data.system_data.values(): + try: + if isinstance(io_device, AbstractIo): + threads.append( + threading.Thread(target=io_device.read, + args=(), name="get io state")) + except Exception: + log.exception("Fehler im loadvars-Modul") except Exception: log.exception("Fehler im loadvars-Modul") finally: return threads - def _set_general(self) -> List[threading.Thread]: + def _set_io(self) -> List[threading.Thread]: threads = [] # type: List[threading.Thread] try: - if data.data.general_data.data.ripple_control_receiver.module: - threads.append(threading.Thread(target=update_values, - args=(data.data.general_data.ripple_control_receiver,), - name="set ripple control receiver")) + for io_device in data.data.system_data.values(): + try: + if isinstance(io_device, AbstractIo): + threads.append(threading.Thread(target=update_values, + args=(io_device,), + name="publish io state")) + except Exception: + log.exception("Fehler im loadvars-Modul") except Exception: log.exception("Fehler im loadvars-Modul") finally: diff --git a/packages/modules/ripple_control_receivers/dimm_kit/config.py b/packages/modules/ripple_control_receivers/dimm_kit/config.py deleted file mode 100644 index 12d10967fb..0000000000 --- a/packages/modules/ripple_control_receivers/dimm_kit/config.py +++ /dev/null @@ -1,18 +0,0 @@ -from typing import Optional - - -class IoLanRcrConfiguration: - def __init__(self, ip_address: Optional[str] = None, port: int = 8899, modbus_id: int = 1): - self.ip_address = ip_address - self.port = port - self.modbus_id = modbus_id - - -class IoLanRcr: - def __init__(self, - name: str = "openWB Dimm- & Control-Kit", - type: str = "dimm_kit", - configuration: IoLanRcrConfiguration = None) -> None: - self.name = name - self.type = type - self.configuration = configuration or IoLanRcrConfiguration() diff --git a/packages/modules/ripple_control_receivers/dimm_kit/ripple_control_receiver.py b/packages/modules/ripple_control_receivers/dimm_kit/ripple_control_receiver.py deleted file mode 100644 index cd7e6f13c8..0000000000 --- a/packages/modules/ripple_control_receivers/dimm_kit/ripple_control_receiver.py +++ /dev/null @@ -1,57 +0,0 @@ -#!/usr/bin/env python3 -from enum import Enum -import logging -import socket - -from modules.common.abstract_device import DeviceDescriptor -from modules.common.component_state import RcrState -from modules.common.modbus import ModbusTcpClient_ -from modules.common.version_by_telnet import get_version_by_telnet -from modules.ripple_control_receivers.dimm_kit.config import IoLanRcr - -log = logging.getLogger(__name__) - - -class State(Enum): - OPENED = False - CLOSED = True - - -VALID_VERSIONS = ["openWB DimmModul"] - - -def create_ripple_control_receiver(config: IoLanRcr): - def updater(): - nonlocal version - if version is False: - try: - parsed_answer = get_version_by_telnet(VALID_VERSIONS[0], config.configuration.ip_address) - for version in VALID_VERSIONS: - if version in parsed_answer: - version = True - log.debug("Firmware des openWB Dimm-& Control-Kit ist mit openWB software2 kompatibel.") - else: - version = False - raise ValueError - except (ConnectionRefusedError, ValueError): - log.exception("Dimm-Kit") - raise Exception("Firmware des openWB Dimm-& Control-Kit ist nicht mit openWB software2 kompatibel. " - "Bitte den Support kontaktieren.") - except socket.timeout: - log.exception("Dimm-Kit") - raise Exception("Die IP-Adresse ist nicht erreichbar. Bitte den Support kontaktieren.") - r1 = State(client.read_coils(0x0000, 1, unit=config.configuration.modbus_id)) - r2 = State(client.read_coils(0x0001, 1, unit=config.configuration.modbus_id)) - log.debug(f"RSE-Kontakt 1: {r1}, RSE-Kontakt 2: {r2}") - if r1 == State.OPENED or r2 == State.OPENED: - override_value = 0 - else: - override_value = 100 - return RcrState(override_value=override_value) - - version = False - client = ModbusTcpClient_(config.configuration.ip_address, config.configuration.port) - return updater - - -device_descriptor = DeviceDescriptor(configuration_factory=IoLanRcr) diff --git a/packages/modules/ripple_control_receivers/gpio/config.py b/packages/modules/ripple_control_receivers/gpio/config.py deleted file mode 100644 index aa2aac6aca..0000000000 --- a/packages/modules/ripple_control_receivers/gpio/config.py +++ /dev/null @@ -1,13 +0,0 @@ -class GpioRcrConfiguration: - def __init__(self): - pass - - -class GpioRcr: - def __init__(self, - name: str = "GPIOs auf der AddOn-Platine", - type: str = "gpio", - configuration: GpioRcrConfiguration = None) -> None: - self.name = name - self.type = type - self.configuration = configuration or GpioRcrConfiguration() diff --git a/packages/modules/ripple_control_receivers/gpio/ripple_control_receiver.py b/packages/modules/ripple_control_receivers/gpio/ripple_control_receiver.py deleted file mode 100644 index a65ab24705..0000000000 --- a/packages/modules/ripple_control_receivers/gpio/ripple_control_receiver.py +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env python3 -import logging -from typing import Tuple - -from modules.common.abstract_device import DeviceDescriptor -from modules.common.component_state import RcrState -from modules.ripple_control_receivers.gpio.config import GpioRcr - -log = logging.getLogger(__name__) -has_gpio = True - -try: - import RPi.GPIO as GPIO -except ImportError: - has_gpio = False - log.info("failed to import RPi.GPIO! maybe we are not running on a pi") - log.warning("RSE disabled!") - - -def read() -> Tuple[bool, bool]: - rse1: bool = False - rse2: bool = False - - if has_gpio: - GPIO.setmode(GPIO.BOARD) - GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_UP) - GPIO.setup(21, GPIO.IN, pull_up_down=GPIO.PUD_UP) - - try: - rse1 = GPIO.input(24) == GPIO.LOW - rse2 = GPIO.input(21) == GPIO.LOW - except Exception as e: - GPIO.cleanup() - raise e - log.debug(f"RSE-Kontakt 1: {rse1}, RSE-Kontakt 2: {rse2}") - if rse1 or rse2: - override_value = 0 - else: - override_value = 100 - return RcrState(override_value=override_value) - - -def create_ripple_control_receiver(config: GpioRcr): - def updater(): - return read() - return updater - - -device_descriptor = DeviceDescriptor(configuration_factory=GpioRcr) From fb79320f357d1c217c2e10aabb1f6ca222fd77ba Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Mon, 28 Oct 2024 11:01:10 +0100 Subject: [PATCH 02/75] d --- packages/control/counter.py | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/packages/control/counter.py b/packages/control/counter.py index 3be3fc75e5..e19d3be8d4 100644 --- a/packages/control/counter.py +++ b/packages/control/counter.py @@ -193,27 +193,17 @@ def _set_power_left(self, loadmanagement_available: bool) -> None: else: self.data.set.raw_power_left = None - def _set_dimming_power_left(self) -> None: - if self.num == data.data.counter_all_data.get_evu_counter(): - if data.data.general_data.data.dimming.get.active: - self.data.set.dimming_power_left = data.data.general_data.data.dimming.set.max_import_power - else: - self.data.set.dimming_power_left = None - - def update_values_left(self, diffs, cp) -> None: + def update_values_left(self, diffs, cp: Chargepoint) -> None: self.data.set.raw_currents_left = list(map(operator.sub, self.data.set.raw_currents_left, diffs)) if self.data.set.raw_power_left: self.data.set.raw_power_left -= sum(diffs) * 230 - dimming_power_left = None - for io in data.data.io_device.values(): - dimming_power_left = io.dimming_set_import_power_left(sum(diffs)*230, cp.num) + dimming_power_left = data.data.io_actions.dimming_set_import_power_left(cp.num, sum(diffs)*230) if dimming_power_left is not None: - log.debug(f'Zähler {self.num}: {self.data.set.raw_currents_left}A verbleibende Ströme, ' - f'{self.data.set.raw_power_left}W verbleibende Leistung, ' - f'{self.data.set.dimming_power_left}W verbleibende Dimmleistung') + msg = f', {dimming_power_left}W verbleibende Dimmleistung' else: - log.debug(f'Zähler {self.num}: {self.data.set.raw_currents_left}A verbleibende Ströme, ' - f'{self.data.set.raw_power_left}W verbleibende Leistung') + msg = "" + log.debug(f'Zähler {self.num}: {self.data.set.raw_currents_left}A verbleibende Ströme, ' + f'{self.data.set.raw_power_left}W verbleibende Leistung{msg}') def update_surplus_values_left(self, diffs) -> None: self.data.set.raw_currents_left = list(map(operator.sub, self.data.set.raw_currents_left, diffs)) From 80f1bd54d37a1728f7254d7b82b03d9b611bfa04 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Tue, 29 Oct 2024 09:35:13 +0100 Subject: [PATCH 03/75] d --- packages/control/algorithm/common.py | 9 +++ packages/control/algorithm/min_current.py | 81 ++++++++++++++-------- packages/control/io_device.py | 5 ++ packages/control/loadmanagement.py | 22 +++--- packages/control/prepare.py | 1 + packages/modules/io_actions/dimming/api.py | 11 ++- 6 files changed, 89 insertions(+), 40 deletions(-) diff --git a/packages/control/algorithm/common.py b/packages/control/algorithm/common.py index b2a8bddb4d..47efd2e800 100644 --- a/packages/control/algorithm/common.py +++ b/packages/control/algorithm/common.py @@ -40,6 +40,15 @@ def mode_and_counter_generator(chargemodes: List) -> Iterable[Tuple[Tuple[Option counter = data.data.counter_data[f"counter{element['id']}"] yield mode_tuple, counter + +def counter_generator() -> Iterable[Counter]: + levels = data.data.counter_all_data.get_list_of_elements_per_level() + for level in reversed(levels): + for element in level: + if element["type"] == ComponentType.COUNTER.value: + counter = data.data.counter_data[f"counter{element['id']}"] + yield counter + # tested diff --git a/packages/control/algorithm/min_current.py b/packages/control/algorithm/min_current.py index fb8fce61b2..034544adc1 100644 --- a/packages/control/algorithm/min_current.py +++ b/packages/control/algorithm/min_current.py @@ -1,47 +1,72 @@ +from enum import Enum import logging +from typing import List, Optional +from control import data from control.algorithm import common from control.algorithm.chargemodes import CONSIDERED_CHARGE_MODES_MIN_CURRENT +from control.chargepoint.chargepoint import Chargepoint +from control.counter import Counter from control.loadmanagement import Loadmanagement from control.algorithm.filter_chargepoints import get_chargepoints_by_mode_and_counter -from modules.common.utils.component_parser import get_component_name_by_id log = logging.getLogger(__name__) +class LoadmanagementState(Enum): + COUNTERS = 1 + CONTROLLABLE_CONSUMERS = 2 + + class MinCurrent: def __init__(self) -> None: pass def set_min_current(self) -> None: - for mode_tuple, counter in common.mode_and_counter_generator(CONSIDERED_CHARGE_MODES_MIN_CURRENT): - preferenced_chargepoints = get_chargepoints_by_mode_and_counter(mode_tuple, f"counter{counter.num}") - if preferenced_chargepoints: - log.info(f"Mode-Tuple {mode_tuple[0]} - {mode_tuple[1]} - {mode_tuple[2]}, Zähler {counter.num}") - common.update_raw_data(preferenced_chargepoints, diff_to_zero=True) - while len(preferenced_chargepoints): - cp = preferenced_chargepoints[0] - missing_currents, counts = common.get_min_current(cp) - if max(missing_currents) > 0: + def set(loadmanagement_state: LoadmanagementState, + preferenced_chargepoints: List[Chargepoint], + counter: Optional[Counter] = None): + common.update_raw_data(preferenced_chargepoints, diff_to_zero=True) + for cp in preferenced_chargepoints: + log.info(f"Mode-Tuple {mode_tuple[0]} - {mode_tuple[1]} - {mode_tuple[2]}" + + f", Zähler {counter.num}" if loadmanagement_state == LoadmanagementState.COUNTERS else "") + missing_currents, counts = common.get_min_current(cp) + if max(missing_currents) > 0: + if loadmanagement_state == LoadmanagementState.COUNTERS: available_currents, limit = Loadmanagement().get_available_currents( missing_currents, counter, cp) - cp.data.control_parameter.limit = limit - available_for_cp = common.available_current_for_cp( - cp, counts, available_currents, missing_currents) - current = common.get_current_to_set( - cp.data.set.current, available_for_cp, cp.data.set.target_current) - if current < cp.data.control_parameter.min_current: - common.set_current_counterdiff(-(cp.data.set.current or 0), 0, cp) - if limit: - cp.set_state_and_log( - "Ladung kann nicht gestartet werden" - f"{limit.value.format(get_component_name_by_id(counter.num))}") - else: - common.set_current_counterdiff( - cp.data.set.target_current, - cp.data.control_parameter.min_current, - cp) else: - cp.data.set.current = 0 - preferenced_chargepoints.pop(0) + available_currents, limit = Loadmanagement().get_currents_controllable_consumers( + missing_currents, cp) + cp.data.control_parameter.limit = limit + available_for_cp = common.available_current_for_cp( + cp, counts, available_currents, missing_currents) + current = common.get_current_to_set( + cp.data.set.current, available_for_cp, cp.data.set.target_current) + if current < cp.data.control_parameter.min_current: + common.set_current_counterdiff(-(cp.data.set.current or 0), 0, cp) + if limit: + cp.set_state_and_log(f"Ladung kann nicht gestartet werden{limit}") + else: + common.set_current_counterdiff( + cp.data.set.target_current, + cp.data.control_parameter.min_current, + cp) + else: + cp.data.set.current = 0 + + for mode_tuple in CONSIDERED_CHARGE_MODES_MIN_CURRENT: + # erstmal SteuVE prüfen, da nicht alle LP dazu zählen müssen und wenn einige dadurch begrenzt werden, + # # können andere die Zählergrenzen noch voll ausnutzen + preferenced_chargepoints_mode = common.get_chargepoints_by_mode(mode_tuple) + set(LoadmanagementState.CONTROLLABLE_CONSUMERS, preferenced_chargepoints_mode) + + for counter in common.counter_generator(): + preferenced_chargepoints = get_chargepoints_by_mode_and_counter(mode_tuple, f"counter{counter.num}") + set(LoadmanagementState.COUNTERS, preferenced_chargepoints, counter=counter) + + # Verbleibende Dimm-Leistung erst am Ende setzen, da die Zähler auch noch begrenzen können. Aktuell wird aber für mehrere LPs auf einer Ebene erst am Ende gestetzt. + for cp in preferenced_chargepoints_mode: + data.data.io_actions.dimming_set_import_power_left( + cp.num, cp.data.control_parameter.phases*cp.data.set.current) diff --git a/packages/control/io_device.py b/packages/control/io_device.py index 30b8193c68..712aa435cc 100644 --- a/packages/control/io_device.py +++ b/packages/control/io_device.py @@ -32,6 +32,11 @@ class IoActions: def __init__(self): self.actions: Dict[int, Union[Dimming, DimmingDirectControl, RippleControlReceiver]] = {} + def setup(self): + for action in self.actions.values(): + if isinstance(action, Dimming): + action.setup() + def dimming_get_import_power_left(self, cp_num: int) -> float: for action in self.actions.values(): if isinstance(action, Dimming): diff --git a/packages/control/loadmanagement.py b/packages/control/loadmanagement.py index 163d5934c5..09b5034771 100644 --- a/packages/control/loadmanagement.py +++ b/packages/control/loadmanagement.py @@ -13,17 +13,22 @@ class Loadmanagement: + def get_currents_controllable_consumers(self, + missing_currents: List[float], + cp: Chargepoint) -> Tuple[List[float], Optional[str]]: + available_currents, limit = self._limit_by_dimming_via_direct_control(missing_currents, cp) + available_currents, limit = self._limit_by_dimming(available_currents, cp) + available_currents, limit = self._limit_by_ripple_control_receiver(available_currents, cp) + return available_currents, limit + def get_available_currents(self, missing_currents: List[float], counter: Counter, cp: Chargepoint, - feed_in: int = 0, - surplus: bool = False) -> Tuple[List[float], Optional[str]]: + feed_in: int = 0) -> Tuple[List[float], Optional[str]]: raw_currents_left = counter.data.set.raw_currents_left - available_currents, limit = self._limit_by_dimming_via_direct_control(missing_currents, cp) - available_currents, limit = self._limit_by_dimming(available_currents, surplus, counter, cp) - available_currents, limit = self._limit_by_ripple_control_receiver(available_currents, cp) - available_currents, limit = self._limit_by_current(counter, available_currents, raw_currents_left) + + available_currents, limit = self._limit_by_current(counter, missing_currents, raw_currents_left) available_currents, limit_power = self._limit_by_power( counter, available_currents, counter.data.set.raw_power_left, feed_in) if limit_power is not None: @@ -122,12 +127,9 @@ def _limit_by_dimming_via_direct_control(self, def _limit_by_dimming(self, available_currents: List[float], - surplus: bool, - counter: Counter, cp: Chargepoint) -> Tuple[List[float], Optional[str]]: dimming_power_left = data.data.io_actions.dimming_get_import_power_left(cp.num) - if (counter.data.set.dimming_power_left is not None and - surplus is False): + if dimming_power_left: if sum(available_currents)*230 > dimming_power_left: phases = 3-available_currents.count(0) overload_per_phase = (sum(available_currents) - dimming_power_left/230)/phases diff --git a/packages/control/prepare.py b/packages/control/prepare.py index 51a1466693..ddb09b471c 100644 --- a/packages/control/prepare.py +++ b/packages/control/prepare.py @@ -34,6 +34,7 @@ def setup_algorithm(self) -> None: data.data.cp_all_data.get_cp_sum() data.data.cp_all_data.no_charge() data.data.counter_all_data.set_home_consumption() + data.data.io_actions.setup() except Exception: log.exception("Fehler im Prepare-Modul") data.data.print_all() diff --git a/packages/modules/io_actions/dimming/api.py b/packages/modules/io_actions/dimming/api.py index 6267c395c7..b9a0d00ee8 100644 --- a/packages/modules/io_actions/dimming/api.py +++ b/packages/modules/io_actions/dimming/api.py @@ -1,13 +1,20 @@ +import logging from control import data from modules.common.abstract_device import DeviceDescriptor from modules.io_actions.dimming.config import DimmingSetup +log = logging.getLogger(__name__) + class Dimming: def __init__(self, config: DimmingSetup): self.config = config - # wird jeden zyklus kopiert und daher zurückgesetzt - self.import_power_left = self.config.config.max_import_power + self.import_power_left = None + + def setup(self) -> None: + self.import_power_left = self.config.config.max_import_power + \ + data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()].calc_raw_surplus() + log.debug(f"Dimmen: {self.import_power_left}W inkl Überschuss") def dimming_get_import_power_left(self, cp_num: int) -> None: if cp_num in self.config.config.cp_ids: From c9bcd116cec848ef7755fb526a47515fb267f485 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 30 Oct 2024 06:52:42 +0100 Subject: [PATCH 04/75] loadmanagement --- packages/control/algorithm/common.py | 2 + packages/control/algorithm/min_current.py | 79 +++++++--------------- packages/control/counter.py | 8 +-- packages/control/loadmanagement.py | 14 ++-- packages/modules/io_actions/dimming/api.py | 1 + 5 files changed, 34 insertions(+), 70 deletions(-) diff --git a/packages/control/algorithm/common.py b/packages/control/algorithm/common.py index 47efd2e800..0bebd7c4dd 100644 --- a/packages/control/algorithm/common.py +++ b/packages/control/algorithm/common.py @@ -84,6 +84,7 @@ def set_current_counterdiff(diff_curent: float, data.data.counter_data[counter].update_surplus_values_left(diffs) else: data.data.counter_data[counter].update_values_left(diffs, chargepoint) + data.data.io_actions.dimming_set_import_power_left(chargepoint.num, sum(diffs)*230) chargepoint.data.set.current = current log.info(f"LP{chargepoint.num}: Stromstärke {current}A") @@ -155,6 +156,7 @@ def update_raw_data(preferenced_chargepoints: List[Chargepoint], data.data.counter_data[counter].update_surplus_values_left(diffs) else: data.data.counter_data[counter].update_values_left(diffs, chargepoint) + data.data.io_actions.dimming_set_import_power_left(chargepoint.num, sum(diffs)*230) def consider_less_charging_chargepoint_in_loadmanagement(cp: Chargepoint, set_current: float) -> bool: diff --git a/packages/control/algorithm/min_current.py b/packages/control/algorithm/min_current.py index 034544adc1..c2a7eccfd5 100644 --- a/packages/control/algorithm/min_current.py +++ b/packages/control/algorithm/min_current.py @@ -1,72 +1,45 @@ -from enum import Enum import logging -from typing import List, Optional -from control import data from control.algorithm import common from control.algorithm.chargemodes import CONSIDERED_CHARGE_MODES_MIN_CURRENT -from control.chargepoint.chargepoint import Chargepoint -from control.counter import Counter from control.loadmanagement import Loadmanagement from control.algorithm.filter_chargepoints import get_chargepoints_by_mode_and_counter log = logging.getLogger(__name__) -class LoadmanagementState(Enum): - COUNTERS = 1 - CONTROLLABLE_CONSUMERS = 2 - - class MinCurrent: def __init__(self) -> None: pass def set_min_current(self) -> None: - def set(loadmanagement_state: LoadmanagementState, - preferenced_chargepoints: List[Chargepoint], - counter: Optional[Counter] = None): - common.update_raw_data(preferenced_chargepoints, diff_to_zero=True) - for cp in preferenced_chargepoints: - log.info(f"Mode-Tuple {mode_tuple[0]} - {mode_tuple[1]} - {mode_tuple[2]}" + - f", Zähler {counter.num}" if loadmanagement_state == LoadmanagementState.COUNTERS else "") - missing_currents, counts = common.get_min_current(cp) - if max(missing_currents) > 0: - if loadmanagement_state == LoadmanagementState.COUNTERS: + for mode_tuple, counter in common.mode_and_counter_generator(CONSIDERED_CHARGE_MODES_MIN_CURRENT): + preferenced_chargepoints = get_chargepoints_by_mode_and_counter(mode_tuple, f"counter{counter.num}") + if preferenced_chargepoints: + log.info(f"Mode-Tuple {mode_tuple[0]} - {mode_tuple[1]} - {mode_tuple[2]}, Zähler {counter.num}") + common.update_raw_data(preferenced_chargepoints, diff_to_zero=True) + while len(preferenced_chargepoints): + cp = preferenced_chargepoints[0] + missing_currents, counts = common.get_min_current(cp) + if max(missing_currents) > 0: available_currents, limit = Loadmanagement().get_available_currents( missing_currents, counter, cp) + cp.data.control_parameter.limit = limit + available_for_cp = common.available_current_for_cp( + cp, counts, available_currents, missing_currents) + current = common.get_current_to_set( + cp.data.set.current, available_for_cp, cp.data.set.target_current) + if current < cp.data.control_parameter.min_current: + common.set_current_counterdiff(-(cp.data.set.current or 0), 0, cp) + if limit: + cp.set_state_and_log( + "Ladung kann nicht gestartet werden"f"{limit.value}") + else: + common.set_current_counterdiff( + cp.data.set.target_current, + cp.data.control_parameter.min_current, + cp) else: - available_currents, limit = Loadmanagement().get_currents_controllable_consumers( - missing_currents, cp) - cp.data.control_parameter.limit = limit - available_for_cp = common.available_current_for_cp( - cp, counts, available_currents, missing_currents) - current = common.get_current_to_set( - cp.data.set.current, available_for_cp, cp.data.set.target_current) - if current < cp.data.control_parameter.min_current: - common.set_current_counterdiff(-(cp.data.set.current or 0), 0, cp) - if limit: - cp.set_state_and_log(f"Ladung kann nicht gestartet werden{limit}") - else: - common.set_current_counterdiff( - cp.data.set.target_current, - cp.data.control_parameter.min_current, - cp) - else: - cp.data.set.current = 0 - - for mode_tuple in CONSIDERED_CHARGE_MODES_MIN_CURRENT: - # erstmal SteuVE prüfen, da nicht alle LP dazu zählen müssen und wenn einige dadurch begrenzt werden, - # # können andere die Zählergrenzen noch voll ausnutzen - preferenced_chargepoints_mode = common.get_chargepoints_by_mode(mode_tuple) - set(LoadmanagementState.CONTROLLABLE_CONSUMERS, preferenced_chargepoints_mode) - - for counter in common.counter_generator(): - preferenced_chargepoints = get_chargepoints_by_mode_and_counter(mode_tuple, f"counter{counter.num}") - set(LoadmanagementState.COUNTERS, preferenced_chargepoints, counter=counter) - - # Verbleibende Dimm-Leistung erst am Ende setzen, da die Zähler auch noch begrenzen können. Aktuell wird aber für mehrere LPs auf einer Ebene erst am Ende gestetzt. - for cp in preferenced_chargepoints_mode: - data.data.io_actions.dimming_set_import_power_left( - cp.num, cp.data.control_parameter.phases*cp.data.set.current) + cp.data.set.current = 0 + preferenced_chargepoints.pop(0) diff --git a/packages/control/counter.py b/packages/control/counter.py index e19d3be8d4..0c39ee4cf3 100644 --- a/packages/control/counter.py +++ b/packages/control/counter.py @@ -108,7 +108,6 @@ def setup_counter(self): loadmanagement_available = self._get_loadmanagement_state() self._set_current_left(loadmanagement_available) self._set_power_left(loadmanagement_available) - self._set_dimming_power_left() if loadmanagement_available is False: self.data.get.power = 0 return @@ -197,13 +196,8 @@ def update_values_left(self, diffs, cp: Chargepoint) -> None: self.data.set.raw_currents_left = list(map(operator.sub, self.data.set.raw_currents_left, diffs)) if self.data.set.raw_power_left: self.data.set.raw_power_left -= sum(diffs) * 230 - dimming_power_left = data.data.io_actions.dimming_set_import_power_left(cp.num, sum(diffs)*230) - if dimming_power_left is not None: - msg = f', {dimming_power_left}W verbleibende Dimmleistung' - else: - msg = "" log.debug(f'Zähler {self.num}: {self.data.set.raw_currents_left}A verbleibende Ströme, ' - f'{self.data.set.raw_power_left}W verbleibende Leistung{msg}') + f'{self.data.set.raw_power_left}W verbleibende Leistung') def update_surplus_values_left(self, diffs) -> None: self.data.set.raw_currents_left = list(map(operator.sub, self.data.set.raw_currents_left, diffs)) diff --git a/packages/control/loadmanagement.py b/packages/control/loadmanagement.py index 09b5034771..84f6203feb 100644 --- a/packages/control/loadmanagement.py +++ b/packages/control/loadmanagement.py @@ -13,22 +13,16 @@ class Loadmanagement: - def get_currents_controllable_consumers(self, - missing_currents: List[float], - cp: Chargepoint) -> Tuple[List[float], Optional[str]]: - available_currents, limit = self._limit_by_dimming_via_direct_control(missing_currents, cp) - available_currents, limit = self._limit_by_dimming(available_currents, cp) - available_currents, limit = self._limit_by_ripple_control_receiver(available_currents, cp) - return available_currents, limit - def get_available_currents(self, missing_currents: List[float], counter: Counter, cp: Chargepoint, feed_in: int = 0) -> Tuple[List[float], Optional[str]]: raw_currents_left = counter.data.set.raw_currents_left - - available_currents, limit = self._limit_by_current(counter, missing_currents, raw_currents_left) + available_currents, limit = self._limit_by_dimming_via_direct_control(missing_currents, cp) + available_currents, limit = self._limit_by_dimming(available_currents, cp) + available_currents, limit = self._limit_by_ripple_control_receiver(available_currents, cp) + available_currents, limit = self._limit_by_current(counter, available_currents, raw_currents_left) available_currents, limit_power = self._limit_by_power( counter, available_currents, counter.data.set.raw_power_left, feed_in) if limit_power is not None: diff --git a/packages/modules/io_actions/dimming/api.py b/packages/modules/io_actions/dimming/api.py index b9a0d00ee8..cd62094e68 100644 --- a/packages/modules/io_actions/dimming/api.py +++ b/packages/modules/io_actions/dimming/api.py @@ -28,6 +28,7 @@ def dimming_get_import_power_left(self, cp_num: int) -> None: def dimming_set_import_power_left(self, cp_num: int, used_power: float) -> None: if cp_num in self.config.config.cp_ids: self.import_power_left -= used_power + log.debug(f"verbleibende Dimm-Leistung: {self.import_power_left}W inkl Überschuss") return self.import_power_left else: return None From cfb1f1273396bebc70dd5fb69255acc5b6f7bd77 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 30 Oct 2024 07:09:47 +0100 Subject: [PATCH 05/75] undo dev changes --- packages/control/algorithm/common.py | 12 ++----- .../control/chargepoint/chargepoint_data.py | 1 - packages/control/counter.py | 3 +- packages/control/loadmanagement.py | 1 + packages/helpermodules/setdata.py | 3 +- packages/modules/common/fault_state.py | 2 +- packages/modules/io_devices/dimm_kit/api.py | 35 ++++++++++--------- 7 files changed, 24 insertions(+), 33 deletions(-) diff --git a/packages/control/algorithm/common.py b/packages/control/algorithm/common.py index 0bebd7c4dd..54705e27fd 100644 --- a/packages/control/algorithm/common.py +++ b/packages/control/algorithm/common.py @@ -41,14 +41,6 @@ def mode_and_counter_generator(chargemodes: List) -> Iterable[Tuple[Tuple[Option yield mode_tuple, counter -def counter_generator() -> Iterable[Counter]: - levels = data.data.counter_all_data.get_list_of_elements_per_level() - for level in reversed(levels): - for element in level: - if element["type"] == ComponentType.COUNTER.value: - counter = data.data.counter_data[f"counter{element['id']}"] - yield counter - # tested @@ -83,7 +75,7 @@ def set_current_counterdiff(diff_curent: float, if surplus: data.data.counter_data[counter].update_surplus_values_left(diffs) else: - data.data.counter_data[counter].update_values_left(diffs, chargepoint) + data.data.counter_data[counter].update_values_left(diffs) data.data.io_actions.dimming_set_import_power_left(chargepoint.num, sum(diffs)*230) chargepoint.data.set.current = current @@ -155,7 +147,7 @@ def update_raw_data(preferenced_chargepoints: List[Chargepoint], if surplus: data.data.counter_data[counter].update_surplus_values_left(diffs) else: - data.data.counter_data[counter].update_values_left(diffs, chargepoint) + data.data.counter_data[counter].update_values_left(diffs) data.data.io_actions.dimming_set_import_power_left(chargepoint.num, sum(diffs)*230) diff --git a/packages/control/chargepoint/chargepoint_data.py b/packages/control/chargepoint/chargepoint_data.py index 0e1509a858..9d2f9bb02c 100644 --- a/packages/control/chargepoint/chargepoint_data.py +++ b/packages/control/chargepoint/chargepoint_data.py @@ -97,7 +97,6 @@ class Get: currents: List[float] = field(default_factory=currents_list_factory) daily_imported: float = 0 daily_exported: float = 0 - dimming_via_direct_control: bool = False error_timestamp: int = 0 evse_current: Optional[float] = None exported: float = 0 diff --git a/packages/control/counter.py b/packages/control/counter.py index 0c39ee4cf3..80531f12a9 100644 --- a/packages/control/counter.py +++ b/packages/control/counter.py @@ -73,7 +73,6 @@ def get_factory() -> Get: @dataclass class Set: error_timer: Optional[float] = field(default=None, metadata={"topic": "set/error_timer"}) - dimming_power_left: float = field(default=0, metadata={"topic": "set/dimming_power_left"}) reserved_surplus: float = field(default=0, metadata={"topic": "set/reserved_surplus"}) released_surplus: float = field(default=0, metadata={"topic": "set/released_surplus"}) raw_power_left: float = 0 @@ -192,7 +191,7 @@ def _set_power_left(self, loadmanagement_available: bool) -> None: else: self.data.set.raw_power_left = None - def update_values_left(self, diffs, cp: Chargepoint) -> None: + def update_values_left(self, diffs) -> None: self.data.set.raw_currents_left = list(map(operator.sub, self.data.set.raw_currents_left, diffs)) if self.data.set.raw_power_left: self.data.set.raw_power_left -= sum(diffs) * 230 diff --git a/packages/control/loadmanagement.py b/packages/control/loadmanagement.py index 84f6203feb..03c467f399 100644 --- a/packages/control/loadmanagement.py +++ b/packages/control/loadmanagement.py @@ -128,6 +128,7 @@ def _limit_by_dimming(self, phases = 3-available_currents.count(0) overload_per_phase = (sum(available_currents) - dimming_power_left/230)/phases available_currents = [c - overload_per_phase if c > 0 else 0 for c in available_currents] + log.debug(f"Reduzierung der Ströme durch die Dimmung: {available_currents}A") return available_currents, LimitingValue.DIMMING.value return available_currents, None diff --git a/packages/helpermodules/setdata.py b/packages/helpermodules/setdata.py index e1b0359273..a310fb1e84 100644 --- a/packages/helpermodules/setdata.py +++ b/packages/helpermodules/setdata.py @@ -620,8 +620,7 @@ def process_chargepoint_get_topics(self, msg): elif "/get/phases_in_use" in msg.topic: self._validate_value(msg, int, [(0, 3)]) elif ("/get/charge_state" in msg.topic or - "/get/plug_state" in msg.topic or - "/ge/dimming_via_direct_control" in msg.topic): + "/get/plug_state" in msg.topic): self._validate_value(msg, bool) elif "/get/fault_state" in msg.topic: self._validate_value(msg, int, [(0, 2)]) diff --git a/packages/modules/common/fault_state.py b/packages/modules/common/fault_state.py index 7a8766593f..a0dc3edf75 100644 --- a/packages/modules/common/fault_state.py +++ b/packages/modules/common/fault_state.py @@ -54,7 +54,7 @@ def store_error(self) -> None: if self.component_info.type == component_type.ComponentType.ELECTRICITY_TARIFF.value: topic_prefix = f"openWB/set/{topic}" elif self.component_info.type == component_type.ComponentType.IO.value: - topic_prefix = f"openWB/set/general/{topic}" + topic_prefix = f"openWB/set/io/{topic}" else: topic_prefix = f"openWB/set/{topic}/{self.component_info.id}" pub.Pub().pub(f"{topic_prefix}/get/fault_str", self.fault_str) diff --git a/packages/modules/io_devices/dimm_kit/api.py b/packages/modules/io_devices/dimm_kit/api.py index 921341cee7..d5436727a9 100644 --- a/packages/modules/io_devices/dimm_kit/api.py +++ b/packages/modules/io_devices/dimm_kit/api.py @@ -18,6 +18,24 @@ def create_io(config: IoLan): def read(): + nonlocal version + if version is False: + try: + parsed_answer = get_version_by_telnet(VALID_VERSIONS[0], config.configuration.ip_address) + for version in VALID_VERSIONS: + if version in parsed_answer: + version = True + log.debug("Firmware des openWB Dimm-& Control-Kit ist mit openWB software2 kompatibel.") + else: + version = False + raise ValueError + except (ConnectionRefusedError, ValueError): + log.exception("Dimm-Kit") + raise Exception("Firmware des openWB Dimm-& Control-Kit ist nicht mit openWB software2 kompatibel. " + "Bitte den Support kontaktieren.") + except socket.timeout: + log.exception("Dimm-Kit") + raise Exception("Die IP-Adresse ist nicht erreichbar. Bitte den Support kontaktieren.") return IoState( # 1-4th channel test 0-5V voltage, 5-8th channel test 0-25mA current value analog_input={i: client.read_input_registers( @@ -31,23 +49,6 @@ def write(digital_output: Dict[int, int]) -> None: version = False client = ModbusTcpClient_(config.configuration.ip_address, config.configuration.port) - if config.configuration.ip_address: - try: - parsed_answer = get_version_by_telnet(VALID_VERSIONS[0], config.configuration.ip_address) - for version in VALID_VERSIONS: - if version in parsed_answer: - version = True - log.debug("Firmware des openWB Dimm-& Control-Kit ist mit openWB software2 kompatibel.") - else: - version = False - raise ValueError - except (ConnectionRefusedError, ValueError): - log.exception("Dimm-Kit") - raise Exception("Firmware des openWB Dimm-& Control-Kit ist nicht mit openWB software2 kompatibel. " - "Bitte den Support kontaktieren.") - except socket.timeout: - log.exception("Dimm-Kit") - raise Exception("Die IP-Adresse ist nicht erreichbar. Bitte den Support kontaktieren.") return ConfigurableIo(config=config, component_reader=read, component_writer=write) From bb3ff1738965c11a5574f9d56c28c740bd3ce1e5 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 30 Oct 2024 07:13:21 +0100 Subject: [PATCH 06/75] flake8 --- packages/helpermodules/command.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/helpermodules/command.py b/packages/helpermodules/command.py index 63224ace8c..2990de2525 100644 --- a/packages/helpermodules/command.py +++ b/packages/helpermodules/command.py @@ -195,7 +195,8 @@ def removeIoAction(self, connection_id: str, payload: dict) -> None: else: pub_user_message( payload, connection_id, - f'Die ID \'{payload["data"]["id"]}\' ist größer als die maximal vergebene ID \'{self.max_id_io_action}\'.', + f'Die ID \'{payload["data"]["id"]}\' ist größer als die maximal vergebene ' + f'ID \'{self.max_id_io_action}\'.', MessageType.ERROR) def addIoDevice(self, connection_id: str, payload: dict) -> None: @@ -224,7 +225,8 @@ def removeIoDevice(self, connection_id: str, payload: dict) -> None: else: pub_user_message( payload, connection_id, - f'Die ID \'{payload["data"]["id"]}\' ist größer als die maximal vergebene ID \'{self.max_id_io_device}\'.', + f'Die ID \'{payload["data"]["id"]}\' ist größer als die maximal vergebene ' + f'ID \'{self.max_id_io_device}\'.', MessageType.ERROR) def addChargepoint(self, connection_id: str, payload: dict) -> None: From 4954e95f7dc524d72bda74e3c558a8fcce98ff5b Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 30 Oct 2024 08:46:06 +0100 Subject: [PATCH 07/75] fixes --- packages/control/algorithm/min_current.py | 2 +- .../control/algorithm/surplus_controlled.py | 3 +- packages/control/loadmanagement.py | 46 +++++++++++-------- packages/modules/common/component_state.py | 10 ++-- packages/modules/io_actions/dimming/api.py | 3 +- packages/modules/io_actions/dimming/config.py | 2 +- .../io_actions/dimming_direct_control/api.py | 3 +- .../dimming_direct_control/config.py | 2 +- .../io_actions/ripple_control_receiver/api.py | 3 +- .../ripple_control_receiver/config.py | 2 +- packages/modules/io_devices/add_on/api.py | 14 +++--- packages/modules/io_devices/add_on/config.py | 30 ++++++++++-- packages/modules/io_devices/dimm_kit/api.py | 7 +-- .../modules/io_devices/dimm_kit/config.py | 6 +-- 14 files changed, 85 insertions(+), 48 deletions(-) diff --git a/packages/control/algorithm/min_current.py b/packages/control/algorithm/min_current.py index c2a7eccfd5..bcb81468dc 100644 --- a/packages/control/algorithm/min_current.py +++ b/packages/control/algorithm/min_current.py @@ -34,7 +34,7 @@ def set_min_current(self) -> None: common.set_current_counterdiff(-(cp.data.set.current or 0), 0, cp) if limit: cp.set_state_and_log( - "Ladung kann nicht gestartet werden"f"{limit.value}") + f"Ladung kann nicht gestartet werden{limit}") else: common.set_current_counterdiff( cp.data.set.target_current, diff --git a/packages/control/algorithm/surplus_controlled.py b/packages/control/algorithm/surplus_controlled.py index a36193f700..aceb02d89f 100644 --- a/packages/control/algorithm/surplus_controlled.py +++ b/packages/control/algorithm/surplus_controlled.py @@ -70,8 +70,7 @@ def _set(self, else: current = available_for_cp - current = common.get_current_to_set(cp.data.set.current, current, - available_for_cp, cp.data.set.target_current) + current = common.get_current_to_set(cp.data.set.current, current, cp.data.set.target_current) self._set_loadmangement_message(current, limit, cp) limited_current = self._limit_adjust_current(cp, current) common.set_current_counterdiff( diff --git a/packages/control/loadmanagement.py b/packages/control/loadmanagement.py index 03c467f399..040221865a 100644 --- a/packages/control/loadmanagement.py +++ b/packages/control/loadmanagement.py @@ -20,19 +20,25 @@ def get_available_currents(self, feed_in: int = 0) -> Tuple[List[float], Optional[str]]: raw_currents_left = counter.data.set.raw_currents_left available_currents, limit = self._limit_by_dimming_via_direct_control(missing_currents, cp) - available_currents, limit = self._limit_by_dimming(available_currents, cp) - available_currents, limit = self._limit_by_ripple_control_receiver(available_currents, cp) - available_currents, limit = self._limit_by_current(counter, available_currents, raw_currents_left) - available_currents, limit_power = self._limit_by_power( + + available_currents, new_limit = self._limit_by_dimming(available_currents, cp) + limit = new_limit if new_limit is not None else limit + + available_currents, new_limit = self._limit_by_ripple_control_receiver(available_currents, cp) + limit = new_limit if new_limit is not None else limit + + available_currents, new_limit = self._limit_by_current(counter, available_currents, raw_currents_left) + limit = new_limit if new_limit is not None else limit + + available_currents, new_limit = self._limit_by_power( counter, available_currents, counter.data.set.raw_power_left, feed_in) - if limit_power is not None: - limit = limit_power + limit = new_limit if new_limit is not None else limit + if f"counter{counter.num}" == data.data.counter_all_data.get_evu_counter_str(): - available_currents, limit_unbalanced_load = self._limit_by_unbalanced_load( + available_currents, new_limit = self._limit_by_unbalanced_load( counter, available_currents, raw_currents_left, len([value for value in missing_currents if value != 0])) - if limit_unbalanced_load is not None: - limit = limit_unbalanced_load + limit = new_limit if new_limit is not None else limit return available_currents, limit def get_available_currents_surplus(self, @@ -42,18 +48,22 @@ def get_available_currents_surplus(self, feed_in: int = 0) -> Tuple[List[float], Optional[str]]: raw_currents_left = counter.data.set.raw_currents_left available_currents, limit = self._limit_by_dimming_via_direct_control(missing_currents, cp) - available_currents, limit = self._limit_by_ripple_control_receiver(available_currents, cp) - available_currents, limit = self._limit_by_current(available_currents, raw_currents_left) - available_currents, limit_power = self._limit_by_power( - available_currents, counter.data.set.surplus_power_left, feed_in) - if limit_power is not None: - limit = limit_power + + available_currents, new_limit = self._limit_by_ripple_control_receiver(available_currents, cp) + limit = new_limit if new_limit is not None else limit + + available_currents, new_limit = self._limit_by_current(counter, available_currents, raw_currents_left) + limit = new_limit if new_limit is not None else limit + + available_currents, new_limit = self._limit_by_power( + counter, available_currents, counter.data.set.surplus_power_left, feed_in) + limit = new_limit if new_limit is not None else limit + if f"counter{counter.num}" == data.data.counter_all_data.get_evu_counter_str(): - available_currents, limit_unbalanced_load = self._limit_by_unbalanced_load( + available_currents, new_limit = self._limit_by_unbalanced_load( counter, available_currents, raw_currents_left, len([value for value in missing_currents if value != 0])) - if limit_unbalanced_load is not None: - limit = limit_unbalanced_load + limit = new_limit if new_limit is not None else limit return available_currents, limit def _limit_by_unbalanced_load(self, diff --git a/packages/modules/common/component_state.py b/packages/modules/common/component_state.py index d19165579b..0298d7892c 100644 --- a/packages/modules/common/component_state.py +++ b/packages/modules/common/component_state.py @@ -208,10 +208,12 @@ def __init__(self, @auto_str class IoState: - def __init__(self, analog_input: Dict[int, float] = None, - digital_input: Dict[int, bool] = None, - analog_output: Dict[int, float] = None, - digital_output: Dict[int, bool] = None) -> None: + """JSON erlaubt nur Zeichenketten als Schlüssel für Objekte""" + + def __init__(self, analog_input: Dict[str, float] = None, + digital_input: Dict[str, bool] = None, + analog_output: Dict[str, float] = None, + digital_output: Dict[str, bool] = None) -> None: self.analog_input = analog_input self.digital_input = digital_input self.analog_output = analog_output diff --git a/packages/modules/io_actions/dimming/api.py b/packages/modules/io_actions/dimming/api.py index cd62094e68..76d65f3eb6 100644 --- a/packages/modules/io_actions/dimming/api.py +++ b/packages/modules/io_actions/dimming/api.py @@ -18,7 +18,8 @@ def setup(self) -> None: def dimming_get_import_power_left(self, cp_num: int) -> None: if cp_num in self.config.config.cp_ids: - if data.data.io_states[self.config.config.io_device].get.digital_input[self.config.config.digital_input]: + if data.data.io_states[f"io_states{self.config.config.io_device}"].data.get.digital_input[ + self.config.config.digital_input]: return self.import_power_left else: return None diff --git a/packages/modules/io_actions/dimming/config.py b/packages/modules/io_actions/dimming/config.py index defb50b3ec..c18413ff32 100644 --- a/packages/modules/io_actions/dimming/config.py +++ b/packages/modules/io_actions/dimming/config.py @@ -7,7 +7,7 @@ @dataclass class DimmingConfig: io_device: int = 0 - digital_input: int = 0 + digital_input: str = "0" cp_ids: List[int] = field(default_factory=empty_list_factory) max_import_power: int = 0 diff --git a/packages/modules/io_actions/dimming_direct_control/api.py b/packages/modules/io_actions/dimming_direct_control/api.py index 3ed69984e6..13f3fe6ad1 100644 --- a/packages/modules/io_actions/dimming_direct_control/api.py +++ b/packages/modules/io_actions/dimming_direct_control/api.py @@ -9,7 +9,8 @@ def __init__(self, config: DimmingDirectControlSetup): def dimming_via_direct_control(self, cp_num: int) -> None: if cp_num == self.config.config.cp_id: - if data.data.io_states[self.config.config.io_device].get.digital_input[self.config.config.digital_input]: + if data.data.io_states[f"io_states{self.config.config.io_device}"].data.get.digital_input[ + self.config.config.digital_input]: return 4200 else: return None diff --git a/packages/modules/io_actions/dimming_direct_control/config.py b/packages/modules/io_actions/dimming_direct_control/config.py index 897e7267db..b535c8016a 100644 --- a/packages/modules/io_actions/dimming_direct_control/config.py +++ b/packages/modules/io_actions/dimming_direct_control/config.py @@ -5,7 +5,7 @@ @dataclass class DimmingDirectControlConfig: io_device: int = 0 - digital_input: int = 0 + digital_input: str = "0" cp_id: int = None diff --git a/packages/modules/io_actions/ripple_control_receiver/api.py b/packages/modules/io_actions/ripple_control_receiver/api.py index 8534a1dd6d..8d6a66ddd6 100644 --- a/packages/modules/io_actions/ripple_control_receiver/api.py +++ b/packages/modules/io_actions/ripple_control_receiver/api.py @@ -9,7 +9,8 @@ def __init__(self, config: RippleControlReceiverSetup): def ripple_control_receiver(self, cp_num: int) -> None: if cp_num in self.config.config.cp_ids: - if data.data.io_states[self.config.config.io_device].get.digital_input[self.config.config.digital_input]: + if data.data.io_states[f"io_states{self.config.config.io_device}"].data.get.digital_input[ + self.config.config.digital_input]: return 0 else: return None diff --git a/packages/modules/io_actions/ripple_control_receiver/config.py b/packages/modules/io_actions/ripple_control_receiver/config.py index e74cc07c83..cfac2ea605 100644 --- a/packages/modules/io_actions/ripple_control_receiver/config.py +++ b/packages/modules/io_actions/ripple_control_receiver/config.py @@ -7,7 +7,7 @@ @dataclass class RippleControlReceiverConfig: io_device: int = 0 - digital_input: int = 0 + digital_input: str = "0" cp_ids: List[int] = field(default_factory=empty_list_factory) diff --git a/packages/modules/io_devices/add_on/api.py b/packages/modules/io_devices/add_on/api.py index acbd2226a2..4111567908 100644 --- a/packages/modules/io_devices/add_on/api.py +++ b/packages/modules/io_devices/add_on/api.py @@ -21,13 +21,13 @@ def create_io(config: AddOn): def read() -> Tuple[bool, bool]: if has_gpio: - return IoState(digital_input={21: GPIO.input(21) == GPIO.LOW, - 24: GPIO.input(24) == GPIO.LOW, - 31: GPIO.input(31) == GPIO.LOW, - 32: GPIO.input(32) == GPIO.LOW, - 33: GPIO.input(33) == GPIO.LOW, - 36: GPIO.input(36) == GPIO.LOW, - 40: GPIO.input(40) == GPIO.LOW}) + return IoState(digital_input={"21": GPIO.input(21) == GPIO.LOW, + "24": GPIO.input(24) == GPIO.LOW, + "31": GPIO.input(31) == GPIO.LOW, + "32": GPIO.input(32) == GPIO.LOW, + "33": GPIO.input(33) == GPIO.LOW, + "36": GPIO.input(36) == GPIO.LOW, + "40": GPIO.input(40) == GPIO.LOW}) else: return IoState() diff --git a/packages/modules/io_devices/add_on/config.py b/packages/modules/io_devices/add_on/config.py index 7d0fe49f1c..6dec50bd69 100644 --- a/packages/modules/io_devices/add_on/config.py +++ b/packages/modules/io_devices/add_on/config.py @@ -1,3 +1,4 @@ +from typing import Dict from modules.common.io_setup import IoDeviceSetup @@ -6,16 +7,37 @@ def __init__(self): pass +def digital_input_init(): + return {"21": False, + "24": False, + "31": False, + "32": False, + "33": False, + "36": False, + "40": False} + + +def digital_output_init(): + return {"7": False, + "16": False, + "18": False} + + class AddOn(IoDeviceSetup[AddOnConfiguration]): def __init__(self, name: str = "GPIOs auf der AddOn-Platine", type: str = "add_on", id: int = 0, - configuration: AddOnConfiguration = None) -> None: + configuration: AddOnConfiguration = None, + digital_input: Dict[int, bool] = None, + digital_output: Dict[int, bool] = None) -> None: self.name = name self.type = type self.id = id self.configuration = configuration or AddOnConfiguration() - super().__init__(name, type, id, configuration or AddOnConfiguration()) - self.digital_input = {i: False for i in range(1, 9)} - self.digital_output = {i: False for i in range(1, 9)} + if digital_input is None: + digital_input = digital_input_init() + if digital_output is None: + digital_output = digital_output_init() + super().__init__(name, type, id, configuration or AddOnConfiguration(), + digital_input=digital_input, digital_output=digital_output) diff --git a/packages/modules/io_devices/dimm_kit/api.py b/packages/modules/io_devices/dimm_kit/api.py index d5436727a9..5b7ada9c28 100644 --- a/packages/modules/io_devices/dimm_kit/api.py +++ b/packages/modules/io_devices/dimm_kit/api.py @@ -38,10 +38,11 @@ def read(): raise Exception("Die IP-Adresse ist nicht erreichbar. Bitte den Support kontaktieren.") return IoState( # 1-4th channel test 0-5V voltage, 5-8th channel test 0-25mA current value - analog_input={i: client.read_input_registers( + analog_input={str(i): client.read_input_registers( i-1, ModbusDataType.UINT_8, unit=config.configuration.modbus_id)/1024 for i in range(1, 9)}, - digital_input={i: client.read_coils(i-1, 1, unit=config.configuration.modbus_id) for i in range(1, 9)}, - digital_output={i: client.read_coils(i-1, 1, unit=config.configuration.modbus_id) for i in range(16, 24)}) + digital_input={str(i): client.read_coils(i-1, 1, unit=config.configuration.modbus_id) for i in range(1, 9)}, + digital_output={str(i): client.read_coils(i-1, 1, + unit=config.configuration.modbus_id) for i in range(16, 24)}) def write(digital_output: Dict[int, int]) -> None: for i, value in digital_output.items(): diff --git a/packages/modules/io_devices/dimm_kit/config.py b/packages/modules/io_devices/dimm_kit/config.py index 86d4b9f2e6..46674ee91e 100644 --- a/packages/modules/io_devices/dimm_kit/config.py +++ b/packages/modules/io_devices/dimm_kit/config.py @@ -12,15 +12,15 @@ def __init__(self, ip_address: Optional[str] = None, port: int = 8899, modbus_id def analog_input_init(): - return {i: 0 for i in range(1, 9)} + return {str(i): 0 for i in range(1, 9)} def digital_input_init(): - return {i: False for i in range(1, 9)} + return {str(i): False for i in range(1, 9)} def digital_output_init(): - return {i: False for i in range(16, 24)} + return {str(i): False for i in range(16, 24)} @auto_str From dd1f730b5ffe272c9835752532795a8414792e93 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 30 Oct 2024 14:16:33 +0100 Subject: [PATCH 08/75] pytest, rse --- packages/control/algorithm/additional_current_test.py | 6 +++--- packages/control/algorithm/common_test.py | 2 ++ packages/control/algorithm/integration_test/conftest.py | 2 ++ .../algorithm/integration_test/instant_charging_test.py | 7 ++++++- .../algorithm/integration_test/pv_charging_test.py | 4 +++- packages/control/limiting_value.py | 6 +++--- packages/helpermodules/subdata.py | 7 +++---- .../modules/io_actions/ripple_control_receiver/api.py | 8 ++++---- .../modules/io_actions/ripple_control_receiver/config.py | 1 + 9 files changed, 27 insertions(+), 16 deletions(-) diff --git a/packages/control/algorithm/additional_current_test.py b/packages/control/algorithm/additional_current_test.py index c1b588e710..c6ff09a0b4 100644 --- a/packages/control/algorithm/additional_current_test.py +++ b/packages/control/algorithm/additional_current_test.py @@ -13,15 +13,15 @@ "set_current, limit, expected_msg", [pytest.param(7, None, None, id="unverändert"), pytest.param( - 6, LimitingValue.CURRENT, + 6, LimitingValue.CURRENT.value.format('Garage'), f"Es kann nicht mit der vorgegebenen Stromstärke geladen werden{LimitingValue.CURRENT.value.format('Garage')}", id="begrenzt durch Strom"), pytest.param( - 6, LimitingValue.POWER, + 6, LimitingValue.POWER.value.format('Garage'), f"Es kann nicht mit der vorgegebenen Stromstärke geladen werden{LimitingValue.POWER.value.format('Garage')}", id="begrenzt durch Leistung"), pytest.param( - 6, LimitingValue.UNBALANCED_LOAD, + 6, LimitingValue.UNBALANCED_LOAD.value.format('Garage'), f"Es kann nicht mit der vorgegebenen Stromstärke geladen werden" f"{LimitingValue.UNBALANCED_LOAD.value.format('Garage')}", id="begrenzt durch Schieflast"), diff --git a/packages/control/algorithm/common_test.py b/packages/control/algorithm/common_test.py index 5435c4ef15..2ae8679e98 100644 --- a/packages/control/algorithm/common_test.py +++ b/packages/control/algorithm/common_test.py @@ -9,12 +9,14 @@ from control.ev.ev import Ev from control.counter import Counter from control.counter_all import CounterAll +from control.io_device import IoActions @pytest.fixture(autouse=True) def cp() -> None: data.data_init(Mock()) data.data.cp_data = {"cp0": Chargepoint(0, None)} + data.data.io_actions = IoActions() @pytest.mark.parametrize("set_current, expected_current", diff --git a/packages/control/algorithm/integration_test/conftest.py b/packages/control/algorithm/integration_test/conftest.py index abf0f02e18..0f9d86433c 100644 --- a/packages/control/algorithm/integration_test/conftest.py +++ b/packages/control/algorithm/integration_test/conftest.py @@ -10,6 +10,7 @@ from control.counter_all import CounterAll from control.counter import Counter from control.ev.ev import Ev +from control.io_device import IoActions from control.pv import Pv from control.chargepoint.chargepoint_state import ChargepointState from test_utils.default_hierarchies import NESTED_HIERARCHY @@ -48,6 +49,7 @@ def data_() -> None: data.data.counter_all_data = CounterAll() data.data.counter_all_data.data.get.hierarchy = NESTED_HIERARCHY data.data.counter_all_data.data.config.consider_less_charging = True + data.data.io_actions = IoActions() @dataclass diff --git a/packages/control/algorithm/integration_test/instant_charging_test.py b/packages/control/algorithm/integration_test/instant_charging_test.py index 21d0216481..c9ab77124f 100644 --- a/packages/control/algorithm/integration_test/instant_charging_test.py +++ b/packages/control/algorithm/integration_test/instant_charging_test.py @@ -1,10 +1,11 @@ from dataclasses import dataclass, field from typing import List +from unittest.mock import Mock import pytest from control.algorithm.integration_test.conftest import ParamsExpectedSetCurrent, assert_expected_current from control.chargemode import Chargemode -from control import data +from control import data, loadmanagement from control.algorithm.algorithm import Algorithm from control.limiting_value import LimitingValue from dataclass_utils.factories import currents_list_factory @@ -118,6 +119,8 @@ def test_instant_charging_limit(params: ParamsLimit, all_cp_instant_charging_1p, data.data.counter_data["counter0"].data.set.raw_power_left = params.raw_power_left data.data.counter_data["counter0"].data.set.raw_currents_left = params.raw_currents_left_counter0 data.data.counter_data["counter6"].data.set.raw_currents_left = params.raw_currents_left_counter6 + mockget_component_name_by_id = Mock(return_value="Garage") + monkeypatch.setattr(loadmanagement, "get_component_name_by_id", mockget_component_name_by_id) # execution Algorithm().calc_current() @@ -193,6 +196,8 @@ def test_control_parameter_instant_charging(params: ParamsControlParameter, all_ data.data.counter_data["counter0"].data.set.raw_power_left = 22080 data.data.counter_data["counter0"].data.set.raw_currents_left = [32]*3 data.data.counter_data["counter6"].data.set.raw_currents_left = [16]*3 + mockget_component_name_by_id = Mock(return_value="Garage") + monkeypatch.setattr(loadmanagement, "get_component_name_by_id", mockget_component_name_by_id) # execution Algorithm().calc_current() diff --git a/packages/control/algorithm/integration_test/pv_charging_test.py b/packages/control/algorithm/integration_test/pv_charging_test.py index 10ceefffe5..2b7383db3b 100644 --- a/packages/control/algorithm/integration_test/pv_charging_test.py +++ b/packages/control/algorithm/integration_test/pv_charging_test.py @@ -5,7 +5,7 @@ from control.algorithm.integration_test.conftest import ParamsExpectedSetCurrent, assert_expected_current from control.chargemode import Chargemode -from control import data +from control import data, loadmanagement from control.algorithm.algorithm import Algorithm from control.algorithm.algorithm import data as algorithm_data from control.chargepoint.chargepoint_template import CpTemplate @@ -222,6 +222,8 @@ def test_surplus(params: ParamsSurplus, all_cp_pv_charging_3p, all_cp_charging_3 data.data.counter_data["counter0"].data.set.raw_power_left = params.raw_power_left data.data.counter_data["counter0"].data.set.raw_currents_left = params.raw_currents_left_counter0 data.data.counter_data["counter6"].data.set.raw_currents_left = params.raw_currents_left_counter6 + mockget_component_name_by_id = Mock(return_value="Garage") + monkeypatch.setattr(loadmanagement, "get_component_name_by_id", mockget_component_name_by_id) # execution Algorithm().calc_current() diff --git a/packages/control/limiting_value.py b/packages/control/limiting_value.py index 44ac46861c..64b98c8229 100644 --- a/packages/control/limiting_value.py +++ b/packages/control/limiting_value.py @@ -5,6 +5,6 @@ class LimitingValue(Enum): CURRENT = ", da der Maximal-Strom an Zähler {} erreicht ist." POWER = ", da die maximale Leistung an Zähler {} erreicht ist." UNBALANCED_LOAD = ", da die maximale Schieflast an Zähler {} erreicht ist." - DIMMING = ", da die Dimmung aktiv ist." - DIMMING_VIA_DIRECT_CONTROL = ", da die Dimmung per Direkt-Steuerung an diesem Ladepunkt aktiv ist." - RIPPLE_CONTROL_RECEIVER = ", da die Abschaltung per RSE-Kontakt an diesem Ladepunkt aktiv ist." + DIMMING = ", da die Dimmung die Ladeleistung bgrenzt." + DIMMING_VIA_DIRECT_CONTROL = ", da die Dimmung per Direkt-Steuerung die Ladeleistung begrenzt." + RIPPLE_CONTROL_RECEIVER = ", da der Ladepunkt per RSE-Kontakt abgeschaltet ist." diff --git a/packages/helpermodules/subdata.py b/packages/helpermodules/subdata.py index e4ab4eb6db..34f6dde40b 100644 --- a/packages/helpermodules/subdata.py +++ b/packages/helpermodules/subdata.py @@ -667,10 +667,9 @@ def process_io_topic(self, var: Dict[str, Union[io_device.IoActions, io_device.I if index in var.actions: var.actions.pop(index) else: - if index not in var.actions: - mod = importlib.import_module(f".io_actions.{payload['type']}.api", "modules") - config = dataclass_from_dict(mod.device_descriptor.configuration_factory, payload) - var.actions[f"io_action{index}"] = mod.create_action(config) + mod = importlib.import_module(f".io_actions.{payload['type']}.api", "modules") + config = dataclass_from_dict(mod.device_descriptor.configuration_factory, payload) + var.actions[f"io_action{index}"] = mod.create_action(config) except Exception: log.exception("Fehler im subdata-Modul") diff --git a/packages/modules/io_actions/ripple_control_receiver/api.py b/packages/modules/io_actions/ripple_control_receiver/api.py index 8d6a66ddd6..d7d959b724 100644 --- a/packages/modules/io_actions/ripple_control_receiver/api.py +++ b/packages/modules/io_actions/ripple_control_receiver/api.py @@ -10,12 +10,12 @@ def __init__(self, config: RippleControlReceiverSetup): def ripple_control_receiver(self, cp_num: int) -> None: if cp_num in self.config.config.cp_ids: if data.data.io_states[f"io_states{self.config.config.io_device}"].data.get.digital_input[ - self.config.config.digital_input]: - return 0 + self.config.config.digital_input] == self.config.config.blocking_state: + return True else: - return None + return False else: - return None + return False def create_action(config: RippleControlReceiverSetup): diff --git a/packages/modules/io_actions/ripple_control_receiver/config.py b/packages/modules/io_actions/ripple_control_receiver/config.py index cfac2ea605..c4291263f8 100644 --- a/packages/modules/io_actions/ripple_control_receiver/config.py +++ b/packages/modules/io_actions/ripple_control_receiver/config.py @@ -9,6 +9,7 @@ class RippleControlReceiverConfig: io_device: int = 0 digital_input: str = "0" cp_ids: List[int] = field(default_factory=empty_list_factory) + blocking_state: bool = False class RippleControlReceiverSetup: From fdb5fef2f6294a3767a88a9e752a136372dd2735 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Thu, 31 Oct 2024 08:33:30 +0100 Subject: [PATCH 09/75] pub configurable --- packages/control/io_device.py | 6 +- packages/helpermodules/subdata.py | 2 +- packages/helpermodules/update_config.py | 3 +- packages/modules/configuration.py | 56 ++++++++++++------- .../dimming/__init__.py | 0 .../dimming/api.py | 2 +- .../dimming/config.py | 2 +- .../dimming_direct_control/__init__.py | 0 .../dimming_direct_control/api.py | 2 +- .../dimming_direct_control/config.py | 2 +- .../ripple_control_receiver/__init__.py | 0 .../ripple_control_receiver/api.py | 2 +- .../ripple_control_receiver/config.py | 2 +- packages/modules/io_actions/groups.py | 7 ++- 14 files changed, 55 insertions(+), 31 deletions(-) rename packages/modules/io_actions/{ => controllable_consumers}/dimming/__init__.py (100%) rename packages/modules/io_actions/{ => controllable_consumers}/dimming/api.py (94%) rename packages/modules/io_actions/{ => controllable_consumers}/dimming/config.py (90%) rename packages/modules/io_actions/{ => controllable_consumers}/dimming_direct_control/__init__.py (100%) rename packages/modules/io_actions/{ => controllable_consumers}/dimming_direct_control/api.py (87%) rename packages/modules/io_actions/{ => controllable_consumers}/dimming_direct_control/config.py (89%) rename packages/modules/io_actions/{ => controllable_consumers}/ripple_control_receiver/__init__.py (100%) rename packages/modules/io_actions/{ => controllable_consumers}/ripple_control_receiver/api.py (87%) rename packages/modules/io_actions/{ => controllable_consumers}/ripple_control_receiver/config.py (91%) diff --git a/packages/control/io_device.py b/packages/control/io_device.py index 712aa435cc..b1eed1a792 100644 --- a/packages/control/io_device.py +++ b/packages/control/io_device.py @@ -1,8 +1,8 @@ from dataclasses import dataclass, field from typing import Dict, Union -from modules.io_actions.dimming.api import Dimming -from modules.io_actions.dimming_direct_control.api import DimmingDirectControl -from modules.io_actions.ripple_control_receiver.api import RippleControlReceiver +from modules.io_actions.controllable_consumers.dimming.api import Dimming +from modules.io_actions.controllable_consumers.dimming_direct_control.api import DimmingDirectControl +from modules.io_actions.controllable_consumers.ripple_control_receiver.api import RippleControlReceiver @dataclass diff --git a/packages/helpermodules/subdata.py b/packages/helpermodules/subdata.py index 34f6dde40b..be0d0f5765 100644 --- a/packages/helpermodules/subdata.py +++ b/packages/helpermodules/subdata.py @@ -667,7 +667,7 @@ def process_io_topic(self, var: Dict[str, Union[io_device.IoActions, io_device.I if index in var.actions: var.actions.pop(index) else: - mod = importlib.import_module(f".io_actions.{payload['type']}.api", "modules") + mod = importlib.import_module(f".io_actions.{payload['group']}.{payload['type']}.api", "modules") config = dataclass_from_dict(mod.device_descriptor.configuration_factory, payload) var.actions[f"io_action{index}"] = mod.create_action(config) except Exception: diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index eead81a5cc..c07073eb24 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -414,8 +414,9 @@ class UpdateConfig: "^openWB/system/configurable/devices_components$", "^openWB/system/configurable/electricity_tariffs$", "^openWB/system/configurable/display_themes$", + "^openWB/system/configurable/io_actions$", + "^openWB/system/configurable/io_devices$", "^openWB/system/configurable/monitoring$", - "^openWB/system/configurable/ripple_control_receivers$", "^openWB/system/configurable/soc_modules$", "^openWB/system/configurable/web_themes$", "^openWB/system/current_branch", diff --git a/packages/modules/configuration.py b/packages/modules/configuration.py index 625bfe3488..f132d05aed 100644 --- a/packages/modules/configuration.py +++ b/packages/modules/configuration.py @@ -5,6 +5,7 @@ import dataclass_utils from helpermodules.pub import Pub +from modules.io_actions.groups import READBALE_GROUP_NAME, ActionGroup log = logging.getLogger(__name__) @@ -18,7 +19,8 @@ def pub_configurable(): _pub_configurable_soc_modules() _pub_configurable_devices_components() _pub_configurable_chargepoints() - _pub_configurable_ripple_control_receivers() + _pub_configurable_io_devices() + _pub_configurable_io_actions() _pub_configurable_monitoring() @@ -307,37 +309,53 @@ def create_chargepoints_list(path_list): log.exception("Fehler im configuration-Modul") -def _pub_configurable_ripple_control_receivers() -> None: +def _pub_configurable_io_devices() -> None: try: - ripple_control_receivers = [] - path_list = Path(_get_packages_path()/"modules"/"ripple_control_receivers").glob('**/config.py') + io_devices = [] + path_list = Path(_get_packages_path()/"modules"/"io_devices").glob('**/config.py') for path in path_list: try: if path.name.endswith("_test.py"): # Tests überspringen continue dev_defaults = importlib.import_module( - f".ripple_control_receivers.{path.parts[-2]}.ripple_control_receiver", - "modules").device_descriptor.configuration_factory() - ripple_control_receivers.append({ + f".io_devices.{path.parts[-2]}.api", "modules").device_descriptor.configuration_factory() + io_devices.append({ "value": dev_defaults.type, "text": dev_defaults.name, "defaults": dataclass_utils.asdict(dev_defaults) }) except Exception: log.exception("Fehler im configuration-Modul") - ripple_control_receivers = sorted(ripple_control_receivers, key=lambda d: d['text'].upper()) - # "leeren" Eintrag an erster Stelle einfügen - ripple_control_receivers.insert(0, - { - "value": None, - "text": "- kein RSE Modul -", - "defaults": { - "type": None, - "configuration": {} - } - }) - Pub().pub("openWB/set/system/configurable/ripple_control_receivers", ripple_control_receivers) + io_devices = sorted(io_devices, key=lambda d: d['text'].upper()) + Pub().pub("openWB/set/system/configurable/io_devices", io_devices) + except Exception: + log.exception("Fehler im configuration-Modul") + + +def _pub_configurable_io_actions() -> None: + try: + action_groups = {} + for group in ActionGroup: + action_groups[group.value] = {"group_name": READBALE_GROUP_NAME[group], "actions": []} + path_list = Path(_get_packages_path()/"modules"/"io_actions"/group.value).glob('**/api.py') + for path in path_list: + try: + if path.name.endswith("_test.py"): + # Tests überspringen + continue + action_defaults = importlib.import_module(f".io_actions.{group.value}.{path.parts[-2]}.api", + "modules").device_descriptor.configuration_factory() + action_groups[group.value]["actions"].append({ + "value": action_defaults.type, + "text": action_defaults.name, + "defaults": dataclass_utils.asdict(action_defaults) + }) + except Exception: + log.exception(f"Fehler im configuration-Modul: groups: {path}") + action_groups[group.value]["actions"] = sorted( + action_groups[group.value]["actions"], key=lambda d: d['text'].upper()) + Pub().pub("openWB/set/system/configurable/io_actions", action_groups) except Exception: log.exception("Fehler im configuration-Modul") diff --git a/packages/modules/io_actions/dimming/__init__.py b/packages/modules/io_actions/controllable_consumers/dimming/__init__.py similarity index 100% rename from packages/modules/io_actions/dimming/__init__.py rename to packages/modules/io_actions/controllable_consumers/dimming/__init__.py diff --git a/packages/modules/io_actions/dimming/api.py b/packages/modules/io_actions/controllable_consumers/dimming/api.py similarity index 94% rename from packages/modules/io_actions/dimming/api.py rename to packages/modules/io_actions/controllable_consumers/dimming/api.py index 76d65f3eb6..d50dd987a7 100644 --- a/packages/modules/io_actions/dimming/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/api.py @@ -1,7 +1,7 @@ import logging from control import data from modules.common.abstract_device import DeviceDescriptor -from modules.io_actions.dimming.config import DimmingSetup +from modules.io_actions.controllable_consumers.dimming.config import DimmingSetup log = logging.getLogger(__name__) diff --git a/packages/modules/io_actions/dimming/config.py b/packages/modules/io_actions/controllable_consumers/dimming/config.py similarity index 90% rename from packages/modules/io_actions/dimming/config.py rename to packages/modules/io_actions/controllable_consumers/dimming/config.py index c18413ff32..39830309a0 100644 --- a/packages/modules/io_actions/dimming/config.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/config.py @@ -22,4 +22,4 @@ def __init__(self, self.id = id self.config = config or DimmingConfig() self.type = type - self.group = ActionGroup.CONTROLLABLE_CONSUMERS_ACTIONS.value + self.group = ActionGroup.CONTROLLABLE_CONSUMERS.value diff --git a/packages/modules/io_actions/dimming_direct_control/__init__.py b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/__init__.py similarity index 100% rename from packages/modules/io_actions/dimming_direct_control/__init__.py rename to packages/modules/io_actions/controllable_consumers/dimming_direct_control/__init__.py diff --git a/packages/modules/io_actions/dimming_direct_control/api.py b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py similarity index 87% rename from packages/modules/io_actions/dimming_direct_control/api.py rename to packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py index 13f3fe6ad1..34924ecbab 100644 --- a/packages/modules/io_actions/dimming_direct_control/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py @@ -1,6 +1,6 @@ from control import data from modules.common.abstract_device import DeviceDescriptor -from modules.io_actions.dimming_direct_control.config import DimmingDirectControlSetup +from modules.io_actions.controllable_consumers.dimming_direct_control.config import DimmingDirectControlSetup class DimmingDirectControl: diff --git a/packages/modules/io_actions/dimming_direct_control/config.py b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py similarity index 89% rename from packages/modules/io_actions/dimming_direct_control/config.py rename to packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py index b535c8016a..653604b502 100644 --- a/packages/modules/io_actions/dimming_direct_control/config.py +++ b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py @@ -19,4 +19,4 @@ def __init__(self, self.type = type self.id = id self.config = config or DimmingDirectControlConfig() - self.group = ActionGroup.CONTROLLABLE_CONSUMERS_ACTIONS.value + self.group = ActionGroup.CONTROLLABLE_CONSUMERS.value diff --git a/packages/modules/io_actions/ripple_control_receiver/__init__.py b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/__init__.py similarity index 100% rename from packages/modules/io_actions/ripple_control_receiver/__init__.py rename to packages/modules/io_actions/controllable_consumers/ripple_control_receiver/__init__.py diff --git a/packages/modules/io_actions/ripple_control_receiver/api.py b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py similarity index 87% rename from packages/modules/io_actions/ripple_control_receiver/api.py rename to packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py index d7d959b724..7cd7b8351d 100644 --- a/packages/modules/io_actions/ripple_control_receiver/api.py +++ b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py @@ -1,6 +1,6 @@ from control import data from modules.common.abstract_device import DeviceDescriptor -from modules.io_actions.ripple_control_receiver.config import RippleControlReceiverSetup +from modules.io_actions.controllable_consumers.ripple_control_receiver.config import RippleControlReceiverSetup class RippleControlReceiver: diff --git a/packages/modules/io_actions/ripple_control_receiver/config.py b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/config.py similarity index 91% rename from packages/modules/io_actions/ripple_control_receiver/config.py rename to packages/modules/io_actions/controllable_consumers/ripple_control_receiver/config.py index c4291263f8..f0ee38b6c5 100644 --- a/packages/modules/io_actions/ripple_control_receiver/config.py +++ b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/config.py @@ -22,4 +22,4 @@ def __init__(self, self.id = id self.config = config or RippleControlReceiverConfig() self.type = type - self.group = ActionGroup.CONTROLLABLE_CONSUMERS_ACTIONS.value + self.group = ActionGroup.CONTROLLABLE_CONSUMERS.value diff --git a/packages/modules/io_actions/groups.py b/packages/modules/io_actions/groups.py index 0c97f9e47b..6a22786d11 100644 --- a/packages/modules/io_actions/groups.py +++ b/packages/modules/io_actions/groups.py @@ -2,4 +2,9 @@ class ActionGroup(Enum): - CONTROLLABLE_CONSUMERS_ACTIONS = "controllable_consumers_actions" + CONTROLLABLE_CONSUMERS = "controllable_consumers" + + +READBALE_GROUP_NAME = { + ActionGroup.CONTROLLABLE_CONSUMERS: "Steuerbare Verbrauchseinrichtungen (§14a)" +} From 9196b1fdadfcbf062b30507c7c4ae7100603a12d Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Thu, 31 Oct 2024 09:18:27 +0100 Subject: [PATCH 10/75] upgrade config --- packages/helpermodules/update_config.py | 31 ++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index c07073eb24..2395053627 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -1,6 +1,7 @@ from dataclasses import asdict import datetime import glob +import importlib import json import logging from pathlib import Path @@ -41,6 +42,7 @@ from modules.common.component_type import ComponentType from modules.devices.sungrow.sungrow.version import Version from modules.display_themes.cards.config import CardsDisplayTheme +from modules.io_actions.controllable_consumers.ripple_control_receiver.config import RippleControlReceiverSetup from modules.web_themes.standard_legacy.config import StandardLegacyWebTheme from modules.devices.good_we.good_we.version import GoodWeVersion @@ -50,7 +52,7 @@ class UpdateConfig: - DATASTORE_VERSION = 75 + DATASTORE_VERSION = 76 valid_topic = [ "^openWB/bat/config/configured$", "^openWB/bat/config/power_limit_mode$", @@ -1964,3 +1966,30 @@ def upgrade(topic: str, payload) -> None: Pub().pub(topic, payload) self._loop_all_received_topics(upgrade) self.__update_topic("openWB/system/datastore_version", 75) + + def upgrade_datastore_75(self) -> None: + def upgrade(topic: str, payload) -> Optional[dict]: + if "openWB/general/ripple_control_receiver/module" == topic: + payload = decode_payload(payload) + if payload["value"] is not None: + dev = importlib.import_module(".io_devices."+payload["data"]["type"]+".api", "modules") + io_device = dev.device_descriptor.configuration_factory() + + action = RippleControlReceiverSetup() + for cp_topic in self.all_received_topics.keys(): + if re.search("openWB/chargepoint/[0-9]+/config", cp_topic) is not None: + action.config.cp_ids.append(get_index(cp_topic)) + action.config.io_device = 0 + + if payload["value"] == "dimm_kit": + io_device.config.ip_address = payload["configuration"]["ip_address"] + io_device.config.port = payload["configuration"]["port"] + io_device.config.modbus_id = payload["configuration"]["modbus_id"] + action.config.digital_input = 0 # ToDo beide Pins + elif payload["value"] == "gpio": + action.config.digital_input = 24 # ToDo beide Pins + + return {'openWB/system/io/0/config': dataclass_utils.asdict(io_device), + 'openWB/io/action/0/config': dataclass_utils.asdict(action)} + self._loop_all_received_topics(upgrade) + self.__update_topic("openWB/system/datastore_version", 76) From dd630cab54d9d3d286043c8dbb6c5ee47f8b97be Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 1 Nov 2024 10:54:10 +0100 Subject: [PATCH 11/75] rse pattern --- packages/control/io_device.py | 12 +++++++++--- packages/control/limiting_value.py | 3 ++- packages/control/loadmanagement.py | 17 ++++++++++++----- packages/helpermodules/update_config.py | 16 +++++++++++++--- .../ripple_control_receiver/api.py | 18 ++++++++++++------ .../ripple_control_receiver/config.py | 6 +++--- 6 files changed, 51 insertions(+), 21 deletions(-) diff --git a/packages/control/io_device.py b/packages/control/io_device.py index b1eed1a792..4eaedb8d27 100644 --- a/packages/control/io_device.py +++ b/packages/control/io_device.py @@ -1,5 +1,5 @@ from dataclasses import dataclass, field -from typing import Dict, Union +from typing import Dict, Optional, Union from modules.io_actions.controllable_consumers.dimming.api import Dimming from modules.io_actions.controllable_consumers.dimming_direct_control.api import DimmingDirectControl from modules.io_actions.controllable_consumers.ripple_control_receiver.api import RippleControlReceiver @@ -37,13 +37,15 @@ def setup(self): if isinstance(action, Dimming): action.setup() - def dimming_get_import_power_left(self, cp_num: int) -> float: + def dimming_get_import_power_left(self, cp_num: int) -> Optional[float]: for action in self.actions.values(): if isinstance(action, Dimming): if cp_num in action.config.config.cp_ids: return action.dimming_get_import_power_left(cp_num) + else: + return None - def dimming_set_import_power_left(self, cp_num: int, used_power: float) -> float: + def dimming_set_import_power_left(self, cp_num: int, used_power: float) -> Optional[float]: for action in self.actions.values(): if isinstance(action, Dimming): if cp_num in action.config.config.cp_ids: @@ -54,9 +56,13 @@ def dimming_via_direct_control(self, cp_num: int) -> float: if isinstance(action, DimmingDirectControl): if cp_num == action.config.config.cp_id: return action.dimming_via_direct_control(cp_num) + else: + return None def ripple_control_receiver(self, cp_num: int) -> float: for action in self.actions.values(): if isinstance(action, RippleControlReceiver): if cp_num in action.config.config.cp_ids: return action.ripple_control_receiver(cp_num) + else: + return 1 diff --git a/packages/control/limiting_value.py b/packages/control/limiting_value.py index 64b98c8229..d69e17112a 100644 --- a/packages/control/limiting_value.py +++ b/packages/control/limiting_value.py @@ -7,4 +7,5 @@ class LimitingValue(Enum): UNBALANCED_LOAD = ", da die maximale Schieflast an Zähler {} erreicht ist." DIMMING = ", da die Dimmung die Ladeleistung bgrenzt." DIMMING_VIA_DIRECT_CONTROL = ", da die Dimmung per Direkt-Steuerung die Ladeleistung begrenzt." - RIPPLE_CONTROL_RECEIVER = ", da der Ladepunkt per RSE-Kontakt abgeschaltet ist." + RIPPLE_CONTROL_RECEIVER = (", da der Ladepunkt durch den RSE-Kontakt auf {}% der konfigurierten Anschlussleistung " + "reduziert wird.") diff --git a/packages/control/loadmanagement.py b/packages/control/loadmanagement.py index 040221865a..83c4614aa3 100644 --- a/packages/control/loadmanagement.py +++ b/packages/control/loadmanagement.py @@ -143,10 +143,17 @@ def _limit_by_dimming(self, return available_currents, None def _limit_by_ripple_control_receiver(self, - missing_currents: List[float], + available_currents: List[float], cp: Chargepoint) -> Tuple[List[float], Optional[str]]: - if data.data.io_actions.ripple_control_receiver(cp.num): - log.debug("Abschaltung per RSE-Kontakt") - return [0]*3, LimitingValue.RIPPLE_CONTROL_RECEIVER.value + value = data.data.io_actions.ripple_control_receiver(cp.num) + if value != 1: + phases = 3-available_currents.count(0) + if phases > 1: + max_current = cp.template.data.max_current_single_phase + else: + max_current = cp.template.data.max_current_multi_phases + available_currents = [min(max_current*value, c) if c > 0 else 0 for c in available_currents] + log.debug(f"Reduzierung durch RSE-Kontakt auf {value*100}%, maximal {max_current*value}A") + return available_currents, LimitingValue.RIPPLE_CONTROL_RECEIVER.value.format(value*100) else: - return missing_currents, None + return available_currents, None diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index 2395053627..1a43bd8044 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -1971,7 +1971,7 @@ def upgrade_datastore_75(self) -> None: def upgrade(topic: str, payload) -> Optional[dict]: if "openWB/general/ripple_control_receiver/module" == topic: payload = decode_payload(payload) - if payload["value"] is not None: + if payload["type"] is not None: dev = importlib.import_module(".io_devices."+payload["data"]["type"]+".api", "modules") io_device = dev.device_descriptor.configuration_factory() @@ -1985,9 +1985,19 @@ def upgrade(topic: str, payload) -> Optional[dict]: io_device.config.ip_address = payload["configuration"]["ip_address"] io_device.config.port = payload["configuration"]["port"] io_device.config.modbus_id = payload["configuration"]["modbus_id"] - action.config.digital_input = 0 # ToDo beide Pins + # Wenn mindestens ein Kontakt offen ist, wird die Ladung gesperrt. Wenn beide Kontakte + # geschlossen sind, darf geladen werden. + action.config.input_pattern = [{"value": 0, "input_matrix": {"0": False, "1": False}}, + {"value": 0, "input_matrix": {"0": False, "1": True}}, + {"value": 0, "input_matrix": {"0": True, "1": False}}, + {"value": 1, "input_matrix": {"0": True, "1": True}}] elif payload["value"] == "gpio": - action.config.digital_input = 24 # ToDo beide Pins + # Wenn mindestens ein Kontakt geschlossen ist, wird die Ladung gesperrt. Wenn beide Kontakt + # offen sind, darf geladen werden. + action.config.input_pattern = [{"value": 1, "input_matrix": {"21": False, "24": False}}, + {"value": 0, "input_matrix": {"21": False, "24": True}}, + {"value": 0, "input_matrix": {"21": True, "24": False}}, + {"value": 0, "input_matrix": {"21": True, "24": True}}] return {'openWB/system/io/0/config': dataclass_utils.asdict(io_device), 'openWB/io/action/0/config': dataclass_utils.asdict(action)} diff --git a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py index 7cd7b8351d..f19b1a0bce 100644 --- a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py +++ b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py @@ -7,15 +7,21 @@ class RippleControlReceiver: def __init__(self, config: RippleControlReceiverSetup): self.config = config - def ripple_control_receiver(self, cp_num: int) -> None: + def ripple_control_receiver(self, cp_num: int) -> float: if cp_num in self.config.config.cp_ids: - if data.data.io_states[f"io_states{self.config.config.io_device}"].data.get.digital_input[ - self.config.config.digital_input] == self.config.config.blocking_state: - return True + for pattern in self.config.config.input_pattern: + for digital_input, value in pattern["input_matrix"].items(): + if data.data.io_states[f"io_states{self.config.config.io_device}"].data.get.digital_input[ + digital_input] != value: + break + else: + # Alle digitalen Eingänge entsprechen dem Pattern + return pattern["value"] else: - return False + # Zustand entpsricht keinem Pattern + return 0 else: - return False + return 1 def create_action(config: RippleControlReceiverSetup): diff --git a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/config.py b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/config.py index f0ee38b6c5..c02f38040d 100644 --- a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/config.py +++ b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/config.py @@ -1,5 +1,5 @@ from dataclasses import dataclass, field -from typing import List +from typing import Dict, List from dataclass_utils.factories import empty_list_factory from modules.io_actions.groups import ActionGroup @@ -7,9 +7,9 @@ @dataclass class RippleControlReceiverConfig: io_device: int = 0 - digital_input: str = "0" + # [{"value": 0.5, "input_matrix": {"1": False, "2": True}}] + input_pattern: List[Dict] = field(default_factory=empty_list_factory) cp_ids: List[int] = field(default_factory=empty_list_factory) - blocking_state: bool = False class RippleControlReceiverSetup: From 1b5d30a699d0082d5b15f16bdb2be90bc3face2b Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 1 Nov 2024 12:04:47 +0100 Subject: [PATCH 12/75] Wiki --- "docs/IO-Ger\303\244te & -Aktionen.md" | 28 +++++++++++++++++++ ...brauchseinrichtungen nach \302\247 14a.md" | 12 ++++++++ docs/_Sidebar.md | 4 ++- packages/modules/io_devices/add_on/api.py | 2 +- 4 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 "docs/IO-Ger\303\244te & -Aktionen.md" create mode 100644 "docs/Steuerbare Verbrauchseinrichtungen nach \302\247 14a.md" diff --git "a/docs/IO-Ger\303\244te & -Aktionen.md" "b/docs/IO-Ger\303\244te & -Aktionen.md" new file mode 100644 index 0000000000..b63e88b001 --- /dev/null +++ "b/docs/IO-Ger\303\244te & -Aktionen.md" @@ -0,0 +1,28 @@ +### IO-Geräte +IO/GPIO sind analoge und digitale Ein- und Ausgänge, die man meist als Pin- oder Buchsenleiste auf der Platine findet. openWB software2 kann analoge und digitale Eingänge auslesen und analoge sowie digitale Ausgänge schalten. Die Ein- und Ausgänge befinden sich auf dem konfigurierten IO-Gerät, wie zB dem Dimm- & Control-Kit. Um festzulegen, was mit den Informationen aus den Eingängen gemacht werden soll oder welche Ausgänge geschaltet werden sollen, konfigurierst Du IO-Aktionen. Bei der IO-Aktion gibst Du an, welcher Ein- oder Ausgang dafür verwendet werden soll und ggf weiter Aktions-spezifische Einstellungen. + +#### Dimm-& Control-Kit +Das Dimm-& Control-Kit besitzt acht analoge Eingänge (AI1-AI8), acht digitale Eingänge (DI1-DI8) und achte digitale Ausgänge (DO1-DO8). Bei den Ausgängen handelt es sich um potentialfreie Relais-Ausgänge mit 5A@28VDC/250VAC. + +#### openWB series2-Modell mit AddOn-Platine +Die AddOn-Platine stellt 7 Eingänge und 3 Ausgänge zur Verfügung. WICHTIG: In openWB software 1.9 waren den IOs feste Aktionen zugeordnet, die auch der Platine beschriftet sind. Diese Zuordnung ist in software2 NICHT vorgegeben. Zur einfachen Zuordnung der Pins hier eine Übersicht: +| Pin | Beschriftung | +|---------|---------| +| Eingang 21 | RSE 2 | +| Eingang 24 | RSE 1 | +| Eingang 31 | Taster 3 PV | +| Eingang 32 | Taster 1 Sofortladen | +| Eingang 33 | Taster 4 Stop | +| Eingang 36 | Taster 2 Min+PV | +| Eingang 40 | Taster 5 Standby | +| Ausgang 7 | LED 3 | +| Ausgang 16 | LED 2 | +| Ausgang 18 | LED 1 | + + +### IO-Aktionen + +#### Steuerbare Verbrauchseinrichtungen: Dimmen, Dimmung per Direkt-Steuerung, RSE +Ausführliche Informationen findest Du im gesonderten Wiki-Beitrag [Steuerbare Verbrauchseinrichtungen](https://github.com/openWB/core/wiki/Steuerbare-Verbrauchseinrichtungen) + +Weitere IO-Aktionen sind in Arbeit. \ No newline at end of file diff --git "a/docs/Steuerbare Verbrauchseinrichtungen nach \302\247 14a.md" "b/docs/Steuerbare Verbrauchseinrichtungen nach \302\247 14a.md" new file mode 100644 index 0000000000..5183e76bed --- /dev/null +++ "b/docs/Steuerbare Verbrauchseinrichtungen nach \302\247 14a.md" @@ -0,0 +1,12 @@ +Das Gesetz sieht verschiedene Möglichkeiten für steuerbare Verbrauchseinrichtungen vor. Für jede steuerbare Verbrauchseinrichtung kann eine andere Option angemeldet werden. Bei der Konfiguration muss deshalb auch immer der/die Ladepunkte angegeben werden, für die die IO-Aktion angewendet werden soll. + +### Dimmen +Beim Dimmen wird eine Mindestleistung für alle steuerbaren Verbrauchseinrichtungen nach einer vorgegebene Formel ermittelt. Das Ergebnis dieser Formel muss bei der IO-Aktion `Dimmen` in der Einstellung `Mindestleistung` eingetragen werden. ACHTUNG: Die openWB kann aktuell nur die Ladepunkte berücksichtigen. Sind noch weitere steuerbare Verbraucher angemeldet, muss dies bei der Ermittlung der Mindestleistung berücksichtigt werden. Die korrekte Ermitllung der Mindestleistung obliegt nicht der openWB. +Vorhandener Überschuss kann zusätzlich zur Mindestleistung verwendet werden. + +### Dimmung per Direkt-Steuerung +Bei der Dimmung per Direkt-Steuerung wird jede steuerbare Verbrauchseinrichtung separat angesteuert und ihr Leistungsbezug auf 4,2 Kilowatt gedimmt. +Pro steuerbarer Verbrauchseinrichtung muss eine IO-Aktion konfiguriert werden und dort der Ladepunkt und der zugehörige Eingang angegeben werden. + +### Rundsteuer-Empfänger-Kontakt (RSE) +Für den RSE-Kontakt kann ein Muster aus verschiedenen Eingängen und ein Prozentwert, auf den die Anschlussleistung begrenzt wird, angegeben werden. \ No newline at end of file diff --git a/docs/_Sidebar.md b/docs/_Sidebar.md index 0cce569b42..2c3f03fb16 100644 --- a/docs/_Sidebar.md +++ b/docs/_Sidebar.md @@ -13,9 +13,11 @@ * Oberfläche * [Anzeige - Steuerung](https://github.com/openWB/core/wiki/Anzeige-Steuerung) * Features + * [Identifikation](https://github.com/openWB/core/wiki/Identifikation) + * [IO-Geräte & -Aktionen](https://github.com/openWB/core/wiki/IO-Geräte-&--Aktionen) * [OCPP](https://github.com/openWB/core/wiki/OCPP) * [Strompreisbasiertes Laden](https://github.com/openWB/core/wiki/Strompreisbasiertes-Laden) - * [Identifikation](https://github.com/openWB/core/wiki/Identifikation) + * [Steuerbare Verbrauchseinrichtungen](https://github.com/openWB/core/wiki/Steuerbare-Verbrauchseinrichtungen-nach-§14a) * Szenarien * [Typische Anwendungsfälle](https://github.com/openWB/core/wiki/Typische-Anwendungsfälle) * [Hybrid-System aus Wechselrichter und Speicher](https://github.com/openWB/core/wiki/Hybrid-System-aus-Wechselrichter-und-Speicher) diff --git a/packages/modules/io_devices/add_on/api.py b/packages/modules/io_devices/add_on/api.py index 4111567908..eb69b4d5eb 100644 --- a/packages/modules/io_devices/add_on/api.py +++ b/packages/modules/io_devices/add_on/api.py @@ -46,7 +46,7 @@ def write(digital_output: Dict[int, int]): GPIO.setup(33, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Taster 4 Stop GPIO.setup(36, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Taster 2 Min+PV GPIO.setup(40, GPIO.IN, pull_up_down=GPIO.PUD_UP) # TAster 5 Standby - GPIO.setup(7, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.digital_output[7] else GPIO.PUD_DOWN) # LED 3 + GPIO.setup(7, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.digital_output[7] else GPIO.PUD_DOWN) # LED 3 GPIO.setup(16, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.digital_output[16] else GPIO.PUD_DOWN) # LED 2 GPIO.setup(18, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.digital_output[18] else GPIO.PUD_DOWN) # LED 1 From cf85fb4b1233a09cb974317685067a7ee7f56000 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 1 Nov 2024 12:10:39 +0100 Subject: [PATCH 13/75] fix upgrade --- packages/helpermodules/update_config.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index 1a43bd8044..a81156779f 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -1972,7 +1972,10 @@ def upgrade(topic: str, payload) -> Optional[dict]: if "openWB/general/ripple_control_receiver/module" == topic: payload = decode_payload(payload) if payload["type"] is not None: - dev = importlib.import_module(".io_devices."+payload["data"]["type"]+".api", "modules") + if payload["type"] == "gpio": + dev = importlib.import_module(".io_devices.add_on.api", "modules") + else: + dev = importlib.import_module(".io_devices."+payload["type"], "modules") io_device = dev.device_descriptor.configuration_factory() action = RippleControlReceiverSetup() @@ -1981,7 +1984,7 @@ def upgrade(topic: str, payload) -> Optional[dict]: action.config.cp_ids.append(get_index(cp_topic)) action.config.io_device = 0 - if payload["value"] == "dimm_kit": + if payload["type"] == "dimm_kit": io_device.config.ip_address = payload["configuration"]["ip_address"] io_device.config.port = payload["configuration"]["port"] io_device.config.modbus_id = payload["configuration"]["modbus_id"] @@ -1991,7 +1994,7 @@ def upgrade(topic: str, payload) -> Optional[dict]: {"value": 0, "input_matrix": {"0": False, "1": True}}, {"value": 0, "input_matrix": {"0": True, "1": False}}, {"value": 1, "input_matrix": {"0": True, "1": True}}] - elif payload["value"] == "gpio": + elif payload["type"] == "gpio": # Wenn mindestens ein Kontakt geschlossen ist, wird die Ladung gesperrt. Wenn beide Kontakt # offen sind, darf geladen werden. action.config.input_pattern = [{"value": 1, "input_matrix": {"21": False, "24": False}}, From c83c75d7e0ae9c3bcc8d0ef0db9dc08ed0f5d53e Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 1 Nov 2024 12:18:37 +0100 Subject: [PATCH 14/75] naming --- packages/control/io_device.py | 8 ++--- packages/helpermodules/update_config.py | 30 +++++++++---------- .../controllable_consumers/dimming/api.py | 10 +++---- .../controllable_consumers/dimming/config.py | 4 +-- .../dimming_direct_control/api.py | 6 ++-- .../dimming_direct_control/config.py | 4 +-- .../ripple_control_receiver/api.py | 6 ++-- .../ripple_control_receiver/config.py | 4 +-- 8 files changed, 36 insertions(+), 36 deletions(-) diff --git a/packages/control/io_device.py b/packages/control/io_device.py index 4eaedb8d27..43938f2852 100644 --- a/packages/control/io_device.py +++ b/packages/control/io_device.py @@ -40,7 +40,7 @@ def setup(self): def dimming_get_import_power_left(self, cp_num: int) -> Optional[float]: for action in self.actions.values(): if isinstance(action, Dimming): - if cp_num in action.config.config.cp_ids: + if cp_num in action.config.configuration.cp_ids: return action.dimming_get_import_power_left(cp_num) else: return None @@ -48,13 +48,13 @@ def dimming_get_import_power_left(self, cp_num: int) -> Optional[float]: def dimming_set_import_power_left(self, cp_num: int, used_power: float) -> Optional[float]: for action in self.actions.values(): if isinstance(action, Dimming): - if cp_num in action.config.config.cp_ids: + if cp_num in action.config.configuration.cp_ids: return action.dimming_set_import_power_left(cp_num, used_power) def dimming_via_direct_control(self, cp_num: int) -> float: for action in self.actions.values(): if isinstance(action, DimmingDirectControl): - if cp_num == action.config.config.cp_id: + if cp_num == action.config.configuration.cp_id: return action.dimming_via_direct_control(cp_num) else: return None @@ -62,7 +62,7 @@ def dimming_via_direct_control(self, cp_num: int) -> float: def ripple_control_receiver(self, cp_num: int) -> float: for action in self.actions.values(): if isinstance(action, RippleControlReceiver): - if cp_num in action.config.config.cp_ids: + if cp_num in action.config.configuration.cp_ids: return action.ripple_control_receiver(cp_num) else: return 1 diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index a81156779f..709edf530a 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -510,7 +510,7 @@ class UpdateConfig: ("openWB/general/prices/grid", Prices().grid), ("openWB/general/prices/pv", Prices().pv), ("openWB/general/range_unit", "km"), - ("openWB/general/ripple_control_receiver/module", NO_MODULE), + ("openWB/general/ripple_control_receiver/module", NO_MODULE), # obsolet ("openWB/general/web_theme", dataclass_utils.asdict(StandardLegacyWebTheme())), ("openWB/graph/config/duration", 120), ("openWB/internal_chargepoint/0/data/parent_cp", None), @@ -1975,32 +1975,32 @@ def upgrade(topic: str, payload) -> Optional[dict]: if payload["type"] == "gpio": dev = importlib.import_module(".io_devices.add_on.api", "modules") else: - dev = importlib.import_module(".io_devices."+payload["type"], "modules") + dev = importlib.import_module(".io_devices."+payload["type"]+".api", "modules") io_device = dev.device_descriptor.configuration_factory() action = RippleControlReceiverSetup() for cp_topic in self.all_received_topics.keys(): if re.search("openWB/chargepoint/[0-9]+/config", cp_topic) is not None: - action.config.cp_ids.append(get_index(cp_topic)) - action.config.io_device = 0 + action.configuration.cp_ids.append(get_index(cp_topic)) + action.configuration.io_device = 0 if payload["type"] == "dimm_kit": - io_device.config.ip_address = payload["configuration"]["ip_address"] - io_device.config.port = payload["configuration"]["port"] - io_device.config.modbus_id = payload["configuration"]["modbus_id"] + io_device.configuration.ip_address = payload["configuration"]["ip_address"] + io_device.configuration.port = payload["configuration"]["port"] + io_device.configuration.modbus_id = payload["configuration"]["modbus_id"] # Wenn mindestens ein Kontakt offen ist, wird die Ladung gesperrt. Wenn beide Kontakte # geschlossen sind, darf geladen werden. - action.config.input_pattern = [{"value": 0, "input_matrix": {"0": False, "1": False}}, - {"value": 0, "input_matrix": {"0": False, "1": True}}, - {"value": 0, "input_matrix": {"0": True, "1": False}}, - {"value": 1, "input_matrix": {"0": True, "1": True}}] + action.configuration.input_pattern = [{"value": 0, "input_matrix": {"0": False, "1": False}}, + {"value": 0, "input_matrix": {"0": False, "1": True}}, + {"value": 0, "input_matrix": {"0": True, "1": False}}, + {"value": 1, "input_matrix": {"0": True, "1": True}}] elif payload["type"] == "gpio": # Wenn mindestens ein Kontakt geschlossen ist, wird die Ladung gesperrt. Wenn beide Kontakt # offen sind, darf geladen werden. - action.config.input_pattern = [{"value": 1, "input_matrix": {"21": False, "24": False}}, - {"value": 0, "input_matrix": {"21": False, "24": True}}, - {"value": 0, "input_matrix": {"21": True, "24": False}}, - {"value": 0, "input_matrix": {"21": True, "24": True}}] + action.configuration.input_pattern = [{"value": 1, "input_matrix": {"21": False, "24": False}}, + {"value": 0, "input_matrix": {"21": False, "24": True}}, + {"value": 0, "input_matrix": {"21": True, "24": False}}, + {"value": 0, "input_matrix": {"21": True, "24": True}}] return {'openWB/system/io/0/config': dataclass_utils.asdict(io_device), 'openWB/io/action/0/config': dataclass_utils.asdict(action)} diff --git a/packages/modules/io_actions/controllable_consumers/dimming/api.py b/packages/modules/io_actions/controllable_consumers/dimming/api.py index d50dd987a7..a5a0c718b7 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/api.py @@ -12,14 +12,14 @@ def __init__(self, config: DimmingSetup): self.import_power_left = None def setup(self) -> None: - self.import_power_left = self.config.config.max_import_power + \ + self.import_power_left = self.config.configuration.max_import_power + \ data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()].calc_raw_surplus() log.debug(f"Dimmen: {self.import_power_left}W inkl Überschuss") def dimming_get_import_power_left(self, cp_num: int) -> None: - if cp_num in self.config.config.cp_ids: - if data.data.io_states[f"io_states{self.config.config.io_device}"].data.get.digital_input[ - self.config.config.digital_input]: + if cp_num in self.config.configuration.cp_ids: + if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ + self.config.configuration.digital_input]: return self.import_power_left else: return None @@ -27,7 +27,7 @@ def dimming_get_import_power_left(self, cp_num: int) -> None: return None def dimming_set_import_power_left(self, cp_num: int, used_power: float) -> None: - if cp_num in self.config.config.cp_ids: + if cp_num in self.config.configuration.cp_ids: self.import_power_left -= used_power log.debug(f"verbleibende Dimm-Leistung: {self.import_power_left}W inkl Überschuss") return self.import_power_left diff --git a/packages/modules/io_actions/controllable_consumers/dimming/config.py b/packages/modules/io_actions/controllable_consumers/dimming/config.py index 39830309a0..7851e8a5de 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming/config.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/config.py @@ -17,9 +17,9 @@ def __init__(self, name: str = "Dimmen", type: str = "dimming", id: int = 0, - config: DimmingConfig = None): + configuration: DimmingConfig = None): self.name = name self.id = id - self.config = config or DimmingConfig() + self.configuration = configuration or DimmingConfig() self.type = type self.group = ActionGroup.CONTROLLABLE_CONSUMERS.value diff --git a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py index 34924ecbab..d10fb7fe71 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py @@ -8,9 +8,9 @@ def __init__(self, config: DimmingDirectControlSetup): self.config = config def dimming_via_direct_control(self, cp_num: int) -> None: - if cp_num == self.config.config.cp_id: - if data.data.io_states[f"io_states{self.config.config.io_device}"].data.get.digital_input[ - self.config.config.digital_input]: + if cp_num == self.config.configuration.cp_id: + if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ + self.config.configuration.digital_input]: return 4200 else: return None diff --git a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py index 653604b502..f434b7c98d 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py +++ b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py @@ -14,9 +14,9 @@ def __init__(self, name: str = "Dimmen per Direktsteuerung", type: str = "dimming_direct_control", id: int = 0, - config: DimmingDirectControlConfig = None): + configuration: DimmingDirectControlConfig = None): self.name = name self.type = type self.id = id - self.config = config or DimmingDirectControlConfig() + self.configuration = configuration or DimmingDirectControlConfig() self.group = ActionGroup.CONTROLLABLE_CONSUMERS.value diff --git a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py index f19b1a0bce..22a1f7a5ce 100644 --- a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py +++ b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py @@ -8,10 +8,10 @@ def __init__(self, config: RippleControlReceiverSetup): self.config = config def ripple_control_receiver(self, cp_num: int) -> float: - if cp_num in self.config.config.cp_ids: - for pattern in self.config.config.input_pattern: + if cp_num in self.config.configuration.cp_ids: + for pattern in self.config.configuration.input_pattern: for digital_input, value in pattern["input_matrix"].items(): - if data.data.io_states[f"io_states{self.config.config.io_device}"].data.get.digital_input[ + if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ digital_input] != value: break else: diff --git a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/config.py b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/config.py index c02f38040d..5b1c507e0c 100644 --- a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/config.py +++ b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/config.py @@ -17,9 +17,9 @@ def __init__(self, name: str = "RSE-Kontakt", type: str = "ripple_control_receiver", id: int = 0, - config: RippleControlReceiverConfig = None): + configuration: RippleControlReceiverConfig = None): self.name = name self.id = id - self.config = config or RippleControlReceiverConfig() + self.configuration = configuration or RippleControlReceiverConfig() self.type = type self.group = ActionGroup.CONTROLLABLE_CONSUMERS.value From 4b977461c8e7fa16851afbdb5580c20ac415c3ec Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 1 Nov 2024 12:44:10 +0100 Subject: [PATCH 15/75] fix rse --- packages/control/loadmanagement.py | 5 ++++- packages/helpermodules/update_config.py | 1 - 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/control/loadmanagement.py b/packages/control/loadmanagement.py index 83c4614aa3..1ad39dccbe 100644 --- a/packages/control/loadmanagement.py +++ b/packages/control/loadmanagement.py @@ -152,7 +152,10 @@ def _limit_by_ripple_control_receiver(self, max_current = cp.template.data.max_current_single_phase else: max_current = cp.template.data.max_current_multi_phases - available_currents = [min(max_current*value, c) if c > 0 else 0 for c in available_currents] + # target_current ist das Ergebnis der letzten Iteration. Die Differenz der begrenzten Anschlussleistung und + # der Sollstrom der letzten Iteration dürfen daher nicht größer sein als der aktuell fehlende Strom. + available_currents = [min(max_current*value - cp.data.set.target_current, c) + if c > 0 else 0 for c in available_currents] log.debug(f"Reduzierung durch RSE-Kontakt auf {value*100}%, maximal {max_current*value}A") return available_currents, LimitingValue.RIPPLE_CONTROL_RECEIVER.value.format(value*100) else: diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index 709edf530a..38a0d5e4e3 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -510,7 +510,6 @@ class UpdateConfig: ("openWB/general/prices/grid", Prices().grid), ("openWB/general/prices/pv", Prices().pv), ("openWB/general/range_unit", "km"), - ("openWB/general/ripple_control_receiver/module", NO_MODULE), # obsolet ("openWB/general/web_theme", dataclass_utils.asdict(StandardLegacyWebTheme())), ("openWB/graph/config/duration", 120), ("openWB/internal_chargepoint/0/data/parent_cp", None), From 6306ae02126098a231c6a3bcb7eff6828f2d380c Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 1 Nov 2024 14:53:14 +0100 Subject: [PATCH 16/75] error handling --- packages/control/io_device.py | 10 +++++ .../data_migration/data_migration.py | 42 +++++++++++++++++-- packages/helpermodules/setdata.py | 18 +++----- packages/helpermodules/update_config.py | 6 --- packages/modules/common/component_type.py | 4 +- packages/modules/common/configurable_io.py | 2 +- packages/modules/common/fault_state.py | 2 - packages/modules/io_devices/dimm_kit/api.py | 2 +- 8 files changed, 60 insertions(+), 26 deletions(-) diff --git a/packages/control/io_device.py b/packages/control/io_device.py index 43938f2852..d3ad04a14a 100644 --- a/packages/control/io_device.py +++ b/packages/control/io_device.py @@ -1,5 +1,7 @@ from dataclasses import dataclass, field from typing import Dict, Optional, Union +from control import data +from helpermodules.constants import NO_ERROR from modules.io_actions.controllable_consumers.dimming.api import Dimming from modules.io_actions.controllable_consumers.dimming_direct_control.api import DimmingDirectControl from modules.io_actions.controllable_consumers.ripple_control_receiver.api import RippleControlReceiver @@ -11,6 +13,8 @@ class Get: digital_input: Dict[int, bool] = None analog_output: Dict[int, float] = None digital_output: Dict[int, bool] = None + fault_str: str = NO_ERROR + fault_state: int = 0 def get_factory(): @@ -40,6 +44,8 @@ def setup(self): def dimming_get_import_power_left(self, cp_num: int) -> Optional[float]: for action in self.actions.values(): if isinstance(action, Dimming): + if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.fault_state == 2: + return 0 if cp_num in action.config.configuration.cp_ids: return action.dimming_get_import_power_left(cp_num) else: @@ -54,6 +60,8 @@ def dimming_set_import_power_left(self, cp_num: int, used_power: float) -> Optio def dimming_via_direct_control(self, cp_num: int) -> float: for action in self.actions.values(): if isinstance(action, DimmingDirectControl): + if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.fault_state == 2: + return 0 if cp_num == action.config.configuration.cp_id: return action.dimming_via_direct_control(cp_num) else: @@ -61,6 +69,8 @@ def dimming_via_direct_control(self, cp_num: int) -> float: def ripple_control_receiver(self, cp_num: int) -> float: for action in self.actions.values(): + if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.fault_state == 2: + return 0 if isinstance(action, RippleControlReceiver): if cp_num in action.config.configuration.cp_ids: return action.ripple_control_receiver(cp_num) diff --git a/packages/helpermodules/data_migration/data_migration.py b/packages/helpermodules/data_migration/data_migration.py index d91f3ed0ba..ccaa8ca87b 100644 --- a/packages/helpermodules/data_migration/data_migration.py +++ b/packages/helpermodules/data_migration/data_migration.py @@ -15,22 +15,29 @@ import pathlib import shutil import tarfile +from paho.mqtt.client import Client as MqttClient, MQTTMessage from threading import Thread from typing import Callable, Dict, List, Optional, Union from control import data from control.ev import ev from dataclass_utils import dataclass_from_dict +import dataclass_utils +from helpermodules.broker import InternalBrokerClient from helpermodules.data_migration.id_mapping import MapId from helpermodules.hardware_configuration import update_hardware_configuration from helpermodules.measurement_logging.process_log import get_totals, string_to_float, string_to_int from helpermodules.measurement_logging.write_log import LegacySmartHomeLogData, get_names from helpermodules.timecheck import convert_timedelta_to_time_string, get_difference from helpermodules.utils import joined_thread_handler +from helpermodules.utils.topic_parser import get_index from helpermodules.pub import Pub from helpermodules.utils.json_file_handler import write_and_check +from modules.io_actions.controllable_consumers.ripple_control_receiver.config import RippleControlReceiverSetup +from modules.io_devices.add_on.config import AddOn import re + log = logging.getLogger("data_migration") @@ -566,9 +573,20 @@ def _move_cloud_data(self) -> None: {"command": "connectCloud", "data": {"username": cloud_user, "password": cloud_pw, "partner": 0}}) def _move_rse(self) -> None: - pass - # if bool(self._get_openwb_conf_value("rseenabled", "0")): - # Pub().pub("openWB/set/general/ripple_control_receiver/module", dataclass_utils.asdict(GpioRcr())) + if bool(self._get_openwb_conf_value("rseenabled", "0")): + action = RippleControlReceiverSetup() + for cp_topic in self.all_received_topics.keys(): + if re.search("openWB/chargepoint/[0-9]+/config", cp_topic) is not None: + action.configuration.cp_ids.append(get_index(cp_topic)) + action.configuration.io_device = 0 + # Wenn mindestens ein Kontakt geschlossen ist, wird die Ladung gesperrt. Wenn beide Kontakt + # offen sind, darf geladen werden. + action.configuration.input_pattern = [{"value": 1, "input_matrix": {"21": False, "24": False}}, + {"value": 0, "input_matrix": {"21": False, "24": True}}, + {"value": 0, "input_matrix": {"21": True, "24": False}}, + {"value": 0, "input_matrix": {"21": True, "24": True}}] + Pub().pub('openWB/system/io/0/config', dataclass_utils.asdict(AddOn())) + Pub().pub('openWB/io/action/0/config', dataclass_utils.asdict(action)) def _move_max_c_socket(self): try: @@ -620,3 +638,21 @@ def merge_list_of_records(self, key): reduce(self._merge_records_by(key), records) for _, records in groupby(sorted(lst, key=key_prop), key_prop) ] + + +class BrokerCphargepoints: + def get_configured_cp_ids(self) -> List: + self.all_received_topics = {} + InternalBrokerClient("update-config", self.on_connect, self.on_message).start_finite_loop() + cp_ids = [] + for topic, payload in self.all_received_topics.items(): + cp_ids.append(get_index(topic)) + return cp_ids + + def on_connect(self, client: MqttClient, userdata, flags: dict, rc: int): + """ connect to broker and subscribe to set topics + """ + client.subscribe("openWB/chargepoint/+/config", 2) + + def on_message(self, client: MqttClient, userdata, msg: MQTTMessage): + self.all_received_topics.update({msg.topic: msg.payload}) diff --git a/packages/helpermodules/setdata.py b/packages/helpermodules/setdata.py index a310fb1e84..d4d92c8be1 100644 --- a/packages/helpermodules/setdata.py +++ b/packages/helpermodules/setdata.py @@ -824,19 +824,9 @@ def process_general_topic(self, msg: mqtt.MQTTMessage): "openWB/set/general/prices/grid" in msg.topic or "openWB/set/general/prices/pv" in msg.topic): self._validate_value(msg, float, [(0, 99.99)]) - elif ("openWB/set/general/range_unit" in msg.topic or - "openWB/set/general/ripple_control_receiver/override_reference" in msg.topic): + elif "openWB/set/general/range_unit" in msg.topic: self._validate_value(msg, str) - elif "openWB/set/general/ripple_control_receiver/configured" in msg.topic: - self._validate_value(msg, bool) - elif "openWB/set/general/ripple_control_receiver/get/override_value" in msg.topic: - self._validate_value(msg, float) - elif "openWB/set/general/ripple_control_receiver/get/fault_state" in msg.topic: - self._validate_value(msg, int, [(0, 2)]) - elif "openWB/set/general/ripple_control_receiver/get/fault_str" in msg.topic: - self._validate_value(msg, str) - elif ("openWB/set/general/web_theme" in msg.topic or - "openWB/set/general/ripple_control_receiver/module" in msg.topic): + elif "openWB/set/general/web_theme" in msg.topic: self._validate_value(msg, "json") elif ("openWB/set/general/charge_log_data_config" in msg.topic): self._validate_value(msg, "json") @@ -862,6 +852,10 @@ def process_io_topic(self, msg: mqtt.MQTTMessage): "get/analog_input" in msg.topic or "get/analog_output" in msg.topic): self._validate_value(msg, "json") + elif "get/fault_state" in msg.topic: + self._validate_value(msg, int, [(0, 2)]) + elif "get/fault_str" in msg.topic: + self._validate_value(msg, str) else: self.__unknown_topic(msg) except Exception: diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index 38a0d5e4e3..1efd7566d5 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -201,12 +201,6 @@ class UpdateConfig: "^openWB/general/notifications/stop_charging$", "^openWB/general/notifications/plug$", "^openWB/general/notifications/smart_home$", - "^openWB/general/ripple_control_receiver/configured$", - "^openWB/general/ripple_control_receiver/module$", - "^openWB/general/ripple_control_receiver/get/fault_state$", - "^openWB/general/ripple_control_receiver/get/fault_str$", - "^openWB/general/ripple_control_receiver/get/override_value$", - "^openWB/general/ripple_control_receiver/override_reference$", "^openWB/general/chargemode_config/unbalanced_load_limit$", "^openWB/general/chargemode_config/unbalanced_load$", "^openWB/general/chargemode_config/pv_charging/bat_mode$", diff --git a/packages/modules/common/component_type.py b/packages/modules/common/component_type.py index 83a9761d3f..d7a3b4b4bc 100644 --- a/packages/modules/common/component_type.py +++ b/packages/modules/common/component_type.py @@ -9,7 +9,7 @@ class ComponentType(Enum): COUNTER = "counter" ELECTRICITY_TARIFF = "electricity_tariff" INVERTER = "inverter" - IO = "ripple_control_receiver" + IO = "io" def special_to_general_type_mapping(component_type: str) -> ComponentType: @@ -34,6 +34,8 @@ def type_to_topic_mapping(component_type: str) -> str: return "pv" elif ComponentType.ELECTRICITY_TARIFF.value in component_type: return "optional/et" + elif ComponentType.IO.value in component_type: + return "io/states" else: return component_type diff --git a/packages/modules/common/configurable_io.py b/packages/modules/common/configurable_io.py index 2bbf7948c1..2f61cd2090 100644 --- a/packages/modules/common/configurable_io.py +++ b/packages/modules/common/configurable_io.py @@ -17,7 +17,7 @@ def __init__(self, component_reader: Callable[[], IoState], component_writer: Callable[[Dict[int, Union[float, int]]], Optional[IoState]]) -> None: self.config = config - self.fault_state = FaultState(ComponentInfo(None, self.config.name, + self.fault_state = FaultState(ComponentInfo(self.config.id, self.config.name, ComponentType.IO.value)) self.store = store.get_io_value_store(self.config.id) with SingleComponentUpdateContext(self.fault_state): diff --git a/packages/modules/common/fault_state.py b/packages/modules/common/fault_state.py index a0dc3edf75..c91bdffe45 100644 --- a/packages/modules/common/fault_state.py +++ b/packages/modules/common/fault_state.py @@ -53,8 +53,6 @@ def store_error(self) -> None: topic = component_type.type_to_topic_mapping(self.component_info.type) if self.component_info.type == component_type.ComponentType.ELECTRICITY_TARIFF.value: topic_prefix = f"openWB/set/{topic}" - elif self.component_info.type == component_type.ComponentType.IO.value: - topic_prefix = f"openWB/set/io/{topic}" else: topic_prefix = f"openWB/set/{topic}/{self.component_info.id}" pub.Pub().pub(f"{topic_prefix}/get/fault_str", self.fault_str) diff --git a/packages/modules/io_devices/dimm_kit/api.py b/packages/modules/io_devices/dimm_kit/api.py index 5b7ada9c28..06d3454acf 100644 --- a/packages/modules/io_devices/dimm_kit/api.py +++ b/packages/modules/io_devices/dimm_kit/api.py @@ -35,7 +35,7 @@ def read(): "Bitte den Support kontaktieren.") except socket.timeout: log.exception("Dimm-Kit") - raise Exception("Die IP-Adresse ist nicht erreichbar. Bitte den Support kontaktieren.") + raise Exception("Die IP-Adresse ist nicht erreichbar. Bitte überprüfe die Einstellungen.") return IoState( # 1-4th channel test 0-5V voltage, 5-8th channel test 0-25mA current value analog_input={str(i): client.read_input_registers( From 4948aab970130a52fba9a418ee8a5741a4135dc8 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 1 Nov 2024 14:54:20 +0100 Subject: [PATCH 17/75] fail safe --- packages/control/io_device.py | 15 +++++++++------ packages/control/limiting_value.py | 2 ++ packages/control/loadmanagement.py | 14 +++++++++----- packages/helpermodules/update_config.py | 2 +- packages/modules/common/utils/component_parser.py | 10 ++++++++++ 5 files changed, 31 insertions(+), 12 deletions(-) diff --git a/packages/control/io_device.py b/packages/control/io_device.py index d3ad04a14a..51e9ef7344 100644 --- a/packages/control/io_device.py +++ b/packages/control/io_device.py @@ -1,7 +1,9 @@ from dataclasses import dataclass, field from typing import Dict, Optional, Union from control import data +from control.limiting_value import LimitingValue from helpermodules.constants import NO_ERROR +from modules.common.utils.component_parser import get_io_name_by_id from modules.io_actions.controllable_consumers.dimming.api import Dimming from modules.io_actions.controllable_consumers.dimming_direct_control.api import DimmingDirectControl from modules.io_actions.controllable_consumers.ripple_control_receiver.api import RippleControlReceiver @@ -41,12 +43,15 @@ def setup(self): if isinstance(action, Dimming): action.setup() + def _check_fault_state_io_device(self, io_device: int) -> None: + if data.data.io_states[f"io_states{io_device}"].data.get.fault_state == 2: + raise ValueError(LimitingValue.CONTROLLABLE_CONSUMERS_ERROR.value.format(get_io_name_by_id(io_device))) + def dimming_get_import_power_left(self, cp_num: int) -> Optional[float]: for action in self.actions.values(): if isinstance(action, Dimming): - if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.fault_state == 2: - return 0 if cp_num in action.config.configuration.cp_ids: + self._check_fault_state_io_device(action.config.configuration.io_device) return action.dimming_get_import_power_left(cp_num) else: return None @@ -60,19 +65,17 @@ def dimming_set_import_power_left(self, cp_num: int, used_power: float) -> Optio def dimming_via_direct_control(self, cp_num: int) -> float: for action in self.actions.values(): if isinstance(action, DimmingDirectControl): - if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.fault_state == 2: - return 0 if cp_num == action.config.configuration.cp_id: + self._check_fault_state_io_device(action.config.configuration.io_device) return action.dimming_via_direct_control(cp_num) else: return None def ripple_control_receiver(self, cp_num: int) -> float: for action in self.actions.values(): - if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.fault_state == 2: - return 0 if isinstance(action, RippleControlReceiver): if cp_num in action.config.configuration.cp_ids: + self._check_fault_state_io_device(action.config.configuration.io_device) return action.ripple_control_receiver(cp_num) else: return 1 diff --git a/packages/control/limiting_value.py b/packages/control/limiting_value.py index d69e17112a..c9ef6458df 100644 --- a/packages/control/limiting_value.py +++ b/packages/control/limiting_value.py @@ -9,3 +9,5 @@ class LimitingValue(Enum): DIMMING_VIA_DIRECT_CONTROL = ", da die Dimmung per Direkt-Steuerung die Ladeleistung begrenzt." RIPPLE_CONTROL_RECEIVER = (", da der Ladepunkt durch den RSE-Kontakt auf {}% der konfigurierten Anschlussleistung " "reduziert wird.") + CONTROLLABLE_CONSUMERS_ERROR = (", da aufgrund eines Fehlers im IO-Gerät {} die steuerbaren Verbraucher nicht " + "gesteuert werden können. Bitte prüfe die Status-Seite.") diff --git a/packages/control/loadmanagement.py b/packages/control/loadmanagement.py index 1ad39dccbe..e9146563d6 100644 --- a/packages/control/loadmanagement.py +++ b/packages/control/loadmanagement.py @@ -19,13 +19,17 @@ def get_available_currents(self, cp: Chargepoint, feed_in: int = 0) -> Tuple[List[float], Optional[str]]: raw_currents_left = counter.data.set.raw_currents_left - available_currents, limit = self._limit_by_dimming_via_direct_control(missing_currents, cp) + try: + available_currents, limit = self._limit_by_dimming_via_direct_control(missing_currents, cp) - available_currents, new_limit = self._limit_by_dimming(available_currents, cp) - limit = new_limit if new_limit is not None else limit + available_currents, new_limit = self._limit_by_dimming(available_currents, cp) + limit = new_limit if new_limit is not None else limit - available_currents, new_limit = self._limit_by_ripple_control_receiver(available_currents, cp) - limit = new_limit if new_limit is not None else limit + available_currents, new_limit = self._limit_by_ripple_control_receiver(available_currents, cp) + limit = new_limit if new_limit is not None else limit + except ValueError as e: + available_currents = [0]*3 + limit = e.args[0] available_currents, new_limit = self._limit_by_current(counter, available_currents, raw_currents_left) limit = new_limit if new_limit is not None else limit diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index 1efd7566d5..c7bbc95c5f 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -1974,7 +1974,7 @@ def upgrade(topic: str, payload) -> Optional[dict]: action = RippleControlReceiverSetup() for cp_topic in self.all_received_topics.keys(): if re.search("openWB/chargepoint/[0-9]+/config", cp_topic) is not None: - action.configuration.cp_ids.append(get_index(cp_topic)) + action.configuration.cp_ids.append(int(get_index(cp_topic))) action.configuration.io_device = 0 if payload["type"] == "dimm_kit": diff --git a/packages/modules/common/utils/component_parser.py b/packages/modules/common/utils/component_parser.py index b235042261..b7fa906939 100644 --- a/packages/modules/common/utils/component_parser.py +++ b/packages/modules/common/utils/component_parser.py @@ -3,6 +3,7 @@ from control import data from modules.common.abstract_device import AbstractDevice +from modules.common.abstract_io import AbstractIo from modules.common.component_type import type_to_topic_mapping log = logging.getLogger(__name__) @@ -17,6 +18,15 @@ def get_component_name_by_id(id: int): raise ValueError(f"Element {id} konnte keinem Gerät zugeordnet werden.") +def get_io_name_by_id(id: int): + for item in data.data.system_data.values(): + if isinstance(item, AbstractIo): + if item.config.id == id: + return item.config.name + else: + raise ValueError(f"Element {id} konnte keinem Gerät zugeordnet werden.") + + def get_component_obj_by_id(id: int, not_finished_threads: List[str]) -> Optional[Any]: for item in data.data.system_data.values(): if isinstance(item, AbstractDevice): From f28318ca657778fb5cad0db0d1364d74c0051727 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 6 Nov 2024 09:35:50 +0100 Subject: [PATCH 18/75] Befehlsdokumentation, EZA --- .../control/chargepoint/chargepoint_data.py | 1 + packages/control/data.py | 6 +- packages/helpermodules/logger.py | 7 ++ packages/helpermodules/subdata.py | 25 ++++--- packages/modules/common/abstract_device.py | 5 ++ packages/modules/common/abstract_io.py | 11 ++- packages/modules/common/configurable_io.py | 4 +- .../modules/common/utils/component_parser.py | 4 +- .../controllable_consumers/dimming/api.py | 24 ++++++- .../dimming_direct_control/api.py | 27 ++++++- .../ripple_control_receiver/api.py | 35 ++++++++- .../power_levels/__init__.py | 0 .../generation_systems/power_levels/api.py | 71 +++++++++++++++++++ .../generation_systems/power_levels/config.py | 24 +++++++ packages/modules/io_actions/groups.py | 2 + packages/modules/loadvars.py | 6 +- 16 files changed, 228 insertions(+), 24 deletions(-) create mode 100644 packages/modules/io_actions/generation_systems/power_levels/__init__.py create mode 100644 packages/modules/io_actions/generation_systems/power_levels/api.py create mode 100644 packages/modules/io_actions/generation_systems/power_levels/config.py diff --git a/packages/control/chargepoint/chargepoint_data.py b/packages/control/chargepoint/chargepoint_data.py index 9d2f9bb02c..cef98805cc 100644 --- a/packages/control/chargepoint/chargepoint_data.py +++ b/packages/control/chargepoint/chargepoint_data.py @@ -107,6 +107,7 @@ class Get: phases_in_use: int = 0 plug_state: bool = False power: float = 0 + powers: List[float] = field(default_factory=currents_list_factory) rfid_timestamp: Optional[float] = None rfid: Optional[int] = None serial_number: Optional[str] = None diff --git a/packages/control/data.py b/packages/control/data.py index de82190cdc..9f66f57b83 100644 --- a/packages/control/data.py +++ b/packages/control/data.py @@ -27,7 +27,7 @@ from control.io_device import IoActions, IoStates from control.optional import Optional from modules.common.abstract_device import AbstractDevice -from modules.common.abstract_io import AbstractIo +from modules.common.abstract_io import AbstractIoDevice log = logging.getLogger(__name__) bat_data_lock = threading.Lock() @@ -311,10 +311,10 @@ def _print_device_config(self, data: Dict[str, AbstractDevice]): except Exception: log.exception("Fehler im Data-Modul") - def _print_io_device_config(self, data: Dict[str, AbstractIo]): + def _print_io_device_config(self, data: Dict[str, AbstractIoDevice]): for key, value in data.items(): try: - if isinstance(value, AbstractIo): + if isinstance(value, AbstractIoDevice): log.info(f"{key}\n{dataclass_utils.asdict(value.config)}") except Exception: log.exception("Fehler im Data-Modul") diff --git a/packages/helpermodules/logger.py b/packages/helpermodules/logger.py index 93fafcf7e5..1570a71532 100644 --- a/packages/helpermodules/logger.py +++ b/packages/helpermodules/logger.py @@ -138,6 +138,13 @@ def mb_to_bytes(megabytes: int) -> int: mqtt_file_handler.addFilter(RedactingFilter()) mqtt_log.addHandler(mqtt_file_handler) + steuve_control_command_log = logging.getLogger("steuve_control_command") + steuve_control_command_log.propagate = False + steuve_control_command_file_handler = RotatingFileHandler( + PERSISTENT_LOG_PATH + 'steuve_control_command.log', maxBytes=mb_to_bytes(80), backupCount=1) + steuve_control_command_file_handler.setFormatter(logging.Formatter(FORMAT_STR_SHORT)) + steuve_control_command_log.addHandler(steuve_control_command_file_handler) + smarthome_log_handler = RotatingFileHandler(RAMDISK_PATH + 'smarthome.log', maxBytes=mb_to_bytes(1), backupCount=1) smarthome_log_handler.setFormatter(logging.Formatter(FORMAT_STR_SHORT)) smarthome_log_handler.addFilter(functools.partial(filter_pos, "smarthome")) diff --git a/packages/helpermodules/subdata.py b/packages/helpermodules/subdata.py index be0d0f5765..7a0140ff77 100644 --- a/packages/helpermodules/subdata.py +++ b/packages/helpermodules/subdata.py @@ -660,16 +660,21 @@ def process_io_topic(self, var: Dict[str, Union[io_device.IoActions, io_device.I setattr(var["io_states"+index].data.get, msg.topic.split("/")[-1], payload) else: self.set_json_payload_class(var["io_states"+index].data, msg) - elif re.search("/io/action/[0-9]+/config", msg.topic) is not None: - index = get_index(msg.topic) - payload = decode_payload(msg.payload) - if payload == "": - if index in var.actions: - var.actions.pop(index) - else: - mod = importlib.import_module(f".io_actions.{payload['group']}.{payload['type']}.api", "modules") - config = dataclass_from_dict(mod.device_descriptor.configuration_factory, payload) - var.actions[f"io_action{index}"] = mod.create_action(config) + elif "io/action" in msg.topic: + if re.search("/io/action/[0-9]+/config", msg.topic) is not None: + index = get_index(msg.topic) + payload = decode_payload(msg.payload) + if payload == "": + if index in var.actions: + var.actions.pop(index) + else: + mod = importlib.import_module( + f".io_actions.{payload['group']}.{payload['type']}.api", "modules") + config = dataclass_from_dict(mod.device_descriptor.configuration_factory, payload) + var.actions[f"io_action{index}"] = mod.create_action(config) + elif re.search("/io/action/[0-9]+/timestamp", msg.topic) is not None: + index = get_index(msg.topic) + self.set_json_payload_class(var.actions[f"io_action{index}"], msg) except Exception: log.exception("Fehler im subdata-Modul") diff --git a/packages/modules/common/abstract_device.py b/packages/modules/common/abstract_device.py index b0c235b9ed..8ed28f0285 100644 --- a/packages/modules/common/abstract_device.py +++ b/packages/modules/common/abstract_device.py @@ -50,6 +50,11 @@ def __init__(self, *kwargs) -> None: def update(self, *kwargs) -> None: pass + @abstractmethod + def set_power_limit(self, power_limit: int) -> None: + # power_limit in Werten zwischen 0 und 1 + pass + class DeviceDescriptor: def __init__(self, configuration_factory: Type): diff --git a/packages/modules/common/abstract_io.py b/packages/modules/common/abstract_io.py index 6e9ce6da2d..41901bf6cf 100644 --- a/packages/modules/common/abstract_io.py +++ b/packages/modules/common/abstract_io.py @@ -2,7 +2,7 @@ from typing import Dict -class AbstractIo: +class AbstractIoDevice: @abstractmethod def __init__(self, io_config: dict) -> None: pass @@ -14,3 +14,12 @@ def read(self) -> None: @abstractmethod def write(self, digital_output: Dict[int, int]) -> None: pass + + +class AbstractIoAction: + def __init__(self): + self.timestamp = None + + @abstractmethod + def setup(self) -> None: + pass diff --git a/packages/modules/common/configurable_io.py b/packages/modules/common/configurable_io.py index 2f61cd2090..dda8f9938d 100644 --- a/packages/modules/common/configurable_io.py +++ b/packages/modules/common/configurable_io.py @@ -1,7 +1,7 @@ from typing import Dict, Optional, TypeVar, Generic, Callable, Union from modules.common import store -from modules.common.abstract_io import AbstractIo +from modules.common.abstract_io import AbstractIoDevice from modules.common.component_context import SingleComponentUpdateContext from modules.common.component_state import IoState from modules.common.component_type import ComponentType @@ -11,7 +11,7 @@ T_IO_CONFIG = TypeVar("T_IO_CONFIG") -class ConfigurableIo(Generic[T_IO_CONFIG], AbstractIo): +class ConfigurableIo(Generic[T_IO_CONFIG], AbstractIoDevice): def __init__(self, config: T_IO_CONFIG, component_reader: Callable[[], IoState], diff --git a/packages/modules/common/utils/component_parser.py b/packages/modules/common/utils/component_parser.py index b7fa906939..408eeda3a0 100644 --- a/packages/modules/common/utils/component_parser.py +++ b/packages/modules/common/utils/component_parser.py @@ -3,7 +3,7 @@ from control import data from modules.common.abstract_device import AbstractDevice -from modules.common.abstract_io import AbstractIo +from modules.common.abstract_io import AbstractIoDevice from modules.common.component_type import type_to_topic_mapping log = logging.getLogger(__name__) @@ -20,7 +20,7 @@ def get_component_name_by_id(id: int): def get_io_name_by_id(id: int): for item in data.data.system_data.values(): - if isinstance(item, AbstractIo): + if isinstance(item, AbstractIoDevice): if item.config.id == id: return item.config.name else: diff --git a/packages/modules/io_actions/controllable_consumers/dimming/api.py b/packages/modules/io_actions/controllable_consumers/dimming/api.py index a5a0c718b7..d582e8ff81 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/api.py @@ -1,21 +1,43 @@ import logging from control import data +from helpermodules.logger import ModifyLoglevelContext +from helpermodules.pub import Pub +from helpermodules.timecheck import create_timestamp from modules.common.abstract_device import DeviceDescriptor +from modules.common.abstract_io import AbstractIoAction from modules.io_actions.controllable_consumers.dimming.config import DimmingSetup log = logging.getLogger(__name__) +control_command_log = logging.getLogger("steuve_control_command") -class Dimming: +class Dimming(AbstractIoAction): def __init__(self, config: DimmingSetup): self.config = config self.import_power_left = None + super().__init__() + def setup(self) -> None: self.import_power_left = self.config.configuration.max_import_power + \ data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()].calc_raw_surplus() log.debug(f"Dimmen: {self.import_power_left}W inkl Überschuss") + with ModifyLoglevelContext(control_command_log, logging.DEBUG): + if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ + self.config.configuration.digital_input]: + if self.timestamp: + Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", create_timestamp()) + control_command_log.info("Dimmen aktiviert. Leistungswerte vor Ausführung des Steuerbefehls:") + + msg = f"EVU-Zähler: {data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()].data.get.powers}W" + for cp in self.config.configuration.cp_ids: + msg += f", LP {cp}: {data.data.cp_data[cp].data.get.powers}W" + control_command_log.info(msg) + elif self.timestamp: + Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", None) + control_command_log.info("Dimmen deaktiviert.") + def dimming_get_import_power_left(self, cp_num: int) -> None: if cp_num in self.config.configuration.cp_ids: if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ diff --git a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py index d10fb7fe71..562c0911fa 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py @@ -1,12 +1,37 @@ +import logging from control import data +from helpermodules.logger import ModifyLoglevelContext +from helpermodules.pub import Pub +from helpermodules.timecheck import create_timestamp from modules.common.abstract_device import DeviceDescriptor +from modules.common.abstract_io import AbstractIoAction from modules.io_actions.controllable_consumers.dimming_direct_control.config import DimmingDirectControlSetup +control_command_log = logging.getLogger("steuve_control_command") -class DimmingDirectControl: + +class DimmingDirectControl(AbstractIoAction): def __init__(self, config: DimmingDirectControlSetup): self.config = config + super().__init__() + + def setup(self) -> None: + with ModifyLoglevelContext(control_command_log, logging.DEBUG): + if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ + self.config.configuration.digital_input]: + if self.timestamp: + Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", create_timestamp()) + control_command_log.info( + f"Direktsteuerung an LP {self.config.configuration.cp_id} aktiviert. Leistungswerte vor Ausführung des Steuerbefehls:") + + msg = f"EVU-Zähler: {data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()].data.get.powers}W" + msg += f", LP {self.config.configuration.cp_id}: {data.data.cp_data[f"cp{self.config.configuration.cp_id}"].data.get.powers}W" + control_command_log.info(msg) + elif self.timestamp: + Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", None) + control_command_log.info("Direktsteuerung deaktiviert.") + def dimming_via_direct_control(self, cp_num: int) -> None: if cp_num == self.config.configuration.cp_id: if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ diff --git a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py index 22a1f7a5ce..f742f47726 100644 --- a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py +++ b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py @@ -1,11 +1,44 @@ +import logging from control import data +from helpermodules.logger import ModifyLoglevelContext +from helpermodules.pub import Pub +from helpermodules.timecheck import create_timestamp from modules.common.abstract_device import DeviceDescriptor +from modules.common.abstract_io import AbstractIoAction from modules.io_actions.controllable_consumers.ripple_control_receiver.config import RippleControlReceiverSetup +control_command_log = logging.getLogger("steuve_control_command") -class RippleControlReceiver: + +class RippleControlReceiver(AbstractIoAction): def __init__(self, config: RippleControlReceiverSetup): self.config = config + super().__init__() + + def setup(self) -> None: + with ModifyLoglevelContext(control_command_log, logging.DEBUG): + for pattern in self.config.configuration.input_pattern: + for digital_input, value in pattern["input_matrix"].items(): + if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ + digital_input] != value: + break + else: + # Alle digitalen Eingänge entsprechen dem Pattern + if pattern["value"] != 1: + if self.timestamp: + Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", create_timestamp()) + control_command_log.info( + f"RSE-Sperre an LP {self.config.configuration.cp_id} mit Wert {pattern['value']*100}" + "% aktiviert. Leistungswerte vor Ausführung des Steuerbefehls:") + + msg = f"EVU-Zähler: {data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()].data.get.powers}W" + for cp in self.config.configuration.cp_ids: + msg += f", LP {cp}: {data.data.cp_data[cp].data.get.powers}W" + control_command_log.info(msg) + else: + if self.timestamp: + Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", None) + control_command_log.info("Direktsteuerung deaktiviert.") def ripple_control_receiver(self, cp_num: int) -> float: if cp_num in self.config.configuration.cp_ids: diff --git a/packages/modules/io_actions/generation_systems/power_levels/__init__.py b/packages/modules/io_actions/generation_systems/power_levels/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/modules/io_actions/generation_systems/power_levels/api.py b/packages/modules/io_actions/generation_systems/power_levels/api.py new file mode 100644 index 0000000000..9bb6f08cf9 --- /dev/null +++ b/packages/modules/io_actions/generation_systems/power_levels/api.py @@ -0,0 +1,71 @@ +import logging +from control import data +from helpermodules.logger import ModifyLoglevelContext +from helpermodules.pub import Pub +from helpermodules.timecheck import create_timestamp +from modules.common.abstract_device import AbstractInverter, DeviceDescriptor +from modules.common.abstract_io import AbstractIoAction +from modules.common.utils.component_parser import get_component_obj_by_id +from modules.io_actions.generation_systems.power_levels.config import PowerLevelsSetup + +control_command_log = logging.getLogger("steuve_control_command") + + +class PowerLevels(AbstractIoAction): + PATTERN = [ + {"matrix": (False, False, False), "value": 1}, + {"matrix": (True, False, False), "value": 0.6}, + {"matrix": (False, True, False), "value": 0.3}, + {"matrix": (False, False, True), "value": 0}, + ] + + def __init__(self, config: PowerLevelsSetup): + self.config = config + comp = get_component_obj_by_id(self.config.configuration.component_id, []) + if isinstance(comp, AbstractInverter) is False: + raise Exception(f"Komponente mit ID {self.config.configuration.component_id} ist kein Wechselrichter.") + if "set_power_limit" not in type(comp).__dict__: + raise Exception( + f"Wechselrichter {comp.config.name} mit ID {self.config.configuration.component_id} kann von openWB nicht gesteuert werden.") + super().__init__() + + def setup(self) -> None: + with ModifyLoglevelContext(control_command_log, logging.DEBUG): + io_device_input = data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input + s1 = io_device_input[self.config.configuration.digital_input[0]] + s2 = io_device_input[self.config.configuration.digital_input[1]] + w3 = io_device_input[self.config.configuration.digital_input[2]] + for matrix, value in self.PATTERN.items(): + if matrix == (s1, s2, w3) and value != 1: + comp = get_component_obj_by_id(self.config.configuration.component_id, []) + if self.timestamp: + Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", create_timestamp()) + control_command_log.info( + f"Erzeugungsanlage (EZA) {comp.config.name} mit ID {self.config.configuration.component_id}" + f" auf {value*100}% begrenzt. Leistungswerte vor Ausführung des Steuerbefehls:") + + msg = (f"EVU-Zähler: {data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()].data.get.powers}W" + f"EZA: {data.data.pv_data[f'pv{self.config.configuration.component_id}'].data.get.power}W") + control_command_log.info(msg) + else: + if self.timestamp: + Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", None) + control_command_log.info("Begerenzung der EZA aufgehoben.") + + def ripple_control_receiver(self, component_id: int) -> float: + io_device_input = data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input + s1 = io_device_input[self.config.configuration.digital_input[0]] + s2 = io_device_input[self.config.configuration.digital_input[1]] + w3 = io_device_input[self.config.configuration.digital_input[2]] + for matrix, value in self.PATTERN.items(): + if matrix == (s1, s2, w3): + get_component_obj_by_id(component_id, []).set_power_limit(value) + else: + raise Exception(f"{[s1, s2, w3]} ist kein gültiges Pattern.") + + +def create_action(config: PowerLevelsSetup): + return PowerLevels(config=config) + + +device_descriptor = DeviceDescriptor(configuration_factory=PowerLevelsSetup) diff --git a/packages/modules/io_actions/generation_systems/power_levels/config.py b/packages/modules/io_actions/generation_systems/power_levels/config.py new file mode 100644 index 0000000000..b67f4c3d82 --- /dev/null +++ b/packages/modules/io_actions/generation_systems/power_levels/config.py @@ -0,0 +1,24 @@ +from dataclasses import dataclass, field +from typing import List +from dataclass_utils.factories import empty_list_factory +from modules.io_actions.groups import ActionGroup + + +@dataclass +class PowerLevelsConfig: + io_device: int = 0 + digital_input: List[int] = field(default_factory=empty_list_factory) + component_id: int = 0 + + +class PowerLevelsSetup: + def __init__(self, + name: str = "Leistungsstufen für Erzeugungsanlagen (EZA)", + type: str = "power_level", + id: int = 0, + configuration: PowerLevelsConfig = None): + self.name = name + self.id = id + self.configuration = configuration or PowerLevelsConfig() + self.type = type + self.group = ActionGroup.GENERATOR_SYSTEMS.value diff --git a/packages/modules/io_actions/groups.py b/packages/modules/io_actions/groups.py index 6a22786d11..2f21e2b407 100644 --- a/packages/modules/io_actions/groups.py +++ b/packages/modules/io_actions/groups.py @@ -3,8 +3,10 @@ class ActionGroup(Enum): CONTROLLABLE_CONSUMERS = "controllable_consumers" + GENERATOR_SYSTEMS = "generator_systems" READBALE_GROUP_NAME = { ActionGroup.CONTROLLABLE_CONSUMERS: "Steuerbare Verbrauchseinrichtungen (§14a)" + ActionGroup.GENERATOR_SYSTEMS: "Erzeugungsanlagen" } diff --git a/packages/modules/loadvars.py b/packages/modules/loadvars.py index 33fd751829..507f6a28a5 100644 --- a/packages/modules/loadvars.py +++ b/packages/modules/loadvars.py @@ -3,7 +3,7 @@ from typing import List from control import data -from modules.common.abstract_io import AbstractIo +from modules.common.abstract_io import AbstractIoDevice from modules.utils import wait_for_module_update_completed from modules.common.abstract_device import AbstractDevice from modules.common.component_type import ComponentType, type_to_topic_mapping @@ -90,7 +90,7 @@ def _get_io(self) -> List[threading.Thread]: try: for io_device in data.data.system_data.values(): try: - if isinstance(io_device, AbstractIo): + if isinstance(io_device, AbstractIoDevice): threads.append( threading.Thread(target=io_device.read, args=(), name="get io state")) @@ -106,7 +106,7 @@ def _set_io(self) -> List[threading.Thread]: try: for io_device in data.data.system_data.values(): try: - if isinstance(io_device, AbstractIo): + if isinstance(io_device, AbstractIoDevice): threads.append(threading.Thread(target=update_values, args=(io_device,), name="publish io state")) From e66a9b54d117dcaabfcc786bd0c1b004f1a29d46 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 6 Nov 2024 11:26:51 +0100 Subject: [PATCH 19/75] flake8 --- .../io_actions/controllable_consumers/dimming/api.py | 3 ++- .../dimming_direct_control/api.py | 10 ++++++---- .../ripple_control_receiver/api.py | 3 ++- .../io_actions/generation_systems/power_levels/api.py | 10 ++++++---- packages/modules/io_actions/groups.py | 4 ++-- 5 files changed, 18 insertions(+), 12 deletions(-) diff --git a/packages/modules/io_actions/controllable_consumers/dimming/api.py b/packages/modules/io_actions/controllable_consumers/dimming/api.py index d582e8ff81..dd59b53d01 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/api.py @@ -30,7 +30,8 @@ def setup(self) -> None: Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", create_timestamp()) control_command_log.info("Dimmen aktiviert. Leistungswerte vor Ausführung des Steuerbefehls:") - msg = f"EVU-Zähler: {data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()].data.get.powers}W" + msg = (f"EVU-Zähler: " + f"{data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()].data.get.powers}W") for cp in self.config.configuration.cp_ids: msg += f", LP {cp}: {data.data.cp_data[cp].data.get.powers}W" control_command_log.info(msg) diff --git a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py index 562c0911fa..2998e15fa9 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py @@ -22,11 +22,13 @@ def setup(self) -> None: self.config.configuration.digital_input]: if self.timestamp: Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", create_timestamp()) - control_command_log.info( - f"Direktsteuerung an LP {self.config.configuration.cp_id} aktiviert. Leistungswerte vor Ausführung des Steuerbefehls:") + control_command_log.info(f"Direktsteuerung an LP {self.config.configuration.cp_id} aktiviert. " + "Leistungswerte vor Ausführung des Steuerbefehls:") - msg = f"EVU-Zähler: {data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()].data.get.powers}W" - msg += f", LP {self.config.configuration.cp_id}: {data.data.cp_data[f"cp{self.config.configuration.cp_id}"].data.get.powers}W" + msg = (f"EVU-Zähler: " + f"{data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()].data.get.powers}W") + msg += (f", LP {self.config.configuration.cp_id}: " + f"{data.data.cp_data[f'cp{self.config.configuration.cp_id}'].data.get.powers}W") control_command_log.info(msg) elif self.timestamp: Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", None) diff --git a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py index f742f47726..d8b3ab8c50 100644 --- a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py +++ b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py @@ -31,7 +31,8 @@ def setup(self) -> None: f"RSE-Sperre an LP {self.config.configuration.cp_id} mit Wert {pattern['value']*100}" "% aktiviert. Leistungswerte vor Ausführung des Steuerbefehls:") - msg = f"EVU-Zähler: {data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()].data.get.powers}W" + evu_counter = data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()] + msg = f"EVU-Zähler: {evu_counter.data.get.powers}W" for cp in self.config.configuration.cp_ids: msg += f", LP {cp}: {data.data.cp_data[cp].data.get.powers}W" control_command_log.info(msg) diff --git a/packages/modules/io_actions/generation_systems/power_levels/api.py b/packages/modules/io_actions/generation_systems/power_levels/api.py index 9bb6f08cf9..bce7932e64 100644 --- a/packages/modules/io_actions/generation_systems/power_levels/api.py +++ b/packages/modules/io_actions/generation_systems/power_levels/api.py @@ -25,13 +25,14 @@ def __init__(self, config: PowerLevelsSetup): if isinstance(comp, AbstractInverter) is False: raise Exception(f"Komponente mit ID {self.config.configuration.component_id} ist kein Wechselrichter.") if "set_power_limit" not in type(comp).__dict__: - raise Exception( - f"Wechselrichter {comp.config.name} mit ID {self.config.configuration.component_id} kann von openWB nicht gesteuert werden.") + raise Exception(f"Wechselrichter {comp.config.name} mit ID {self.config.configuration.component_id} kann " + "von openWB nicht gesteuert werden.") super().__init__() def setup(self) -> None: with ModifyLoglevelContext(control_command_log, logging.DEBUG): - io_device_input = data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input + io_device_input = data.data.io_states[f"io_states{self.config.configuration.io_device}" + ].data.get.digital_input s1 = io_device_input[self.config.configuration.digital_input[0]] s2 = io_device_input[self.config.configuration.digital_input[1]] w3 = io_device_input[self.config.configuration.digital_input[2]] @@ -44,7 +45,8 @@ def setup(self) -> None: f"Erzeugungsanlage (EZA) {comp.config.name} mit ID {self.config.configuration.component_id}" f" auf {value*100}% begrenzt. Leistungswerte vor Ausführung des Steuerbefehls:") - msg = (f"EVU-Zähler: {data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()].data.get.powers}W" + evu_counter = data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()] + msg = (f"EVU-Zähler: {evu_counter.data.get.powers}W" f"EZA: {data.data.pv_data[f'pv{self.config.configuration.component_id}'].data.get.power}W") control_command_log.info(msg) else: diff --git a/packages/modules/io_actions/groups.py b/packages/modules/io_actions/groups.py index 2f21e2b407..c049b69b20 100644 --- a/packages/modules/io_actions/groups.py +++ b/packages/modules/io_actions/groups.py @@ -7,6 +7,6 @@ class ActionGroup(Enum): READBALE_GROUP_NAME = { - ActionGroup.CONTROLLABLE_CONSUMERS: "Steuerbare Verbrauchseinrichtungen (§14a)" - ActionGroup.GENERATOR_SYSTEMS: "Erzeugungsanlagen" + ActionGroup.CONTROLLABLE_CONSUMERS: "Steuerbare Verbrauchseinrichtungen (§14a)", + ActionGroup.GENERATOR_SYSTEMS: "Erzeugungsanlagen", } From 2fa7f13bc1a6cf648f45e5d7e46a461d73e68543 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 6 Nov 2024 13:58:13 +0100 Subject: [PATCH 20/75] EZA --- .../power_levels/__init__.py | 0 .../generator_systems/power_levels/api.py | 73 +++++++++++++++++++ .../generator_systems/power_levels/config.py | 24 ++++++ 3 files changed, 97 insertions(+) create mode 100644 packages/modules/io_actions/generator_systems/power_levels/__init__.py create mode 100644 packages/modules/io_actions/generator_systems/power_levels/api.py create mode 100644 packages/modules/io_actions/generator_systems/power_levels/config.py diff --git a/packages/modules/io_actions/generator_systems/power_levels/__init__.py b/packages/modules/io_actions/generator_systems/power_levels/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/modules/io_actions/generator_systems/power_levels/api.py b/packages/modules/io_actions/generator_systems/power_levels/api.py new file mode 100644 index 0000000000..e150c55516 --- /dev/null +++ b/packages/modules/io_actions/generator_systems/power_levels/api.py @@ -0,0 +1,73 @@ +import logging +from control import data +from helpermodules.logger import ModifyLoglevelContext +from helpermodules.pub import Pub +from helpermodules.timecheck import create_timestamp +from modules.common.abstract_device import AbstractInverter, DeviceDescriptor +from modules.common.abstract_io import AbstractIoAction +from modules.common.utils.component_parser import get_component_obj_by_id +from modules.io_actions.generator_systems.power_levels.config import PowerLevelsSetup + +control_command_log = logging.getLogger("steuve_control_command") + + +class PowerLevels(AbstractIoAction): + PATTERN = [ + {"matrix": (False, False, False), "value": 1}, + {"matrix": (True, False, False), "value": 0.6}, + {"matrix": (False, True, False), "value": 0.3}, + {"matrix": (False, False, True), "value": 0}, + ] + + def __init__(self, config: PowerLevelsSetup): + self.config = config + comp = get_component_obj_by_id(self.config.configuration.component_id, []) + if isinstance(comp, AbstractInverter) is False: + raise Exception(f"Komponente mit ID {self.config.configuration.component_id} ist kein Wechselrichter.") + if "set_power_limit" not in type(comp).__dict__: + raise Exception(f"Wechselrichter {comp.config.name} mit ID {self.config.configuration.component_id} kann " + "von openWB nicht gesteuert werden.") + super().__init__() + + def setup(self) -> None: + with ModifyLoglevelContext(control_command_log, logging.DEBUG): + io_device_input = data.data.io_states[f"io_states{self.config.configuration.io_device}" + ].data.get.digital_input + s1 = io_device_input[self.config.configuration.digital_input[0]] + s2 = io_device_input[self.config.configuration.digital_input[1]] + w3 = io_device_input[self.config.configuration.digital_input[2]] + for matrix, value in self.PATTERN.items(): + if matrix == (s1, s2, w3) and value != 1: + comp = get_component_obj_by_id(self.config.configuration.component_id, []) + if self.timestamp: + Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", create_timestamp()) + control_command_log.info( + f"Erzeugungsanlage (EZA) {comp.config.name} mit ID {self.config.configuration.component_id}" + f" auf {value*100}% begrenzt. Leistungswerte vor Ausführung des Steuerbefehls:") + + evu_counter = data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()] + msg = (f"EVU-Zähler: {evu_counter.data.get.powers}W" + f"EZA: {data.data.pv_data[f'pv{self.config.configuration.component_id}'].data.get.power}W") + control_command_log.info(msg) + else: + if self.timestamp: + Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", None) + control_command_log.info("Begerenzung der EZA aufgehoben.") + + def ripple_control_receiver(self, component_id: int) -> float: + io_device_input = data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input + s1 = io_device_input[self.config.configuration.digital_input[0]] + s2 = io_device_input[self.config.configuration.digital_input[1]] + w3 = io_device_input[self.config.configuration.digital_input[2]] + for matrix, value in self.PATTERN.items(): + if matrix == (s1, s2, w3): + get_component_obj_by_id(component_id, []).set_power_limit(value) + else: + raise Exception(f"{[s1, s2, w3]} ist kein gültiges Pattern.") + + +def create_action(config: PowerLevelsSetup): + return PowerLevels(config=config) + + +device_descriptor = DeviceDescriptor(configuration_factory=PowerLevelsSetup) diff --git a/packages/modules/io_actions/generator_systems/power_levels/config.py b/packages/modules/io_actions/generator_systems/power_levels/config.py new file mode 100644 index 0000000000..4aa2245def --- /dev/null +++ b/packages/modules/io_actions/generator_systems/power_levels/config.py @@ -0,0 +1,24 @@ +from dataclasses import dataclass, field +from typing import List +from dataclass_utils.factories import empty_list_factory +from modules.io_actions.groups import ActionGroup + + +@dataclass +class PowerLevelsConfig: + io_device: int = 0 + digital_input: List[int] = field(default_factory=empty_list_factory) + component_id: int = 0 + + +class PowerLevelsSetup: + def __init__(self, + name: str = "Leistungsstufen für Erzeugungsanlagen (EZA)", + type: str = "power_levels", + id: int = 0, + configuration: PowerLevelsConfig = None): + self.name = name + self.id = id + self.configuration = configuration or PowerLevelsConfig() + self.type = type + self.group = ActionGroup.GENERATOR_SYSTEMS.value From 0d0882adff866be482e3a074b8498ed19bc49c4e Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Mon, 11 Nov 2024 15:28:26 +0100 Subject: [PATCH 21/75] improve config (review) --- packages/modules/common/io_setup.py | 12 ++--- packages/modules/io_devices/add_on/api.py | 6 +-- packages/modules/io_devices/add_on/config.py | 47 ++++++++++--------- packages/modules/io_devices/dimm_kit/api.py | 2 + .../modules/io_devices/dimm_kit/config.py | 32 +++++-------- 5 files changed, 47 insertions(+), 52 deletions(-) diff --git a/packages/modules/common/io_setup.py b/packages/modules/common/io_setup.py index 3974bb3db3..5ae5792e12 100644 --- a/packages/modules/common/io_setup.py +++ b/packages/modules/common/io_setup.py @@ -13,15 +13,11 @@ def __init__(self, type: str, id: int, configuration: T, - analog_input: Optional[Dict[int, float]] = None, - analog_output: Optional[Dict[int, float]] = None, - digital_input: Optional[Dict[int, float]] = None, - digital_output: Optional[Dict[int, float]] = None) -> None: + input: Optional[Dict[str, Dict[int, float]]] = None, + output: Optional[Dict[str, Dict[int, float]]] = None) -> None: self.name = name self.type = type self.id = id self.configuration = configuration - self.analog_input = analog_input if analog_input is not None else empty_dict_factory() - self.analog_output = analog_output if analog_output is not None else empty_dict_factory() - self.digital_input = digital_input if digital_input is not None else empty_dict_factory() - self.digital_output = digital_output if digital_output is not None else empty_dict_factory() + self.input = input if input is not None else empty_dict_factory() + self.output = output if output is not None else empty_dict_factory() diff --git a/packages/modules/io_devices/add_on/api.py b/packages/modules/io_devices/add_on/api.py index eb69b4d5eb..09d2ed189c 100644 --- a/packages/modules/io_devices/add_on/api.py +++ b/packages/modules/io_devices/add_on/api.py @@ -46,9 +46,9 @@ def write(digital_output: Dict[int, int]): GPIO.setup(33, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Taster 4 Stop GPIO.setup(36, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Taster 2 Min+PV GPIO.setup(40, GPIO.IN, pull_up_down=GPIO.PUD_UP) # TAster 5 Standby - GPIO.setup(7, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.digital_output[7] else GPIO.PUD_DOWN) # LED 3 - GPIO.setup(16, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.digital_output[16] else GPIO.PUD_DOWN) # LED 2 - GPIO.setup(18, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.digital_output[18] else GPIO.PUD_DOWN) # LED 1 + GPIO.setup(7, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.output["digital"]["7"] else GPIO.PUD_DOWN) # LED 3 + GPIO.setup(16, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.output["digital"]["16"] else GPIO.PUD_DOWN) # LED 2 + GPIO.setup(18, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.output["digital"]["18"] else GPIO.PUD_DOWN) # LED 1 return ConfigurableIo(config=config, component_reader=read, component_writer=write) diff --git a/packages/modules/io_devices/add_on/config.py b/packages/modules/io_devices/add_on/config.py index 6dec50bd69..edb59d91dd 100644 --- a/packages/modules/io_devices/add_on/config.py +++ b/packages/modules/io_devices/add_on/config.py @@ -7,20 +7,24 @@ def __init__(self): pass -def digital_input_init(): - return {"21": False, - "24": False, - "31": False, - "32": False, - "33": False, - "36": False, - "40": False} - - -def digital_output_init(): - return {"7": False, - "16": False, - "18": False} +def init_input(): + return {"analog": {}, + "digital": {"21": None, + "24": None, + "31": None, + "32": None, + "33": None, + "36": None, + "40": None} + } + + +def init_output(): + return {"analog": {}, + "digital": {"7": False, + "16": False, + "18": False} + } class AddOn(IoDeviceSetup[AddOnConfiguration]): @@ -29,15 +33,14 @@ def __init__(self, type: str = "add_on", id: int = 0, configuration: AddOnConfiguration = None, - digital_input: Dict[int, bool] = None, - digital_output: Dict[int, bool] = None) -> None: + input: Dict[str, Dict[int, float]] = None, + output: Dict[str, Dict[int, float]] = None) -> None: self.name = name self.type = type self.id = id self.configuration = configuration or AddOnConfiguration() - if digital_input is None: - digital_input = digital_input_init() - if digital_output is None: - digital_output = digital_output_init() - super().__init__(name, type, id, configuration or AddOnConfiguration(), - digital_input=digital_input, digital_output=digital_output) + if input is None: + input = init_input() + if output is None: + output = init_output() + super().__init__(name, type, id, configuration or AddOnConfiguration(), input=input, output=output) diff --git a/packages/modules/io_devices/dimm_kit/api.py b/packages/modules/io_devices/dimm_kit/api.py index 06d3454acf..d33480c9cb 100644 --- a/packages/modules/io_devices/dimm_kit/api.py +++ b/packages/modules/io_devices/dimm_kit/api.py @@ -50,6 +50,8 @@ def write(digital_output: Dict[int, int]) -> None: version = False client = ModbusTcpClient_(config.configuration.ip_address, config.configuration.port) + for i, value in config.output["digital"].items(): + client.write_single_coil(i-1, value, unit=config.configuration.modbus_id) return ConfigurableIo(config=config, component_reader=read, component_writer=write) diff --git a/packages/modules/io_devices/dimm_kit/config.py b/packages/modules/io_devices/dimm_kit/config.py index 46674ee91e..d1663d4c7a 100644 --- a/packages/modules/io_devices/dimm_kit/config.py +++ b/packages/modules/io_devices/dimm_kit/config.py @@ -11,16 +11,14 @@ def __init__(self, ip_address: Optional[str] = None, port: int = 8899, modbus_id self.modbus_id = modbus_id -def analog_input_init(): - return {str(i): 0 for i in range(1, 9)} +def init_input(): + return {"analog": {str(i): None for i in range(1, 9)}, + "digital": {str(i): None for i in range(1, 9)}} -def digital_input_init(): - return {str(i): False for i in range(1, 9)} - - -def digital_output_init(): - return {str(i): False for i in range(16, 24)} +def init_output(): + return {"analog": {}, + "digital": {str(i): False for i in range(16, 24)}} @auto_str @@ -30,14 +28,10 @@ def __init__(self, type: str = "dimm_kit", id: int = 0, configuration: IoLanConfiguration = None, - analog_input: Dict[int, float] = None, - digital_input: Dict[int, bool] = None, - digital_output: Dict[int, bool] = None) -> None: - if analog_input is None: - analog_input = analog_input_init() - if digital_input is None: - digital_input = digital_input_init() - if digital_output is None: - digital_output = digital_output_init() - super().__init__(name, type, id, configuration or IoLanConfiguration(), analog_input=analog_input, - digital_input=digital_input, digital_output=digital_output) + input: Dict[str, Dict[int, float]] = None, + output: Dict[str, Dict[int, float]] = None) -> None: + if input is None: + input = init_input() + if output is None: + output = init_output() + super().__init__(name, type, id, configuration or IoLanConfiguration(), input=input, output=output) From 6c03d29ed24a2eadafe4648e29ac0a1e5d22e895 Mon Sep 17 00:00:00 2001 From: LKuemmel <76958050+LKuemmel@users.noreply.github.com> Date: Mon, 18 Nov 2024 14:11:10 +0100 Subject: [PATCH 22/75] Apply suggestions from code review Co-authored-by: benderl --- ...Steuerbare Verbrauchseinrichtungen nach \302\247 14a.md" | 6 +++--- packages/helpermodules/subdata.py | 2 +- packages/modules/configuration.py | 4 ++-- packages/modules/io_actions/groups.py | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git "a/docs/Steuerbare Verbrauchseinrichtungen nach \302\247 14a.md" "b/docs/Steuerbare Verbrauchseinrichtungen nach \302\247 14a.md" index 5183e76bed..f3598860c9 100644 --- "a/docs/Steuerbare Verbrauchseinrichtungen nach \302\247 14a.md" +++ "b/docs/Steuerbare Verbrauchseinrichtungen nach \302\247 14a.md" @@ -1,11 +1,11 @@ -Das Gesetz sieht verschiedene Möglichkeiten für steuerbare Verbrauchseinrichtungen vor. Für jede steuerbare Verbrauchseinrichtung kann eine andere Option angemeldet werden. Bei der Konfiguration muss deshalb auch immer der/die Ladepunkte angegeben werden, für die die IO-Aktion angewendet werden soll. +Der Gesetzgeber sieht verschiedene Möglichkeiten für steuerbare Verbrauchseinrichtungen vor. Für jede steuerbare Verbrauchseinrichtung kann eine andere Option angemeldet werden. Bei der Konfiguration muss deshalb auch immer der/die Ladepunkte angegeben werden, für die die IO-Aktion angewendet werden soll. ### Dimmen -Beim Dimmen wird eine Mindestleistung für alle steuerbaren Verbrauchseinrichtungen nach einer vorgegebene Formel ermittelt. Das Ergebnis dieser Formel muss bei der IO-Aktion `Dimmen` in der Einstellung `Mindestleistung` eingetragen werden. ACHTUNG: Die openWB kann aktuell nur die Ladepunkte berücksichtigen. Sind noch weitere steuerbare Verbraucher angemeldet, muss dies bei der Ermittlung der Mindestleistung berücksichtigt werden. Die korrekte Ermitllung der Mindestleistung obliegt nicht der openWB. +Beim Dimmen wird eine Mindestleistung für alle steuerbaren Verbrauchseinrichtungen nach einer vorgegebene Formel ermittelt. Das Ergebnis dieser Formel muss bei der IO-Aktion `Dimmen` in der Einstellung `Mindestleistung` eingetragen werden. ACHTUNG: Die openWB kann aktuell nur die Ladepunkte berücksichtigen. Sind noch weitere steuerbare Verbraucher angemeldet, muss dies bei der Ermittlung der Mindestleistung berücksichtigt werden. Für die korrekte Ermitllung der Mindestleistung ist der Betreiber, nicht openWB oder die software2 verantwortlich. Vorhandener Überschuss kann zusätzlich zur Mindestleistung verwendet werden. ### Dimmung per Direkt-Steuerung -Bei der Dimmung per Direkt-Steuerung wird jede steuerbare Verbrauchseinrichtung separat angesteuert und ihr Leistungsbezug auf 4,2 Kilowatt gedimmt. +Bei der Dimmung per Direkt-Steuerung wird jede steuerbare Verbrauchseinrichtung separat angesteuert und ihr Leistungsbezug auf 4,2kW gedimmt. Pro steuerbarer Verbrauchseinrichtung muss eine IO-Aktion konfiguriert werden und dort der Ladepunkt und der zugehörige Eingang angegeben werden. ### Rundsteuer-Empfänger-Kontakt (RSE) diff --git a/packages/helpermodules/subdata.py b/packages/helpermodules/subdata.py index 7a0140ff77..837c0445c3 100644 --- a/packages/helpermodules/subdata.py +++ b/packages/helpermodules/subdata.py @@ -635,7 +635,7 @@ def process_general_topic(self, var: general.General, msg: mqtt.MQTTMessage): log.exception("Fehler im subdata-Modul") def process_io_topic(self, var: Dict[str, Union[io_device.IoActions, io_device.IoStates]], msg: mqtt.MQTTMessage): - """ Handler für die Graph-Topics + """ Handler für die IO-Topics Parameter ---------- diff --git a/packages/modules/configuration.py b/packages/modules/configuration.py index f132d05aed..59628e4494 100644 --- a/packages/modules/configuration.py +++ b/packages/modules/configuration.py @@ -5,7 +5,7 @@ import dataclass_utils from helpermodules.pub import Pub -from modules.io_actions.groups import READBALE_GROUP_NAME, ActionGroup +from modules.io_actions.groups import READABLE_GROUP_NAME, ActionGroup log = logging.getLogger(__name__) @@ -337,7 +337,7 @@ def _pub_configurable_io_actions() -> None: try: action_groups = {} for group in ActionGroup: - action_groups[group.value] = {"group_name": READBALE_GROUP_NAME[group], "actions": []} + action_groups[group.value] = {"group_name": READABLE_GROUP_NAME[group], "actions": []} path_list = Path(_get_packages_path()/"modules"/"io_actions"/group.value).glob('**/api.py') for path in path_list: try: diff --git a/packages/modules/io_actions/groups.py b/packages/modules/io_actions/groups.py index c049b69b20..11fd644fe2 100644 --- a/packages/modules/io_actions/groups.py +++ b/packages/modules/io_actions/groups.py @@ -6,7 +6,7 @@ class ActionGroup(Enum): GENERATOR_SYSTEMS = "generator_systems" -READBALE_GROUP_NAME = { +READABLE_GROUP_NAME = { ActionGroup.CONTROLLABLE_CONSUMERS: "Steuerbare Verbrauchseinrichtungen (§14a)", ActionGroup.GENERATOR_SYSTEMS: "Erzeugungsanlagen", } From a6326672bf221646febee2e83b646c63d25292b6 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Mon, 18 Nov 2024 14:48:25 +0100 Subject: [PATCH 23/75] review --- packages/control/io_device.py | 13 +++++++++++-- packages/helpermodules/setdata.py | 4 ++-- packages/helpermodules/subdata.py | 4 ++++ packages/helpermodules/update_config.py | 4 ++-- packages/modules/common/abstract_device.py | 2 +- packages/modules/common/store/_io.py | 6 +++--- 6 files changed, 23 insertions(+), 10 deletions(-) diff --git a/packages/control/io_device.py b/packages/control/io_device.py index 51e9ef7344..4ff8a4c60a 100644 --- a/packages/control/io_device.py +++ b/packages/control/io_device.py @@ -13,8 +13,6 @@ class Get: analog_input: Dict[int, float] = None digital_input: Dict[int, bool] = None - analog_output: Dict[int, float] = None - digital_output: Dict[int, bool] = None fault_str: str = NO_ERROR fault_state: int = 0 @@ -23,9 +21,20 @@ def get_factory(): return Get() +@dataclass +class Set: + analog_output: Dict[int, float] = None + digital_output: Dict[int, bool] = None + + +def set_factory(): + return set() + + @dataclass class IoDeviceData: get: Get = field(default_factory=get_factory) + set: Set = field(default_factory=set_factory) class IoStates: diff --git a/packages/helpermodules/setdata.py b/packages/helpermodules/setdata.py index d4d92c8be1..ef96f036fc 100644 --- a/packages/helpermodules/setdata.py +++ b/packages/helpermodules/setdata.py @@ -848,9 +848,9 @@ def process_io_topic(self, msg: mqtt.MQTTMessage): if "config" in msg.topic: self._validate_value(msg, "json") elif ("get/digital_input" in msg.topic or - "get/digital_output" in msg.topic or "get/analog_input" in msg.topic or - "get/analog_output" in msg.topic): + "set/digital_output" in msg.topic or + "set/analog_output" in msg.topic): self._validate_value(msg, "json") elif "get/fault_state" in msg.topic: self._validate_value(msg, int, [(0, 2)]) diff --git a/packages/helpermodules/subdata.py b/packages/helpermodules/subdata.py index 837c0445c3..c70992493b 100644 --- a/packages/helpermodules/subdata.py +++ b/packages/helpermodules/subdata.py @@ -658,6 +658,10 @@ def process_io_topic(self, var: Dict[str, Union[io_device.IoActions, io_device.I # Sonst werden Dicts als Payload verwendet, aber es wird alles in ein eigenes Attribut gespeichert # Typ ist hier auch kein typing.Dict, sondern ein generisches Dict[int, bool] setattr(var["io_states"+index].data.get, msg.topic.split("/")[-1], payload) + elif re.search("/io/states/[0-9]+/set", msg.topic) is not None: + # Sonst werden Dicts als Payload verwendet, aber es wird alles in ein eigenes Attribut gespeichert + # Typ ist hier auch kein typing.Dict, sondern ein generisches Dict[int, bool] + setattr(var["io_states"+index].data.set, msg.topic.split("/")[-1], payload) else: self.set_json_payload_class(var["io_states"+index].data, msg) elif "io/action" in msg.topic: diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index c7bbc95c5f..dea8d4ed60 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -241,9 +241,9 @@ class UpdateConfig: "^openWB/internal_chargepoint/[0-1]/data/parent_cp$", "^openWB/io/states/[0-9]+/get/digital_input$", - "^openWB/io/states/[0-9]+/get/digital_output$", "^openWB/io/states/[0-9]+/get/analog_input$", - "^openWB/io/states/[0-9]+/get/analog_output$", + "^openWB/io/states/[0-9]+/set/digital_output$", + "^openWB/io/states/[0-9]+/set/analog_output$", "^openWB/io/action/[0-9]+/config$", "^openWB/set/log/request", diff --git a/packages/modules/common/abstract_device.py b/packages/modules/common/abstract_device.py index 8ed28f0285..88f33e90b7 100644 --- a/packages/modules/common/abstract_device.py +++ b/packages/modules/common/abstract_device.py @@ -51,7 +51,7 @@ def update(self, *kwargs) -> None: pass @abstractmethod - def set_power_limit(self, power_limit: int) -> None: + def set_power_limit(self, power_limit: float) -> None: # power_limit in Werten zwischen 0 und 1 pass diff --git a/packages/modules/common/store/_io.py b/packages/modules/common/store/_io.py index 35ae63de58..9ccae85c89 100644 --- a/packages/modules/common/store/_io.py +++ b/packages/modules/common/store/_io.py @@ -16,12 +16,12 @@ def update(self): try: if self.state.digital_input: pub_to_broker(f"openWB/set/io/states/{self.num}/get/digital_input", self.state.digital_input) - if self.state.digital_output: - pub_to_broker(f"openWB/set/io/states/{self.num}/get/digital_output", self.state.digital_output) if self.state.analog_input: pub_to_broker(f"openWB/set/io/states/{self.num}/get/analog_input", self.state.analog_input) + if self.state.digital_output: + pub_to_broker(f"openWB/set/io/states/{self.num}/set/digital_output", self.state.digital_output) if self.state.analog_output: - pub_to_broker(f"openWB/set/io/states/{self.num}/get/analog_output", self.state.analog_output) + pub_to_broker(f"openWB/set/io/states/{self.num}/set/analog_output", self.state.analog_output) except Exception as e: raise FaultState.from_exception(e) From f1953f5c4c07ee49ca6a3876d9ec820319f949dd Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Mon, 18 Nov 2024 15:55:36 +0100 Subject: [PATCH 24/75] fixes --- packages/control/io_device.py | 2 +- packages/modules/io_devices/dimm_kit/api.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/control/io_device.py b/packages/control/io_device.py index 4ff8a4c60a..727f7f10f5 100644 --- a/packages/control/io_device.py +++ b/packages/control/io_device.py @@ -28,7 +28,7 @@ class Set: def set_factory(): - return set() + return Set() @dataclass diff --git a/packages/modules/io_devices/dimm_kit/api.py b/packages/modules/io_devices/dimm_kit/api.py index d33480c9cb..1f1ffb3068 100644 --- a/packages/modules/io_devices/dimm_kit/api.py +++ b/packages/modules/io_devices/dimm_kit/api.py @@ -51,7 +51,7 @@ def write(digital_output: Dict[int, int]) -> None: version = False client = ModbusTcpClient_(config.configuration.ip_address, config.configuration.port) for i, value in config.output["digital"].items(): - client.write_single_coil(i-1, value, unit=config.configuration.modbus_id) + client.write_single_coil(int(i)-1, value, unit=config.configuration.modbus_id) return ConfigurableIo(config=config, component_reader=read, component_writer=write) From 0621827b9a25a23729880744f652bf0be7207f6c Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Tue, 19 Nov 2024 15:11:49 +0100 Subject: [PATCH 25/75] remove IO Device --- packages/helpermodules/command.py | 6 +++--- packages/helpermodules/update_config.py | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/helpermodules/command.py b/packages/helpermodules/command.py index 2990de2525..ddbc935133 100644 --- a/packages/helpermodules/command.py +++ b/packages/helpermodules/command.py @@ -59,7 +59,7 @@ class Command: ("ev_template", "vehicle/template/ev_template", 0), ("vehicle", "vehicle", 0), ("io_action", "io/action", -1), - ("io_device", "io/device", -1), + ("io_device", "system/io", -1), ] def __init__(self, event_command_completed: threading.Event): @@ -189,7 +189,7 @@ def addIoAction(self, connection_id: str, payload: dict) -> None: def removeIoAction(self, connection_id: str, payload: dict) -> None: if self.max_id_io_action >= payload["data"]["id"]: - ProcessBrokerBranch(f'io/{payload["data"]["id"]}/').remove_topics() + ProcessBrokerBranch(f'io/action/{payload["data"]["id"]}/').remove_topics() pub_user_message(payload, connection_id, f'IO-Gerät mit ID \'{payload["data"]["id"]}\' gelöscht.', MessageType.SUCCESS) else: @@ -219,7 +219,7 @@ def removeIoDevice(self, connection_id: str, payload: dict) -> None: """ löscht ein Io-Device. """ if self.max_id_io_device >= payload["data"]["id"]: - ProcessBrokerBranch(f'io/{payload["data"]["id"]}/').remove_topics() + ProcessBrokerBranch(f'system/io/{payload["data"]["id"]}/').remove_topics() pub_user_message(payload, connection_id, f'IO-Gerät mit ID \'{payload["data"]["id"]}\' gelöscht.', MessageType.SUCCESS) else: diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index dea8d4ed60..a08f13103a 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -148,6 +148,8 @@ class UpdateConfig: "^openWB/command/max_id/device$", "^openWB/command/max_id/ev_template$", "^openWB/command/max_id/hierarchy$", + "^openWB/command/max_id/io_action$", + "^openWB/command/max_id/io_device$", "^openWB/command/max_id/mqtt_bridge$", "^openWB/command/max_id/vehicle$", "^openWB/command/[A-Za-z0-9_]+/error$", From 05b4f86d2001094fef6f680819fc607f2ba9ca35 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 20 Nov 2024 14:34:03 +0100 Subject: [PATCH 26/75] local gpio states --- packages/control/io_device.py | 2 + packages/helpermodules/broker.py | 11 +++- packages/helpermodules/command.py | 14 ++--- packages/helpermodules/create_debug.py | 10 ++-- .../data_migration/data_migration.py | 4 +- .../measurement_logging/write_log.py | 4 +- packages/helpermodules/setdata.py | 6 +- packages/helpermodules/subdata.py | 4 +- packages/helpermodules/update_config.py | 4 +- packages/main.py | 7 ++- packages/modules/common/store/_io.py | 4 +- .../add_on/__init__.py | 0 .../add_on/api.py | 56 +++++++++++++++++++ .../add_on/config.py | 46 +++++++++++++++ .../internal_chargepoint_handler/gpio.py | 39 +++++++++++++ packages/modules/io_devices/add_on/api.py | 41 ++++++++------ packages/modules/io_devices/add_on/config.py | 4 +- 17 files changed, 208 insertions(+), 48 deletions(-) create mode 100644 packages/modules/internal_chargepoint_handler/add_on/__init__.py create mode 100644 packages/modules/internal_chargepoint_handler/add_on/api.py create mode 100644 packages/modules/internal_chargepoint_handler/add_on/config.py create mode 100644 packages/modules/internal_chargepoint_handler/gpio.py diff --git a/packages/control/io_device.py b/packages/control/io_device.py index 727f7f10f5..4d3ee98338 100644 --- a/packages/control/io_device.py +++ b/packages/control/io_device.py @@ -12,7 +12,9 @@ @dataclass class Get: analog_input: Dict[int, float] = None + analog_output: Dict[int, float] = None digital_input: Dict[int, bool] = None + digital_output: Dict[int, bool] = None fault_str: str = NO_ERROR fault_state: int = 0 diff --git a/packages/helpermodules/broker.py b/packages/helpermodules/broker.py index ab7feb3149..ef1bf9fc59 100644 --- a/packages/helpermodules/broker.py +++ b/packages/helpermodules/broker.py @@ -16,14 +16,19 @@ def get_name_suffix() -> str: return f"{serial}-{datetime.datetime.today().timestamp()}" -class InternalBrokerClient: - def __init__(self, name: str, on_connect: Callable, on_message: Callable) -> None: +class BrokerClient: + def __init__(self, + name: str, + on_connect: Callable, + on_message: Callable, + host: str = "localhost", + port: int = 1886) -> None: try: self.name = f"openWB-{name}-{get_name_suffix()}" self.client = mqtt.Client(self.name) self.client.on_connect = on_connect self.client.on_message = on_message - self.client.connect("localhost", 1886) + self.client.connect(host, port) except Exception: log.exception("Fehler beim Abonnieren des internen Brokers") diff --git a/packages/helpermodules/command.py b/packages/helpermodules/command.py index ddbc935133..4279f027bf 100644 --- a/packages/helpermodules/command.py +++ b/packages/helpermodules/command.py @@ -23,7 +23,7 @@ from helpermodules.utils.run_command import run_command from modules.backup_clouds.onedrive.api import generateMSALAuthCode, retrieveMSALTokens -from helpermodules.broker import InternalBrokerClient +from helpermodules.broker import BrokerClient from helpermodules.data_migration.data_migration import MigrateData from helpermodules.measurement_logging.process_log import get_daily_log, get_monthly_log, get_yearly_log from helpermodules.messaging import MessageType, pub_user_message @@ -108,7 +108,7 @@ def sub_commands(self): # kurze Pause, damit die ID vom Broker ermittelt werden können. Sonst werden noch vorher die retained # Topics empfangen, was zu doppelten Meldungen im Protokoll führt. time.sleep(1) - self.internal_broker_client = InternalBrokerClient("command", self.on_connect, self.on_message) + self.internal_broker_client = BrokerClient("command", self.on_connect, self.on_message) self.internal_broker_client.start_infinite_loop() except Exception: log.exception("Fehler im Command-Modul") @@ -865,18 +865,18 @@ def __init__(self, topic_str: str) -> None: def get_payload(self): self.payload: str - InternalBrokerClient("processBrokerBranch", self.on_connect, self.__get_payload).start_finite_loop() + BrokerClient("processBrokerBranch", self.on_connect, self.__get_payload).start_finite_loop() return json.loads(self.payload) def remove_topics(self): """ löscht einen Topic-Zweig auf dem Broker. Payload "" löscht nur ein einzelnes Topic. """ - InternalBrokerClient("processBrokerBranch", self.on_connect, self.__on_message_rm).start_finite_loop() + BrokerClient("processBrokerBranch", self.on_connect, self.__on_message_rm).start_finite_loop() def get_max_id(self) -> List[str]: try: self.received_topics = [] - InternalBrokerClient("processBrokerBranch", self.on_connect, self.__on_message_max_id).start_finite_loop() + BrokerClient("processBrokerBranch", self.on_connect, self.__on_message_max_id).start_finite_loop() return self.received_topics except Exception: log.exception("Fehler im Command-Modul") @@ -886,8 +886,8 @@ def check_mqtt_bridge_exists(self, name: str) -> bool: try: self.name = name self.mqtt_bridge_exists = False - InternalBrokerClient("processBrokerBranch", self.on_connect, - self.__on_message_mqtt_bridge_exists).start_finite_loop() + BrokerClient("processBrokerBranch", self.on_connect, + self.__on_message_mqtt_bridge_exists).start_finite_loop() return self.mqtt_bridge_exists except Exception: log.exception("Fehler im Command-Modul") diff --git a/packages/helpermodules/create_debug.py b/packages/helpermodules/create_debug.py index 461b46f802..b6cbb395b2 100644 --- a/packages/helpermodules/create_debug.py +++ b/packages/helpermodules/create_debug.py @@ -10,7 +10,7 @@ from control.chargepoint.chargepoint import Chargepoint import dataclass_utils from helpermodules import subdata -from helpermodules.broker import InternalBrokerClient +from helpermodules.broker import BrokerClient from helpermodules.pub import Pub from helpermodules.utils.run_command import run_command from helpermodules.utils.topic_parser import decode_payload @@ -218,7 +218,7 @@ def __init__(self) -> None: self.content = "" def get_broker(self): - InternalBrokerClient("processBrokerBranch", self.__on_connect_broker, self.__get_content).start_finite_loop() + BrokerClient("processBrokerBranch", self.__on_connect_broker, self.__get_content).start_finite_loop() return self.content def __on_connect_broker(self, client, userdata, flags, rc): @@ -228,8 +228,8 @@ def __get_content(self, client, userdata, msg): self.content += f"{msg.topic} {decode_payload(msg.payload)}\n" def get_broker_essentials(self): - InternalBrokerClient("processBrokerBranch", self.__on_connect_broker_essentials, - self.__get_content).start_finite_loop() + BrokerClient("processBrokerBranch", self.__on_connect_broker_essentials, + self.__get_content).start_finite_loop() return self.content def __on_connect_broker_essentials(self, client, userdata, flags, rc): @@ -248,7 +248,7 @@ def __on_connect_broker_essentials(self, client, userdata, flags, rc): client.subscribe("openWB/optional/et/provider", 2) def get_bridges(self): - InternalBrokerClient("processBrokerBranch", self.__on_connect_bridges, self.__get_bridges).start_finite_loop() + BrokerClient("processBrokerBranch", self.__on_connect_bridges, self.__get_bridges).start_finite_loop() return self.content def __on_connect_bridges(self, client, userdata, flags, rc): diff --git a/packages/helpermodules/data_migration/data_migration.py b/packages/helpermodules/data_migration/data_migration.py index ccaa8ca87b..ad7e2c4129 100644 --- a/packages/helpermodules/data_migration/data_migration.py +++ b/packages/helpermodules/data_migration/data_migration.py @@ -23,7 +23,7 @@ from control.ev import ev from dataclass_utils import dataclass_from_dict import dataclass_utils -from helpermodules.broker import InternalBrokerClient +from helpermodules.broker import BrokerClient from helpermodules.data_migration.id_mapping import MapId from helpermodules.hardware_configuration import update_hardware_configuration from helpermodules.measurement_logging.process_log import get_totals, string_to_float, string_to_int @@ -643,7 +643,7 @@ def merge_list_of_records(self, key): class BrokerCphargepoints: def get_configured_cp_ids(self) -> List: self.all_received_topics = {} - InternalBrokerClient("update-config", self.on_connect, self.on_message).start_finite_loop() + BrokerClient("update-config", self.on_connect, self.on_message).start_finite_loop() cp_ids = [] for topic, payload in self.all_received_topics.items(): cp_ids.append(get_index(topic)) diff --git a/packages/helpermodules/measurement_logging/write_log.py b/packages/helpermodules/measurement_logging/write_log.py index 92707c9215..fc0b3455a8 100644 --- a/packages/helpermodules/measurement_logging/write_log.py +++ b/packages/helpermodules/measurement_logging/write_log.py @@ -10,7 +10,7 @@ from typing import Dict, Optional from control import data -from helpermodules.broker import InternalBrokerClient +from helpermodules.broker import BrokerClient from helpermodules import timecheck from helpermodules.utils.json_file_handler import write_and_check from helpermodules.utils.topic_parser import decode_payload, get_index @@ -99,7 +99,7 @@ def __init__(self) -> None: self.sh_dict: Dict = {} self.sh_names: Dict = {} try: - InternalBrokerClient("smart-home-logging", self.on_connect, self.on_message).start_finite_loop() + BrokerClient("smart-home-logging", self.on_connect, self.on_message).start_finite_loop() for topic, payload in self.all_received_topics.items(): if re.search("openWB/LegacySmartHome/config/get/Devices/[1-9]/device_configured", topic) is not None: if decode_payload(payload) == 1: diff --git a/packages/helpermodules/setdata.py b/packages/helpermodules/setdata.py index ef96f036fc..42be556054 100644 --- a/packages/helpermodules/setdata.py +++ b/packages/helpermodules/setdata.py @@ -11,7 +11,7 @@ import logging from helpermodules import hardware_configuration, subdata -from helpermodules.broker import InternalBrokerClient +from helpermodules.broker import BrokerClient from helpermodules.pub import Pub, pub_single from helpermodules.utils.topic_parser import (decode_payload, get_index, get_index_position, get_second_index, get_second_index_position) @@ -41,7 +41,7 @@ def __init__(self, self.heartbeat = False def set_data(self): - self.internal_broker_client = InternalBrokerClient("mqttset", self.on_connect, self.on_message) + self.internal_broker_client = BrokerClient("mqttset", self.on_connect, self.on_message) self.event_subdata_initialized.wait() log.debug("Subdata initialization completed. Starting setdata loop to broker.") self.internal_broker_client.start_infinite_loop() @@ -849,6 +849,8 @@ def process_io_topic(self, msg: mqtt.MQTTMessage): self._validate_value(msg, "json") elif ("get/digital_input" in msg.topic or "get/analog_input" in msg.topic or + "get/digital_output" in msg.topic or + "get/analog_output" in msg.topic or "set/digital_output" in msg.topic or "set/analog_output" in msg.topic): self._validate_value(msg, "json") diff --git a/packages/helpermodules/subdata.py b/packages/helpermodules/subdata.py index c70992493b..63703c0a9c 100644 --- a/packages/helpermodules/subdata.py +++ b/packages/helpermodules/subdata.py @@ -21,7 +21,7 @@ from control.optional_data import Ocpp from helpermodules import graph, system from helpermodules.abstract_plans import AutolockPlan, ScheduledChargingPlan, TimeChargingPlan -from helpermodules.broker import InternalBrokerClient +from helpermodules.broker import BrokerClient from helpermodules.messaging import MessageType, pub_system_message from helpermodules.utils.run_command import run_command from helpermodules.utils.topic_parser import decode_payload, get_index, get_second_index @@ -109,7 +109,7 @@ def __init__(self, self.heartbeat = False def sub_topics(self): - self.internal_broker_client = InternalBrokerClient("mqttsub", self.on_connect, self.on_message) + self.internal_broker_client = BrokerClient("mqttsub", self.on_connect, self.on_message) self.internal_broker_client.start_infinite_loop() def disconnect(self) -> None: diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index a08f13103a..cc6fb35605 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -15,7 +15,7 @@ from control.chargepoint.chargepoint_template import get_chargepoint_template_default from helpermodules import timecheck from helpermodules import hardware_configuration -from helpermodules.broker import InternalBrokerClient +from helpermodules.broker import BrokerClient from helpermodules.constants import NO_ERROR from helpermodules.hardware_configuration import ( get_hardware_configuration_setting, @@ -558,7 +558,7 @@ def __init__(self) -> None: def update(self): log.debug("Broker-Konfiguration aktualisieren") - InternalBrokerClient("update-config", self.on_connect, self.on_message).start_finite_loop() + BrokerClient("update-config", self.on_connect, self.on_message).start_finite_loop() try: # erst breaking changes auflösen, sonst sind alte Topics schon gelöscht self.__solve_breaking_changes() diff --git a/packages/main.py b/packages/main.py index afa82ce914..6430df8a22 100755 --- a/packages/main.py +++ b/packages/main.py @@ -5,6 +5,7 @@ import logging from helpermodules import logger from helpermodules.utils import thread_handler +from modules.internal_chargepoint_handler.gpio import InternalGpioHandler # als erstes logging initialisieren, damit auch ImportError geloggt werden logger.setup_logging() log = logging.getLogger() @@ -190,6 +191,7 @@ def schedule_jobs(): prep = prepare.Prepare() general_internal_chargepoint_handler = GeneralInternalChargepointHandler() rfid = RfidReader() + gpio = InternalGpioHandler() event_ev_template = threading.Event() event_ev_template.set() event_charge_template = threading.Event() @@ -237,9 +239,12 @@ def schedule_jobs(): t_internal_chargepoint = Thread(target=general_internal_chargepoint_handler.handler, args=(), name="Internal Chargepoint") if rfid.keyboards_detected: - t_rfid = Thread(target=rfid.run, args=(), name="Internal Chargepoint") + t_rfid = Thread(target=rfid.run, args=(), name="Internal RFID") t_rfid.start() + t_gpio = Thread(target=gpio.loop, args=(), name="Internal GPIO") + t_gpio.start() + t_sub.start() t_set.start() t_comm.start() diff --git a/packages/modules/common/store/_io.py b/packages/modules/common/store/_io.py index 9ccae85c89..46200dfe11 100644 --- a/packages/modules/common/store/_io.py +++ b/packages/modules/common/store/_io.py @@ -19,9 +19,9 @@ def update(self): if self.state.analog_input: pub_to_broker(f"openWB/set/io/states/{self.num}/get/analog_input", self.state.analog_input) if self.state.digital_output: - pub_to_broker(f"openWB/set/io/states/{self.num}/set/digital_output", self.state.digital_output) + pub_to_broker(f"openWB/set/io/states/{self.num}/get/digital_output", self.state.digital_output) if self.state.analog_output: - pub_to_broker(f"openWB/set/io/states/{self.num}/set/analog_output", self.state.analog_output) + pub_to_broker(f"openWB/set/io/states/{self.num}/get/analog_output", self.state.analog_output) except Exception as e: raise FaultState.from_exception(e) diff --git a/packages/modules/internal_chargepoint_handler/add_on/__init__.py b/packages/modules/internal_chargepoint_handler/add_on/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/modules/internal_chargepoint_handler/add_on/api.py b/packages/modules/internal_chargepoint_handler/add_on/api.py new file mode 100644 index 0000000000..09d2ed189c --- /dev/null +++ b/packages/modules/internal_chargepoint_handler/add_on/api.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python3 +import logging +from typing import Dict, Tuple + +from modules.common.abstract_device import DeviceDescriptor +from modules.common.component_state import IoState +from modules.common.configurable_io import ConfigurableIo +from modules.io_devices.add_on.config import AddOn + +log = logging.getLogger(__name__) +has_gpio = True + +try: + import RPi.GPIO as GPIO +except ImportError: + has_gpio = False + log.info("failed to import RPi.GPIO! maybe we are not running on a pi") + log.warning("RSE disabled!") + + +def create_io(config: AddOn): + def read() -> Tuple[bool, bool]: + if has_gpio: + return IoState(digital_input={"21": GPIO.input(21) == GPIO.LOW, + "24": GPIO.input(24) == GPIO.LOW, + "31": GPIO.input(31) == GPIO.LOW, + "32": GPIO.input(32) == GPIO.LOW, + "33": GPIO.input(33) == GPIO.LOW, + "36": GPIO.input(36) == GPIO.LOW, + "40": GPIO.input(40) == GPIO.LOW}) + else: + return IoState() + + def write(digital_output: Dict[int, int]): + if has_gpio: + for i, value in digital_output.items(): + GPIO.output(i, GPIO.HIGH if value else GPIO.LOW) + return IoState(dict(digital_output=digital_output)) + + if has_gpio: + GPIO.setmode(GPIO.BOARD) + GPIO.setup(21, GPIO.IN, pull_up_down=GPIO.PUD_UP) # RSE 2 + GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_UP) # RSE 1 + GPIO.setup(31, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Taster 3 PV + GPIO.setup(32, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Taster 1 Sofortladen + GPIO.setup(33, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Taster 4 Stop + GPIO.setup(36, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Taster 2 Min+PV + GPIO.setup(40, GPIO.IN, pull_up_down=GPIO.PUD_UP) # TAster 5 Standby + GPIO.setup(7, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.output["digital"]["7"] else GPIO.PUD_DOWN) # LED 3 + GPIO.setup(16, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.output["digital"]["16"] else GPIO.PUD_DOWN) # LED 2 + GPIO.setup(18, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.output["digital"]["18"] else GPIO.PUD_DOWN) # LED 1 + + return ConfigurableIo(config=config, component_reader=read, component_writer=write) + + +device_descriptor = DeviceDescriptor(configuration_factory=AddOn) diff --git a/packages/modules/internal_chargepoint_handler/add_on/config.py b/packages/modules/internal_chargepoint_handler/add_on/config.py new file mode 100644 index 0000000000..b885b070fc --- /dev/null +++ b/packages/modules/internal_chargepoint_handler/add_on/config.py @@ -0,0 +1,46 @@ +from typing import Dict, Union +from modules.common.io_setup import IoDeviceSetup + + +class AddOnConfiguration: + def __init__(self): + pass + + +def init_input(): + return {"analog": {}, + "digital": {"21": None, + "24": None, + "31": None, + "32": None, + "33": None, + "36": None, + "40": None} + } + + +def init_output(): + return {"analog": {}, + "digital": {"7": False, + "16": False, + "18": False} + } + + +class AddOn(IoDeviceSetup[AddOnConfiguration]): + def __init__(self, + name: str = "GPIOs auf der AddOn-Platine", + type: str = "add_on", + id: Union[int, str] = 0, + configuration: AddOnConfiguration = None, + input: Dict[str, Dict[int, float]] = None, + output: Dict[str, Dict[int, float]] = None) -> None: + self.name = name + self.type = type + self.id = id + self.configuration = configuration or AddOnConfiguration() + if input is None: + input = init_input() + if output is None: + output = init_output() + super().__init__(name, type, id, configuration or AddOnConfiguration(), input=input, output=output) diff --git a/packages/modules/internal_chargepoint_handler/gpio.py b/packages/modules/internal_chargepoint_handler/gpio.py new file mode 100644 index 0000000000..08c22481b7 --- /dev/null +++ b/packages/modules/internal_chargepoint_handler/gpio.py @@ -0,0 +1,39 @@ +import logging +import time + +from modules.internal_chargepoint_handler.add_on.api import create_io +from modules.internal_chargepoint_handler.add_on.config import AddOn + + +log = logging.getLogger(__name__) +has_gpio = True + +try: + import RPi.GPIO as GPIO +except ImportError: + has_gpio = False + log.info("failed to import RPi.GPIO! maybe we are not running on a pi") + log.warning("RSE disabled!") + + +class InternalGpioHandler: + def __init__(self): + if has_gpio: + GPIO.setmode(GPIO.BOARD) + input_pins = [21, 24, 31, 32, 33, 36, 40] + # 21: RSE 2 + # 24: RSE 1 + # 31: Taster 3 PV + # 32: Taster 1 Sofortladen + # 33: Taster 4 Stop + # 36: Taster 2 Min+PV + # 40: Taster 5 Standby + GPIO.setup(input_pins, GPIO.IN, pull_up_down=GPIO.PUD_UP) + + self.io = create_io(AddOn(id="local")) + + def loop(self): + if has_gpio: + while True: + self.io.read() + time.sleep(3) diff --git a/packages/modules/io_devices/add_on/api.py b/packages/modules/io_devices/add_on/api.py index 09d2ed189c..ada8d11daf 100644 --- a/packages/modules/io_devices/add_on/api.py +++ b/packages/modules/io_devices/add_on/api.py @@ -2,10 +2,12 @@ import logging from typing import Dict, Tuple +from helpermodules.broker import BrokerClient +from helpermodules.utils.topic_parser import decode_payload from modules.common.abstract_device import DeviceDescriptor from modules.common.component_state import IoState from modules.common.configurable_io import ConfigurableIo -from modules.io_devices.add_on.config import AddOn +from modules.internal_chargepoint_handler.add_on.config import AddOn log = logging.getLogger(__name__) has_gpio = True @@ -20,16 +22,7 @@ def create_io(config: AddOn): def read() -> Tuple[bool, bool]: - if has_gpio: - return IoState(digital_input={"21": GPIO.input(21) == GPIO.LOW, - "24": GPIO.input(24) == GPIO.LOW, - "31": GPIO.input(31) == GPIO.LOW, - "32": GPIO.input(32) == GPIO.LOW, - "33": GPIO.input(33) == GPIO.LOW, - "36": GPIO.input(36) == GPIO.LOW, - "40": GPIO.input(40) == GPIO.LOW}) - else: - return IoState() + return LocalIo().get(config.configuration.host) def write(digital_output: Dict[int, int]): if has_gpio: @@ -39,13 +32,6 @@ def write(digital_output: Dict[int, int]): if has_gpio: GPIO.setmode(GPIO.BOARD) - GPIO.setup(21, GPIO.IN, pull_up_down=GPIO.PUD_UP) # RSE 2 - GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_UP) # RSE 1 - GPIO.setup(31, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Taster 3 PV - GPIO.setup(32, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Taster 1 Sofortladen - GPIO.setup(33, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Taster 4 Stop - GPIO.setup(36, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Taster 2 Min+PV - GPIO.setup(40, GPIO.IN, pull_up_down=GPIO.PUD_UP) # TAster 5 Standby GPIO.setup(7, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.output["digital"]["7"] else GPIO.PUD_DOWN) # LED 3 GPIO.setup(16, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.output["digital"]["16"] else GPIO.PUD_DOWN) # LED 2 GPIO.setup(18, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.output["digital"]["18"] else GPIO.PUD_DOWN) # LED 1 @@ -54,3 +40,22 @@ def write(digital_output: Dict[int, int]): device_descriptor = DeviceDescriptor(configuration_factory=AddOn) + + +class LocalIo: + def __init__(self) -> None: + self.io_state = IoState() + + def get(self, host: str): + self.payload: str + BrokerClient("processBrokerBranch", self.on_connect, self.on_message, host, + 1886 if host == "localhost" else 1883).start_finite_loop() + return self.io_state + + def on_connect(self, client, userdata, flags, rc): + """ connect to broker and subscribe to set topics + """ + client.subscribe('openWB/io/states/local/#', 2) + + def on_message(self, client, userdata, msg): + setattr(self.io_state, msg.topic.split("/")[-1], decode_payload(msg.payload)) diff --git a/packages/modules/io_devices/add_on/config.py b/packages/modules/io_devices/add_on/config.py index edb59d91dd..b885b070fc 100644 --- a/packages/modules/io_devices/add_on/config.py +++ b/packages/modules/io_devices/add_on/config.py @@ -1,4 +1,4 @@ -from typing import Dict +from typing import Dict, Union from modules.common.io_setup import IoDeviceSetup @@ -31,7 +31,7 @@ class AddOn(IoDeviceSetup[AddOnConfiguration]): def __init__(self, name: str = "GPIOs auf der AddOn-Platine", type: str = "add_on", - id: int = 0, + id: Union[int, str] = 0, configuration: AddOnConfiguration = None, input: Dict[str, Dict[int, float]] = None, output: Dict[str, Dict[int, float]] = None) -> None: From e4706dfe2185ae74107149f31aae1a418e1aa37f Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 20 Nov 2024 14:58:38 +0100 Subject: [PATCH 27/75] fix --- packages/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/main.py b/packages/main.py index 6430df8a22..a792659429 100755 --- a/packages/main.py +++ b/packages/main.py @@ -5,7 +5,6 @@ import logging from helpermodules import logger from helpermodules.utils import thread_handler -from modules.internal_chargepoint_handler.gpio import InternalGpioHandler # als erstes logging initialisieren, damit auch ImportError geloggt werden logger.setup_logging() log = logging.getLogger() @@ -30,6 +29,7 @@ from helpermodules.utils import exit_after from modules import configuration, loadvars, update_soc from modules.internal_chargepoint_handler.internal_chargepoint_handler import GeneralInternalChargepointHandler +from modules.internal_chargepoint_handler.gpio import InternalGpioHandler from modules.internal_chargepoint_handler.rfid import RfidReader from modules.utils import wait_for_module_update_completed from smarthome.smarthome import readmq, smarthome_handler From 2405a059912a74ff16457bd492dbd9c2bdc5ed1a Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Thu, 21 Nov 2024 08:58:55 +0100 Subject: [PATCH 28/75] fix missing io add_on host property --- packages/modules/io_devices/add_on/api.py | 9 ++++----- packages/modules/io_devices/add_on/config.py | 4 ++-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/packages/modules/io_devices/add_on/api.py b/packages/modules/io_devices/add_on/api.py index ada8d11daf..5410f19bf7 100644 --- a/packages/modules/io_devices/add_on/api.py +++ b/packages/modules/io_devices/add_on/api.py @@ -7,7 +7,7 @@ from modules.common.abstract_device import DeviceDescriptor from modules.common.component_state import IoState from modules.common.configurable_io import ConfigurableIo -from modules.internal_chargepoint_handler.add_on.config import AddOn +from modules.io_devices.add_on.config import AddOn log = logging.getLogger(__name__) has_gpio = True @@ -22,7 +22,7 @@ def create_io(config: AddOn): def read() -> Tuple[bool, bool]: - return LocalIo().get(config.configuration.host) + return IoStateManager().get(config.configuration.host) def write(digital_output: Dict[int, int]): if has_gpio: @@ -42,12 +42,11 @@ def write(digital_output: Dict[int, int]): device_descriptor = DeviceDescriptor(configuration_factory=AddOn) -class LocalIo: +class IoStateManager: def __init__(self) -> None: self.io_state = IoState() - def get(self, host: str): - self.payload: str + def get(self, host: str) -> IoState: BrokerClient("processBrokerBranch", self.on_connect, self.on_message, host, 1886 if host == "localhost" else 1883).start_finite_loop() return self.io_state diff --git a/packages/modules/io_devices/add_on/config.py b/packages/modules/io_devices/add_on/config.py index b885b070fc..fa6b99210b 100644 --- a/packages/modules/io_devices/add_on/config.py +++ b/packages/modules/io_devices/add_on/config.py @@ -3,8 +3,8 @@ class AddOnConfiguration: - def __init__(self): - pass + def __init__(self, host: str = "localhost") -> None: + self.host = host def init_input(): From c23e93bd23c774cc3b9a42b5a9ca17933d13cd8e Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 22 Nov 2024 07:45:42 +0100 Subject: [PATCH 29/75] fixreading gpios, cp num instead of host --- data/config/mosquitto/openwb_local.conf | 4 +++- packages/control/io_device.py | 2 +- packages/helpermodules/subdata.py | 2 +- packages/modules/internal_chargepoint_handler/add_on/api.py | 6 +++--- packages/modules/internal_chargepoint_handler/gpio.py | 1 + packages/modules/io_devices/add_on/api.py | 3 ++- packages/modules/io_devices/add_on/config.py | 4 ++-- 7 files changed, 13 insertions(+), 9 deletions(-) diff --git a/data/config/mosquitto/openwb_local.conf b/data/config/mosquitto/openwb_local.conf index 13fbd9ec8c..a423a248bc 100644 --- a/data/config/mosquitto/openwb_local.conf +++ b/data/config/mosquitto/openwb_local.conf @@ -1,4 +1,4 @@ -# openwb-version:16 +# openwb-version:17 listener 1886 localhost allow_anonymous true @@ -28,6 +28,8 @@ topic openWB/chargepoint/template/# out 2 topic openWB/internal_chargepoint/# out 2 +topic openWB/io/# out 2 + topic openWB/pv/config/configured out 2 topic openWB/pv/get/# out 2 topic openWB/pv/+/config/# out 2 diff --git a/packages/control/io_device.py b/packages/control/io_device.py index 4d3ee98338..6c144c22c9 100644 --- a/packages/control/io_device.py +++ b/packages/control/io_device.py @@ -40,7 +40,7 @@ class IoDeviceData: class IoStates: - def __init__(self, num: int): + def __init__(self, num: Union[int, str]): self.num = num self.data = IoDeviceData() diff --git a/packages/helpermodules/subdata.py b/packages/helpermodules/subdata.py index 63703c0a9c..39132db3cc 100644 --- a/packages/helpermodules/subdata.py +++ b/packages/helpermodules/subdata.py @@ -653,7 +653,7 @@ def process_io_topic(self, var: Dict[str, Union[io_device.IoActions, io_device.I var.pop("io_states"+index) else: if "io_states"+index not in var: - var["io_states"+index] = io_device.IoStates(int(index)) + var["io_states"+index] = io_device.IoStates(index) if re.search("/io/states/[0-9]+/get", msg.topic) is not None: # Sonst werden Dicts als Payload verwendet, aber es wird alles in ein eigenes Attribut gespeichert # Typ ist hier auch kein typing.Dict, sondern ein generisches Dict[int, bool] diff --git a/packages/modules/internal_chargepoint_handler/add_on/api.py b/packages/modules/internal_chargepoint_handler/add_on/api.py index 09d2ed189c..72f7624b74 100644 --- a/packages/modules/internal_chargepoint_handler/add_on/api.py +++ b/packages/modules/internal_chargepoint_handler/add_on/api.py @@ -46,9 +46,9 @@ def write(digital_output: Dict[int, int]): GPIO.setup(33, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Taster 4 Stop GPIO.setup(36, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Taster 2 Min+PV GPIO.setup(40, GPIO.IN, pull_up_down=GPIO.PUD_UP) # TAster 5 Standby - GPIO.setup(7, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.output["digital"]["7"] else GPIO.PUD_DOWN) # LED 3 - GPIO.setup(16, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.output["digital"]["16"] else GPIO.PUD_DOWN) # LED 2 - GPIO.setup(18, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.output["digital"]["18"] else GPIO.PUD_DOWN) # LED 1 + # GPIO.setup(7, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.output["digital"]["7"] else GPIO.PUD_DOWN) # LED 3 + # GPIO.setup(16, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.output["digital"]["16"] else GPIO.PUD_DOWN) # LED 2 + # GPIO.setup(18, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.output["digital"]["18"] else GPIO.PUD_DOWN) # LED 1 return ConfigurableIo(config=config, component_reader=read, component_writer=write) diff --git a/packages/modules/internal_chargepoint_handler/gpio.py b/packages/modules/internal_chargepoint_handler/gpio.py index 08c22481b7..ff000b9359 100644 --- a/packages/modules/internal_chargepoint_handler/gpio.py +++ b/packages/modules/internal_chargepoint_handler/gpio.py @@ -36,4 +36,5 @@ def loop(self): if has_gpio: while True: self.io.read() + self.io.store.update() time.sleep(3) diff --git a/packages/modules/io_devices/add_on/api.py b/packages/modules/io_devices/add_on/api.py index 5410f19bf7..8ef885b90b 100644 --- a/packages/modules/io_devices/add_on/api.py +++ b/packages/modules/io_devices/add_on/api.py @@ -2,6 +2,7 @@ import logging from typing import Dict, Tuple +from control import data from helpermodules.broker import BrokerClient from helpermodules.utils.topic_parser import decode_payload from modules.common.abstract_device import DeviceDescriptor @@ -22,7 +23,7 @@ def create_io(config: AddOn): def read() -> Tuple[bool, bool]: - return IoStateManager().get(config.configuration.host) + return IoStateManager().get(data.data.cp_data[f"cp{config.configuration.cp_num}"].chargepoint_module.config.configuration.ip_address) def write(digital_output: Dict[int, int]): if has_gpio: diff --git a/packages/modules/io_devices/add_on/config.py b/packages/modules/io_devices/add_on/config.py index fa6b99210b..ff6b6c3f26 100644 --- a/packages/modules/io_devices/add_on/config.py +++ b/packages/modules/io_devices/add_on/config.py @@ -3,8 +3,8 @@ class AddOnConfiguration: - def __init__(self, host: str = "localhost") -> None: - self.host = host + def __init__(self, cp_num: int = None) -> None: + self.cp_num = cp_num def init_input(): From fd25907f3004708b8975dc15d8f672f8d0893f9e Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 27 Nov 2024 08:24:00 +0100 Subject: [PATCH 30/75] pull up down --- packages/helpermodules/subdata.py | 13 +++++-- packages/main.py | 5 ++- .../add_on/api.py | 19 ++++------ .../add_on/config.py | 37 +++++++++++++------ .../internal_chargepoint_handler/gpio.py | 31 ++++++++-------- packages/modules/io_devices/add_on/api.py | 22 +++++------ 6 files changed, 71 insertions(+), 56 deletions(-) diff --git a/packages/helpermodules/subdata.py b/packages/helpermodules/subdata.py index 39132db3cc..fdca20a1a5 100644 --- a/packages/helpermodules/subdata.py +++ b/packages/helpermodules/subdata.py @@ -87,7 +87,8 @@ def __init__(self, event_update_soc: threading.Event, event_soc: threading.Event, event_jobs_running: threading.Event, - event_modbus_server: threading.Event,): + event_modbus_server: threading.Event, + event_restart_gpio: threading.Event,): self.event_ev_template = event_ev_template self.event_charge_template = event_charge_template self.event_cp_config = event_cp_config @@ -106,6 +107,7 @@ def __init__(self, self.event_soc = event_soc self.event_jobs_running = event_jobs_running self.event_modbus_server = event_modbus_server + self.event_restart_gpio = event_restart_gpio self.heartbeat = False def sub_topics(self): @@ -899,8 +901,13 @@ def process_system_topic(self, client: mqtt.Client, var: dict, msg: mqtt.MQTTMes str(index)+" gefunden werden.") else: io_config = decode_payload(msg.payload) - dev = importlib.import_module(f".io_devices.{io_config['type']}.api", - "modules") + if "/io/local/config" in msg.topic: + self.event_restart_gpio.set() + dev = importlib.import_module(f".internal_chargepoint_handler.{io_config['type']}.api", + "modules") + else: + dev = importlib.import_module(f".io_devices.{io_config['type']}.api", + "modules") config = dataclass_from_dict(dev.device_descriptor.configuration_factory, io_config) var["io"+index] = dev.create_io(config) else: diff --git a/packages/main.py b/packages/main.py index a792659429..d0888e3d64 100755 --- a/packages/main.py +++ b/packages/main.py @@ -191,7 +191,6 @@ def schedule_jobs(): prep = prepare.Prepare() general_internal_chargepoint_handler = GeneralInternalChargepointHandler() rfid = RfidReader() - gpio = InternalGpioHandler() event_ev_template = threading.Event() event_ev_template.set() event_charge_template = threading.Event() @@ -215,6 +214,8 @@ def schedule_jobs(): event_jobs_running = threading.Event() event_jobs_running.set() event_update_soc = threading.Event() + event_restart_gpio = threading.Event() + gpio = InternalGpioHandler(event_restart_gpio) prep = prepare.Prepare() soc = update_soc.UpdateSoc(event_update_soc) set = setdata.SetData(event_ev_template, event_charge_template, @@ -230,7 +231,7 @@ def schedule_jobs(): event_update_config_completed, event_update_soc, event_soc, - event_jobs_running, event_modbus_server) + event_jobs_running, event_modbus_server, event_restart_gpio) comm = command.Command(event_command_completed) t_sub = Thread(target=sub.sub_topics, args=(), name="Subdata") t_set = Thread(target=set.set_data, args=(), name="Setdata") diff --git a/packages/modules/internal_chargepoint_handler/add_on/api.py b/packages/modules/internal_chargepoint_handler/add_on/api.py index 72f7624b74..a83df1e64b 100644 --- a/packages/modules/internal_chargepoint_handler/add_on/api.py +++ b/packages/modules/internal_chargepoint_handler/add_on/api.py @@ -27,7 +27,10 @@ def read() -> Tuple[bool, bool]: "32": GPIO.input(32) == GPIO.LOW, "33": GPIO.input(33) == GPIO.LOW, "36": GPIO.input(36) == GPIO.LOW, - "40": GPIO.input(40) == GPIO.LOW}) + "40": GPIO.input(40) == GPIO.LOW}, + digital_output={"7": GPIO.input(7) == GPIO.LOW, + "16": GPIO.input(16) == GPIO.LOW, + "18": GPIO.input(18) == GPIO.LOW}) else: return IoState() @@ -35,20 +38,12 @@ def write(digital_output: Dict[int, int]): if has_gpio: for i, value in digital_output.items(): GPIO.output(i, GPIO.HIGH if value else GPIO.LOW) - return IoState(dict(digital_output=digital_output)) if has_gpio: GPIO.setmode(GPIO.BOARD) - GPIO.setup(21, GPIO.IN, pull_up_down=GPIO.PUD_UP) # RSE 2 - GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_UP) # RSE 1 - GPIO.setup(31, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Taster 3 PV - GPIO.setup(32, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Taster 1 Sofortladen - GPIO.setup(33, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Taster 4 Stop - GPIO.setup(36, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Taster 2 Min+PV - GPIO.setup(40, GPIO.IN, pull_up_down=GPIO.PUD_UP) # TAster 5 Standby - # GPIO.setup(7, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.output["digital"]["7"] else GPIO.PUD_DOWN) # LED 3 - # GPIO.setup(16, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.output["digital"]["16"] else GPIO.PUD_DOWN) # LED 2 - # GPIO.setup(18, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.output["digital"]["18"] else GPIO.PUD_DOWN) # LED 1 + for pin, pud_up in config.input["digital"].items(): + GPIO.setup(int(pin), GPIO.IN, pull_up_down=pud_up) + GPIO.setup([7, 16, 18], GPIO.OUT) return ConfigurableIo(config=config, component_reader=read, component_writer=write) diff --git a/packages/modules/internal_chargepoint_handler/add_on/config.py b/packages/modules/internal_chargepoint_handler/add_on/config.py index b885b070fc..b59c3cd626 100644 --- a/packages/modules/internal_chargepoint_handler/add_on/config.py +++ b/packages/modules/internal_chargepoint_handler/add_on/config.py @@ -6,24 +6,37 @@ class AddOnConfiguration: def __init__(self): pass - +# 21: RSE 2 +# 24: RSE 1 +# 31: Taster 3 PV +# 32: Taster 1 Sofortladen +# 33: Taster 4 Stop +# 36: Taster 2 Min+PV +# 40: Taster 5 Standby + + +# PUD_OFF: Final = 20 +# PUD_UP: Final = 22 +# PUD_DOWN: Final = 21 def init_input(): return {"analog": {}, - "digital": {"21": None, - "24": None, - "31": None, - "32": None, - "33": None, - "36": None, - "40": None} + "digital": {"21": 20, + "24": 20, + "31": 20, + "32": 20, + "33": 20, + "36": 20, + "40": 20} } - +# 7: LED 3 +# 16: LED 2 +# 18: LED 1 def init_output(): return {"analog": {}, - "digital": {"7": False, - "16": False, - "18": False} + "digital": {"7": None, + "16": None, + "18": None} } diff --git a/packages/modules/internal_chargepoint_handler/gpio.py b/packages/modules/internal_chargepoint_handler/gpio.py index ff000b9359..ceabdf849b 100644 --- a/packages/modules/internal_chargepoint_handler/gpio.py +++ b/packages/modules/internal_chargepoint_handler/gpio.py @@ -1,6 +1,9 @@ +import copy import logging +from threading import Event import time +from helpermodules.subdata import SubData from modules.internal_chargepoint_handler.add_on.api import create_io from modules.internal_chargepoint_handler.add_on.config import AddOn @@ -17,24 +20,20 @@ class InternalGpioHandler: - def __init__(self): - if has_gpio: - GPIO.setmode(GPIO.BOARD) - input_pins = [21, 24, 31, 32, 33, 36, 40] - # 21: RSE 2 - # 24: RSE 1 - # 31: Taster 3 PV - # 32: Taster 1 Sofortladen - # 33: Taster 4 Stop - # 36: Taster 2 Min+PV - # 40: Taster 5 Standby - GPIO.setup(input_pins, GPIO.IN, pull_up_down=GPIO.PUD_UP) - - self.io = create_io(AddOn(id="local")) + def __init__(self, event_restart_gpio: Event): + self.event_restart_gpio = event_restart_gpio def loop(self): if has_gpio: while True: - self.io.read() - self.io.store.update() + if SubData.system_data.get("iolocal") is not None: + if self.event_restart_gpio.is_set(): + io = create_io(SubData.system_data["iolocal"]) + self.event_restart_gpio.clear() + data = copy.deepcopy(SubData.io_states) + log.debug(data) + log.setLevel(SubData.system_data["system"].data["debug_level"]) + io.read() + io.store.update() + io.write(data["local"].data.set.digital_output) time.sleep(3) diff --git a/packages/modules/io_devices/add_on/api.py b/packages/modules/io_devices/add_on/api.py index 8ef885b90b..ab88503f05 100644 --- a/packages/modules/io_devices/add_on/api.py +++ b/packages/modules/io_devices/add_on/api.py @@ -3,6 +3,8 @@ from typing import Dict, Tuple from control import data +from dataclass_utils._dataclass_asdict import asdict +from helpermodules import pub from helpermodules.broker import BrokerClient from helpermodules.utils.topic_parser import decode_payload from modules.common.abstract_device import DeviceDescriptor @@ -26,17 +28,15 @@ def read() -> Tuple[bool, bool]: return IoStateManager().get(data.data.cp_data[f"cp{config.configuration.cp_num}"].chargepoint_module.config.configuration.ip_address) def write(digital_output: Dict[int, int]): - if has_gpio: - for i, value in digital_output.items(): - GPIO.output(i, GPIO.HIGH if value else GPIO.LOW) - return IoState(dict(digital_output=digital_output)) - - if has_gpio: - GPIO.setmode(GPIO.BOARD) - GPIO.setup(7, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.output["digital"]["7"] else GPIO.PUD_DOWN) # LED 3 - GPIO.setup(16, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.output["digital"]["16"] else GPIO.PUD_DOWN) # LED 2 - GPIO.setup(18, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.output["digital"]["18"] else GPIO.PUD_DOWN) # LED 1 - + pub.pub_single(f"openWB/set/io/states/local/set/digital_output", digital_output, hostname=data.data.cp_data[f"cp{config.configuration.cp_num}"].chargepoint_module.config.configuration.ip_address) + pub.pub_single(f"openWB/set/io/states/{config.id}/set/digital_output", digital_output) + + # if has_gpio: + # GPIO.setmode(GPIO.BOARD) + # GPIO.setup(7, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.output["digital"]["7"] else GPIO.PUD_DOWN) # LED 3 + # GPIO.setup(16, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.output["digital"]["16"] else GPIO.PUD_DOWN) # LED 2 + # GPIO.setup(18, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.output["digital"]["18"] else GPIO.PUD_DOWN) # LED 1 + pub.pub_single(f"openWB/set/system/io/local/config", asdict(config), hostname=data.data.cp_data[f"cp{config.configuration.cp_num}"].chargepoint_module.config.configuration.ip_address) return ConfigurableIo(config=config, component_reader=read, component_writer=write) From a921b776138bed6a1b64ea4d5550190ad21e05a0 Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Tue, 10 Dec 2024 12:32:55 +0100 Subject: [PATCH 31/75] refactor io pin naming --- packages/helpermodules/update_config.py | 18 ++++---- .../add_on/api.py | 15 ++----- .../internal_chargepoint_handler/gpio.py | 8 ---- packages/modules/io_devices/add_on/api.py | 25 +++-------- packages/modules/io_devices/add_on/config.py | 39 +++++++++------- packages/modules/io_devices/dimm_kit/api.py | 30 ++++++++----- .../modules/io_devices/dimm_kit/config.py | 44 ++++++++++++++++--- 7 files changed, 102 insertions(+), 77 deletions(-) diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index cc6fb35605..ad91bfad56 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -1985,17 +1985,19 @@ def upgrade(topic: str, payload) -> Optional[dict]: io_device.configuration.modbus_id = payload["configuration"]["modbus_id"] # Wenn mindestens ein Kontakt offen ist, wird die Ladung gesperrt. Wenn beide Kontakte # geschlossen sind, darf geladen werden. - action.configuration.input_pattern = [{"value": 0, "input_matrix": {"0": False, "1": False}}, - {"value": 0, "input_matrix": {"0": False, "1": True}}, - {"value": 0, "input_matrix": {"0": True, "1": False}}, - {"value": 1, "input_matrix": {"0": True, "1": True}}] + action.configuration.input_pattern = [ + {"value": 0, "input_matrix": {"DI0": False, "DI1": False}}, + {"value": 0, "input_matrix": {"DI0": False, "DI1": True}}, + {"value": 0, "input_matrix": {"DI0": True, "DI1": False}}, + {"value": 1, "input_matrix": {"DI0": True, "DI1": True}}] elif payload["type"] == "gpio": # Wenn mindestens ein Kontakt geschlossen ist, wird die Ladung gesperrt. Wenn beide Kontakt # offen sind, darf geladen werden. - action.configuration.input_pattern = [{"value": 1, "input_matrix": {"21": False, "24": False}}, - {"value": 0, "input_matrix": {"21": False, "24": True}}, - {"value": 0, "input_matrix": {"21": True, "24": False}}, - {"value": 0, "input_matrix": {"21": True, "24": True}}] + action.configuration.input_pattern = [ + {"value": 1, "input_matrix": {"RSE1": False, "RSE2": False}}, + {"value": 0, "input_matrix": {"RSE1": False, "RSE2": True}}, + {"value": 0, "input_matrix": {"RSE1": True, "RSE2": False}}, + {"value": 0, "input_matrix": {"RSE1": True, "RSE2": True}}] return {'openWB/system/io/0/config': dataclass_utils.asdict(io_device), 'openWB/io/action/0/config': dataclass_utils.asdict(action)} diff --git a/packages/modules/internal_chargepoint_handler/add_on/api.py b/packages/modules/internal_chargepoint_handler/add_on/api.py index a83df1e64b..c023f678b8 100644 --- a/packages/modules/internal_chargepoint_handler/add_on/api.py +++ b/packages/modules/internal_chargepoint_handler/add_on/api.py @@ -5,7 +5,7 @@ from modules.common.abstract_device import DeviceDescriptor from modules.common.component_state import IoState from modules.common.configurable_io import ConfigurableIo -from modules.io_devices.add_on.config import AddOn +from modules.io_devices.add_on.config import AddOn, DigitalInputMapping, DigitalOutputMapping log = logging.getLogger(__name__) has_gpio = True @@ -21,16 +21,9 @@ def create_io(config: AddOn): def read() -> Tuple[bool, bool]: if has_gpio: - return IoState(digital_input={"21": GPIO.input(21) == GPIO.LOW, - "24": GPIO.input(24) == GPIO.LOW, - "31": GPIO.input(31) == GPIO.LOW, - "32": GPIO.input(32) == GPIO.LOW, - "33": GPIO.input(33) == GPIO.LOW, - "36": GPIO.input(36) == GPIO.LOW, - "40": GPIO.input(40) == GPIO.LOW}, - digital_output={"7": GPIO.input(7) == GPIO.LOW, - "16": GPIO.input(16) == GPIO.LOW, - "18": GPIO.input(18) == GPIO.LOW}) + return IoState( + digital_input={input.name: GPIO.input(input.value) == GPIO.LOW for input in DigitalInputMapping}, + digital_output={output.name: GPIO.input(output.value) == GPIO.LOW for output in DigitalOutputMapping}) else: return IoState() diff --git a/packages/modules/internal_chargepoint_handler/gpio.py b/packages/modules/internal_chargepoint_handler/gpio.py index ceabdf849b..95aaa283bd 100644 --- a/packages/modules/internal_chargepoint_handler/gpio.py +++ b/packages/modules/internal_chargepoint_handler/gpio.py @@ -5,19 +5,11 @@ from helpermodules.subdata import SubData from modules.internal_chargepoint_handler.add_on.api import create_io -from modules.internal_chargepoint_handler.add_on.config import AddOn log = logging.getLogger(__name__) has_gpio = True -try: - import RPi.GPIO as GPIO -except ImportError: - has_gpio = False - log.info("failed to import RPi.GPIO! maybe we are not running on a pi") - log.warning("RSE disabled!") - class InternalGpioHandler: def __init__(self, event_restart_gpio: Event): diff --git a/packages/modules/io_devices/add_on/api.py b/packages/modules/io_devices/add_on/api.py index ab88503f05..97f8b9fb5f 100644 --- a/packages/modules/io_devices/add_on/api.py +++ b/packages/modules/io_devices/add_on/api.py @@ -2,8 +2,6 @@ import logging from typing import Dict, Tuple -from control import data -from dataclass_utils._dataclass_asdict import asdict from helpermodules import pub from helpermodules.broker import BrokerClient from helpermodules.utils.topic_parser import decode_payload @@ -13,30 +11,21 @@ from modules.io_devices.add_on.config import AddOn log = logging.getLogger(__name__) -has_gpio = True - -try: - import RPi.GPIO as GPIO -except ImportError: - has_gpio = False - log.info("failed to import RPi.GPIO! maybe we are not running on a pi") - log.warning("RSE disabled!") def create_io(config: AddOn): def read() -> Tuple[bool, bool]: - return IoStateManager().get(data.data.cp_data[f"cp{config.configuration.cp_num}"].chargepoint_module.config.configuration.ip_address) + if config.configuration.host is None: + raise ValueError("No host configured") + return IoStateManager().get(config.configuration.host) def write(digital_output: Dict[int, int]): - pub.pub_single(f"openWB/set/io/states/local/set/digital_output", digital_output, hostname=data.data.cp_data[f"cp{config.configuration.cp_num}"].chargepoint_module.config.configuration.ip_address) + if config.configuration.host is None: + raise ValueError("No host configured") + pub.pub_single("openWB/set/io/states/local/set/digital_output", digital_output, + hostname=config.configuration.host) pub.pub_single(f"openWB/set/io/states/{config.id}/set/digital_output", digital_output) - # if has_gpio: - # GPIO.setmode(GPIO.BOARD) - # GPIO.setup(7, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.output["digital"]["7"] else GPIO.PUD_DOWN) # LED 3 - # GPIO.setup(16, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.output["digital"]["16"] else GPIO.PUD_DOWN) # LED 2 - # GPIO.setup(18, GPIO.OUT, pull_up_down=GPIO.PUD_UP if config.output["digital"]["18"] else GPIO.PUD_DOWN) # LED 1 - pub.pub_single(f"openWB/set/system/io/local/config", asdict(config), hostname=data.data.cp_data[f"cp{config.configuration.cp_num}"].chargepoint_module.config.configuration.ip_address) return ConfigurableIo(config=config, component_reader=read, component_writer=write) diff --git a/packages/modules/io_devices/add_on/config.py b/packages/modules/io_devices/add_on/config.py index ff6b6c3f26..b7fe7cca51 100644 --- a/packages/modules/io_devices/add_on/config.py +++ b/packages/modules/io_devices/add_on/config.py @@ -1,35 +1,42 @@ -from typing import Dict, Union +from enum import Enum +from typing import Dict, Optional, Union from modules.common.io_setup import IoDeviceSetup +class DigitalInputMapping(Enum): + RSE1 = 24 + RSE2 = 21 + nurPV = 31 + SofortLa = 32 + Stop = 33 + MinPV = 36 + Standby = 40 + + +class DigitalOutputMapping(Enum): + LED1 = 18 + LED2 = 16 + LED3 = 7 + + class AddOnConfiguration: - def __init__(self, cp_num: int = None) -> None: - self.cp_num = cp_num + def __init__(self, host: Optional[str] = None) -> None: + self.host = host def init_input(): return {"analog": {}, - "digital": {"21": None, - "24": None, - "31": None, - "32": None, - "33": None, - "36": None, - "40": None} - } + "digital": {pin.name: False for pin in DigitalInputMapping}} def init_output(): return {"analog": {}, - "digital": {"7": False, - "16": False, - "18": False} - } + "digital": {pin.name: False for pin in DigitalOutputMapping}} class AddOn(IoDeviceSetup[AddOnConfiguration]): def __init__(self, - name: str = "GPIOs auf der AddOn-Platine", + name: str = "Kontakte der AddOn-Platine", type: str = "add_on", id: Union[int, str] = 0, configuration: AddOnConfiguration = None, diff --git a/packages/modules/io_devices/dimm_kit/api.py b/packages/modules/io_devices/dimm_kit/api.py index 1f1ffb3068..7da54aa124 100644 --- a/packages/modules/io_devices/dimm_kit/api.py +++ b/packages/modules/io_devices/dimm_kit/api.py @@ -2,7 +2,7 @@ from typing import Dict from modules.common.component_state import IoState from modules.common.configurable_io import ConfigurableIo -from modules.io_devices.dimm_kit.config import IoLan +from modules.io_devices.dimm_kit.config import IoLan, AnalogInputMapping, DigitalInputMapping, DigitalOutputMapping from modules.common.version_by_telnet import get_version_by_telnet from modules.common.modbus import ModbusDataType, ModbusTcpClient_ import logging @@ -21,7 +21,7 @@ def read(): nonlocal version if version is False: try: - parsed_answer = get_version_by_telnet(VALID_VERSIONS[0], config.configuration.ip_address) + parsed_answer = get_version_by_telnet(VALID_VERSIONS[0], config.configuration.host) for version in VALID_VERSIONS: if version in parsed_answer: version = True @@ -37,21 +37,29 @@ def read(): log.exception("Dimm-Kit") raise Exception("Die IP-Adresse ist nicht erreichbar. Bitte überprüfe die Einstellungen.") return IoState( - # 1-4th channel test 0-5V voltage, 5-8th channel test 0-25mA current value - analog_input={str(i): client.read_input_registers( - i-1, ModbusDataType.UINT_8, unit=config.configuration.modbus_id)/1024 for i in range(1, 9)}, - digital_input={str(i): client.read_coils(i-1, 1, unit=config.configuration.modbus_id) for i in range(1, 9)}, - digital_output={str(i): client.read_coils(i-1, 1, - unit=config.configuration.modbus_id) for i in range(16, 24)}) + # analog inputs are configured as 0-5V (AI1-AI4) and 0-25mA (AI5-AI8) as default + # the values are reported as integers in range of 0-1024 + analog_input={ + pin.name: client.read_input_registers( + pin.value, ModbusDataType.UINT_16, unit=config.configuration.modbus_id + ) for pin in AnalogInputMapping}, + digital_input={ + pin.name: client.read_coils( + pin.value, 1, unit=config.configuration.modbus_id + ) for pin in DigitalInputMapping}, + digital_output={ + pin.name: client.read_coils( + pin.value, 1, unit=config.configuration.modbus_id + ) for pin in DigitalOutputMapping}) def write(digital_output: Dict[int, int]) -> None: for i, value in digital_output.items(): client.write_single_coil(i-1, value, unit=config.configuration.modbus_id) version = False - client = ModbusTcpClient_(config.configuration.ip_address, config.configuration.port) - for i, value in config.output["digital"].items(): - client.write_single_coil(int(i)-1, value, unit=config.configuration.modbus_id) + client = ModbusTcpClient_(config.configuration.host, config.configuration.port) + for output, value in config.output["digital"].items(): + client.write_single_coil(DigitalOutputMapping[output].value, value, unit=config.configuration.modbus_id) return ConfigurableIo(config=config, component_reader=read, component_writer=write) diff --git a/packages/modules/io_devices/dimm_kit/config.py b/packages/modules/io_devices/dimm_kit/config.py index d1663d4c7a..d2e888932a 100644 --- a/packages/modules/io_devices/dimm_kit/config.py +++ b/packages/modules/io_devices/dimm_kit/config.py @@ -1,24 +1,58 @@ +from enum import Enum from typing import Dict, Optional from helpermodules.auto_str import auto_str from modules.common.io_setup import IoDeviceSetup +class AnalogInputMapping(Enum): + AI1 = 0x00 + AI2 = 0x01 + AI3 = 0x02 + AI4 = 0x03 + AI5 = 0x04 + AI6 = 0x05 + AI7 = 0x06 + AI8 = 0x07 + + +class DigitalInputMapping(Enum): + DI1 = 0x00 + DI2 = 0x01 + DI3 = 0x02 + DI4 = 0x03 + DI5 = 0x04 + DI6 = 0x05 + DI7 = 0x06 + DI8 = 0x07 + + +class DigitalOutputMapping(Enum): + DO1 = 0x10 + DO2 = 0x11 + DO3 = 0x12 + DO4 = 0x13 + DO5 = 0x14 + DO6 = 0x15 + DO7 = 0x16 + DO8 = 0x17 + + class IoLanConfiguration: - def __init__(self, ip_address: Optional[str] = None, port: int = 8899, modbus_id: int = 1): - self.ip_address = ip_address + def __init__(self, host: Optional[str] = None, port: int = 8899, modbus_id: int = 1): + self.host = host self.port = port self.modbus_id = modbus_id def init_input(): - return {"analog": {str(i): None for i in range(1, 9)}, - "digital": {str(i): None for i in range(1, 9)}} + return {"analog": {pin.name: None for pin in AnalogInputMapping}, + "digital": {pin.name: False for pin in DigitalInputMapping}} def init_output(): return {"analog": {}, - "digital": {str(i): False for i in range(16, 24)}} + "digital": {pin.name: False for pin in DigitalOutputMapping}} @auto_str From 517fae4e3ceac6283892bf108adaff2b2ee4af5f Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Tue, 17 Dec 2024 09:04:45 +0100 Subject: [PATCH 32/75] fix io commands --- packages/helpermodules/command.py | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/packages/helpermodules/command.py b/packages/helpermodules/command.py index 4279f027bf..96ca1dbf43 100644 --- a/packages/helpermodules/command.py +++ b/packages/helpermodules/command.py @@ -175,22 +175,23 @@ def removeDevice(self, connection_id: str, payload: dict) -> None: def addIoAction(self, connection_id: str, payload: dict) -> None: new_id = self.max_id_io_action + 1 - dev = importlib.import_module(".io_actions."+payload["data"]["type"]+".api", "modules") - descritpor = dev.device_descriptor.configuration_factory() - device_default = dataclass_utils.asdict(descritpor) + dev = importlib.import_module(f".io_actions.{'.'.join(payload['data']['type'])}.api", + "modules") + descriptor = dev.device_descriptor.configuration_factory() + device_default = dataclass_utils.asdict(descriptor) device_default["id"] = new_id Pub().pub(f'openWB/set/io/action/{new_id}/config', device_default) self.max_id_io_action = new_id Pub().pub("openWB/set/command/max_id/io_action", self.max_id_io_action) pub_user_message( payload, connection_id, - f'Neues IO-Gerät vom Typ \'{payload["data"]["type"]}\' mit ID \'{new_id}\' hinzugefügt.', + f'Neue IO-Aktion vom Typ \'{" / ".join(payload["data"]["type"])}\' mit ID \'{new_id}\' hinzugefügt.', MessageType.SUCCESS) def removeIoAction(self, connection_id: str, payload: dict) -> None: if self.max_id_io_action >= payload["data"]["id"]: ProcessBrokerBranch(f'io/action/{payload["data"]["id"]}/').remove_topics() - pub_user_message(payload, connection_id, f'IO-Gerät mit ID \'{payload["data"]["id"]}\' gelöscht.', + pub_user_message(payload, connection_id, f'IO-Aktion mit ID \'{payload["data"]["id"]}\' gelöscht.', MessageType.SUCCESS) else: pub_user_message( @@ -204,8 +205,8 @@ def addIoDevice(self, connection_id: str, payload: dict) -> None: """ new_id = self.max_id_io_device + 1 dev = importlib.import_module(".io_devices."+payload["data"]["type"]+".api", "modules") - descritpor = dev.device_descriptor.configuration_factory() - device_default = dataclass_utils.asdict(descritpor) + descriptor = dev.device_descriptor.configuration_factory() + device_default = dataclass_utils.asdict(descriptor) device_default["id"] = new_id Pub().pub(f'openWB/set/system/io/{new_id}/config', device_default) self.max_id_io_device = new_id @@ -314,7 +315,7 @@ def _check_max_num_of_internal_chargepoints(self, config: Dict) -> Optional[str] return None def removeChargepoint(self, connection_id: str, payload: dict) -> None: - """ löscht ein Chargepoint. + """ löscht ein Ladepunkt. """ if self.max_id_hierarchy < payload["data"]["id"]: pub_user_message( @@ -770,26 +771,26 @@ def restoreBackup(self, connection_id: str, payload: dict) -> None: def requestMSALAuthCode(self, connection_id: str, payload: dict) -> None: ''' fordert einen Authentifizierungscode für MSAL (Microsoft Authentication Library) an um Onedrive Backup zu ermöglichen''' - cloudbackupconfig = SubData.system_data["system"].backup_cloud - if cloudbackupconfig is None: + cloud_backup_config = SubData.system_data["system"].backup_cloud + if cloud_backup_config is None: pub_user_message(payload, connection_id, "Es ist keine Backup-Cloud konfiguriert. Bitte Konfiguration speichern " "und erneut versuchen.
", MessageType.WARNING) return - result = generateMSALAuthCode(cloudbackupconfig.config) + result = generateMSALAuthCode(cloud_backup_config.config) pub_user_message(payload, connection_id, result["message"], result["MessageType"]) # ToDo: move to module commands if implemented def retrieveMSALTokens(self, connection_id: str, payload: dict) -> None: """ holt die Tokens für MSAL (Microsoft Authentication Library) um Onedrive Backup zu ermöglichen """ - cloudbackupconfig = SubData.system_data["system"].backup_cloud - if cloudbackupconfig is None: + cloud_backup_config = SubData.system_data["system"].backup_cloud + if cloud_backup_config is None: pub_user_message(payload, connection_id, "Es ist keine Backup-Cloud konfiguriert. Bitte Konfiguration speichern " "und erneut versuchen.
", MessageType.WARNING) return - result = retrieveMSALTokens(cloudbackupconfig.config) + result = retrieveMSALTokens(cloud_backup_config.config) pub_user_message(payload, connection_id, result["message"], result["MessageType"]) def factoryReset(self, connection_id: str, payload: dict) -> None: From 9516dfb1f6ee594601ab24ba42819c1c6fd41615 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 27 Dec 2024 08:39:25 +0100 Subject: [PATCH 33/75] defaults --- .../controllable_consumers/dimming/config.py | 6 +- .../dimming_direct_control/config.py | 5 +- .../ripple_control_receiver/config.py | 4 +- .../power_levels/__init__.py | 0 .../generation_systems/power_levels/api.py | 73 ------------------- .../generation_systems/power_levels/config.py | 24 ------ .../generator_systems/power_levels/config.py | 6 +- 7 files changed, 11 insertions(+), 107 deletions(-) delete mode 100644 packages/modules/io_actions/generation_systems/power_levels/__init__.py delete mode 100644 packages/modules/io_actions/generation_systems/power_levels/api.py delete mode 100644 packages/modules/io_actions/generation_systems/power_levels/config.py diff --git a/packages/modules/io_actions/controllable_consumers/dimming/config.py b/packages/modules/io_actions/controllable_consumers/dimming/config.py index 7851e8a5de..d843212f7b 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming/config.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/config.py @@ -1,13 +1,13 @@ from dataclasses import dataclass, field -from typing import List +from typing import List, Optional from dataclass_utils.factories import empty_list_factory from modules.io_actions.groups import ActionGroup @dataclass class DimmingConfig: - io_device: int = 0 - digital_input: str = "0" + io_device: Optional[int] = None + digital_input: Optional[str] = None cp_ids: List[int] = field(default_factory=empty_list_factory) max_import_power: int = 0 diff --git a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py index f434b7c98d..51f2ad2562 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py +++ b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py @@ -1,11 +1,12 @@ from dataclasses import dataclass +from typing import Optional from modules.io_actions.groups import ActionGroup @dataclass class DimmingDirectControlConfig: - io_device: int = 0 - digital_input: str = "0" + io_device: Optional[int] = None + digital_input: Optional[str] = None cp_id: int = None diff --git a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/config.py b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/config.py index 5b1c507e0c..92cabb0623 100644 --- a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/config.py +++ b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/config.py @@ -1,12 +1,12 @@ from dataclasses import dataclass, field -from typing import Dict, List +from typing import Dict, List, Optional from dataclass_utils.factories import empty_list_factory from modules.io_actions.groups import ActionGroup @dataclass class RippleControlReceiverConfig: - io_device: int = 0 + io_device: Optional[int] = None # [{"value": 0.5, "input_matrix": {"1": False, "2": True}}] input_pattern: List[Dict] = field(default_factory=empty_list_factory) cp_ids: List[int] = field(default_factory=empty_list_factory) diff --git a/packages/modules/io_actions/generation_systems/power_levels/__init__.py b/packages/modules/io_actions/generation_systems/power_levels/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/modules/io_actions/generation_systems/power_levels/api.py b/packages/modules/io_actions/generation_systems/power_levels/api.py deleted file mode 100644 index bce7932e64..0000000000 --- a/packages/modules/io_actions/generation_systems/power_levels/api.py +++ /dev/null @@ -1,73 +0,0 @@ -import logging -from control import data -from helpermodules.logger import ModifyLoglevelContext -from helpermodules.pub import Pub -from helpermodules.timecheck import create_timestamp -from modules.common.abstract_device import AbstractInverter, DeviceDescriptor -from modules.common.abstract_io import AbstractIoAction -from modules.common.utils.component_parser import get_component_obj_by_id -from modules.io_actions.generation_systems.power_levels.config import PowerLevelsSetup - -control_command_log = logging.getLogger("steuve_control_command") - - -class PowerLevels(AbstractIoAction): - PATTERN = [ - {"matrix": (False, False, False), "value": 1}, - {"matrix": (True, False, False), "value": 0.6}, - {"matrix": (False, True, False), "value": 0.3}, - {"matrix": (False, False, True), "value": 0}, - ] - - def __init__(self, config: PowerLevelsSetup): - self.config = config - comp = get_component_obj_by_id(self.config.configuration.component_id, []) - if isinstance(comp, AbstractInverter) is False: - raise Exception(f"Komponente mit ID {self.config.configuration.component_id} ist kein Wechselrichter.") - if "set_power_limit" not in type(comp).__dict__: - raise Exception(f"Wechselrichter {comp.config.name} mit ID {self.config.configuration.component_id} kann " - "von openWB nicht gesteuert werden.") - super().__init__() - - def setup(self) -> None: - with ModifyLoglevelContext(control_command_log, logging.DEBUG): - io_device_input = data.data.io_states[f"io_states{self.config.configuration.io_device}" - ].data.get.digital_input - s1 = io_device_input[self.config.configuration.digital_input[0]] - s2 = io_device_input[self.config.configuration.digital_input[1]] - w3 = io_device_input[self.config.configuration.digital_input[2]] - for matrix, value in self.PATTERN.items(): - if matrix == (s1, s2, w3) and value != 1: - comp = get_component_obj_by_id(self.config.configuration.component_id, []) - if self.timestamp: - Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", create_timestamp()) - control_command_log.info( - f"Erzeugungsanlage (EZA) {comp.config.name} mit ID {self.config.configuration.component_id}" - f" auf {value*100}% begrenzt. Leistungswerte vor Ausführung des Steuerbefehls:") - - evu_counter = data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()] - msg = (f"EVU-Zähler: {evu_counter.data.get.powers}W" - f"EZA: {data.data.pv_data[f'pv{self.config.configuration.component_id}'].data.get.power}W") - control_command_log.info(msg) - else: - if self.timestamp: - Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", None) - control_command_log.info("Begerenzung der EZA aufgehoben.") - - def ripple_control_receiver(self, component_id: int) -> float: - io_device_input = data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input - s1 = io_device_input[self.config.configuration.digital_input[0]] - s2 = io_device_input[self.config.configuration.digital_input[1]] - w3 = io_device_input[self.config.configuration.digital_input[2]] - for matrix, value in self.PATTERN.items(): - if matrix == (s1, s2, w3): - get_component_obj_by_id(component_id, []).set_power_limit(value) - else: - raise Exception(f"{[s1, s2, w3]} ist kein gültiges Pattern.") - - -def create_action(config: PowerLevelsSetup): - return PowerLevels(config=config) - - -device_descriptor = DeviceDescriptor(configuration_factory=PowerLevelsSetup) diff --git a/packages/modules/io_actions/generation_systems/power_levels/config.py b/packages/modules/io_actions/generation_systems/power_levels/config.py deleted file mode 100644 index b67f4c3d82..0000000000 --- a/packages/modules/io_actions/generation_systems/power_levels/config.py +++ /dev/null @@ -1,24 +0,0 @@ -from dataclasses import dataclass, field -from typing import List -from dataclass_utils.factories import empty_list_factory -from modules.io_actions.groups import ActionGroup - - -@dataclass -class PowerLevelsConfig: - io_device: int = 0 - digital_input: List[int] = field(default_factory=empty_list_factory) - component_id: int = 0 - - -class PowerLevelsSetup: - def __init__(self, - name: str = "Leistungsstufen für Erzeugungsanlagen (EZA)", - type: str = "power_level", - id: int = 0, - configuration: PowerLevelsConfig = None): - self.name = name - self.id = id - self.configuration = configuration or PowerLevelsConfig() - self.type = type - self.group = ActionGroup.GENERATOR_SYSTEMS.value diff --git a/packages/modules/io_actions/generator_systems/power_levels/config.py b/packages/modules/io_actions/generator_systems/power_levels/config.py index 4aa2245def..6629ffb5a6 100644 --- a/packages/modules/io_actions/generator_systems/power_levels/config.py +++ b/packages/modules/io_actions/generator_systems/power_levels/config.py @@ -1,14 +1,14 @@ from dataclasses import dataclass, field -from typing import List +from typing import List, Optional from dataclass_utils.factories import empty_list_factory from modules.io_actions.groups import ActionGroup @dataclass class PowerLevelsConfig: - io_device: int = 0 + io_device: Optional[int] = None digital_input: List[int] = field(default_factory=empty_list_factory) - component_id: int = 0 + component_id: Optional[int] = None class PowerLevelsSetup: From 781e0866ac1cfaa8a2b92e16bdf61f7407421755 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 27 Dec 2024 09:37:37 +0100 Subject: [PATCH 34/75] fix --- packages/helpermodules/subdata.py | 2 +- .../add_on/config.py | 59 ------------------- 2 files changed, 1 insertion(+), 60 deletions(-) delete mode 100644 packages/modules/internal_chargepoint_handler/add_on/config.py diff --git a/packages/helpermodules/subdata.py b/packages/helpermodules/subdata.py index fdca20a1a5..091eee9843 100644 --- a/packages/helpermodules/subdata.py +++ b/packages/helpermodules/subdata.py @@ -901,7 +901,7 @@ def process_system_topic(self, client: mqtt.Client, var: dict, msg: mqtt.MQTTMes str(index)+" gefunden werden.") else: io_config = decode_payload(msg.payload) - if "/io/local/config" in msg.topic: + if io_config["configuration"]["host"] == "localhost": self.event_restart_gpio.set() dev = importlib.import_module(f".internal_chargepoint_handler.{io_config['type']}.api", "modules") diff --git a/packages/modules/internal_chargepoint_handler/add_on/config.py b/packages/modules/internal_chargepoint_handler/add_on/config.py deleted file mode 100644 index b59c3cd626..0000000000 --- a/packages/modules/internal_chargepoint_handler/add_on/config.py +++ /dev/null @@ -1,59 +0,0 @@ -from typing import Dict, Union -from modules.common.io_setup import IoDeviceSetup - - -class AddOnConfiguration: - def __init__(self): - pass - -# 21: RSE 2 -# 24: RSE 1 -# 31: Taster 3 PV -# 32: Taster 1 Sofortladen -# 33: Taster 4 Stop -# 36: Taster 2 Min+PV -# 40: Taster 5 Standby - - -# PUD_OFF: Final = 20 -# PUD_UP: Final = 22 -# PUD_DOWN: Final = 21 -def init_input(): - return {"analog": {}, - "digital": {"21": 20, - "24": 20, - "31": 20, - "32": 20, - "33": 20, - "36": 20, - "40": 20} - } - -# 7: LED 3 -# 16: LED 2 -# 18: LED 1 -def init_output(): - return {"analog": {}, - "digital": {"7": None, - "16": None, - "18": None} - } - - -class AddOn(IoDeviceSetup[AddOnConfiguration]): - def __init__(self, - name: str = "GPIOs auf der AddOn-Platine", - type: str = "add_on", - id: Union[int, str] = 0, - configuration: AddOnConfiguration = None, - input: Dict[str, Dict[int, float]] = None, - output: Dict[str, Dict[int, float]] = None) -> None: - self.name = name - self.type = type - self.id = id - self.configuration = configuration or AddOnConfiguration() - if input is None: - input = init_input() - if output is None: - output = init_output() - super().__init__(name, type, id, configuration or AddOnConfiguration(), input=input, output=output) From 6b28288d7e3cf96e596a175695b2c05f2aa2c9ff Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Fri, 3 Jan 2025 09:23:15 +0100 Subject: [PATCH 35/75] add io device type check --- packages/helpermodules/subdata.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/helpermodules/subdata.py b/packages/helpermodules/subdata.py index 091eee9843..30016dd98f 100644 --- a/packages/helpermodules/subdata.py +++ b/packages/helpermodules/subdata.py @@ -901,7 +901,7 @@ def process_system_topic(self, client: mqtt.Client, var: dict, msg: mqtt.MQTTMes str(index)+" gefunden werden.") else: io_config = decode_payload(msg.payload) - if io_config["configuration"]["host"] == "localhost": + if io_config["type"] == "add_on" and io_config["configuration"]["host"] == "localhost": self.event_restart_gpio.set() dev = importlib.import_module(f".internal_chargepoint_handler.{io_config['type']}.api", "modules") From d2cbfd70aebc332868e12c4d7e6975a802520d92 Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Fri, 3 Jan 2025 09:55:51 +0100 Subject: [PATCH 36/75] fix dimm kit DI names in datastore upgrade --- packages/helpermodules/update_config.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index ad91bfad56..f1ed37d173 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -1986,10 +1986,10 @@ def upgrade(topic: str, payload) -> Optional[dict]: # Wenn mindestens ein Kontakt offen ist, wird die Ladung gesperrt. Wenn beide Kontakte # geschlossen sind, darf geladen werden. action.configuration.input_pattern = [ - {"value": 0, "input_matrix": {"DI0": False, "DI1": False}}, - {"value": 0, "input_matrix": {"DI0": False, "DI1": True}}, - {"value": 0, "input_matrix": {"DI0": True, "DI1": False}}, - {"value": 1, "input_matrix": {"DI0": True, "DI1": True}}] + {"value": 0, "input_matrix": {"DI1": False, "DI2": False}}, + {"value": 0, "input_matrix": {"DI1": False, "DI2": True}}, + {"value": 0, "input_matrix": {"DI1": True, "DI2": False}}, + {"value": 1, "input_matrix": {"DI1": True, "DI2": True}}] elif payload["type"] == "gpio": # Wenn mindestens ein Kontakt geschlossen ist, wird die Ladung gesperrt. Wenn beide Kontakt # offen sind, darf geladen werden. From a48bc7ae3bb5aa86a75c4d28537fc0978a395c32 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 3 Jan 2025 10:59:47 +0100 Subject: [PATCH 37/75] fix cp id --- .../modules/io_actions/controllable_consumers/dimming/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/modules/io_actions/controllable_consumers/dimming/api.py b/packages/modules/io_actions/controllable_consumers/dimming/api.py index dd59b53d01..ef708a029b 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/api.py @@ -33,7 +33,7 @@ def setup(self) -> None: msg = (f"EVU-Zähler: " f"{data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()].data.get.powers}W") for cp in self.config.configuration.cp_ids: - msg += f", LP {cp}: {data.data.cp_data[cp].data.get.powers}W" + msg += f", LP {cp}: {data.data.cp_data[f'cp{cp}'].data.get.powers}W" control_command_log.info(msg) elif self.timestamp: Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", None) From a4fe7c1c65ff2f5823a05233b62c54ee81eaba1e Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 3 Jan 2025 12:14:01 +0100 Subject: [PATCH 38/75] fix logging --- .../modules/io_actions/controllable_consumers/dimming/api.py | 2 +- .../controllable_consumers/ripple_control_receiver/api.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/modules/io_actions/controllable_consumers/dimming/api.py b/packages/modules/io_actions/controllable_consumers/dimming/api.py index ef708a029b..c3a9ba8f2d 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/api.py @@ -26,7 +26,7 @@ def setup(self) -> None: with ModifyLoglevelContext(control_command_log, logging.DEBUG): if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ self.config.configuration.digital_input]: - if self.timestamp: + if self.timestamp is None: Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", create_timestamp()) control_command_log.info("Dimmen aktiviert. Leistungswerte vor Ausführung des Steuerbefehls:") diff --git a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py index d8b3ab8c50..7df86d193d 100644 --- a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py +++ b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py @@ -25,7 +25,7 @@ def setup(self) -> None: else: # Alle digitalen Eingänge entsprechen dem Pattern if pattern["value"] != 1: - if self.timestamp: + if self.timestamp is None: Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", create_timestamp()) control_command_log.info( f"RSE-Sperre an LP {self.config.configuration.cp_id} mit Wert {pattern['value']*100}" From 8a74c8e18b39d6bd81160cf10175b7260f246446 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 10 Jan 2025 09:24:25 +0100 Subject: [PATCH 39/75] internal io states --- data/config/mosquitto/openwb_local.conf | 3 +- packages/helpermodules/setdata.py | 2 +- packages/helpermodules/subdata.py | 7 +++-- packages/modules/common/store/_io_internal.py | 30 +++++++++++++++++++ .../add_on/api.py | 5 +++- .../internal_chargepoint_handler/gpio.py | 3 +- packages/modules/io_devices/add_on/api.py | 2 +- 7 files changed, 43 insertions(+), 9 deletions(-) create mode 100644 packages/modules/common/store/_io_internal.py diff --git a/data/config/mosquitto/openwb_local.conf b/data/config/mosquitto/openwb_local.conf index a423a248bc..53cec77b5f 100644 --- a/data/config/mosquitto/openwb_local.conf +++ b/data/config/mosquitto/openwb_local.conf @@ -1,4 +1,4 @@ -# openwb-version:17 +# openwb-version:18 listener 1886 localhost allow_anonymous true @@ -29,6 +29,7 @@ topic openWB/chargepoint/template/# out 2 topic openWB/internal_chargepoint/# out 2 topic openWB/io/# out 2 +topic openWB/internal_io/# out 2 topic openWB/pv/config/configured out 2 topic openWB/pv/get/# out 2 diff --git a/packages/helpermodules/setdata.py b/packages/helpermodules/setdata.py index 42be556054..7bf99f4188 100644 --- a/packages/helpermodules/setdata.py +++ b/packages/helpermodules/setdata.py @@ -84,7 +84,7 @@ def on_message(self, client: mqtt.Client, userdata, msg: mqtt.MQTTMessage): self.process_bat_topic(msg) elif "openWB/set/general/" in msg.topic: self.process_general_topic(msg) - elif "openWB/set/io/" in msg.topic: + elif ("openWB/set/io/" in msg.topic or "openWB/set/internal_io/" in msg.topic): self.process_io_topic(msg) elif "openWB/set/optional/" in msg.topic: self.process_optional_topic(msg) diff --git a/packages/helpermodules/subdata.py b/packages/helpermodules/subdata.py index 30016dd98f..bbbb13841d 100644 --- a/packages/helpermodules/subdata.py +++ b/packages/helpermodules/subdata.py @@ -905,9 +905,10 @@ def process_system_topic(self, client: mqtt.Client, var: dict, msg: mqtt.MQTTMes self.event_restart_gpio.set() dev = importlib.import_module(f".internal_chargepoint_handler.{io_config['type']}.api", "modules") - else: - dev = importlib.import_module(f".io_devices.{io_config['type']}.api", - "modules") + config = dataclass_from_dict(dev.device_descriptor.configuration_factory, io_config) + var["iolocal"] = dev.create_io(config) + dev = importlib.import_module(f".io_devices.{io_config['type']}.api", + "modules") config = dataclass_from_dict(dev.device_descriptor.configuration_factory, io_config) var["io"+index] = dev.create_io(config) else: diff --git a/packages/modules/common/store/_io_internal.py b/packages/modules/common/store/_io_internal.py new file mode 100644 index 0000000000..b3f191f76b --- /dev/null +++ b/packages/modules/common/store/_io_internal.py @@ -0,0 +1,30 @@ +from modules.common.component_state import IoState +from modules.common.fault_state import FaultState +from modules.common.store import ValueStore +from modules.common.store._api import LoggingValueStore +from modules.common.store._broker import pub_to_broker + + +class InternalIoValueStoreBroker(ValueStore[IoState]): + def __init__(self) -> None: + pass + + def set(self, state: IoState) -> None: + self.state = state + + def update(self): + try: + if self.state.digital_input: + pub_to_broker("openWB/set/internal_io/states/get/digital_input", self.state.digital_input) + if self.state.analog_input: + pub_to_broker("openWB/set/internal_io/states/get/analog_input", self.state.analog_input) + if self.state.digital_output: + pub_to_broker("openWB/set/internal_io/states/get/digital_output", self.state.digital_output) + if self.state.analog_output: + pub_to_broker("openWB/set/internal_io/states/get/analog_output", self.state.analog_output) + except Exception as e: + raise FaultState.from_exception(e) + + +def get_internal_io_value_store() -> ValueStore[IoState]: + return LoggingValueStore(InternalIoValueStoreBroker()) diff --git a/packages/modules/internal_chargepoint_handler/add_on/api.py b/packages/modules/internal_chargepoint_handler/add_on/api.py index c023f678b8..16ae38bfda 100644 --- a/packages/modules/internal_chargepoint_handler/add_on/api.py +++ b/packages/modules/internal_chargepoint_handler/add_on/api.py @@ -5,6 +5,7 @@ from modules.common.abstract_device import DeviceDescriptor from modules.common.component_state import IoState from modules.common.configurable_io import ConfigurableIo +from modules.common.store._io_internal import get_internal_io_value_store from modules.io_devices.add_on.config import AddOn, DigitalInputMapping, DigitalOutputMapping log = logging.getLogger(__name__) @@ -38,7 +39,9 @@ def write(digital_output: Dict[int, int]): GPIO.setup(int(pin), GPIO.IN, pull_up_down=pud_up) GPIO.setup([7, 16, 18], GPIO.OUT) - return ConfigurableIo(config=config, component_reader=read, component_writer=write) + io = ConfigurableIo(config=config, component_reader=read, component_writer=write) + io.store = get_internal_io_value_store() + return io device_descriptor = DeviceDescriptor(configuration_factory=AddOn) diff --git a/packages/modules/internal_chargepoint_handler/gpio.py b/packages/modules/internal_chargepoint_handler/gpio.py index 95aaa283bd..e294115dcd 100644 --- a/packages/modules/internal_chargepoint_handler/gpio.py +++ b/packages/modules/internal_chargepoint_handler/gpio.py @@ -4,7 +4,6 @@ import time from helpermodules.subdata import SubData -from modules.internal_chargepoint_handler.add_on.api import create_io log = logging.getLogger(__name__) @@ -20,7 +19,7 @@ def loop(self): while True: if SubData.system_data.get("iolocal") is not None: if self.event_restart_gpio.is_set(): - io = create_io(SubData.system_data["iolocal"]) + io = SubData.system_data["iolocal"] self.event_restart_gpio.clear() data = copy.deepcopy(SubData.io_states) log.debug(data) diff --git a/packages/modules/io_devices/add_on/api.py b/packages/modules/io_devices/add_on/api.py index 97f8b9fb5f..a5f551a0b9 100644 --- a/packages/modules/io_devices/add_on/api.py +++ b/packages/modules/io_devices/add_on/api.py @@ -44,7 +44,7 @@ def get(self, host: str) -> IoState: def on_connect(self, client, userdata, flags, rc): """ connect to broker and subscribe to set topics """ - client.subscribe('openWB/io/states/local/#', 2) + client.subscribe('openWB/internal_io/states/#', 2) def on_message(self, client, userdata, msg): setattr(self.io_state, msg.topic.split("/")[-1], decode_payload(msg.payload)) From 3579d93b89223f3ac804bef5369d29d95589bc50 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 10 Jan 2025 09:28:04 +0100 Subject: [PATCH 40/75] fixes --- packages/helpermodules/command.py | 2 +- packages/helpermodules/setdata.py | 2 ++ packages/modules/internal_chargepoint_handler/add_on/api.py | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/helpermodules/command.py b/packages/helpermodules/command.py index 96ca1dbf43..7a1ea3c7fd 100644 --- a/packages/helpermodules/command.py +++ b/packages/helpermodules/command.py @@ -897,7 +897,7 @@ def check_mqtt_bridge_exists(self, name: str) -> bool: def get_cloud_id(self): try: self.ids = [] - InternalBrokerClient("processBrokerBranch", self.on_connect, self.__on_message_cloud_id).start_finite_loop() + BrokerClient("processBrokerBranch", self.on_connect, self.__on_message_cloud_id).start_finite_loop() return self.ids except Exception: log.exception("Fehler im Command-Modul") diff --git a/packages/helpermodules/setdata.py b/packages/helpermodules/setdata.py index 7bf99f4188..6b31c19f9e 100644 --- a/packages/helpermodules/setdata.py +++ b/packages/helpermodules/setdata.py @@ -858,6 +858,8 @@ def process_io_topic(self, msg: mqtt.MQTTMessage): self._validate_value(msg, int, [(0, 2)]) elif "get/fault_str" in msg.topic: self._validate_value(msg, str) + elif "/timestamp" in msg.topic: + self._validate_value(msg, float) else: self.__unknown_topic(msg) except Exception: diff --git a/packages/modules/internal_chargepoint_handler/add_on/api.py b/packages/modules/internal_chargepoint_handler/add_on/api.py index 16ae38bfda..b3cdb920f2 100644 --- a/packages/modules/internal_chargepoint_handler/add_on/api.py +++ b/packages/modules/internal_chargepoint_handler/add_on/api.py @@ -35,8 +35,8 @@ def write(digital_output: Dict[int, int]): if has_gpio: GPIO.setmode(GPIO.BOARD) - for pin, pud_up in config.input["digital"].items(): - GPIO.setup(int(pin), GPIO.IN, pull_up_down=pud_up) + for pin in config.input["digital"].keys(): + GPIO.setup(DigitalInputMapping[pin].value, GPIO.IN) GPIO.setup([7, 16, 18], GPIO.OUT) io = ConfigurableIo(config=config, component_reader=read, component_writer=write) From 567f5cedba26b231207795833da5c46cdc6a9768 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 10 Jan 2025 09:42:13 +0100 Subject: [PATCH 41/75] output --- packages/helpermodules/subdata.py | 30 ++++++++++++------- .../internal_chargepoint_handler/gpio.py | 2 +- packages/modules/io_devices/add_on/api.py | 4 +-- 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/packages/helpermodules/subdata.py b/packages/helpermodules/subdata.py index bbbb13841d..5bdad2a513 100644 --- a/packages/helpermodules/subdata.py +++ b/packages/helpermodules/subdata.py @@ -647,25 +647,33 @@ def process_io_topic(self, var: Dict[str, Union[io_device.IoActions, io_device.I enthält Topic und Payload """ try: - if re.search("/io/states/", msg.topic) is not None: - index = get_index(msg.topic) + if (re.search("/io/states/", msg.topic) is not None or + re.search("/internal_io/states/", msg.topic) is not None): + if re.search("/io/states/[0-9]+/", msg.topic) is not None: + index = get_index(msg.topic) + key = "io_states"+index + else: + key = "internal_io_states" + payload = decode_payload(msg.payload) if payload == "": - if "io_states"+index in var: - var.pop("io_states"+index) + if key in var: + var.pop(key) else: - if "io_states"+index not in var: - var["io_states"+index] = io_device.IoStates(index) - if re.search("/io/states/[0-9]+/get", msg.topic) is not None: + if key not in var: + var[key] = io_device.IoStates(index) + if (re.search("/io/states/[0-9]+/get", msg.topic) is not None or + re.search("/internal_io/states/get", msg.topic) is not None): # Sonst werden Dicts als Payload verwendet, aber es wird alles in ein eigenes Attribut gespeichert # Typ ist hier auch kein typing.Dict, sondern ein generisches Dict[int, bool] - setattr(var["io_states"+index].data.get, msg.topic.split("/")[-1], payload) - elif re.search("/io/states/[0-9]+/set", msg.topic) is not None: + setattr(var[key].data.get, msg.topic.split("/")[-1], payload) + elif (re.search("/io/states/[0-9]+/set", msg.topic) is not None or + re.search("/internal_io/states/set", msg.topic) is not None): # Sonst werden Dicts als Payload verwendet, aber es wird alles in ein eigenes Attribut gespeichert # Typ ist hier auch kein typing.Dict, sondern ein generisches Dict[int, bool] - setattr(var["io_states"+index].data.set, msg.topic.split("/")[-1], payload) + setattr(var[key].data.set, msg.topic.split("/")[-1], payload) else: - self.set_json_payload_class(var["io_states"+index].data, msg) + self.set_json_payload_class(var[key].data, msg) elif "io/action" in msg.topic: if re.search("/io/action/[0-9]+/config", msg.topic) is not None: index = get_index(msg.topic) diff --git a/packages/modules/internal_chargepoint_handler/gpio.py b/packages/modules/internal_chargepoint_handler/gpio.py index e294115dcd..4833f1a219 100644 --- a/packages/modules/internal_chargepoint_handler/gpio.py +++ b/packages/modules/internal_chargepoint_handler/gpio.py @@ -26,5 +26,5 @@ def loop(self): log.setLevel(SubData.system_data["system"].data["debug_level"]) io.read() io.store.update() - io.write(data["local"].data.set.digital_output) + io.write(data["internal_io_states"].data.set.digital_output) time.sleep(3) diff --git a/packages/modules/io_devices/add_on/api.py b/packages/modules/io_devices/add_on/api.py index a5f551a0b9..e925cbe617 100644 --- a/packages/modules/io_devices/add_on/api.py +++ b/packages/modules/io_devices/add_on/api.py @@ -22,9 +22,9 @@ def read() -> Tuple[bool, bool]: def write(digital_output: Dict[int, int]): if config.configuration.host is None: raise ValueError("No host configured") - pub.pub_single("openWB/set/io/states/local/set/digital_output", digital_output, + pub.pub_single("openWB/set/internal_io/states/set/digital_output", digital_output, hostname=config.configuration.host) - pub.pub_single(f"openWB/set/io/states/{config.id}/set/digital_output", digital_output) + pub.pub_single("openWB/set/internal_io/states/set/digital_output", digital_output) return ConfigurableIo(config=config, component_reader=read, component_writer=write) From f2ccac83958c4b35af8e946942093d014d6ea40d Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Mon, 13 Jan 2025 14:17:17 +0100 Subject: [PATCH 42/75] fixes --- packages/helpermodules/subdata.py | 4 +++- packages/modules/internal_chargepoint_handler/add_on/api.py | 6 +++--- packages/modules/internal_chargepoint_handler/gpio.py | 3 ++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/helpermodules/subdata.py b/packages/helpermodules/subdata.py index 5bdad2a513..5abca1642f 100644 --- a/packages/helpermodules/subdata.py +++ b/packages/helpermodules/subdata.py @@ -132,6 +132,7 @@ def on_connect(self, client: mqtt.Client, userdata, flags: dict, rc: int): ("openWB/bat/#", 2), ("openWB/general/#", 2), ("openWB/graph/#", 2), + ("openWB/internal_io/#", 2), ("openWB/io/#", 2), ("openWB/optional/#", 2), ("openWB/counter/#", 2), @@ -178,7 +179,7 @@ def on_message(self, client: mqtt.Client, userdata, msg: mqtt.MQTTMessage): self.process_graph_topic(self.graph_data, msg) elif "openWB/io/action" in msg.topic: self.process_io_topic(self.io_actions, msg) - elif "openWB/io/states" in msg.topic: + elif "openWB/io/states" in msg.topic or "openWB/internal_io/states" in msg.topic: self.process_io_topic(self.io_states, msg) elif "openWB/internal_chargepoint/" in msg.topic: self.process_internal_chargepoint_topic(client, self.internal_chargepoint_data, msg) @@ -653,6 +654,7 @@ def process_io_topic(self, var: Dict[str, Union[io_device.IoActions, io_device.I index = get_index(msg.topic) key = "io_states"+index else: + index = "internal" key = "internal_io_states" payload = decode_payload(msg.payload) diff --git a/packages/modules/internal_chargepoint_handler/add_on/api.py b/packages/modules/internal_chargepoint_handler/add_on/api.py index b3cdb920f2..dea51dfc13 100644 --- a/packages/modules/internal_chargepoint_handler/add_on/api.py +++ b/packages/modules/internal_chargepoint_handler/add_on/api.py @@ -28,10 +28,10 @@ def read() -> Tuple[bool, bool]: else: return IoState() - def write(digital_output: Dict[int, int]): + def write(digital_output: Dict[str, int]): if has_gpio: - for i, value in digital_output.items(): - GPIO.output(i, GPIO.HIGH if value else GPIO.LOW) + for pin, value in digital_output.items(): + GPIO.output(DigitalInputMapping[pin], GPIO.HIGH if value else GPIO.LOW) if has_gpio: GPIO.setmode(GPIO.BOARD) diff --git a/packages/modules/internal_chargepoint_handler/gpio.py b/packages/modules/internal_chargepoint_handler/gpio.py index 4833f1a219..409fcfb433 100644 --- a/packages/modules/internal_chargepoint_handler/gpio.py +++ b/packages/modules/internal_chargepoint_handler/gpio.py @@ -26,5 +26,6 @@ def loop(self): log.setLevel(SubData.system_data["system"].data["debug_level"]) io.read() io.store.update() - io.write(data["internal_io_states"].data.set.digital_output) + if "internal_io_states" in data: + io.write(data["internal_io_states"].data.set.digital_output) time.sleep(3) From 3fc9a05124971fac09a0e0c1605f1133ef098fef Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Tue, 14 Jan 2025 10:13:08 +0100 Subject: [PATCH 43/75] fix write --- packages/modules/common/configurable_io.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/modules/common/configurable_io.py b/packages/modules/common/configurable_io.py index dda8f9938d..5feb49dac2 100644 --- a/packages/modules/common/configurable_io.py +++ b/packages/modules/common/configurable_io.py @@ -30,10 +30,10 @@ def read(self): with SingleComponentUpdateContext(self.fault_state): self.store.set(self.component_reader()) - def write(self): + def write(self, digital_output): if hasattr(self, "component_writer"): # Wenn beim Initialisieren etwas schief gelaufen ist, ursprüngliche Fehlermeldung beibehalten with SingleComponentUpdateContext(self.fault_state): - io_state = self.component_writer() + io_state = self.component_writer(digital_output) if io_state is not None: self.store.set(io_state) From 7dfb3bbce82ecabf05533c3f0e9fca5878768da0 Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Tue, 14 Jan 2025 09:19:59 +0100 Subject: [PATCH 44/75] io-action power levels input matrix --- .../generator_systems/power_levels/api.py | 62 +++++++++---------- .../generator_systems/power_levels/config.py | 15 ++++- 2 files changed, 42 insertions(+), 35 deletions(-) diff --git a/packages/modules/io_actions/generator_systems/power_levels/api.py b/packages/modules/io_actions/generator_systems/power_levels/api.py index e150c55516..54b1548d18 100644 --- a/packages/modules/io_actions/generator_systems/power_levels/api.py +++ b/packages/modules/io_actions/generator_systems/power_levels/api.py @@ -12,13 +12,6 @@ class PowerLevels(AbstractIoAction): - PATTERN = [ - {"matrix": (False, False, False), "value": 1}, - {"matrix": (True, False, False), "value": 0.6}, - {"matrix": (False, True, False), "value": 0.3}, - {"matrix": (False, False, True), "value": 0}, - ] - def __init__(self, config: PowerLevelsSetup): self.config = config comp = get_component_obj_by_id(self.config.configuration.component_id, []) @@ -31,39 +24,44 @@ def __init__(self, config: PowerLevelsSetup): def setup(self) -> None: with ModifyLoglevelContext(control_command_log, logging.DEBUG): - io_device_input = data.data.io_states[f"io_states{self.config.configuration.io_device}" - ].data.get.digital_input - s1 = io_device_input[self.config.configuration.digital_input[0]] - s2 = io_device_input[self.config.configuration.digital_input[1]] - w3 = io_device_input[self.config.configuration.digital_input[2]] - for matrix, value in self.PATTERN.items(): - if matrix == (s1, s2, w3) and value != 1: - comp = get_component_obj_by_id(self.config.configuration.component_id, []) - if self.timestamp: - Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", create_timestamp()) - control_command_log.info( - f"Erzeugungsanlage (EZA) {comp.config.name} mit ID {self.config.configuration.component_id}" - f" auf {value*100}% begrenzt. Leistungswerte vor Ausführung des Steuerbefehls:") + for pattern in self.config.configuration.input_pattern: + for digital_input, value in pattern["input_matrix"].items(): + if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ + digital_input] != value: + break + else: + # Alle digitalen Eingänge entsprechen dem Pattern + if pattern["value"] != 1: + comp = get_component_obj_by_id(self.config.configuration.component_id, []) + if self.timestamp: + Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", create_timestamp()) + control_command_log.info( + f"Erzeugungsanlage (EZA) {comp.config.name} mit ID " + f"{self.config.configuration.component_id} auf {value*100}% begrenzt. " + "Leistungswerte vor Ausführung des Steuerbefehls:") - evu_counter = data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()] - msg = (f"EVU-Zähler: {evu_counter.data.get.powers}W" - f"EZA: {data.data.pv_data[f'pv{self.config.configuration.component_id}'].data.get.power}W") - control_command_log.info(msg) + evu_counter = data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()] + msg = ( + f"EVU-Zähler: {evu_counter.data.get.powers}W " + f"EZA: {data.data.pv_data[f'pv{self.config.configuration.component_id}'].data.get.power}W") + control_command_log.info(msg) else: if self.timestamp: Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", None) - control_command_log.info("Begerenzung der EZA aufgehoben.") + control_command_log.info("Begrenzung der EZA aufgehoben.") def ripple_control_receiver(self, component_id: int) -> float: - io_device_input = data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input - s1 = io_device_input[self.config.configuration.digital_input[0]] - s2 = io_device_input[self.config.configuration.digital_input[1]] - w3 = io_device_input[self.config.configuration.digital_input[2]] - for matrix, value in self.PATTERN.items(): - if matrix == (s1, s2, w3): + for pattern in self.config.configuration.input_pattern: + for digital_input, value in pattern["input_matrix"].items(): + if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ + digital_input] != value: + break + else: + # Alle digitalen Eingänge entsprechen dem Pattern get_component_obj_by_id(component_id, []).set_power_limit(value) else: - raise Exception(f"{[s1, s2, w3]} ist kein gültiges Pattern.") + # Zustand entspricht keinem Pattern + control_command_log.error("Kein passendes Pattern gefunden!") def create_action(config: PowerLevelsSetup): diff --git a/packages/modules/io_actions/generator_systems/power_levels/config.py b/packages/modules/io_actions/generator_systems/power_levels/config.py index 6629ffb5a6..c8f8b43511 100644 --- a/packages/modules/io_actions/generator_systems/power_levels/config.py +++ b/packages/modules/io_actions/generator_systems/power_levels/config.py @@ -1,13 +1,22 @@ from dataclasses import dataclass, field -from typing import List, Optional -from dataclass_utils.factories import empty_list_factory +from typing import Dict, List, Optional from modules.io_actions.groups import ActionGroup +def default_input_pattern_factory() -> List: + return [ + {"value": 1, "input_matrix": {}}, + {"value": 0.6, "input_matrix": {}}, + {"value": 0.3, "input_matrix": {}}, + {"value": 0, "input_matrix": {}} + ] + + @dataclass class PowerLevelsConfig: io_device: Optional[int] = None - digital_input: List[int] = field(default_factory=empty_list_factory) + # [{"value": 0.5, "input_matrix": {"1": False, "2": True}}] + input_pattern: List[Dict] = field(default_factory=default_input_pattern_factory) component_id: Optional[int] = None From 49858209195deba2750068e6a99220e78da4ac31 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Thu, 16 Jan 2025 08:41:58 +0100 Subject: [PATCH 45/75] unify input pattern --- packages/control/algorithm/common.py | 4 +-- packages/control/io_device.py | 18 ++++++------- packages/control/loadmanagement.py | 4 +-- packages/dataclass_utils/factories.py | 13 ++++++++++ packages/helpermodules/command_test.py | 2 +- .../controllable_consumers/dimming/api.py | 26 ++++++++++++------- .../controllable_consumers/dimming/config.py | 8 +++--- .../dimming_direct_control/api.py | 25 ++++++++++++------ .../dimming_direct_control/config.py | 9 ++++--- .../ripple_control_receiver/config.py | 2 +- packages/modules/update_soc_test.py | 2 +- 11 files changed, 72 insertions(+), 41 deletions(-) diff --git a/packages/control/algorithm/common.py b/packages/control/algorithm/common.py index 54705e27fd..f14782f4d3 100644 --- a/packages/control/algorithm/common.py +++ b/packages/control/algorithm/common.py @@ -76,7 +76,7 @@ def set_current_counterdiff(diff_curent: float, data.data.counter_data[counter].update_surplus_values_left(diffs) else: data.data.counter_data[counter].update_values_left(diffs) - data.data.io_actions.dimming_set_import_power_left(chargepoint.num, sum(diffs)*230) + data.data.io_actions.dimming_set_import_power_left(f"cp{chargepoint.num}", sum(diffs)*230) chargepoint.data.set.current = current log.info(f"LP{chargepoint.num}: Stromstärke {current}A") @@ -148,7 +148,7 @@ def update_raw_data(preferenced_chargepoints: List[Chargepoint], data.data.counter_data[counter].update_surplus_values_left(diffs) else: data.data.counter_data[counter].update_values_left(diffs) - data.data.io_actions.dimming_set_import_power_left(chargepoint.num, sum(diffs)*230) + data.data.io_actions.dimming_set_import_power_left(f"cp{chargepoint.num}", sum(diffs)*230) def consider_less_charging_chargepoint_in_loadmanagement(cp: Chargepoint, set_current: float) -> bool: diff --git a/packages/control/io_device.py b/packages/control/io_device.py index 6c144c22c9..d80260be16 100644 --- a/packages/control/io_device.py +++ b/packages/control/io_device.py @@ -58,27 +58,27 @@ def _check_fault_state_io_device(self, io_device: int) -> None: if data.data.io_states[f"io_states{io_device}"].data.get.fault_state == 2: raise ValueError(LimitingValue.CONTROLLABLE_CONSUMERS_ERROR.value.format(get_io_name_by_id(io_device))) - def dimming_get_import_power_left(self, cp_num: int) -> Optional[float]: + def dimming_get_import_power_left(self, device: str) -> Optional[float]: for action in self.actions.values(): if isinstance(action, Dimming): - if cp_num in action.config.configuration.cp_ids: + if device in action.config.configuration.devices: self._check_fault_state_io_device(action.config.configuration.io_device) - return action.dimming_get_import_power_left(cp_num) + return action.dimming_get_import_power_left(device) else: return None - def dimming_set_import_power_left(self, cp_num: int, used_power: float) -> Optional[float]: + def dimming_set_import_power_left(self, device: str, used_power: float) -> Optional[float]: for action in self.actions.values(): if isinstance(action, Dimming): - if cp_num in action.config.configuration.cp_ids: - return action.dimming_set_import_power_left(cp_num, used_power) + if device in action.config.configuration.devices: + return action.dimming_set_import_power_left(device, used_power) - def dimming_via_direct_control(self, cp_num: int) -> float: + def dimming_via_direct_control(self, device: str) -> float: for action in self.actions.values(): if isinstance(action, DimmingDirectControl): - if cp_num == action.config.configuration.cp_id: + if device == action.config.configuration.device: self._check_fault_state_io_device(action.config.configuration.io_device) - return action.dimming_via_direct_control(cp_num) + return action.dimming_via_direct_control(device) else: return None diff --git a/packages/control/loadmanagement.py b/packages/control/loadmanagement.py index e9146563d6..454093a9f9 100644 --- a/packages/control/loadmanagement.py +++ b/packages/control/loadmanagement.py @@ -124,7 +124,7 @@ def _limit_by_current(self, def _limit_by_dimming_via_direct_control(self, missing_currents: List[float], cp: Chargepoint) -> Tuple[List[float], Optional[str]]: - if data.data.io_actions.dimming_via_direct_control(cp.num): + if data.data.io_actions.dimming_via_direct_control(f"cp{cp.num}"): phases = 3-missing_currents.count(0) current_per_phase = 4.2/phases available_currents = [current_per_phase if c > 0 else 0 for c in missing_currents] @@ -136,7 +136,7 @@ def _limit_by_dimming_via_direct_control(self, def _limit_by_dimming(self, available_currents: List[float], cp: Chargepoint) -> Tuple[List[float], Optional[str]]: - dimming_power_left = data.data.io_actions.dimming_get_import_power_left(cp.num) + dimming_power_left = data.data.io_actions.dimming_get_import_power_left(f"cp{cp.num}") if dimming_power_left: if sum(available_currents)*230 > dimming_power_left: phases = 3-available_currents.count(0) diff --git a/packages/dataclass_utils/factories.py b/packages/dataclass_utils/factories.py index 638cf9bace..8b58340c6f 100644 --- a/packages/dataclass_utils/factories.py +++ b/packages/dataclass_utils/factories.py @@ -15,3 +15,16 @@ def currents_list_factory() -> List[float]: def voltages_list_factory() -> List[float]: return [230.0]*3 + + +def empty_io_pattern_factory(): + return [ + { + "value": True, # dimmen + "input_matrix": {} + }, + { + "value": False, # unbeschränkt + "input_matrix": {} + } + ] diff --git a/packages/helpermodules/command_test.py b/packages/helpermodules/command_test.py index 22b04d2267..6664cc1fca 100644 --- a/packages/helpermodules/command_test.py +++ b/packages/helpermodules/command_test.py @@ -16,7 +16,7 @@ @pytest.fixture def subdata_fixture() -> None: - SubData(*([Mock()]*18)) + SubData(*([Mock()]*19)) SubData.cp_data = {"cp0": Mock(spec=ChargepointStateUpdate, chargepoint=Mock( spec=Chargepoint, chargepoint_module=Mock(spec=ChargepointModulePro)))} diff --git a/packages/modules/io_actions/controllable_consumers/dimming/api.py b/packages/modules/io_actions/controllable_consumers/dimming/api.py index c3a9ba8f2d..d3b4f1312f 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/api.py @@ -15,6 +15,11 @@ class Dimming(AbstractIoAction): def __init__(self, config: DimmingSetup): self.config = config self.import_power_left = None + for pattern in self.config.configuration.pattern: + if pattern["value"]: + self.dimming_input, self.dimming_value = pattern["input_matrix"].items()[0] + if pattern["value"] is False: + self.no_dimming_input, self.no_dimming_value = pattern["input_matrix"].items()[0] super().__init__() @@ -25,32 +30,35 @@ def setup(self) -> None: with ModifyLoglevelContext(control_command_log, logging.DEBUG): if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ - self.config.configuration.digital_input]: + self.dimming_input] == self.dimming_value: if self.timestamp is None: Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", create_timestamp()) control_command_log.info("Dimmen aktiviert. Leistungswerte vor Ausführung des Steuerbefehls:") msg = (f"EVU-Zähler: " f"{data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()].data.get.powers}W") - for cp in self.config.configuration.cp_ids: - msg += f", LP {cp}: {data.data.cp_data[f'cp{cp}'].data.get.powers}W" + for cp in self.config.configuration.devices: + msg += f", Gerät {cp}: {data.data.cp_data[f'cp{cp}'].data.get.powers}W" control_command_log.info(msg) elif self.timestamp: Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", None) control_command_log.info("Dimmen deaktiviert.") - def dimming_get_import_power_left(self, cp_num: int) -> None: - if cp_num in self.config.configuration.cp_ids: + def dimming_get_import_power_left(self, device: str) -> None: + if device in self.config.configuration.devices: if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ - self.config.configuration.digital_input]: + self.dimming_input] == self.dimming_value: return self.import_power_left - else: + elif data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ + self.no_dimming_input] == self.no_dimming_value: return None + else: + raise Exception("Pattern passt nicht zur Dimmung.") else: return None - def dimming_set_import_power_left(self, cp_num: int, used_power: float) -> None: - if cp_num in self.config.configuration.cp_ids: + def dimming_set_import_power_left(self, device: str, used_power: float) -> None: + if device in self.config.configuration.devices: self.import_power_left -= used_power log.debug(f"verbleibende Dimm-Leistung: {self.import_power_left}W inkl Überschuss") return self.import_power_left diff --git a/packages/modules/io_actions/controllable_consumers/dimming/config.py b/packages/modules/io_actions/controllable_consumers/dimming/config.py index d843212f7b..75a9dc95c9 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming/config.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/config.py @@ -1,14 +1,14 @@ from dataclasses import dataclass, field -from typing import List, Optional -from dataclass_utils.factories import empty_list_factory +from typing import Dict, List, Optional +from dataclass_utils.factories import empty_io_pattern_factory, empty_list_factory from modules.io_actions.groups import ActionGroup @dataclass class DimmingConfig: io_device: Optional[int] = None - digital_input: Optional[str] = None - cp_ids: List[int] = field(default_factory=empty_list_factory) + pattern: List[Dict] = field(default_factory=empty_io_pattern_factory) + devices: List[str] = field(default_factory=empty_list_factory) max_import_power: int = 0 diff --git a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py index 2998e15fa9..99a24b04ce 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py @@ -13,34 +13,43 @@ class DimmingDirectControl(AbstractIoAction): def __init__(self, config: DimmingDirectControlSetup): self.config = config + for pattern in self.config.configuration.pattern: + if pattern["value"]: + self.dimming_input, self.dimming_value = pattern["input_matrix"].items()[0] + if pattern["value"] is False: + self.no_dimming_input, self.no_dimming_value = pattern["input_matrix"].items()[0] super().__init__() def setup(self) -> None: with ModifyLoglevelContext(control_command_log, logging.DEBUG): if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ - self.config.configuration.digital_input]: + self.dimming_input] == self.dimming_value: if self.timestamp: Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", create_timestamp()) - control_command_log.info(f"Direktsteuerung an LP {self.config.configuration.cp_id} aktiviert. " + control_command_log.info(f"Direktsteuerung an Gerät {self.config.configuration.device} aktiviert. " "Leistungswerte vor Ausführung des Steuerbefehls:") msg = (f"EVU-Zähler: " f"{data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()].data.get.powers}W") - msg += (f", LP {self.config.configuration.cp_id}: " - f"{data.data.cp_data[f'cp{self.config.configuration.cp_id}'].data.get.powers}W") + msg += (f", Gerät {self.config.configuration.device}: " + f"{data.data.cp_data[f'cp{self.config.configuration.device}'].data.get.powers}W") control_command_log.info(msg) elif self.timestamp: Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", None) control_command_log.info("Direktsteuerung deaktiviert.") - def dimming_via_direct_control(self, cp_num: int) -> None: - if cp_num == self.config.configuration.cp_id: + def dimming_via_direct_control(self, device: str) -> None: + + if device == self.config.configuration.device: if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ - self.config.configuration.digital_input]: + self.dimming_input] == self.dimming_value: return 4200 - else: + elif data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ + self.no_dimming_input] == self.no_dimming_value: return None + else: + raise Exception("Pattern passt nicht zur Dimmung per Direktsteuerung.") else: return None diff --git a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py index 51f2ad2562..a283967d72 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py +++ b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py @@ -1,13 +1,14 @@ -from dataclasses import dataclass -from typing import Optional +from dataclasses import dataclass, field +from typing import Dict, List, Optional +from dataclass_utils.factories import empty_io_pattern_factory from modules.io_actions.groups import ActionGroup @dataclass class DimmingDirectControlConfig: io_device: Optional[int] = None - digital_input: Optional[str] = None - cp_id: int = None + pattern: List[Dict] = field(default_factory=empty_io_pattern_factory) + device: Optional[str] = None class DimmingDirectControlSetup: diff --git a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/config.py b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/config.py index 92cabb0623..1cbb110b8b 100644 --- a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/config.py +++ b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/config.py @@ -7,7 +7,7 @@ @dataclass class RippleControlReceiverConfig: io_device: Optional[int] = None - # [{"value": 0.5, "input_matrix": {"1": False, "2": True}}] + # [{"value": 0.5, "input_matrix": {"SofortLa": False, "PV": True}}] input_pattern: List[Dict] = field(default_factory=empty_list_factory) cp_ids: List[int] = field(default_factory=empty_list_factory) diff --git a/packages/modules/update_soc_test.py b/packages/modules/update_soc_test.py index 0a3930d620..cbaee98aa1 100644 --- a/packages/modules/update_soc_test.py +++ b/packages/modules/update_soc_test.py @@ -22,7 +22,7 @@ def mock_data() -> None: data.data_init(Mock()) - SubData(*([Mock()]*18)) + SubData(*([Mock()]*19)) SubData.cp_data = {"cp0": Mock(spec=ChargepointStateUpdate, chargepoint=Mock( spec=Chargepoint, id=id, From 4ce9ca13d151b79f4575de623a86bb4b4dca4ceb Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Thu, 16 Jan 2025 09:52:40 +0100 Subject: [PATCH 46/75] rename pattern to input_pattern --- .../modules/io_actions/controllable_consumers/dimming/api.py | 2 +- .../modules/io_actions/controllable_consumers/dimming/config.py | 2 +- .../controllable_consumers/dimming_direct_control/api.py | 2 +- .../controllable_consumers/dimming_direct_control/config.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/modules/io_actions/controllable_consumers/dimming/api.py b/packages/modules/io_actions/controllable_consumers/dimming/api.py index d3b4f1312f..6981c8866e 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/api.py @@ -15,7 +15,7 @@ class Dimming(AbstractIoAction): def __init__(self, config: DimmingSetup): self.config = config self.import_power_left = None - for pattern in self.config.configuration.pattern: + for pattern in self.config.configuration.input_pattern: if pattern["value"]: self.dimming_input, self.dimming_value = pattern["input_matrix"].items()[0] if pattern["value"] is False: diff --git a/packages/modules/io_actions/controllable_consumers/dimming/config.py b/packages/modules/io_actions/controllable_consumers/dimming/config.py index 75a9dc95c9..9e83a1d158 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming/config.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/config.py @@ -7,7 +7,7 @@ @dataclass class DimmingConfig: io_device: Optional[int] = None - pattern: List[Dict] = field(default_factory=empty_io_pattern_factory) + input_pattern: List[Dict] = field(default_factory=empty_io_pattern_factory) devices: List[str] = field(default_factory=empty_list_factory) max_import_power: int = 0 diff --git a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py index 99a24b04ce..fef5eb6c04 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py @@ -13,7 +13,7 @@ class DimmingDirectControl(AbstractIoAction): def __init__(self, config: DimmingDirectControlSetup): self.config = config - for pattern in self.config.configuration.pattern: + for pattern in self.config.configuration.input_pattern: if pattern["value"]: self.dimming_input, self.dimming_value = pattern["input_matrix"].items()[0] if pattern["value"] is False: diff --git a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py index a283967d72..e9e28cc8e9 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py +++ b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py @@ -7,7 +7,7 @@ @dataclass class DimmingDirectControlConfig: io_device: Optional[int] = None - pattern: List[Dict] = field(default_factory=empty_io_pattern_factory) + input_pattern: List[Dict] = field(default_factory=empty_io_pattern_factory) device: Optional[str] = None From 94a9d4ba853b1234772391b28ee7bbea724471e5 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 17 Jan 2025 10:39:54 +0100 Subject: [PATCH 47/75] write output --- packages/control/process.py | 9 ++++++++- packages/helpermodules/subdata.py | 4 ++-- packages/modules/common/abstract_io.py | 4 ++-- packages/modules/common/configurable_io.py | 10 ++++++---- .../modules/internal_chargepoint_handler/add_on/api.py | 4 ++-- packages/modules/io_devices/add_on/api.py | 4 ++-- packages/modules/io_devices/dimm_kit/api.py | 4 ++-- 7 files changed, 24 insertions(+), 15 deletions(-) diff --git a/packages/control/process.py b/packages/control/process.py index cce967d51e..f9e7eeb73b 100644 --- a/packages/control/process.py +++ b/packages/control/process.py @@ -11,6 +11,7 @@ from control.chargepoint.chargepoint_state import ChargepointState from helpermodules.pub import Pub from helpermodules.utils._thread_handler import joined_thread_handler +from modules.common.abstract_io import AbstractIoDevice from modules.common.fault_state_level import FaultStateLevel log = logging.getLogger(__name__) @@ -67,7 +68,13 @@ def process_algorithm_results(self) -> None: target=bat_component.set_power_limit, args=(data.data.bat_data[f"bat{bat_component.component_config.id}"].data.set.power_limit,), name=f"set power limit {bat_component.component_config.id}")) - + for io in data.data.system_data.values(): + if isinstance(io, AbstractIoDevice): + modules_threads.append( + threading.Thread( + target=io.write, + args=(None, data.data.io_states[f"io_states{io.config.id}"].data.set.digital_output,), + name=f"set output io{io.config.id}")) if modules_threads: joined_thread_handler(modules_threads, 3) except Exception: diff --git a/packages/helpermodules/subdata.py b/packages/helpermodules/subdata.py index 5abca1642f..c442c23a6b 100644 --- a/packages/helpermodules/subdata.py +++ b/packages/helpermodules/subdata.py @@ -667,12 +667,12 @@ def process_io_topic(self, var: Dict[str, Union[io_device.IoActions, io_device.I if (re.search("/io/states/[0-9]+/get", msg.topic) is not None or re.search("/internal_io/states/get", msg.topic) is not None): # Sonst werden Dicts als Payload verwendet, aber es wird alles in ein eigenes Attribut gespeichert - # Typ ist hier auch kein typing.Dict, sondern ein generisches Dict[int, bool] + # Typ ist hier auch kein typing.Dict, sondern ein generisches Dict[str, bool] setattr(var[key].data.get, msg.topic.split("/")[-1], payload) elif (re.search("/io/states/[0-9]+/set", msg.topic) is not None or re.search("/internal_io/states/set", msg.topic) is not None): # Sonst werden Dicts als Payload verwendet, aber es wird alles in ein eigenes Attribut gespeichert - # Typ ist hier auch kein typing.Dict, sondern ein generisches Dict[int, bool] + # Typ ist hier auch kein typing.Dict, sondern ein generisches Dict[str, bool] setattr(var[key].data.set, msg.topic.split("/")[-1], payload) else: self.set_json_payload_class(var[key].data, msg) diff --git a/packages/modules/common/abstract_io.py b/packages/modules/common/abstract_io.py index 41901bf6cf..0af498b96b 100644 --- a/packages/modules/common/abstract_io.py +++ b/packages/modules/common/abstract_io.py @@ -1,5 +1,5 @@ from abc import abstractmethod -from typing import Dict +from typing import Dict, Optional class AbstractIoDevice: @@ -12,7 +12,7 @@ def read(self) -> None: pass @abstractmethod - def write(self, digital_output: Dict[int, int]) -> None: + def write(self, analog_output: Optional[Dict[str, int]], digital_output: Optional[Dict[str, bool]]) -> None: pass diff --git a/packages/modules/common/configurable_io.py b/packages/modules/common/configurable_io.py index 5feb49dac2..84ce1fa0ec 100644 --- a/packages/modules/common/configurable_io.py +++ b/packages/modules/common/configurable_io.py @@ -30,10 +30,12 @@ def read(self): with SingleComponentUpdateContext(self.fault_state): self.store.set(self.component_reader()) - def write(self, digital_output): + def write(self, analog_output, digital_output): if hasattr(self, "component_writer"): # Wenn beim Initialisieren etwas schief gelaufen ist, ursprüngliche Fehlermeldung beibehalten with SingleComponentUpdateContext(self.fault_state): - io_state = self.component_writer(digital_output) - if io_state is not None: - self.store.set(io_state) + if ((analog_output and self.store.state.analog_output != analog_output) or + (digital_output and self.store.state.digital_output != digital_output)): + io_state = self.component_writer(analog_output, digital_output) + if io_state is not None: + self.store.set(io_state) diff --git a/packages/modules/internal_chargepoint_handler/add_on/api.py b/packages/modules/internal_chargepoint_handler/add_on/api.py index dea51dfc13..c838bfb6c3 100644 --- a/packages/modules/internal_chargepoint_handler/add_on/api.py +++ b/packages/modules/internal_chargepoint_handler/add_on/api.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 import logging -from typing import Dict, Tuple +from typing import Dict, Optional, Tuple from modules.common.abstract_device import DeviceDescriptor from modules.common.component_state import IoState @@ -28,7 +28,7 @@ def read() -> Tuple[bool, bool]: else: return IoState() - def write(digital_output: Dict[str, int]): + def write(analog_output: Optional[Dict[str, int]], digital_output: Optional[Dict[str, bool]]): if has_gpio: for pin, value in digital_output.items(): GPIO.output(DigitalInputMapping[pin], GPIO.HIGH if value else GPIO.LOW) diff --git a/packages/modules/io_devices/add_on/api.py b/packages/modules/io_devices/add_on/api.py index e925cbe617..80552614d1 100644 --- a/packages/modules/io_devices/add_on/api.py +++ b/packages/modules/io_devices/add_on/api.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 import logging -from typing import Dict, Tuple +from typing import Dict, Optional, Tuple from helpermodules import pub from helpermodules.broker import BrokerClient @@ -19,7 +19,7 @@ def read() -> Tuple[bool, bool]: raise ValueError("No host configured") return IoStateManager().get(config.configuration.host) - def write(digital_output: Dict[int, int]): + def write(analog_output: Optional[Dict[str, int]], digital_output: Optional[Dict[str, bool]]): if config.configuration.host is None: raise ValueError("No host configured") pub.pub_single("openWB/set/internal_io/states/set/digital_output", digital_output, diff --git a/packages/modules/io_devices/dimm_kit/api.py b/packages/modules/io_devices/dimm_kit/api.py index 7da54aa124..9ca9f910d0 100644 --- a/packages/modules/io_devices/dimm_kit/api.py +++ b/packages/modules/io_devices/dimm_kit/api.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -from typing import Dict +from typing import Dict, Optional from modules.common.component_state import IoState from modules.common.configurable_io import ConfigurableIo from modules.io_devices.dimm_kit.config import IoLan, AnalogInputMapping, DigitalInputMapping, DigitalOutputMapping @@ -52,7 +52,7 @@ def read(): pin.value, 1, unit=config.configuration.modbus_id ) for pin in DigitalOutputMapping}) - def write(digital_output: Dict[int, int]) -> None: + def write(analog_output: Optional[Dict[str, int]], digital_output: Optional[Dict[str, int]]) -> None: for i, value in digital_output.items(): client.write_single_coil(i-1, value, unit=config.configuration.modbus_id) From a2250225f0ccb5f35398bd949acd218220eaf39e Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 22 Jan 2025 10:54:07 +0100 Subject: [PATCH 48/75] spelling --- "docs/IO-Ger\303\244te & -Aktionen.md" | 4 ++-- .../Steuerbare Verbrauchseinrichtungen nach \302\247 14a.md" | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git "a/docs/IO-Ger\303\244te & -Aktionen.md" "b/docs/IO-Ger\303\244te & -Aktionen.md" index b63e88b001..8133b4db27 100644 --- "a/docs/IO-Ger\303\244te & -Aktionen.md" +++ "b/docs/IO-Ger\303\244te & -Aktionen.md" @@ -1,11 +1,11 @@ ### IO-Geräte -IO/GPIO sind analoge und digitale Ein- und Ausgänge, die man meist als Pin- oder Buchsenleiste auf der Platine findet. openWB software2 kann analoge und digitale Eingänge auslesen und analoge sowie digitale Ausgänge schalten. Die Ein- und Ausgänge befinden sich auf dem konfigurierten IO-Gerät, wie zB dem Dimm- & Control-Kit. Um festzulegen, was mit den Informationen aus den Eingängen gemacht werden soll oder welche Ausgänge geschaltet werden sollen, konfigurierst Du IO-Aktionen. Bei der IO-Aktion gibst Du an, welcher Ein- oder Ausgang dafür verwendet werden soll und ggf weiter Aktions-spezifische Einstellungen. +IO/GPIO sind analoge und digitale Ein- und Ausgänge, die man meist als Pin- oder Buchsenleiste auf der Platine findet. openWB software2 kann analoge und digitale Eingänge auslesen und analoge sowie digitale Ausgänge schalten. Die Ein- und Ausgänge befinden sich auf dem konfigurierten IO-Gerät, wie zB dem Dimm- & Control-Kit. Um festzulegen, was mit den Informationen aus den Eingängen gemacht werden soll oder welche Ausgänge geschaltet werden sollen, konfigurierst Du IO-Aktionen. Bei der IO-Aktion gibst Du an, welcher Ein- oder Ausgang dafür verwendet werden soll und ggf weitere Aktions-spezifische Einstellungen. #### Dimm-& Control-Kit Das Dimm-& Control-Kit besitzt acht analoge Eingänge (AI1-AI8), acht digitale Eingänge (DI1-DI8) und achte digitale Ausgänge (DO1-DO8). Bei den Ausgängen handelt es sich um potentialfreie Relais-Ausgänge mit 5A@28VDC/250VAC. #### openWB series2-Modell mit AddOn-Platine -Die AddOn-Platine stellt 7 Eingänge und 3 Ausgänge zur Verfügung. WICHTIG: In openWB software 1.9 waren den IOs feste Aktionen zugeordnet, die auch der Platine beschriftet sind. Diese Zuordnung ist in software2 NICHT vorgegeben. Zur einfachen Zuordnung der Pins hier eine Übersicht: +Die AddOn-Platine stellt 7 Eingänge und 3 Ausgänge zur Verfügung. WICHTIG: In openWB software 1.9 waren den IOs feste Aktionen zugeordnet, die auch auf der Platine beschriftet sind. Diese Zuordnung ist in software2 NICHT vorgegeben. Zur einfachen Zuordnung der Pins hier eine Übersicht: | Pin | Beschriftung | |---------|---------| | Eingang 21 | RSE 2 | diff --git "a/docs/Steuerbare Verbrauchseinrichtungen nach \302\247 14a.md" "b/docs/Steuerbare Verbrauchseinrichtungen nach \302\247 14a.md" index f3598860c9..474141c02f 100644 --- "a/docs/Steuerbare Verbrauchseinrichtungen nach \302\247 14a.md" +++ "b/docs/Steuerbare Verbrauchseinrichtungen nach \302\247 14a.md" @@ -1,7 +1,7 @@ Der Gesetzgeber sieht verschiedene Möglichkeiten für steuerbare Verbrauchseinrichtungen vor. Für jede steuerbare Verbrauchseinrichtung kann eine andere Option angemeldet werden. Bei der Konfiguration muss deshalb auch immer der/die Ladepunkte angegeben werden, für die die IO-Aktion angewendet werden soll. ### Dimmen -Beim Dimmen wird eine Mindestleistung für alle steuerbaren Verbrauchseinrichtungen nach einer vorgegebene Formel ermittelt. Das Ergebnis dieser Formel muss bei der IO-Aktion `Dimmen` in der Einstellung `Mindestleistung` eingetragen werden. ACHTUNG: Die openWB kann aktuell nur die Ladepunkte berücksichtigen. Sind noch weitere steuerbare Verbraucher angemeldet, muss dies bei der Ermittlung der Mindestleistung berücksichtigt werden. Für die korrekte Ermitllung der Mindestleistung ist der Betreiber, nicht openWB oder die software2 verantwortlich. +Beim Dimmen wird eine Mindestleistung für alle steuerbaren Verbrauchseinrichtungen nach einer vorgegebene Formel ermittelt. Das Ergebnis dieser Formel muss bei der IO-Aktion `Dimmen` in der Einstellung `Mindestleistung` eingetragen werden. ACHTUNG: Die openWB kann aktuell nur die Ladepunkte berücksichtigen. Sind noch weitere steuerbare Verbraucher angemeldet, muss dies bei der Ermittlung der Mindestleistung berücksichtigt werden. Für die korrekte Ermittlung der Mindestleistung ist der Betreiber, nicht openWB oder die software2 verantwortlich. Vorhandener Überschuss kann zusätzlich zur Mindestleistung verwendet werden. ### Dimmung per Direkt-Steuerung From d959768ee036445d50a9674cbc006be0eeaaeb85 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Tue, 28 Jan 2025 16:30:13 +0100 Subject: [PATCH 49/75] remove EZA --- .../power_levels/__init__.py | 0 .../generator_systems/power_levels/api.py | 71 ------------------- .../generator_systems/power_levels/config.py | 33 --------- 3 files changed, 104 deletions(-) delete mode 100644 packages/modules/io_actions/generator_systems/power_levels/__init__.py delete mode 100644 packages/modules/io_actions/generator_systems/power_levels/api.py delete mode 100644 packages/modules/io_actions/generator_systems/power_levels/config.py diff --git a/packages/modules/io_actions/generator_systems/power_levels/__init__.py b/packages/modules/io_actions/generator_systems/power_levels/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/modules/io_actions/generator_systems/power_levels/api.py b/packages/modules/io_actions/generator_systems/power_levels/api.py deleted file mode 100644 index 54b1548d18..0000000000 --- a/packages/modules/io_actions/generator_systems/power_levels/api.py +++ /dev/null @@ -1,71 +0,0 @@ -import logging -from control import data -from helpermodules.logger import ModifyLoglevelContext -from helpermodules.pub import Pub -from helpermodules.timecheck import create_timestamp -from modules.common.abstract_device import AbstractInverter, DeviceDescriptor -from modules.common.abstract_io import AbstractIoAction -from modules.common.utils.component_parser import get_component_obj_by_id -from modules.io_actions.generator_systems.power_levels.config import PowerLevelsSetup - -control_command_log = logging.getLogger("steuve_control_command") - - -class PowerLevels(AbstractIoAction): - def __init__(self, config: PowerLevelsSetup): - self.config = config - comp = get_component_obj_by_id(self.config.configuration.component_id, []) - if isinstance(comp, AbstractInverter) is False: - raise Exception(f"Komponente mit ID {self.config.configuration.component_id} ist kein Wechselrichter.") - if "set_power_limit" not in type(comp).__dict__: - raise Exception(f"Wechselrichter {comp.config.name} mit ID {self.config.configuration.component_id} kann " - "von openWB nicht gesteuert werden.") - super().__init__() - - def setup(self) -> None: - with ModifyLoglevelContext(control_command_log, logging.DEBUG): - for pattern in self.config.configuration.input_pattern: - for digital_input, value in pattern["input_matrix"].items(): - if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ - digital_input] != value: - break - else: - # Alle digitalen Eingänge entsprechen dem Pattern - if pattern["value"] != 1: - comp = get_component_obj_by_id(self.config.configuration.component_id, []) - if self.timestamp: - Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", create_timestamp()) - control_command_log.info( - f"Erzeugungsanlage (EZA) {comp.config.name} mit ID " - f"{self.config.configuration.component_id} auf {value*100}% begrenzt. " - "Leistungswerte vor Ausführung des Steuerbefehls:") - - evu_counter = data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()] - msg = ( - f"EVU-Zähler: {evu_counter.data.get.powers}W " - f"EZA: {data.data.pv_data[f'pv{self.config.configuration.component_id}'].data.get.power}W") - control_command_log.info(msg) - else: - if self.timestamp: - Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", None) - control_command_log.info("Begrenzung der EZA aufgehoben.") - - def ripple_control_receiver(self, component_id: int) -> float: - for pattern in self.config.configuration.input_pattern: - for digital_input, value in pattern["input_matrix"].items(): - if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ - digital_input] != value: - break - else: - # Alle digitalen Eingänge entsprechen dem Pattern - get_component_obj_by_id(component_id, []).set_power_limit(value) - else: - # Zustand entspricht keinem Pattern - control_command_log.error("Kein passendes Pattern gefunden!") - - -def create_action(config: PowerLevelsSetup): - return PowerLevels(config=config) - - -device_descriptor = DeviceDescriptor(configuration_factory=PowerLevelsSetup) diff --git a/packages/modules/io_actions/generator_systems/power_levels/config.py b/packages/modules/io_actions/generator_systems/power_levels/config.py deleted file mode 100644 index c8f8b43511..0000000000 --- a/packages/modules/io_actions/generator_systems/power_levels/config.py +++ /dev/null @@ -1,33 +0,0 @@ -from dataclasses import dataclass, field -from typing import Dict, List, Optional -from modules.io_actions.groups import ActionGroup - - -def default_input_pattern_factory() -> List: - return [ - {"value": 1, "input_matrix": {}}, - {"value": 0.6, "input_matrix": {}}, - {"value": 0.3, "input_matrix": {}}, - {"value": 0, "input_matrix": {}} - ] - - -@dataclass -class PowerLevelsConfig: - io_device: Optional[int] = None - # [{"value": 0.5, "input_matrix": {"1": False, "2": True}}] - input_pattern: List[Dict] = field(default_factory=default_input_pattern_factory) - component_id: Optional[int] = None - - -class PowerLevelsSetup: - def __init__(self, - name: str = "Leistungsstufen für Erzeugungsanlagen (EZA)", - type: str = "power_levels", - id: int = 0, - configuration: PowerLevelsConfig = None): - self.name = name - self.id = id - self.configuration = configuration or PowerLevelsConfig() - self.type = type - self.group = ActionGroup.GENERATOR_SYSTEMS.value From 06cba03552683daaed22c5169a494c204461ea4c Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 29 Jan 2025 08:02:44 +0100 Subject: [PATCH 50/75] pass target devices as list, dimming via direct control for several devices --- packages/control/io_device.py | 27 +++++++------- .../controllable_consumers/dimming/api.py | 36 +++++++++---------- .../controllable_consumers/dimming/config.py | 2 +- .../dimming_direct_control/api.py | 24 ++++++------- .../dimming_direct_control/config.py | 4 +-- 5 files changed, 44 insertions(+), 49 deletions(-) diff --git a/packages/control/io_device.py b/packages/control/io_device.py index d80260be16..955a858bce 100644 --- a/packages/control/io_device.py +++ b/packages/control/io_device.py @@ -1,5 +1,5 @@ from dataclasses import dataclass, field -from typing import Dict, Optional, Union +from typing import Dict, List, Optional, Union from control import data from control.limiting_value import LimitingValue from helpermodules.constants import NO_ERROR @@ -58,27 +58,30 @@ def _check_fault_state_io_device(self, io_device: int) -> None: if data.data.io_states[f"io_states{io_device}"].data.get.fault_state == 2: raise ValueError(LimitingValue.CONTROLLABLE_CONSUMERS_ERROR.value.format(get_io_name_by_id(io_device))) - def dimming_get_import_power_left(self, device: str) -> Optional[float]: + def dimming_get_import_power_left(self, device: List[str, str]) -> Optional[float]: for action in self.actions.values(): if isinstance(action, Dimming): - if device in action.config.configuration.devices: - self._check_fault_state_io_device(action.config.configuration.io_device) - return action.dimming_get_import_power_left(device) + for d in action.config.configuration.devices: + if device[0] == d[0] and ("cp" in device[0] or device[1] == d[1]): + self._check_fault_state_io_device(action.config.configuration.io_device) + return action.dimming_get_import_power_left() else: return None - def dimming_set_import_power_left(self, device: str, used_power: float) -> Optional[float]: + def dimming_set_import_power_left(self, device: List[str, str], used_power: float) -> Optional[float]: for action in self.actions.values(): if isinstance(action, Dimming): - if device in action.config.configuration.devices: - return action.dimming_set_import_power_left(device, used_power) + for d in action.config.configuration.devices: + if device[0] == d[0] and ("cp" in device[0] or device[1] == d[1]): + return action.dimming_set_import_power_left(used_power) - def dimming_via_direct_control(self, device: str) -> float: + def dimming_via_direct_control(self, device: List[str, str]) -> float: for action in self.actions.values(): if isinstance(action, DimmingDirectControl): - if device == action.config.configuration.device: - self._check_fault_state_io_device(action.config.configuration.io_device) - return action.dimming_via_direct_control(device) + for d in action.config.configuration.devices: + if device[0] == d[0] and ("cp" in device[0] or device[1] == d[1]): + self._check_fault_state_io_device(action.config.configuration.io_device) + return action.dimming_via_direct_control() else: return None diff --git a/packages/modules/io_actions/controllable_consumers/dimming/api.py b/packages/modules/io_actions/controllable_consumers/dimming/api.py index 6981c8866e..e5d43dc3bc 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/api.py @@ -37,33 +37,29 @@ def setup(self) -> None: msg = (f"EVU-Zähler: " f"{data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()].data.get.powers}W") - for cp in self.config.configuration.devices: - msg += f", Gerät {cp}: {data.data.cp_data[f'cp{cp}'].data.get.powers}W" + for device in self.config.configuration.devices: + if "cp" in device[0]: + cp = device[0] + msg += f", Gerät {cp}: {data.data.cp_data[f'cp{cp}'].data.get.powers}W" control_command_log.info(msg) elif self.timestamp: Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", None) control_command_log.info("Dimmen deaktiviert.") - def dimming_get_import_power_left(self, device: str) -> None: - if device in self.config.configuration.devices: - if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ - self.dimming_input] == self.dimming_value: - return self.import_power_left - elif data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ - self.no_dimming_input] == self.no_dimming_value: - return None - else: - raise Exception("Pattern passt nicht zur Dimmung.") - else: - return None - - def dimming_set_import_power_left(self, device: str, used_power: float) -> None: - if device in self.config.configuration.devices: - self.import_power_left -= used_power - log.debug(f"verbleibende Dimm-Leistung: {self.import_power_left}W inkl Überschuss") + def dimming_get_import_power_left(self) -> None: + if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ + self.dimming_input] == self.dimming_value: return self.import_power_left - else: + elif data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ + self.no_dimming_input] == self.no_dimming_value: return None + else: + raise Exception("Pattern passt nicht zur Dimmung.") + + def dimming_set_import_power_left(self, used_power: float) -> None: + self.import_power_left -= used_power + log.debug(f"verbleibende Dimm-Leistung: {self.import_power_left}W inkl Überschuss") + return self.import_power_left def create_action(config: DimmingSetup): diff --git a/packages/modules/io_actions/controllable_consumers/dimming/config.py b/packages/modules/io_actions/controllable_consumers/dimming/config.py index 9e83a1d158..0fd39199ee 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming/config.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/config.py @@ -8,7 +8,7 @@ class DimmingConfig: io_device: Optional[int] = None input_pattern: List[Dict] = field(default_factory=empty_io_pattern_factory) - devices: List[str] = field(default_factory=empty_list_factory) + devices: List[List[str, str]] = field(default_factory=empty_list_factory) max_import_power: int = 0 diff --git a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py index fef5eb6c04..5117669181 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py @@ -32,26 +32,22 @@ def setup(self) -> None: msg = (f"EVU-Zähler: " f"{data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()].data.get.powers}W") - msg += (f", Gerät {self.config.configuration.device}: " - f"{data.data.cp_data[f'cp{self.config.configuration.device}'].data.get.powers}W") + msg += (f", Gerät {self.config.configuration.devices}: " + f"{data.data.cp_data[f'cp{self.config.configuration.devices}'].data.get.powers}W") control_command_log.info(msg) elif self.timestamp: Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", None) control_command_log.info("Direktsteuerung deaktiviert.") - def dimming_via_direct_control(self, device: str) -> None: - - if device == self.config.configuration.device: - if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ - self.dimming_input] == self.dimming_value: - return 4200 - elif data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ - self.no_dimming_input] == self.no_dimming_value: - return None - else: - raise Exception("Pattern passt nicht zur Dimmung per Direktsteuerung.") - else: + def dimming_via_direct_control(self) -> None: + if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ + self.dimming_input] == self.dimming_value: + return 4200 + elif data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ + self.no_dimming_input] == self.no_dimming_value: return None + else: + raise Exception("Pattern passt nicht zur Dimmung per Direktsteuerung.") def create_action(config: DimmingDirectControlSetup): diff --git a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py index e9e28cc8e9..d0e9fd95bf 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py +++ b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py @@ -1,6 +1,6 @@ from dataclasses import dataclass, field from typing import Dict, List, Optional -from dataclass_utils.factories import empty_io_pattern_factory +from dataclass_utils.factories import empty_io_pattern_factory, empty_list_factory from modules.io_actions.groups import ActionGroup @@ -8,7 +8,7 @@ class DimmingDirectControlConfig: io_device: Optional[int] = None input_pattern: List[Dict] = field(default_factory=empty_io_pattern_factory) - device: Optional[str] = None + devices: List[List[str, str]] = field(default_factory=empty_list_factory) class DimmingDirectControlSetup: From 48a54014338d2e1e32501c0a8807fc5804a0b9f8 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 29 Jan 2025 08:12:50 +0100 Subject: [PATCH 51/75] dimming via direct control for digital outputs --- packages/control/process.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/control/process.py b/packages/control/process.py index f9e7eeb73b..d61f59b6d3 100644 --- a/packages/control/process.py +++ b/packages/control/process.py @@ -13,6 +13,7 @@ from helpermodules.utils._thread_handler import joined_thread_handler from modules.common.abstract_io import AbstractIoDevice from modules.common.fault_state_level import FaultStateLevel +from modules.io_actions.controllable_consumers.dimming_direct_control.api import DimmingDirectControl log = logging.getLogger(__name__) @@ -68,6 +69,12 @@ def process_algorithm_results(self) -> None: target=bat_component.set_power_limit, args=(data.data.bat_data[f"bat{bat_component.component_config.id}"].data.set.power_limit,), name=f"set power limit {bat_component.component_config.id}")) + for action in data.data.io_actions.actions.values(): + if isinstance(action, DimmingDirectControl): + for d in action.config.configuration.devices: + if "io" in d[0]: + if action.dimming_via_direct_control(d) is not None: + data.data.system_data[d].data.set.digital_output[d[1]] = True for io in data.data.system_data.values(): if isinstance(io, AbstractIoDevice): modules_threads.append( From ce9b32e69c68a553b790aa08f95a8bf4948875ac Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 29 Jan 2025 09:25:42 +0100 Subject: [PATCH 52/75] fix --- packages/control/io_device.py | 6 +++--- .../io_actions/controllable_consumers/dimming/config.py | 2 +- .../controllable_consumers/dimming_direct_control/config.py | 2 +- packages/modules/io_actions/groups.py | 2 -- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/packages/control/io_device.py b/packages/control/io_device.py index 955a858bce..6fce4035ae 100644 --- a/packages/control/io_device.py +++ b/packages/control/io_device.py @@ -58,7 +58,7 @@ def _check_fault_state_io_device(self, io_device: int) -> None: if data.data.io_states[f"io_states{io_device}"].data.get.fault_state == 2: raise ValueError(LimitingValue.CONTROLLABLE_CONSUMERS_ERROR.value.format(get_io_name_by_id(io_device))) - def dimming_get_import_power_left(self, device: List[str, str]) -> Optional[float]: + def dimming_get_import_power_left(self, device: List[str]) -> Optional[float]: for action in self.actions.values(): if isinstance(action, Dimming): for d in action.config.configuration.devices: @@ -68,14 +68,14 @@ def dimming_get_import_power_left(self, device: List[str, str]) -> Optional[floa else: return None - def dimming_set_import_power_left(self, device: List[str, str], used_power: float) -> Optional[float]: + def dimming_set_import_power_left(self, device: List[str], used_power: float) -> Optional[float]: for action in self.actions.values(): if isinstance(action, Dimming): for d in action.config.configuration.devices: if device[0] == d[0] and ("cp" in device[0] or device[1] == d[1]): return action.dimming_set_import_power_left(used_power) - def dimming_via_direct_control(self, device: List[str, str]) -> float: + def dimming_via_direct_control(self, device: List[str]) -> float: for action in self.actions.values(): if isinstance(action, DimmingDirectControl): for d in action.config.configuration.devices: diff --git a/packages/modules/io_actions/controllable_consumers/dimming/config.py b/packages/modules/io_actions/controllable_consumers/dimming/config.py index 0fd39199ee..bc505533c2 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming/config.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/config.py @@ -8,7 +8,7 @@ class DimmingConfig: io_device: Optional[int] = None input_pattern: List[Dict] = field(default_factory=empty_io_pattern_factory) - devices: List[List[str, str]] = field(default_factory=empty_list_factory) + devices: List[List[str]] = field(default_factory=empty_list_factory) max_import_power: int = 0 diff --git a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py index d0e9fd95bf..9befcd1c0c 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py +++ b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py @@ -8,7 +8,7 @@ class DimmingDirectControlConfig: io_device: Optional[int] = None input_pattern: List[Dict] = field(default_factory=empty_io_pattern_factory) - devices: List[List[str, str]] = field(default_factory=empty_list_factory) + devices: List[List[str]] = field(default_factory=empty_list_factory) class DimmingDirectControlSetup: diff --git a/packages/modules/io_actions/groups.py b/packages/modules/io_actions/groups.py index 11fd644fe2..538025f563 100644 --- a/packages/modules/io_actions/groups.py +++ b/packages/modules/io_actions/groups.py @@ -3,10 +3,8 @@ class ActionGroup(Enum): CONTROLLABLE_CONSUMERS = "controllable_consumers" - GENERATOR_SYSTEMS = "generator_systems" READABLE_GROUP_NAME = { ActionGroup.CONTROLLABLE_CONSUMERS: "Steuerbare Verbrauchseinrichtungen (§14a)", - ActionGroup.GENERATOR_SYSTEMS: "Erzeugungsanlagen", } From 9409787c95fab692f4e9d70fe6928748d2895413 Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Wed, 29 Jan 2025 12:11:55 +0100 Subject: [PATCH 53/75] modify io-action api --- .../controllable_consumers/dimming/api.py | 17 +++++----- .../dimming_direct_control/api.py | 13 +++++--- .../ripple_control_receiver/api.py | 31 ++++++++++--------- .../ripple_control_receiver/config.py | 2 +- 4 files changed, 36 insertions(+), 27 deletions(-) diff --git a/packages/modules/io_actions/controllable_consumers/dimming/api.py b/packages/modules/io_actions/controllable_consumers/dimming/api.py index e5d43dc3bc..98794df335 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/api.py @@ -16,17 +16,20 @@ def __init__(self, config: DimmingSetup): self.config = config self.import_power_left = None for pattern in self.config.configuration.input_pattern: - if pattern["value"]: - self.dimming_input, self.dimming_value = pattern["input_matrix"].items()[0] - if pattern["value"] is False: - self.no_dimming_input, self.no_dimming_value = pattern["input_matrix"].items()[0] - + input_matrix_list = list(pattern["input_matrix"].items()) + if len(input_matrix_list): + if pattern["value"]: + self.dimming_input, self.dimming_value = input_matrix_list[0] + if pattern["value"] is False: + self.no_dimming_input, self.no_dimming_value = input_matrix_list[0] + else: + control_command_log.warning("Kein Input-Matrix-Element gefunden.") super().__init__() def setup(self) -> None: self.import_power_left = self.config.configuration.max_import_power + \ data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()].calc_raw_surplus() - log.debug(f"Dimmen: {self.import_power_left}W inkl Überschuss") + log.debug(f"Dimmen: {self.import_power_left}W inkl. Überschuss") with ModifyLoglevelContext(control_command_log, logging.DEBUG): if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ @@ -58,7 +61,7 @@ def dimming_get_import_power_left(self) -> None: def dimming_set_import_power_left(self, used_power: float) -> None: self.import_power_left -= used_power - log.debug(f"verbleibende Dimm-Leistung: {self.import_power_left}W inkl Überschuss") + log.debug(f"verbleibende Dimm-Leistung: {self.import_power_left}W inkl. Überschuss") return self.import_power_left diff --git a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py index 5117669181..3c83ee4815 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py @@ -14,11 +14,14 @@ class DimmingDirectControl(AbstractIoAction): def __init__(self, config: DimmingDirectControlSetup): self.config = config for pattern in self.config.configuration.input_pattern: - if pattern["value"]: - self.dimming_input, self.dimming_value = pattern["input_matrix"].items()[0] - if pattern["value"] is False: - self.no_dimming_input, self.no_dimming_value = pattern["input_matrix"].items()[0] - + input_matrix_list = list(pattern["input_matrix"].items()) + if len(input_matrix_list): + if pattern["value"]: + self.dimming_input, self.dimming_value = input_matrix_list[0] + if pattern["value"] is False: + self.no_dimming_input, self.no_dimming_value = input_matrix_list[0] + else: + control_command_log.warning("Kein Input-Matrix-Element gefunden.") super().__init__() def setup(self) -> None: diff --git a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py index 7df86d193d..942aad4b31 100644 --- a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py +++ b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py @@ -33,8 +33,9 @@ def setup(self) -> None: evu_counter = data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()] msg = f"EVU-Zähler: {evu_counter.data.get.powers}W" - for cp in self.config.configuration.cp_ids: - msg += f", LP {cp}: {data.data.cp_data[cp].data.get.powers}W" + for cp in self.config.configuration.devices: + cp_id = cp[0][2:] + msg += f", LP {cp_id}: {data.data.cp_data[cp_id].data.get.powers}W" control_command_log.info(msg) else: if self.timestamp: @@ -42,20 +43,22 @@ def setup(self) -> None: control_command_log.info("Direktsteuerung deaktiviert.") def ripple_control_receiver(self, cp_num: int) -> float: - if cp_num in self.config.configuration.cp_ids: - for pattern in self.config.configuration.input_pattern: - for digital_input, value in pattern["input_matrix"].items(): - if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ - digital_input] != value: - break + for cp in self.config.configuration.devices: + if cp_num == int(cp[0][2:]): + for pattern in self.config.configuration.input_pattern: + for digital_input, value in pattern["input_matrix"].items(): + if data.data.io_states[ + f"io_states{self.config.configuration.io_device}" + ].data.get.digital_input[digital_input] != value: + break + else: + # Alle digitalen Eingänge entsprechen dem Pattern + return pattern["value"] else: - # Alle digitalen Eingänge entsprechen dem Pattern - return pattern["value"] + # Zustand entspricht keinem Pattern + return 0 else: - # Zustand entpsricht keinem Pattern - return 0 - else: - return 1 + return 1 def create_action(config: RippleControlReceiverSetup): diff --git a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/config.py b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/config.py index 1cbb110b8b..d98ea6bac8 100644 --- a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/config.py +++ b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/config.py @@ -9,7 +9,7 @@ class RippleControlReceiverConfig: io_device: Optional[int] = None # [{"value": 0.5, "input_matrix": {"SofortLa": False, "PV": True}}] input_pattern: List[Dict] = field(default_factory=empty_list_factory) - cp_ids: List[int] = field(default_factory=empty_list_factory) + devices: List[List[str]] = field(default_factory=empty_list_factory) class RippleControlReceiverSetup: From 3e1d07c4f08823487e6c3069edea6c5ac9d8ff2c Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Tue, 4 Feb 2025 08:44:14 +0100 Subject: [PATCH 54/75] fix --- packages/control/limiting_value.py | 2 +- packages/control/loadmanagement.py | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/control/limiting_value.py b/packages/control/limiting_value.py index c9ef6458df..6a12065e71 100644 --- a/packages/control/limiting_value.py +++ b/packages/control/limiting_value.py @@ -6,7 +6,7 @@ class LimitingValue(Enum): POWER = ", da die maximale Leistung an Zähler {} erreicht ist." UNBALANCED_LOAD = ", da die maximale Schieflast an Zähler {} erreicht ist." DIMMING = ", da die Dimmung die Ladeleistung bgrenzt." - DIMMING_VIA_DIRECT_CONTROL = ", da die Dimmung per Direkt-Steuerung die Ladeleistung begrenzt." + DIMMING_VIA_DIRECT_CONTROL = ", da die Dimmung per Direkt-Steuerung die Ladeleistung auf 4,2 kW begrenzt." RIPPLE_CONTROL_RECEIVER = (", da der Ladepunkt durch den RSE-Kontakt auf {}% der konfigurierten Anschlussleistung " "reduziert wird.") CONTROLLABLE_CONSUMERS_ERROR = (", da aufgrund eines Fehlers im IO-Gerät {} die steuerbaren Verbraucher nicht " diff --git a/packages/control/loadmanagement.py b/packages/control/loadmanagement.py index 454093a9f9..7f0a953f08 100644 --- a/packages/control/loadmanagement.py +++ b/packages/control/loadmanagement.py @@ -124,10 +124,12 @@ def _limit_by_current(self, def _limit_by_dimming_via_direct_control(self, missing_currents: List[float], cp: Chargepoint) -> Tuple[List[float], Optional[str]]: - if data.data.io_actions.dimming_via_direct_control(f"cp{cp.num}"): + if data.data.io_actions.dimming_via_direct_control([f"cp{cp.num}"]): phases = 3-missing_currents.count(0) - current_per_phase = 4.2/phases - available_currents = [current_per_phase if c > 0 else 0 for c in missing_currents] + current_per_phase = 4200 / (sum(v for v in cp.data.get.voltages if v >= 200) / + len([v for v in cp.data.get.voltages if v >= 200])) / phases + available_currents = [current_per_phase - + cp.data.set.target_current if c > 0 else 0 for c in missing_currents] log.debug(f"Dimmung per Direkt-Steuerung: {available_currents}A") return available_currents, LimitingValue.DIMMING_VIA_DIRECT_CONTROL.value else: @@ -136,7 +138,7 @@ def _limit_by_dimming_via_direct_control(self, def _limit_by_dimming(self, available_currents: List[float], cp: Chargepoint) -> Tuple[List[float], Optional[str]]: - dimming_power_left = data.data.io_actions.dimming_get_import_power_left(f"cp{cp.num}") + dimming_power_left = data.data.io_actions.dimming_get_import_power_left([f"cp{cp.num}"]) if dimming_power_left: if sum(available_currents)*230 > dimming_power_left: phases = 3-available_currents.count(0) @@ -149,7 +151,7 @@ def _limit_by_dimming(self, def _limit_by_ripple_control_receiver(self, available_currents: List[float], cp: Chargepoint) -> Tuple[List[float], Optional[str]]: - value = data.data.io_actions.ripple_control_receiver(cp.num) + value = data.data.io_actions.ripple_control_receiver([f"cp{cp.num}"]) if value != 1: phases = 3-available_currents.count(0) if phases > 1: From fb18b6dd0fbc2b538e096cc7cca17d11a2a80397 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Tue, 4 Feb 2025 10:25:11 +0100 Subject: [PATCH 55/75] fixes --- packages/control/algorithm/common.py | 4 +-- packages/control/io_device.py | 9 ++++--- packages/control/loadmanagement.py | 3 ++- packages/control/process.py | 2 +- packages/helpermodules/subdata.py | 4 +-- .../controllable_consumers/dimming/api.py | 2 +- .../ripple_control_receiver/api.py | 27 ++++++++----------- 7 files changed, 24 insertions(+), 27 deletions(-) diff --git a/packages/control/algorithm/common.py b/packages/control/algorithm/common.py index f14782f4d3..695a0ae472 100644 --- a/packages/control/algorithm/common.py +++ b/packages/control/algorithm/common.py @@ -76,7 +76,7 @@ def set_current_counterdiff(diff_curent: float, data.data.counter_data[counter].update_surplus_values_left(diffs) else: data.data.counter_data[counter].update_values_left(diffs) - data.data.io_actions.dimming_set_import_power_left(f"cp{chargepoint.num}", sum(diffs)*230) + data.data.io_actions.dimming_set_import_power_left([f"cp{chargepoint.num}"], sum(diffs)*230) chargepoint.data.set.current = current log.info(f"LP{chargepoint.num}: Stromstärke {current}A") @@ -148,7 +148,7 @@ def update_raw_data(preferenced_chargepoints: List[Chargepoint], data.data.counter_data[counter].update_surplus_values_left(diffs) else: data.data.counter_data[counter].update_values_left(diffs) - data.data.io_actions.dimming_set_import_power_left(f"cp{chargepoint.num}", sum(diffs)*230) + data.data.io_actions.dimming_set_import_power_left([f"cp{chargepoint.num}"], sum(diffs)*230) def consider_less_charging_chargepoint_in_loadmanagement(cp: Chargepoint, set_current: float) -> bool: diff --git a/packages/control/io_device.py b/packages/control/io_device.py index 6fce4035ae..c97bffae55 100644 --- a/packages/control/io_device.py +++ b/packages/control/io_device.py @@ -85,11 +85,12 @@ def dimming_via_direct_control(self, device: List[str]) -> float: else: return None - def ripple_control_receiver(self, cp_num: int) -> float: + def ripple_control_receiver(self, device: List[str]) -> float: for action in self.actions.values(): if isinstance(action, RippleControlReceiver): - if cp_num in action.config.configuration.cp_ids: - self._check_fault_state_io_device(action.config.configuration.io_device) - return action.ripple_control_receiver(cp_num) + for d in action.config.configuration.devices: + if device[0] == d[0]: + self._check_fault_state_io_device(action.config.configuration.io_device) + return action.ripple_control_receiver() else: return 1 diff --git a/packages/control/loadmanagement.py b/packages/control/loadmanagement.py index 7f0a953f08..4c22afa74e 100644 --- a/packages/control/loadmanagement.py +++ b/packages/control/loadmanagement.py @@ -143,7 +143,8 @@ def _limit_by_dimming(self, if sum(available_currents)*230 > dimming_power_left: phases = 3-available_currents.count(0) overload_per_phase = (sum(available_currents) - dimming_power_left/230)/phases - available_currents = [c - overload_per_phase if c > 0 else 0 for c in available_currents] + available_currents = [c - overload_per_phase - + cp.data.set.target_current if c > 0 else 0 for c in available_currents] log.debug(f"Reduzierung der Ströme durch die Dimmung: {available_currents}A") return available_currents, LimitingValue.DIMMING.value return available_currents, None diff --git a/packages/control/process.py b/packages/control/process.py index d61f59b6d3..af24e608ed 100644 --- a/packages/control/process.py +++ b/packages/control/process.py @@ -74,7 +74,7 @@ def process_algorithm_results(self) -> None: for d in action.config.configuration.devices: if "io" in d[0]: if action.dimming_via_direct_control(d) is not None: - data.data.system_data[d].data.set.digital_output[d[1]] = True + data.data.system_data[d[0]].data.set.digital_output[d[1]] = True for io in data.data.system_data.values(): if isinstance(io, AbstractIoDevice): modules_threads.append( diff --git a/packages/helpermodules/subdata.py b/packages/helpermodules/subdata.py index c442c23a6b..6daae00943 100644 --- a/packages/helpermodules/subdata.py +++ b/packages/helpermodules/subdata.py @@ -681,8 +681,8 @@ def process_io_topic(self, var: Dict[str, Union[io_device.IoActions, io_device.I index = get_index(msg.topic) payload = decode_payload(msg.payload) if payload == "": - if index in var.actions: - var.actions.pop(index) + if f"io_action{index}" in var.actions: + var.actions.pop(f"io_action{index}") else: mod = importlib.import_module( f".io_actions.{payload['group']}.{payload['type']}.api", "modules") diff --git a/packages/modules/io_actions/controllable_consumers/dimming/api.py b/packages/modules/io_actions/controllable_consumers/dimming/api.py index 98794df335..ece9235443 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/api.py @@ -43,7 +43,7 @@ def setup(self) -> None: for device in self.config.configuration.devices: if "cp" in device[0]: cp = device[0] - msg += f", Gerät {cp}: {data.data.cp_data[f'cp{cp}'].data.get.powers}W" + msg += f", Gerät {cp}: {data.data.cp_data[cp].data.get.powers}W" control_command_log.info(msg) elif self.timestamp: Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", None) diff --git a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py index 942aad4b31..e5fded88ae 100644 --- a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py +++ b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py @@ -42,23 +42,18 @@ def setup(self) -> None: Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", None) control_command_log.info("Direktsteuerung deaktiviert.") - def ripple_control_receiver(self, cp_num: int) -> float: - for cp in self.config.configuration.devices: - if cp_num == int(cp[0][2:]): - for pattern in self.config.configuration.input_pattern: - for digital_input, value in pattern["input_matrix"].items(): - if data.data.io_states[ - f"io_states{self.config.configuration.io_device}" - ].data.get.digital_input[digital_input] != value: - break - else: - # Alle digitalen Eingänge entsprechen dem Pattern - return pattern["value"] - else: - # Zustand entspricht keinem Pattern - return 0 + def ripple_control_receiver(self) -> float: + for pattern in self.config.configuration.input_pattern: + for digital_input, value in pattern["input_matrix"].items(): + if data.data.io_states[f"io_states{self.config.configuration.io_device}" + ].data.get.digital_input[digital_input] != value: + break else: - return 1 + # Alle digitalen Eingänge entsprechen dem Pattern + return pattern["value"] + else: + # Zustand entspricht keinem Pattern + return 0 def create_action(config: RippleControlReceiverSetup): From dc8c6e5a9f3ecb5d5d5b6583fdf74de3bb422510 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Tue, 4 Feb 2025 10:38:42 +0100 Subject: [PATCH 56/75] fix --- packages/helpermodules/update_config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index f1ed37d173..fe03bd2da1 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -1976,7 +1976,7 @@ def upgrade(topic: str, payload) -> Optional[dict]: action = RippleControlReceiverSetup() for cp_topic in self.all_received_topics.keys(): if re.search("openWB/chargepoint/[0-9]+/config", cp_topic) is not None: - action.configuration.cp_ids.append(int(get_index(cp_topic))) + action.configuration.devices.append([f"cp{int(get_index(cp_topic))}"]) action.configuration.io_device = 0 if payload["type"] == "dimm_kit": From 313b03aff0e477c26a0b58916e3131206ffc3055 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Tue, 4 Feb 2025 10:46:50 +0100 Subject: [PATCH 57/75] fix --- packages/helpermodules/update_config.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index fe03bd2da1..b6e1681599 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -1972,6 +1972,12 @@ def upgrade(topic: str, payload) -> Optional[dict]: else: dev = importlib.import_module(".io_devices."+payload["type"]+".api", "modules") io_device = dev.device_descriptor.configuration_factory() + for cp_topic, cp_payload in self.all_received_topics.items(): + if re.search("openWB/chargepoint/[0-9]+/config", cp_topic) is not None: + cp_config = decode_payload(cp_payload) + if cp_config["type"] == "mqtt": + # if cp_config["type"] == "internal_openwb": + io_device.configuration.io_device = cp_config["id"] action = RippleControlReceiverSetup() for cp_topic in self.all_received_topics.keys(): From 4c3ac243091d5a43fd0187c2feaeff11ce38c041 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Tue, 4 Feb 2025 11:03:37 +0100 Subject: [PATCH 58/75] fix --- packages/helpermodules/update_config.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index b6e1681599..9b898c6966 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -1972,12 +1972,7 @@ def upgrade(topic: str, payload) -> Optional[dict]: else: dev = importlib.import_module(".io_devices."+payload["type"]+".api", "modules") io_device = dev.device_descriptor.configuration_factory() - for cp_topic, cp_payload in self.all_received_topics.items(): - if re.search("openWB/chargepoint/[0-9]+/config", cp_topic) is not None: - cp_config = decode_payload(cp_payload) - if cp_config["type"] == "mqtt": - # if cp_config["type"] == "internal_openwb": - io_device.configuration.io_device = cp_config["id"] + io_device.configuration.host = "localhost" action = RippleControlReceiverSetup() for cp_topic in self.all_received_topics.keys(): From 444f438f9003e764913bd39673da186f03feb0d6 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Tue, 4 Feb 2025 11:07:41 +0100 Subject: [PATCH 59/75] fix --- packages/helpermodules/update_config.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index 9b898c6966..2ee8927a1a 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -1972,7 +1972,6 @@ def upgrade(topic: str, payload) -> Optional[dict]: else: dev = importlib.import_module(".io_devices."+payload["type"]+".api", "modules") io_device = dev.device_descriptor.configuration_factory() - io_device.configuration.host = "localhost" action = RippleControlReceiverSetup() for cp_topic in self.all_received_topics.keys(): @@ -1981,7 +1980,7 @@ def upgrade(topic: str, payload) -> Optional[dict]: action.configuration.io_device = 0 if payload["type"] == "dimm_kit": - io_device.configuration.ip_address = payload["configuration"]["ip_address"] + io_device.configuration.host = payload["configuration"]["ip_address"] io_device.configuration.port = payload["configuration"]["port"] io_device.configuration.modbus_id = payload["configuration"]["modbus_id"] # Wenn mindestens ein Kontakt offen ist, wird die Ladung gesperrt. Wenn beide Kontakte @@ -1992,6 +1991,7 @@ def upgrade(topic: str, payload) -> Optional[dict]: {"value": 0, "input_matrix": {"DI1": True, "DI2": False}}, {"value": 1, "input_matrix": {"DI1": True, "DI2": True}}] elif payload["type"] == "gpio": + io_device.configuration.host = "localhost" # Wenn mindestens ein Kontakt geschlossen ist, wird die Ladung gesperrt. Wenn beide Kontakt # offen sind, darf geladen werden. action.configuration.input_pattern = [ From b39f4a7747799a18a4e23ea28efc2acab75fa3d9 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Tue, 4 Feb 2025 11:27:33 +0100 Subject: [PATCH 60/75] fix delete io device --- packages/helpermodules/subdata.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/helpermodules/subdata.py b/packages/helpermodules/subdata.py index 6daae00943..f843a7ceb2 100644 --- a/packages/helpermodules/subdata.py +++ b/packages/helpermodules/subdata.py @@ -905,6 +905,8 @@ def process_system_topic(self, client: mqtt.Client, var: dict, msg: mqtt.MQTTMes index = get_index(msg.topic) if decode_payload(msg.payload) == "": if "io"+index in var: + if var[f"io{index}"].config.configuration.host == "localhost": + var.pop("iolocal") var.pop("io"+index) else: log.error("Es konnte kein IO-Device mit der ID " + From 5418274d7b44ef5f56f390713759630a4d312735 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Tue, 4 Feb 2025 17:31:35 +0100 Subject: [PATCH 61/75] fixes dimming --- packages/control/loadmanagement.py | 7 ++++--- .../io_actions/controllable_consumers/dimming/api.py | 7 +++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/control/loadmanagement.py b/packages/control/loadmanagement.py index 4c22afa74e..cfe1c68746 100644 --- a/packages/control/loadmanagement.py +++ b/packages/control/loadmanagement.py @@ -142,9 +142,10 @@ def _limit_by_dimming(self, if dimming_power_left: if sum(available_currents)*230 > dimming_power_left: phases = 3-available_currents.count(0) - overload_per_phase = (sum(available_currents) - dimming_power_left/230)/phases - available_currents = [c - overload_per_phase - - cp.data.set.target_current if c > 0 else 0 for c in available_currents] + average_voltage = (sum(v for v in cp.data.get.voltages if v >= 200) / + len([v for v in cp.data.get.voltages if v >= 200])) + overload_per_phase = (sum(available_currents) - dimming_power_left/average_voltage)/phases + available_currents = [c - overload_per_phase if c > 0 else 0 for c in available_currents] log.debug(f"Reduzierung der Ströme durch die Dimmung: {available_currents}A") return available_currents, LimitingValue.DIMMING.value return available_currents, None diff --git a/packages/modules/io_actions/controllable_consumers/dimming/api.py b/packages/modules/io_actions/controllable_consumers/dimming/api.py index ece9235443..6c70dfd096 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/api.py @@ -27,8 +27,11 @@ def __init__(self, config: DimmingSetup): super().__init__() def setup(self) -> None: - self.import_power_left = self.config.configuration.max_import_power + \ - data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()].calc_raw_surplus() + surplus = data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()].calc_raw_surplus() + if surplus > 0: + self.import_power_left = self.config.configuration.max_import_power + surplus + else: + self.import_power_left = self.config.configuration.max_import_power log.debug(f"Dimmen: {self.import_power_left}W inkl. Überschuss") with ModifyLoglevelContext(control_command_log, logging.DEBUG): From 56e4cfc8d3e2c6f4f5937e42be1aac643ea5319d Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Thu, 6 Feb 2025 11:46:56 +0100 Subject: [PATCH 62/75] fix --- packages/modules/common/configurable_io.py | 4 ++-- packages/modules/io_devices/dimm_kit/api.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/modules/common/configurable_io.py b/packages/modules/common/configurable_io.py index 84ce1fa0ec..6e450bd9f0 100644 --- a/packages/modules/common/configurable_io.py +++ b/packages/modules/common/configurable_io.py @@ -34,8 +34,8 @@ def write(self, analog_output, digital_output): if hasattr(self, "component_writer"): # Wenn beim Initialisieren etwas schief gelaufen ist, ursprüngliche Fehlermeldung beibehalten with SingleComponentUpdateContext(self.fault_state): - if ((analog_output and self.store.state.analog_output != analog_output) or - (digital_output and self.store.state.digital_output != digital_output)): + if ((analog_output and self.store.delegate.state.analog_output != analog_output) or + (digital_output and self.store.delegate.state.digital_output != digital_output)): io_state = self.component_writer(analog_output, digital_output) if io_state is not None: self.store.set(io_state) diff --git a/packages/modules/io_devices/dimm_kit/api.py b/packages/modules/io_devices/dimm_kit/api.py index 9ca9f910d0..8f87420749 100644 --- a/packages/modules/io_devices/dimm_kit/api.py +++ b/packages/modules/io_devices/dimm_kit/api.py @@ -42,7 +42,7 @@ def read(): analog_input={ pin.name: client.read_input_registers( pin.value, ModbusDataType.UINT_16, unit=config.configuration.modbus_id - ) for pin in AnalogInputMapping}, + ) * 5 for pin in AnalogInputMapping}, digital_input={ pin.name: client.read_coils( pin.value, 1, unit=config.configuration.modbus_id @@ -54,7 +54,7 @@ def read(): def write(analog_output: Optional[Dict[str, int]], digital_output: Optional[Dict[str, int]]) -> None: for i, value in digital_output.items(): - client.write_single_coil(i-1, value, unit=config.configuration.modbus_id) + client.write_single_coil(DigitalOutputMapping[i].value, value, unit=config.configuration.modbus_id) version = False client = ModbusTcpClient_(config.configuration.host, config.configuration.port) From ee7fb828852d803e0c8920a7e4037bdbddfaad5d Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Thu, 20 Feb 2025 08:11:56 +0100 Subject: [PATCH 63/75] fixes --- packages/control/loadmanagement.py | 7 ++----- .../modules/internal_chargepoint_handler/add_on/api.py | 2 +- packages/modules/internal_chargepoint_handler/gpio.py | 3 ++- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/packages/control/loadmanagement.py b/packages/control/loadmanagement.py index cfe1c68746..bf3e5813c4 100644 --- a/packages/control/loadmanagement.py +++ b/packages/control/loadmanagement.py @@ -126,8 +126,7 @@ def _limit_by_dimming_via_direct_control(self, cp: Chargepoint) -> Tuple[List[float], Optional[str]]: if data.data.io_actions.dimming_via_direct_control([f"cp{cp.num}"]): phases = 3-missing_currents.count(0) - current_per_phase = 4200 / (sum(v for v in cp.data.get.voltages if v >= 200) / - len([v for v in cp.data.get.voltages if v >= 200])) / phases + current_per_phase = 4200 / 230 / phases available_currents = [current_per_phase - cp.data.set.target_current if c > 0 else 0 for c in missing_currents] log.debug(f"Dimmung per Direkt-Steuerung: {available_currents}A") @@ -142,9 +141,7 @@ def _limit_by_dimming(self, if dimming_power_left: if sum(available_currents)*230 > dimming_power_left: phases = 3-available_currents.count(0) - average_voltage = (sum(v for v in cp.data.get.voltages if v >= 200) / - len([v for v in cp.data.get.voltages if v >= 200])) - overload_per_phase = (sum(available_currents) - dimming_power_left/average_voltage)/phases + overload_per_phase = (sum(available_currents) - dimming_power_left/230)/phases available_currents = [c - overload_per_phase if c > 0 else 0 for c in available_currents] log.debug(f"Reduzierung der Ströme durch die Dimmung: {available_currents}A") return available_currents, LimitingValue.DIMMING.value diff --git a/packages/modules/internal_chargepoint_handler/add_on/api.py b/packages/modules/internal_chargepoint_handler/add_on/api.py index c838bfb6c3..c4caa0f506 100644 --- a/packages/modules/internal_chargepoint_handler/add_on/api.py +++ b/packages/modules/internal_chargepoint_handler/add_on/api.py @@ -31,7 +31,7 @@ def read() -> Tuple[bool, bool]: def write(analog_output: Optional[Dict[str, int]], digital_output: Optional[Dict[str, bool]]): if has_gpio: for pin, value in digital_output.items(): - GPIO.output(DigitalInputMapping[pin], GPIO.HIGH if value else GPIO.LOW) + GPIO.output(DigitalOutputMapping[pin].value, GPIO.LOW if value else GPIO.HIGH) if has_gpio: GPIO.setmode(GPIO.BOARD) diff --git a/packages/modules/internal_chargepoint_handler/gpio.py b/packages/modules/internal_chargepoint_handler/gpio.py index 409fcfb433..8498778bf3 100644 --- a/packages/modules/internal_chargepoint_handler/gpio.py +++ b/packages/modules/internal_chargepoint_handler/gpio.py @@ -27,5 +27,6 @@ def loop(self): io.read() io.store.update() if "internal_io_states" in data: - io.write(data["internal_io_states"].data.set.digital_output) + io.write(data["internal_io_states"].data.set.analog_output, + data["internal_io_states"].data.set.digital_output) time.sleep(3) From a8ffcfafa2a17bad4fcd3408d8de209e714ccec2 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Mon, 24 Feb 2025 15:12:09 +0100 Subject: [PATCH 64/75] fixes --- packages/control/io_device.py | 3 +-- packages/helpermodules/update_config.py | 1 + .../io_actions/controllable_consumers/dimming/api.py | 3 ++- .../dimming_direct_control/api.py | 12 +++++++----- .../ripple_control_receiver/api.py | 8 +++++--- 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/packages/control/io_device.py b/packages/control/io_device.py index c97bffae55..d0a88ed49b 100644 --- a/packages/control/io_device.py +++ b/packages/control/io_device.py @@ -51,8 +51,7 @@ def __init__(self): def setup(self): for action in self.actions.values(): - if isinstance(action, Dimming): - action.setup() + action.setup() def _check_fault_state_io_device(self, io_device: int) -> None: if data.data.io_states[f"io_states{io_device}"].data.get.fault_state == 2: diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index 2ee8927a1a..3ac434f3d6 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -247,6 +247,7 @@ class UpdateConfig: "^openWB/io/states/[0-9]+/set/digital_output$", "^openWB/io/states/[0-9]+/set/analog_output$", "^openWB/io/action/[0-9]+/config$", + "^openWB/io/action/[0-9]+/timestamp$", "^openWB/set/log/request", "^openWB/set/log/data", diff --git a/packages/modules/io_actions/controllable_consumers/dimming/api.py b/packages/modules/io_actions/controllable_consumers/dimming/api.py index 6c70dfd096..5ee22d8d05 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/api.py @@ -46,7 +46,8 @@ def setup(self) -> None: for device in self.config.configuration.devices: if "cp" in device[0]: cp = device[0] - msg += f", Gerät {cp}: {data.data.cp_data[cp].data.get.powers}W" + msg += (f", Gerät {data.data.cp_data[cp].data.config.name}: " + f"{data.data.cp_data[cp].data.get.powers}W") control_command_log.info(msg) elif self.timestamp: Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", None) diff --git a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py index 3c83ee4815..21aeb23628 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py @@ -28,15 +28,17 @@ def setup(self) -> None: with ModifyLoglevelContext(control_command_log, logging.DEBUG): if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ self.dimming_input] == self.dimming_value: - if self.timestamp: + if self.timestamp is None: Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", create_timestamp()) - control_command_log.info(f"Direktsteuerung an Gerät {self.config.configuration.device} aktiviert. " - "Leistungswerte vor Ausführung des Steuerbefehls:") + control_command_log.info( + f"Direktsteuerung an Gerät " + f"{data.data.cp_data[self.config.configuration.devices[0][0]].data.config.name} aktiviert. " + "Leistungswerte vor Ausführung des Steuerbefehls:") msg = (f"EVU-Zähler: " f"{data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()].data.get.powers}W") - msg += (f", Gerät {self.config.configuration.devices}: " - f"{data.data.cp_data[f'cp{self.config.configuration.devices}'].data.get.powers}W") + msg += (f", Gerät {data.data.cp_data[self.config.configuration.devices[0][0]].data.config.name}: " + f"{data.data.cp_data[self.config.configuration.devices[0][0]].data.get.powers}W") control_command_log.info(msg) elif self.timestamp: Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", None) diff --git a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py index e5fded88ae..46f6ae136f 100644 --- a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py +++ b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py @@ -28,19 +28,21 @@ def setup(self) -> None: if self.timestamp is None: Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", create_timestamp()) control_command_log.info( - f"RSE-Sperre an LP {self.config.configuration.cp_id} mit Wert {pattern['value']*100}" + f"RSE-Sperre mit Wert {pattern['value']*100}" "% aktiviert. Leistungswerte vor Ausführung des Steuerbefehls:") evu_counter = data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()] msg = f"EVU-Zähler: {evu_counter.data.get.powers}W" for cp in self.config.configuration.devices: cp_id = cp[0][2:] - msg += f", LP {cp_id}: {data.data.cp_data[cp_id].data.get.powers}W" + msg += (f", LP {data.data.cp_data[f'cp{cp_id}'].data.config.name}: " + f"{data.data.cp_data[f'cp{cp_id}'].data.get.powers}W") control_command_log.info(msg) + break else: if self.timestamp: Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", None) - control_command_log.info("Direktsteuerung deaktiviert.") + control_command_log.info("RSE-Sperre deaktiviert.") def ripple_control_receiver(self) -> float: for pattern in self.config.configuration.input_pattern: From e4d98face66e2dbc5ba94d76e7be5b22ab5397f9 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 7 Mar 2025 12:37:32 +0100 Subject: [PATCH 65/75] meeting review --- .../modules/io_actions/controllable_consumers/dimming/api.py | 1 + .../modules/io_actions/controllable_consumers/dimming/config.py | 2 +- .../controllable_consumers/dimming_direct_control/api.py | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/modules/io_actions/controllable_consumers/dimming/api.py b/packages/modules/io_actions/controllable_consumers/dimming/api.py index 5ee22d8d05..e43de7d7c4 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/api.py @@ -20,6 +20,7 @@ def __init__(self, config: DimmingSetup): if len(input_matrix_list): if pattern["value"]: self.dimming_input, self.dimming_value = input_matrix_list[0] + control_command_log.info(f"Dimmen per HEMS: Eingang {self.dimming_input} wird überwacht.") if pattern["value"] is False: self.no_dimming_input, self.no_dimming_value = input_matrix_list[0] else: diff --git a/packages/modules/io_actions/controllable_consumers/dimming/config.py b/packages/modules/io_actions/controllable_consumers/dimming/config.py index bc505533c2..abcdc2debd 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming/config.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/config.py @@ -14,7 +14,7 @@ class DimmingConfig: class DimmingSetup: def __init__(self, - name: str = "Dimmen", + name: str = "Dimmen per HEMS", type: str = "dimming", id: int = 0, configuration: DimmingConfig = None): diff --git a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py index 21aeb23628..da344b9048 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py @@ -18,6 +18,8 @@ def __init__(self, config: DimmingDirectControlSetup): if len(input_matrix_list): if pattern["value"]: self.dimming_input, self.dimming_value = input_matrix_list[0] + control_command_log.info( + f"Dimmen per Direktsteuerung: Eingang {self.dimming_input} wird überwacht.") if pattern["value"] is False: self.no_dimming_input, self.no_dimming_value = input_matrix_list[0] else: From 9ad15c459ed4c6f71db4091dae7788c454f27a51 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Mon, 10 Mar 2025 09:58:01 +0100 Subject: [PATCH 66/75] improve text --- .../modules/io_actions/controllable_consumers/dimming/api.py | 2 +- .../controllable_consumers/dimming_direct_control/api.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/modules/io_actions/controllable_consumers/dimming/api.py b/packages/modules/io_actions/controllable_consumers/dimming/api.py index e43de7d7c4..e758c2bc41 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/api.py @@ -24,7 +24,7 @@ def __init__(self, config: DimmingSetup): if pattern["value"] is False: self.no_dimming_input, self.no_dimming_value = input_matrix_list[0] else: - control_command_log.warning("Kein Input-Matrix-Element gefunden.") + control_command_log.warning("Dimmen per HEMS: Kein Eingang zum Überwachen konfiguriert.") super().__init__() def setup(self) -> None: diff --git a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py index da344b9048..bf73b0b9cc 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py @@ -23,7 +23,7 @@ def __init__(self, config: DimmingDirectControlSetup): if pattern["value"] is False: self.no_dimming_input, self.no_dimming_value = input_matrix_list[0] else: - control_command_log.warning("Kein Input-Matrix-Element gefunden.") + control_command_log.warning("Dimmen per Direktsteuerung: Kein Eingang zum Überwachen konfiguriert.") super().__init__() def setup(self) -> None: From 13e6b83440680df1ba690b31745f18d46898fa8f Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 12 Mar 2025 08:44:03 +0100 Subject: [PATCH 67/75] digital output as SteuVe --- packages/control/loadmanagement.py | 4 +-- packages/control/process.py | 12 ++++++-- .../controllable_consumers/dimming/api.py | 28 +++++++++++++++++-- .../controllable_consumers/dimming/config.py | 6 +++- .../dimming_direct_control/config.py | 3 ++ 5 files changed, 45 insertions(+), 8 deletions(-) diff --git a/packages/control/loadmanagement.py b/packages/control/loadmanagement.py index bf3e5813c4..d24a67b419 100644 --- a/packages/control/loadmanagement.py +++ b/packages/control/loadmanagement.py @@ -124,7 +124,7 @@ def _limit_by_current(self, def _limit_by_dimming_via_direct_control(self, missing_currents: List[float], cp: Chargepoint) -> Tuple[List[float], Optional[str]]: - if data.data.io_actions.dimming_via_direct_control([f"cp{cp.num}"]): + if data.data.io_actions.dimming_via_direct_control([{"type": "cp", "id": cp.num}]): phases = 3-missing_currents.count(0) current_per_phase = 4200 / 230 / phases available_currents = [current_per_phase - @@ -137,7 +137,7 @@ def _limit_by_dimming_via_direct_control(self, def _limit_by_dimming(self, available_currents: List[float], cp: Chargepoint) -> Tuple[List[float], Optional[str]]: - dimming_power_left = data.data.io_actions.dimming_get_import_power_left([f"cp{cp.num}"]) + dimming_power_left = data.data.io_actions.dimming_get_import_power_left([{"type": "cp", "id": cp.num}]) if dimming_power_left: if sum(available_currents)*230 > dimming_power_left: phases = 3-available_currents.count(0) diff --git a/packages/control/process.py b/packages/control/process.py index af24e608ed..6a8dd18124 100644 --- a/packages/control/process.py +++ b/packages/control/process.py @@ -13,6 +13,7 @@ from helpermodules.utils._thread_handler import joined_thread_handler from modules.common.abstract_io import AbstractIoDevice from modules.common.fault_state_level import FaultStateLevel +from modules.io_actions.controllable_consumers.dimming.api import Dimming from modules.io_actions.controllable_consumers.dimming_direct_control.api import DimmingDirectControl log = logging.getLogger(__name__) @@ -72,9 +73,14 @@ def process_algorithm_results(self) -> None: for action in data.data.io_actions.actions.values(): if isinstance(action, DimmingDirectControl): for d in action.config.configuration.devices: - if "io" in d[0]: - if action.dimming_via_direct_control(d) is not None: - data.data.system_data[d[0]].data.set.digital_output[d[1]] = True + if d["type"] != "cp": + data.data.system_data[f"io{d['id']}"].data.set.digital_output[d["digital_output"]] = action.dimming_via_direct_control( + d) is not None + if isinstance(action, Dimming): + for d in action.config.configuration.devices: + if d["type"] != "cp": + data.data.system_data[f"io{d['id']}"].data.set.digital_output[d["digital_output"]] = action.dimming_active( + ) for io in data.data.system_data.values(): if isinstance(io, AbstractIoDevice): modules_threads.append( diff --git a/packages/modules/io_actions/controllable_consumers/dimming/api.py b/packages/modules/io_actions/controllable_consumers/dimming/api.py index e758c2bc41..146e30ae90 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/api.py @@ -10,6 +10,11 @@ log = logging.getLogger(__name__) control_command_log = logging.getLogger("steuve_control_command") +# Gleichzeitigkeitsfaktoren bei mehreren SteuVe: +# [4.2, 4.2*0.8, 0.75*4.2, 0.7*4.2, 0.7*4.2,0.7*4.2,0.7*4.2,0.7*4.2,0.45*4.2, ..] +FIXED_DIMMING_POWERS = [4.2, 3.36, 3.15, 2.94, 2.94, 2.94, 2.94, 2.94] +FIXED_DIMMING_POWER_MANY_DEVICES = 1.89 + class Dimming(AbstractIoAction): def __init__(self, config: DimmingSetup): @@ -25,6 +30,20 @@ def __init__(self, config: DimmingSetup): self.no_dimming_input, self.no_dimming_value = input_matrix_list[0] else: control_command_log.warning("Dimmen per HEMS: Kein Eingang zum Überwachen konfiguriert.") + + devices_with_fixed_import_power = 0 + fixed_import_power = 0 + for device in self.config.configuration.devices: + if device["type"] != "cp": + try: + fixed_import_power += FIXED_DIMMING_POWERS[devices_with_fixed_import_power] + except IndexError: + fixed_import_power += FIXED_DIMMING_POWER_MANY_DEVICES + devices_with_fixed_import_power += 1 + self.config.configuration.fixed_import_power = fixed_import_power + log.debug(f"Dimmen per HEMS: Fest vergebene Dimmleistung: {fixed_import_power}W") + Pub().pub(f"openWB/set/io/action/{self.config.id}/config", self.config) + super().__init__() def setup(self) -> None: @@ -33,6 +52,8 @@ def setup(self) -> None: self.import_power_left = self.config.configuration.max_import_power + surplus else: self.import_power_left = self.config.configuration.max_import_power + self.import_power_left -= self.config.configuration.fixed_import_power + log.debug(f"Dimmen: {self.import_power_left}W inkl. Überschuss") with ModifyLoglevelContext(control_command_log, logging.DEBUG): @@ -55,8 +76,7 @@ def setup(self) -> None: control_command_log.info("Dimmen deaktiviert.") def dimming_get_import_power_left(self) -> None: - if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ - self.dimming_input] == self.dimming_value: + if self.dimming_active(): return self.import_power_left elif data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ self.no_dimming_input] == self.no_dimming_value: @@ -69,6 +89,10 @@ def dimming_set_import_power_left(self, used_power: float) -> None: log.debug(f"verbleibende Dimm-Leistung: {self.import_power_left}W inkl. Überschuss") return self.import_power_left + def dimming_active(self) -> bool: + return data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ + self.dimming_input] == self.dimming_value + def create_action(config: DimmingSetup): return Dimming(config=config) diff --git a/packages/modules/io_actions/controllable_consumers/dimming/config.py b/packages/modules/io_actions/controllable_consumers/dimming/config.py index abcdc2debd..92001be14c 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming/config.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/config.py @@ -8,8 +8,12 @@ class DimmingConfig: io_device: Optional[int] = None input_pattern: List[Dict] = field(default_factory=empty_io_pattern_factory) - devices: List[List[str]] = field(default_factory=empty_list_factory) + devices: List[Dict[str]] = field(default_factory=empty_list_factory) + # [{"type": "cp", "id": 0}, + # {"type": "add_on", "id": 1, "digital_output": "SofortLa"}, + # {"type": "dimm_kit", "id": 1, "digital_output": "DO1"}] max_import_power: int = 0 + fixed_import_power: float = 0 # don't show in UI class DimmingSetup: diff --git a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py index 9befcd1c0c..8a1f93fb0c 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py +++ b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py @@ -9,6 +9,9 @@ class DimmingDirectControlConfig: io_device: Optional[int] = None input_pattern: List[Dict] = field(default_factory=empty_io_pattern_factory) devices: List[List[str]] = field(default_factory=empty_list_factory) + # [{"type": "cp", "id": 0}, + # {"type": "add_on", "id": 1, "digital_output": "SofortLa"}, + # {"type": "dimm_kit", "id": 1, "digital_output": "DO1"}] class DimmingDirectControlSetup: From dded8f7770e6b1af7a4d972b6999398b67887a2c Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 12 Mar 2025 10:18:59 +0100 Subject: [PATCH 68/75] ammend --- ...e Verbrauchseinrichtungen nach \302\247 14a.md" | 4 ++-- .../controllable_consumers/dimming/api.py | 14 ++------------ 2 files changed, 4 insertions(+), 14 deletions(-) diff --git "a/docs/Steuerbare Verbrauchseinrichtungen nach \302\247 14a.md" "b/docs/Steuerbare Verbrauchseinrichtungen nach \302\247 14a.md" index 474141c02f..f89b5b6aaf 100644 --- "a/docs/Steuerbare Verbrauchseinrichtungen nach \302\247 14a.md" +++ "b/docs/Steuerbare Verbrauchseinrichtungen nach \302\247 14a.md" @@ -1,8 +1,8 @@ Der Gesetzgeber sieht verschiedene Möglichkeiten für steuerbare Verbrauchseinrichtungen vor. Für jede steuerbare Verbrauchseinrichtung kann eine andere Option angemeldet werden. Bei der Konfiguration muss deshalb auch immer der/die Ladepunkte angegeben werden, für die die IO-Aktion angewendet werden soll. ### Dimmen -Beim Dimmen wird eine Mindestleistung für alle steuerbaren Verbrauchseinrichtungen nach einer vorgegebene Formel ermittelt. Das Ergebnis dieser Formel muss bei der IO-Aktion `Dimmen` in der Einstellung `Mindestleistung` eingetragen werden. ACHTUNG: Die openWB kann aktuell nur die Ladepunkte berücksichtigen. Sind noch weitere steuerbare Verbraucher angemeldet, muss dies bei der Ermittlung der Mindestleistung berücksichtigt werden. Für die korrekte Ermittlung der Mindestleistung ist der Betreiber, nicht openWB oder die software2 verantwortlich. -Vorhandener Überschuss kann zusätzlich zur Mindestleistung verwendet werden. +Beim Dimmen wird eine maximale Bezugsleistung für alle steuerbaren Verbrauchseinrichtungen nach einer vorgegebene Formel ermittelt. Das Ergebnis dieser Formel muss bei der IO-Aktion `Dimmen` in der Einstellung `maximale Bezugsleistung` eingetragen werden. ACHTUNG: Die openWB kann aktuell nur die Ladepunkte berücksichtigen. Sind noch weitere steuerbare Verbraucher angemeldet, können diese über einen digitalen Ausgang angebunden werden. Da openWB die Leistung dieser Geräte nicht kennt, werden 4,2kW angenommen. Für die korrekte Ermittlung der maximalen Bezugsleistung ist der Betreiber, nicht openWB oder die software2 verantwortlich. +Vorhandener Überschuss kann zusätzlich zur maximalen Bezugsleistung verwendet werden. ### Dimmung per Direkt-Steuerung Bei der Dimmung per Direkt-Steuerung wird jede steuerbare Verbrauchseinrichtung separat angesteuert und ihr Leistungsbezug auf 4,2kW gedimmt. diff --git a/packages/modules/io_actions/controllable_consumers/dimming/api.py b/packages/modules/io_actions/controllable_consumers/dimming/api.py index 146e30ae90..7e604c15d7 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/api.py @@ -10,11 +10,6 @@ log = logging.getLogger(__name__) control_command_log = logging.getLogger("steuve_control_command") -# Gleichzeitigkeitsfaktoren bei mehreren SteuVe: -# [4.2, 4.2*0.8, 0.75*4.2, 0.7*4.2, 0.7*4.2,0.7*4.2,0.7*4.2,0.7*4.2,0.45*4.2, ..] -FIXED_DIMMING_POWERS = [4.2, 3.36, 3.15, 2.94, 2.94, 2.94, 2.94, 2.94] -FIXED_DIMMING_POWER_MANY_DEVICES = 1.89 - class Dimming(AbstractIoAction): def __init__(self, config: DimmingSetup): @@ -31,17 +26,12 @@ def __init__(self, config: DimmingSetup): else: control_command_log.warning("Dimmen per HEMS: Kein Eingang zum Überwachen konfiguriert.") - devices_with_fixed_import_power = 0 fixed_import_power = 0 for device in self.config.configuration.devices: if device["type"] != "cp": - try: - fixed_import_power += FIXED_DIMMING_POWERS[devices_with_fixed_import_power] - except IndexError: - fixed_import_power += FIXED_DIMMING_POWER_MANY_DEVICES - devices_with_fixed_import_power += 1 + fixed_import_power += 4200 self.config.configuration.fixed_import_power = fixed_import_power - log.debug(f"Dimmen per HEMS: Fest vergebene Dimmleistung: {fixed_import_power}W") + log.debug(f"Dimmen per HEMS: Fest vergebene Mindestleistung: {fixed_import_power}W") Pub().pub(f"openWB/set/io/action/{self.config.id}/config", self.config) super().__init__() From e2a4f4d3d7f57235150ecf70ec5b14e018f32163 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Thu, 13 Mar 2025 11:20:01 +0100 Subject: [PATCH 69/75] use for device type io instead of add_on and dimm_kit --- .../io_actions/controllable_consumers/dimming/config.py | 3 +-- .../controllable_consumers/dimming_direct_control/config.py | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/modules/io_actions/controllable_consumers/dimming/config.py b/packages/modules/io_actions/controllable_consumers/dimming/config.py index 92001be14c..b25c9ee245 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming/config.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/config.py @@ -10,8 +10,7 @@ class DimmingConfig: input_pattern: List[Dict] = field(default_factory=empty_io_pattern_factory) devices: List[Dict[str]] = field(default_factory=empty_list_factory) # [{"type": "cp", "id": 0}, - # {"type": "add_on", "id": 1, "digital_output": "SofortLa"}, - # {"type": "dimm_kit", "id": 1, "digital_output": "DO1"}] + # {"type": "io", "id": 1, "digital_output": "SofortLa"}] max_import_power: int = 0 fixed_import_power: float = 0 # don't show in UI diff --git a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py index 8a1f93fb0c..9e247ea0f6 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py +++ b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py @@ -10,8 +10,7 @@ class DimmingDirectControlConfig: input_pattern: List[Dict] = field(default_factory=empty_io_pattern_factory) devices: List[List[str]] = field(default_factory=empty_list_factory) # [{"type": "cp", "id": 0}, - # {"type": "add_on", "id": 1, "digital_output": "SofortLa"}, - # {"type": "dimm_kit", "id": 1, "digital_output": "DO1"}] + # {"type": "io", "id": 1, "digital_output": "SofortLa"}] class DimmingDirectControlSetup: From 01d3ecd73c0aa2b90fb3debf01e874bf3993f820 Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Thu, 13 Mar 2025 13:17:20 +0100 Subject: [PATCH 70/75] modified device definition --- packages/control/io_device.py | 10 ++++----- packages/control/process.py | 12 ++++++----- .../controllable_consumers/dimming/api.py | 10 ++++++--- .../controllable_consumers/dimming/config.py | 2 +- .../dimming_direct_control/api.py | 21 +++++++++++++------ .../dimming_direct_control/config.py | 2 +- .../ripple_control_receiver/api.py | 13 ++++++++---- .../ripple_control_receiver/config.py | 4 +++- 8 files changed, 48 insertions(+), 26 deletions(-) diff --git a/packages/control/io_device.py b/packages/control/io_device.py index d0a88ed49b..3f1dadb922 100644 --- a/packages/control/io_device.py +++ b/packages/control/io_device.py @@ -61,7 +61,7 @@ def dimming_get_import_power_left(self, device: List[str]) -> Optional[float]: for action in self.actions.values(): if isinstance(action, Dimming): for d in action.config.configuration.devices: - if device[0] == d[0] and ("cp" in device[0] or device[1] == d[1]): + if device[0] == f"cp{d['id']}" and ("cp" in device[0] or device[1] == d[1]): self._check_fault_state_io_device(action.config.configuration.io_device) return action.dimming_get_import_power_left() else: @@ -71,14 +71,14 @@ def dimming_set_import_power_left(self, device: List[str], used_power: float) -> for action in self.actions.values(): if isinstance(action, Dimming): for d in action.config.configuration.devices: - if device[0] == d[0] and ("cp" in device[0] or device[1] == d[1]): + if device[0] == f"cp{d['id']}" and ("cp" in device[0] or device[1] == d[1]): return action.dimming_set_import_power_left(used_power) - def dimming_via_direct_control(self, device: List[str]) -> float: + def dimming_via_direct_control(self, device: List[str]) -> Optional[float]: for action in self.actions.values(): if isinstance(action, DimmingDirectControl): for d in action.config.configuration.devices: - if device[0] == d[0] and ("cp" in device[0] or device[1] == d[1]): + if device[0] == d and device[0]["type"] == "cp": self._check_fault_state_io_device(action.config.configuration.io_device) return action.dimming_via_direct_control() else: @@ -88,7 +88,7 @@ def ripple_control_receiver(self, device: List[str]) -> float: for action in self.actions.values(): if isinstance(action, RippleControlReceiver): for d in action.config.configuration.devices: - if device[0] == d[0]: + if device[0] == f"cp{d['id']}": self._check_fault_state_io_device(action.config.configuration.io_device) return action.ripple_control_receiver() else: diff --git a/packages/control/process.py b/packages/control/process.py index 6a8dd18124..3dbb0b6f15 100644 --- a/packages/control/process.py +++ b/packages/control/process.py @@ -73,13 +73,15 @@ def process_algorithm_results(self) -> None: for action in data.data.io_actions.actions.values(): if isinstance(action, DimmingDirectControl): for d in action.config.configuration.devices: - if d["type"] != "cp": - data.data.system_data[f"io{d['id']}"].data.set.digital_output[d["digital_output"]] = action.dimming_via_direct_control( - d) is not None + if d["type"] == "io": + data.data.system_data[f"io{d['id']}"].data.set.digital_output[d["digital_output"]] = ( + action.dimming_via_direct_control(d) is not None + ) if isinstance(action, Dimming): for d in action.config.configuration.devices: - if d["type"] != "cp": - data.data.system_data[f"io{d['id']}"].data.set.digital_output[d["digital_output"]] = action.dimming_active( + if d["type"] == "io": + data.data.system_data[f"io{d['id']}"].data.set.digital_output[d["digital_output"]] = ( + action.dimming_active() ) for io in data.data.system_data.values(): if isinstance(io, AbstractIoDevice): diff --git a/packages/modules/io_actions/controllable_consumers/dimming/api.py b/packages/modules/io_actions/controllable_consumers/dimming/api.py index 7e604c15d7..d6fd2c7968 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/api.py @@ -56,10 +56,14 @@ def setup(self) -> None: msg = (f"EVU-Zähler: " f"{data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()].data.get.powers}W") for device in self.config.configuration.devices: - if "cp" in device[0]: - cp = device[0] - msg += (f", Gerät {data.data.cp_data[cp].data.config.name}: " + if device["type"] == "cp": + cp = f"cp{device['id']}" + msg += (f", Ladepunkt {data.data.cp_data[cp].data.config.name}: " f"{data.data.cp_data[cp].data.get.powers}W") + if device["type"] == "io": + io = f"io{device['id']}" + msg += (f", {data.data.io_data[io].data.config.name}: " + "Leistung unbekannt") control_command_log.info(msg) elif self.timestamp: Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", None) diff --git a/packages/modules/io_actions/controllable_consumers/dimming/config.py b/packages/modules/io_actions/controllable_consumers/dimming/config.py index b25c9ee245..9fc8227194 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming/config.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/config.py @@ -8,7 +8,7 @@ class DimmingConfig: io_device: Optional[int] = None input_pattern: List[Dict] = field(default_factory=empty_io_pattern_factory) - devices: List[Dict[str]] = field(default_factory=empty_list_factory) + devices: List[Dict] = field(default_factory=empty_list_factory) # [{"type": "cp", "id": 0}, # {"type": "io", "id": 1, "digital_output": "SofortLa"}] max_import_power: int = 0 diff --git a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py index bf73b0b9cc..d53c57b83d 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py @@ -30,17 +30,26 @@ def setup(self) -> None: with ModifyLoglevelContext(control_command_log, logging.DEBUG): if data.data.io_states[f"io_states{self.config.configuration.io_device}"].data.get.digital_input[ self.dimming_input] == self.dimming_value: + device = self.config.configuration.devices[0] + if device["type"] == "cp": + cp = f"cp{device['id']}" if self.timestamp is None: Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", create_timestamp()) - control_command_log.info( - f"Direktsteuerung an Gerät " - f"{data.data.cp_data[self.config.configuration.devices[0][0]].data.config.name} aktiviert. " - "Leistungswerte vor Ausführung des Steuerbefehls:") + if device["type"] == "cp": + control_command_log.info( + f"Direktsteuerung an Ladepunkt " + f"{data.data.cp_data[cp].data.config.name} aktiviert. " + "Leistungswerte vor Ausführung des Steuerbefehls:") msg = (f"EVU-Zähler: " f"{data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()].data.get.powers}W") - msg += (f", Gerät {data.data.cp_data[self.config.configuration.devices[0][0]].data.config.name}: " - f"{data.data.cp_data[self.config.configuration.devices[0][0]].data.get.powers}W") + if device["type"] == "cp": + msg += (f", Ladepunkt {data.data.cp_data[cp].data.config.name}: " + f"{data.data.cp_data[cp].data.get.powers}W") + if device["type"] == "io": + io = f"io{device['id']}" + msg += (f", IO-Gerät {data.data.io_data[io].data.config.name}: " + "Leistung unbekannt") control_command_log.info(msg) elif self.timestamp: Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", None) diff --git a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py index 9e247ea0f6..7ed110d50a 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py +++ b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/config.py @@ -8,7 +8,7 @@ class DimmingDirectControlConfig: io_device: Optional[int] = None input_pattern: List[Dict] = field(default_factory=empty_io_pattern_factory) - devices: List[List[str]] = field(default_factory=empty_list_factory) + devices: List[Dict] = field(default_factory=empty_list_factory) # [{"type": "cp", "id": 0}, # {"type": "io", "id": 1, "digital_output": "SofortLa"}] diff --git a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py index 46f6ae136f..b17191f9a0 100644 --- a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py +++ b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/api.py @@ -33,10 +33,15 @@ def setup(self) -> None: evu_counter = data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()] msg = f"EVU-Zähler: {evu_counter.data.get.powers}W" - for cp in self.config.configuration.devices: - cp_id = cp[0][2:] - msg += (f", LP {data.data.cp_data[f'cp{cp_id}'].data.config.name}: " - f"{data.data.cp_data[f'cp{cp_id}'].data.get.powers}W") + for device in self.config.configuration.devices: + if device["type"] == "cp": + cp = f"cp{device['id']}" + msg += (f", Ladepunkt {data.data.cp_data[cp].data.config.name}: " + f"{data.data.cp_data[cp].data.get.powers}W") + if device["type"] == "io": + io = f"io{device['id']}" + msg += (f", IO-Gerät {data.data.io_data[io].data.config.name}: " + "Leistung unbekannt") control_command_log.info(msg) break else: diff --git a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/config.py b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/config.py index d98ea6bac8..9a866908b5 100644 --- a/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/config.py +++ b/packages/modules/io_actions/controllable_consumers/ripple_control_receiver/config.py @@ -9,7 +9,9 @@ class RippleControlReceiverConfig: io_device: Optional[int] = None # [{"value": 0.5, "input_matrix": {"SofortLa": False, "PV": True}}] input_pattern: List[Dict] = field(default_factory=empty_list_factory) - devices: List[List[str]] = field(default_factory=empty_list_factory) + devices: List[Dict] = field(default_factory=empty_list_factory) + # [{"type": "cp", "id": 0}, + # {"type": "io", "id": 1, "digital_output": "SofortLa"}, class RippleControlReceiverSetup: From abdc970c1acffb557f4389b8058daa36c2c41183 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 14 Mar 2025 12:43:04 +0100 Subject: [PATCH 71/75] fixes --- packages/control/algorithm/common.py | 4 ++-- packages/control/io_device.py | 18 +++++++++--------- packages/control/loadmanagement.py | 6 +++--- packages/control/process.py | 2 +- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/packages/control/algorithm/common.py b/packages/control/algorithm/common.py index 695a0ae472..d72cd84778 100644 --- a/packages/control/algorithm/common.py +++ b/packages/control/algorithm/common.py @@ -76,7 +76,7 @@ def set_current_counterdiff(diff_curent: float, data.data.counter_data[counter].update_surplus_values_left(diffs) else: data.data.counter_data[counter].update_values_left(diffs) - data.data.io_actions.dimming_set_import_power_left([f"cp{chargepoint.num}"], sum(diffs)*230) + data.data.io_actions.dimming_set_import_power_left({"type": "cp", "id": chargepoint.num}, sum(diffs)*230) chargepoint.data.set.current = current log.info(f"LP{chargepoint.num}: Stromstärke {current}A") @@ -148,7 +148,7 @@ def update_raw_data(preferenced_chargepoints: List[Chargepoint], data.data.counter_data[counter].update_surplus_values_left(diffs) else: data.data.counter_data[counter].update_values_left(diffs) - data.data.io_actions.dimming_set_import_power_left([f"cp{chargepoint.num}"], sum(diffs)*230) + data.data.io_actions.dimming_set_import_power_left({"type": "cp", "id": chargepoint.num}, sum(diffs)*230) def consider_less_charging_chargepoint_in_loadmanagement(cp: Chargepoint, set_current: float) -> bool: diff --git a/packages/control/io_device.py b/packages/control/io_device.py index 3f1dadb922..e64c5aba8e 100644 --- a/packages/control/io_device.py +++ b/packages/control/io_device.py @@ -1,5 +1,5 @@ from dataclasses import dataclass, field -from typing import Dict, List, Optional, Union +from typing import Dict, Optional, Union from control import data from control.limiting_value import LimitingValue from helpermodules.constants import NO_ERROR @@ -57,38 +57,38 @@ def _check_fault_state_io_device(self, io_device: int) -> None: if data.data.io_states[f"io_states{io_device}"].data.get.fault_state == 2: raise ValueError(LimitingValue.CONTROLLABLE_CONSUMERS_ERROR.value.format(get_io_name_by_id(io_device))) - def dimming_get_import_power_left(self, device: List[str]) -> Optional[float]: + def dimming_get_import_power_left(self, device: Dict) -> Optional[float]: for action in self.actions.values(): if isinstance(action, Dimming): for d in action.config.configuration.devices: - if device[0] == f"cp{d['id']}" and ("cp" in device[0] or device[1] == d[1]): + if device == d: self._check_fault_state_io_device(action.config.configuration.io_device) return action.dimming_get_import_power_left() else: return None - def dimming_set_import_power_left(self, device: List[str], used_power: float) -> Optional[float]: + def dimming_set_import_power_left(self, device: Dict, used_power: float) -> Optional[float]: for action in self.actions.values(): if isinstance(action, Dimming): for d in action.config.configuration.devices: - if device[0] == f"cp{d['id']}" and ("cp" in device[0] or device[1] == d[1]): + if d == device: return action.dimming_set_import_power_left(used_power) - def dimming_via_direct_control(self, device: List[str]) -> Optional[float]: + def dimming_via_direct_control(self, device: Dict) -> Optional[float]: for action in self.actions.values(): if isinstance(action, DimmingDirectControl): for d in action.config.configuration.devices: - if device[0] == d and device[0]["type"] == "cp": + if device == d: self._check_fault_state_io_device(action.config.configuration.io_device) return action.dimming_via_direct_control() else: return None - def ripple_control_receiver(self, device: List[str]) -> float: + def ripple_control_receiver(self, device: Dict) -> float: for action in self.actions.values(): if isinstance(action, RippleControlReceiver): for d in action.config.configuration.devices: - if device[0] == f"cp{d['id']}": + if device == d: self._check_fault_state_io_device(action.config.configuration.io_device) return action.ripple_control_receiver() else: diff --git a/packages/control/loadmanagement.py b/packages/control/loadmanagement.py index d24a67b419..ae2108d2f8 100644 --- a/packages/control/loadmanagement.py +++ b/packages/control/loadmanagement.py @@ -124,7 +124,7 @@ def _limit_by_current(self, def _limit_by_dimming_via_direct_control(self, missing_currents: List[float], cp: Chargepoint) -> Tuple[List[float], Optional[str]]: - if data.data.io_actions.dimming_via_direct_control([{"type": "cp", "id": cp.num}]): + if data.data.io_actions.dimming_via_direct_control({"type": "cp", "id": cp.num}): phases = 3-missing_currents.count(0) current_per_phase = 4200 / 230 / phases available_currents = [current_per_phase - @@ -137,7 +137,7 @@ def _limit_by_dimming_via_direct_control(self, def _limit_by_dimming(self, available_currents: List[float], cp: Chargepoint) -> Tuple[List[float], Optional[str]]: - dimming_power_left = data.data.io_actions.dimming_get_import_power_left([{"type": "cp", "id": cp.num}]) + dimming_power_left = data.data.io_actions.dimming_get_import_power_left({"type": "cp", "id": cp.num}) if dimming_power_left: if sum(available_currents)*230 > dimming_power_left: phases = 3-available_currents.count(0) @@ -150,7 +150,7 @@ def _limit_by_dimming(self, def _limit_by_ripple_control_receiver(self, available_currents: List[float], cp: Chargepoint) -> Tuple[List[float], Optional[str]]: - value = data.data.io_actions.ripple_control_receiver([f"cp{cp.num}"]) + value = data.data.io_actions.ripple_control_receiver({"type": "cp", "id": cp.num}) if value != 1: phases = 3-available_currents.count(0) if phases > 1: diff --git a/packages/control/process.py b/packages/control/process.py index 3dbb0b6f15..cdfd32d3ce 100644 --- a/packages/control/process.py +++ b/packages/control/process.py @@ -75,7 +75,7 @@ def process_algorithm_results(self) -> None: for d in action.config.configuration.devices: if d["type"] == "io": data.data.system_data[f"io{d['id']}"].data.set.digital_output[d["digital_output"]] = ( - action.dimming_via_direct_control(d) is not None + action.dimming_via_direct_control() is not None ) if isinstance(action, Dimming): for d in action.config.configuration.devices: From 71e05d09b738bf4d74a48654b3ca403e6e9a1c4e Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Mon, 17 Mar 2025 09:13:05 +0100 Subject: [PATCH 72/75] build UI --- ...eLog-7f7c5fe2.js => ChargeLog-b1c57fa6.js} | 4 +- .../ChargePointInstallation-408ee2ed.js | 1 - .../ChargePointInstallation-7e51ce35.js | 1 + web/settings/assets/Chart-bf602480.js | 1 - web/settings/assets/Chart-cfe16b91.js | 1 + ...ig-c17b71a6.js => CloudConfig-9ce250e8.js} | 2 +- ...f14600c5.js => DataManagement-714df651.js} | 2 +- web/settings/assets/DebugConfig-8637145c.js | 2 + web/settings/assets/DebugConfig-ee93cd2f.js | 2 - ...7d4.js => GeneralChargeConfig-5075da0e.js} | 2 +- web/settings/assets/GeneralConfig-b0e93144.js | 1 - web/settings/assets/GeneralConfig-bc70f34a.js | 1 + .../assets/HardwareInstallation-3a644290.js | 1 - .../assets/HardwareInstallation-727b5962.js | 1 + .../assets/InstallAssistant-01649aee.js | 1 + .../assets/InstallAssistant-06ef733c.js | 1 - ...e.js => InstallAssistantStep0-4eb59c03.js} | 2 +- ...0.js => InstallAssistantStep1-7532f4ad.js} | 2 +- ....js => InstallAssistantStep10-b5154c47.js} | 2 +- ...7.js => InstallAssistantStep2-97ea4181.js} | 2 +- .../assets/InstallAssistantStep3-ac7124e1.js | 1 - .../assets/InstallAssistantStep3-d28da6cc.js | 1 + ...7.js => InstallAssistantStep4-b80669cd.js} | 2 +- ...4.js => InstallAssistantStep5-f3c200c9.js} | 2 +- ...e.js => InstallAssistantStep6-0eab35fd.js} | 2 +- ...6.js => InstallAssistantStep7-8b2d70ea.js} | 2 +- ...6.js => InstallAssistantStep8-d0a57c9f.js} | 2 +- ...5.js => InstallAssistantStep9-26ed6631.js} | 2 +- ... InstallAssistantStepTemplate-d8d588b6.js} | 2 +- ...692.js => InstantChargeConfig-bb769188.js} | 2 +- web/settings/assets/IoConfig-bc616ac4.js | 1 + ...-0ab5ea05.js => LegalSettings-0d86ce7f.js} | 2 +- ...fe.js => LoadManagementConfig-d6d290f9.js} | 2 +- ...fa4482.js => MqttBridgeConfig-80ff6fb3.js} | 2 +- .../assets/OpenwbIoPattern-278f5a90.js | 1 + .../assets/OpenwbIoPattern-a1d251cc.css | 1 + .../assets/OpenwbIoSinglePattern-83dbc24c.js | 1 + .../assets/OpenwbIoSinglePattern-e689840a.css | 1 + ...1f66.js => OpenwbSortableList-13147a4b.js} | 2 +- ...9835.js => OptionalComponents-8819b9a1.js} | 2 +- .../assets/PVChargeConfig-2c281c8b.js | 1 + .../assets/PVChargeConfig-c750b618.js | 1 - ...6.js => ScheduledChargeConfig-9a450d65.js} | 2 +- web/settings/assets/Status-255f6f61.css | 1 + web/settings/assets/Status-3484f650.js | 1 - web/settings/assets/Status-9ecf39ed.css | 1 - web/settings/assets/Status-ae50cd10.js | 1 + ...upport-aeee7674.js => Support-cb0a82f9.js} | 4 +- web/settings/assets/System-20e6cb5e.js | 1 - web/settings/assets/System-71b2e67e.js | 1 + web/settings/assets/TestingStore-96106450.js | 1 - web/settings/assets/TestingStore-e8ef24a7.js | 1 + ...210f64.js => TimeChargeConfig-1a5d2dde.js} | 2 +- ...-a49bda81.js => VehicleConfig-e49e5ddc.js} | 2 +- ...d-c3181aad.js => backup_cloud-36fc78b8.js} | 2 +- ...d-30cf5664.js => backup_cloud-42fd7d1e.js} | 2 +- ...d-b39f2e48.js => backup_cloud-b4673e75.js} | 2 +- ...d-30fea215.js => backup_cloud-cbe0285e.js} | 2 +- .../{bat-5d86d2d0.js => bat-00ee042f.js} | 2 +- .../{bat-ba97b9ec.js => bat-09618e87.js} | 2 +- .../{bat-845b945a.js => bat-161a0b3f.js} | 2 +- .../{bat-c05ee012.js => bat-177cd510.js} | 2 +- .../{bat-d47d1fd1.js => bat-386b6a71.js} | 2 +- .../{bat-6ae70208.js => bat-41f81d7c.js} | 2 +- .../{bat-5bcb481a.js => bat-46ed5214.js} | 2 +- .../{bat-a09a1026.js => bat-500fac88.js} | 2 +- .../{bat-434d0404.js => bat-515bb8b9.js} | 2 +- .../{bat-13f506c4.js => bat-53f2b2dc.js} | 2 +- .../{bat-d9cdd38d.js => bat-575ac984.js} | 2 +- .../{bat-508dda8e.js => bat-7e2bb1f0.js} | 2 +- .../{bat-1c531740.js => bat-8276d217.js} | 2 +- .../{bat-655f55cd.js => bat-8ecd087b.js} | 2 +- .../{bat-e36a210d.js => bat-8eeb809e.js} | 2 +- .../{bat-47aea623.js => bat-96814af1.js} | 2 +- .../{bat-b459c554.js => bat-b04f324c.js} | 2 +- .../{bat-5d80d1b1.js => bat-b0b74fda.js} | 2 +- .../{bat-8885d269.js => bat-b13c576b.js} | 2 +- .../{bat-09e11c39.js => bat-e525273f.js} | 2 +- ...b62ce9.js => bat_smart_energy-99926987.js} | 2 +- ...nt-776647d8.js => chargePoint-3eb75766.js} | 2 +- ...nt-542a9664.js => chargePoint-5487f7d8.js} | 2 +- ...nt-84c8e28d.js => chargePoint-57970a5b.js} | 2 +- ...nt-f16b10ce.js => chargePoint-61378497.js} | 2 +- ...nt-e230a14a.js => chargePoint-d73403a3.js} | 2 +- ...nt-ba464cf4.js => chargePoint-e13a3df6.js} | 2 +- ...nt-6c271d6b.js => chargePoint-f1ddcbb4.js} | 2 +- ...mands-b3575711.js => commands-ae4d3051.js} | 2 +- ...mands-38fd7ea5.js => commands-f10e74ce.js} | 2 +- ...1f7.js => consumption_counter-d132c159.js} | 2 +- web/settings/assets/counter-01848dd0.js | 1 + ...ounter-3492fd19.js => counter-021c90c7.js} | 2 +- ...ounter-d5ce341d.js => counter-09ee9f20.js} | 2 +- ...ounter-55c27daf.js => counter-0e51da5e.js} | 2 +- ...ounter-394e8014.js => counter-11d67ba8.js} | 2 +- ...ounter-7668209b.js => counter-1306a4c6.js} | 2 +- web/settings/assets/counter-1b273ac4.js | 1 - ...ounter-8d45ef9c.js => counter-28bcfaac.js} | 2 +- ...ounter-958da48c.js => counter-2d03ca61.js} | 2 +- web/settings/assets/counter-32cca269.js | 1 + ...ounter-00141858.js => counter-40260f20.js} | 2 +- ...ounter-75e3d92e.js => counter-48702b69.js} | 2 +- web/settings/assets/counter-5bbed3f1.js | 1 + ...ounter-95bdcdb7.js => counter-6c87b676.js} | 2 +- ...ounter-19e7f139.js => counter-70674361.js} | 2 +- ...ounter-ab315ba3.js => counter-7680421b.js} | 2 +- web/settings/assets/counter-76ed3a15.js | 1 + web/settings/assets/counter-7a033879.js | 1 - ...ounter-8520ea8e.js => counter-986853af.js} | 2 +- ...ounter-a31f5e7d.js => counter-9e94ca6b.js} | 2 +- ...ounter-ccad25ea.js => counter-a6252054.js} | 2 +- web/settings/assets/counter-aed75c81.js | 1 - web/settings/assets/counter-b03c0db9.js | 1 - ...ounter-018e7196.js => counter-b5c55995.js} | 2 +- ...ounter-fa232f15.js => counter-b7f323cc.js} | 2 +- ...ounter-7311f96b.js => counter-c0fbd699.js} | 2 +- ...ounter-48217739.js => counter-c4ea528f.js} | 2 +- ...ounter-bef0b821.js => counter-d04c382b.js} | 2 +- ...ounter-d1809224.js => counter-d193f9cd.js} | 2 +- ...ounter-8b96457f.js => counter-dd217c03.js} | 2 +- ...ounter-cfb2a7aa.js => counter-dddfcee5.js} | 2 +- ...ounter-76eff543.js => counter-de0030ac.js} | 2 +- ...ounter-5a3251ce.js => counter-f257201f.js} | 2 +- ...ounter-f0638cd4.js => counter-fea14072.js} | 2 +- ...ounter-40d2f2a6.js => counter-ffe6f59d.js} | 2 +- ..._sm-66058b82.js => counter_sm-dd8aa57c.js} | 2 +- ...{device-2f945435.js => device-0d49a26c.js} | 2 +- ...{device-8c6a7cd7.js => device-11f6d869.js} | 2 +- ...{device-509a4ac4.js => device-13f0437c.js} | 2 +- ...{device-45df0691.js => device-1497b5e4.js} | 2 +- ...{device-8de467ac.js => device-1950c8ef.js} | 2 +- ...{device-653a19f8.js => device-1ad34ad2.js} | 2 +- ...{device-99e093c0.js => device-1cc75082.js} | 2 +- ...{device-5ceb63e9.js => device-1e200cbf.js} | 2 +- ...{device-a9846396.js => device-2144978c.js} | 2 +- ...{device-5cc2cdfa.js => device-21c38268.js} | 2 +- ...{device-4f7aad98.js => device-240bbfb8.js} | 2 +- ...{device-264114d8.js => device-2c344b3e.js} | 2 +- ...{device-30d7c2e0.js => device-342a235f.js} | 2 +- ...{device-6659803e.js => device-35241d4e.js} | 2 +- ...{device-3d86bc85.js => device-429cae7c.js} | 2 +- ...{device-6656b07f.js => device-45781f1b.js} | 2 +- ...{device-31e5797e.js => device-45cfa872.js} | 2 +- ...{device-88e6829b.js => device-55249d75.js} | 2 +- ...{device-7f7452f2.js => device-55bb825c.js} | 2 +- ...{device-4c55f797.js => device-5a5c2204.js} | 2 +- ...{device-9749c9e1.js => device-5e15f44e.js} | 2 +- ...{device-67811713.js => device-5fd78306.js} | 2 +- ...{device-fcda5bd2.js => device-68b75b5b.js} | 2 +- ...{device-fd0ed77c.js => device-69185b02.js} | 2 +- ...{device-1830d04b.js => device-6dd461c4.js} | 2 +- ...{device-04b7418e.js => device-6dfe8cd8.js} | 2 +- ...{device-c61fae76.js => device-6dfeff1b.js} | 2 +- ...{device-1565347a.js => device-72bc8ff3.js} | 2 +- ...{device-123cfe52.js => device-82bb06d6.js} | 2 +- ...{device-aacbf2a5.js => device-86f7621f.js} | 2 +- ...{device-968183c7.js => device-8a67a9ec.js} | 2 +- ...{device-357d44c6.js => device-8b9db644.js} | 2 +- ...{device-e29a0ff7.js => device-8bba052a.js} | 2 +- ...{device-716c4065.js => device-8c80f180.js} | 2 +- ...{device-c8cf6368.js => device-8dcea009.js} | 2 +- ...{device-9befb1d4.js => device-92ff8214.js} | 2 +- ...{device-3f9eff90.js => device-93509dc9.js} | 2 +- ...{device-e44ec84b.js => device-94d6b50f.js} | 2 +- ...{device-eb9518f3.js => device-961ae78d.js} | 2 +- ...{device-4e960663.js => device-9684db49.js} | 2 +- ...{device-f1c2a7a5.js => device-9a79e89c.js} | 2 +- ...{device-3e5adae7.js => device-9eedaff7.js} | 2 +- ...{device-4f5bf65a.js => device-aa0e176c.js} | 2 +- ...{device-249da548.js => device-b9b6be03.js} | 2 +- ...{device-ae68eae2.js => device-cc6d1d33.js} | 2 +- ...{device-b21c21f9.js => device-d1bfd3f3.js} | 2 +- ...{device-3435a852.js => device-d32f448c.js} | 2 +- ...{device-23e00b31.js => device-d74725ec.js} | 2 +- ...{device-dd9fc66e.js => device-d85f27a1.js} | 2 +- ...{device-a319d4b6.js => device-dc895585.js} | 2 +- ...{device-54f1a203.js => device-e3878572.js} | 2 +- ...{device-906beffa.js => device-e51f6a05.js} | 2 +- ...{device-dbe167d8.js => device-e6a31e33.js} | 2 +- ...{device-52c218d2.js => device-e6d1ff67.js} | 2 +- ...{device-8c5dabb3.js => device-e7442473.js} | 2 +- ...{device-354918a0.js => device-e80c7a1a.js} | 2 +- ...{device-99900f00.js => device-e89043ef.js} | 2 +- ...{device-7075a0a8.js => device-eaa956ad.js} | 2 +- ...{device-d1c48c2c.js => device-ebfe2885.js} | 2 +- ...{device-1b11a3ea.js => device-ee4fe242.js} | 2 +- ...{device-f0eb9f12.js => device-f71805ce.js} | 2 +- ...{device-a0c4f59d.js => device-f7b12563.js} | 2 +- ...{device-f3f81832.js => device-f82ddafe.js} | 2 +- ...{device-3be14789.js => device-fec30c56.js} | 2 +- ...e-1e1ee4eb.js => displayTheme-575345bd.js} | 2 +- ...e-64a8b4a0.js => displayTheme-95f1ddf2.js} | 2 +- ...f492.js => electricity_tariff-388476a3.js} | 2 +- ...c538.js => electricity_tariff-5562646b.js} | 2 +- ...5d7d.js => electricity_tariff-5e7da4e9.js} | 2 +- ...c1ec.js => electricity_tariff-6bcc7f9b.js} | 2 +- ...3a14.js => electricity_tariff-91c588df.js} | 2 +- ...f6472.js => external_inverter-e76b5192.js} | 2 +- web/settings/assets/index-b236cee5.js | 1 + web/settings/assets/index-cc8f65ba.js | 1 - ...erter-82378537.js => inverter-1170f457.js} | 2 +- ...erter-4a2cdfd9.js => inverter-1632a4b1.js} | 2 +- ...erter-1e549543.js => inverter-1a290548.js} | 2 +- ...erter-68f31134.js => inverter-29c8bc0a.js} | 2 +- ...erter-617b5e4a.js => inverter-2e18bb9f.js} | 2 +- ...erter-896676a9.js => inverter-387e64b9.js} | 2 +- ...erter-c0d3b643.js => inverter-407f4ad4.js} | 2 +- ...erter-62de90f4.js => inverter-4cc98b34.js} | 2 +- ...erter-c1990994.js => inverter-5009ea23.js} | 2 +- web/settings/assets/inverter-50a72e83.js | 1 + web/settings/assets/inverter-5571eba7.js | 1 - ...erter-39ce3cb1.js => inverter-62f3baf9.js} | 2 +- ...erter-0931beee.js => inverter-66844342.js} | 2 +- ...erter-d75d32f1.js => inverter-6cea7a86.js} | 2 +- ...erter-f287a1d4.js => inverter-6dedf2c0.js} | 2 +- ...erter-cad24111.js => inverter-8ea576fa.js} | 2 +- ...erter-f9eaf59e.js => inverter-991c91e3.js} | 2 +- web/settings/assets/inverter-9c2adc35.js | 1 + ...erter-30cf9ccf.js => inverter-a66b9919.js} | 2 +- ...erter-db7c45b0.js => inverter-a8875bde.js} | 2 +- ...erter-997c828c.js => inverter-b76a9fda.js} | 2 +- ...erter-456adc79.js => inverter-b8e6f7ca.js} | 2 +- ...erter-0dee4ab1.js => inverter-c852411a.js} | 2 +- ...erter-6157a590.js => inverter-cbcef859.js} | 2 +- ...erter-e8d6d647.js => inverter-ce8f0bd6.js} | 2 +- ...erter-498c1656.js => inverter-dddc65f7.js} | 2 +- ...erter-2d9123ee.js => inverter-e972f9b7.js} | 2 +- ...erter-f413f2e1.js => inverter-e9bb7891.js} | 2 +- web/settings/assets/inverter-f447aa74.js | 1 - ...erter-a427739c.js => inverter-f5f1a5c8.js} | 2 +- ...erter-25109ec8.js => inverter-fb891ee4.js} | 2 +- ...erter-1eaedb65.js => inverter-ff72f261.js} | 2 +- ...5789.js => inverter_secondary-987240b8.js} | 2 +- web/settings/assets/io_action-15f350b8.js | 1 + web/settings/assets/io_action-465b927d.js | 1 + web/settings/assets/io_action-def63b3b.js | 1 + web/settings/assets/io_action-f16988cb.js | 1 + web/settings/assets/io_device-6aded7c0.js | 1 + web/settings/assets/io_device-a553d2c1.js | 1 + ...ing-f3474b05.js => monitoring-df87d8aa.js} | 2 +- .../ripple_control_receiver-14c898b9.js | 1 - .../ripple_control_receiver-cd0099ce.js | 1 - ...ehicle-2da6d3ec.js => vehicle-048a17cd.js} | 2 +- ...ehicle-0f1f6912.js => vehicle-0cab1a3e.js} | 2 +- ...ehicle-9a78a8ba.js => vehicle-14a72276.js} | 2 +- web/settings/assets/vehicle-18edee3a.js | 1 + web/settings/assets/vehicle-1fd068b4.js | 1 - ...ehicle-da54a31e.js => vehicle-2530ac78.js} | 2 +- ...ehicle-47f7fadf.js => vehicle-3f811862.js} | 2 +- ...ehicle-47a5b0e6.js => vehicle-5227ffda.js} | 2 +- ...ehicle-9fdd28f6.js => vehicle-6006f37f.js} | 2 +- ...ehicle-1c25409c.js => vehicle-711a16c0.js} | 2 +- ...ehicle-74dc0824.js => vehicle-7ee8a745.js} | 2 +- ...ehicle-5cb1a571.js => vehicle-865f01e8.js} | 2 +- ...ehicle-0951b87d.js => vehicle-9213f7f9.js} | 2 +- ...ehicle-f595aaa1.js => vehicle-94956e80.js} | 2 +- ...ehicle-b464d124.js => vehicle-b63b1879.js} | 2 +- ...ehicle-5d229e55.js => vehicle-c305e7fc.js} | 2 +- ...ehicle-56b45282.js => vehicle-d18e5ce2.js} | 2 +- ...ehicle-28d453ca.js => vehicle-d5f5aff5.js} | 2 +- ...ehicle-837ef917.js => vehicle-dfe6b66d.js} | 2 +- ...ehicle-561e20d5.js => vehicle-e12b30b1.js} | 2 +- web/settings/assets/vendor-3a7c342f.css | 1 - web/settings/assets/vendor-aab9f734.css | 1 + ...{vendor-ea36120f.js => vendor-ad7c30fd.js} | 72 +-- ...s-1f03ee31.js => vendor-axios-8313efad.js} | 2 +- ...8cab7c.js => vendor-bootstrap-a61a47ba.js} | 2 +- ...1398beb1.js => vendor-chartjs-6a6474b3.js} | 2 +- .../assets/vendor-fortawesome-433470db.js | 569 ------------------ .../assets/vendor-fortawesome-9d7cfdfb.js | 569 ++++++++++++++++++ ...-48e02303.js => vendor-jquery-f04b6372.js} | 2 +- ...accb3.js => vendor-sortablejs-20ba8ac2.js} | 2 +- web/settings/index.html | 16 +- 272 files changed, 861 insertions(+), 852 deletions(-) rename web/settings/assets/{ChargeLog-7f7c5fe2.js => ChargeLog-b1c57fa6.js} (60%) delete mode 100644 web/settings/assets/ChargePointInstallation-408ee2ed.js create mode 100644 web/settings/assets/ChargePointInstallation-7e51ce35.js delete mode 100644 web/settings/assets/Chart-bf602480.js create mode 100644 web/settings/assets/Chart-cfe16b91.js rename web/settings/assets/{CloudConfig-c17b71a6.js => CloudConfig-9ce250e8.js} (93%) rename web/settings/assets/{DataManagement-f14600c5.js => DataManagement-714df651.js} (88%) create mode 100644 web/settings/assets/DebugConfig-8637145c.js delete mode 100644 web/settings/assets/DebugConfig-ee93cd2f.js rename web/settings/assets/{GeneralChargeConfig-401ab7d4.js => GeneralChargeConfig-5075da0e.js} (88%) delete mode 100644 web/settings/assets/GeneralConfig-b0e93144.js create mode 100644 web/settings/assets/GeneralConfig-bc70f34a.js delete mode 100644 web/settings/assets/HardwareInstallation-3a644290.js create mode 100644 web/settings/assets/HardwareInstallation-727b5962.js create mode 100644 web/settings/assets/InstallAssistant-01649aee.js delete mode 100644 web/settings/assets/InstallAssistant-06ef733c.js rename web/settings/assets/{InstallAssistantStep0-e773f28e.js => InstallAssistantStep0-4eb59c03.js} (85%) rename web/settings/assets/{InstallAssistantStep1-e0d32a00.js => InstallAssistantStep1-7532f4ad.js} (75%) rename web/settings/assets/{InstallAssistantStep10-1b3e0f38.js => InstallAssistantStep10-b5154c47.js} (75%) rename web/settings/assets/{InstallAssistantStep2-50ad5d87.js => InstallAssistantStep2-97ea4181.js} (68%) delete mode 100644 web/settings/assets/InstallAssistantStep3-ac7124e1.js create mode 100644 web/settings/assets/InstallAssistantStep3-d28da6cc.js rename web/settings/assets/{InstallAssistantStep4-b1f7c847.js => InstallAssistantStep4-b80669cd.js} (83%) rename web/settings/assets/{InstallAssistantStep5-133577c4.js => InstallAssistantStep5-f3c200c9.js} (82%) rename web/settings/assets/{InstallAssistantStep6-fe6bd91e.js => InstallAssistantStep6-0eab35fd.js} (86%) rename web/settings/assets/{InstallAssistantStep7-51125106.js => InstallAssistantStep7-8b2d70ea.js} (83%) rename web/settings/assets/{InstallAssistantStep8-1047f636.js => InstallAssistantStep8-d0a57c9f.js} (77%) rename web/settings/assets/{InstallAssistantStep9-bd70c725.js => InstallAssistantStep9-26ed6631.js} (77%) rename web/settings/assets/{InstallAssistantStepTemplate-3bdc8973.js => InstallAssistantStepTemplate-d8d588b6.js} (78%) rename web/settings/assets/{InstantChargeConfig-8da1d692.js => InstantChargeConfig-bb769188.js} (78%) create mode 100644 web/settings/assets/IoConfig-bc616ac4.js rename web/settings/assets/{LegalSettings-0ab5ea05.js => LegalSettings-0d86ce7f.js} (83%) rename web/settings/assets/{LoadManagementConfig-c15dfafe.js => LoadManagementConfig-d6d290f9.js} (93%) rename web/settings/assets/{MqttBridgeConfig-74fa4482.js => MqttBridgeConfig-80ff6fb3.js} (90%) create mode 100644 web/settings/assets/OpenwbIoPattern-278f5a90.js create mode 100644 web/settings/assets/OpenwbIoPattern-a1d251cc.css create mode 100644 web/settings/assets/OpenwbIoSinglePattern-83dbc24c.js create mode 100644 web/settings/assets/OpenwbIoSinglePattern-e689840a.css rename web/settings/assets/{OpenwbSortableList-bde71f66.js => OpenwbSortableList-13147a4b.js} (65%) rename web/settings/assets/{OptionalComponents-f79f9835.js => OptionalComponents-8819b9a1.js} (92%) create mode 100644 web/settings/assets/PVChargeConfig-2c281c8b.js delete mode 100644 web/settings/assets/PVChargeConfig-c750b618.js rename web/settings/assets/{ScheduledChargeConfig-85a95906.js => ScheduledChargeConfig-9a450d65.js} (90%) create mode 100644 web/settings/assets/Status-255f6f61.css delete mode 100644 web/settings/assets/Status-3484f650.js delete mode 100644 web/settings/assets/Status-9ecf39ed.css create mode 100644 web/settings/assets/Status-ae50cd10.js rename web/settings/assets/{Support-aeee7674.js => Support-cb0a82f9.js} (89%) delete mode 100644 web/settings/assets/System-20e6cb5e.js create mode 100644 web/settings/assets/System-71b2e67e.js delete mode 100644 web/settings/assets/TestingStore-96106450.js create mode 100644 web/settings/assets/TestingStore-e8ef24a7.js rename web/settings/assets/{TimeChargeConfig-d3210f64.js => TimeChargeConfig-1a5d2dde.js} (84%) rename web/settings/assets/{VehicleConfig-a49bda81.js => VehicleConfig-e49e5ddc.js} (85%) rename web/settings/assets/{backup_cloud-c3181aad.js => backup_cloud-36fc78b8.js} (81%) rename web/settings/assets/{backup_cloud-30cf5664.js => backup_cloud-42fd7d1e.js} (70%) rename web/settings/assets/{backup_cloud-b39f2e48.js => backup_cloud-b4673e75.js} (64%) rename web/settings/assets/{backup_cloud-30fea215.js => backup_cloud-cbe0285e.js} (89%) rename web/settings/assets/{bat-5d86d2d0.js => bat-00ee042f.js} (84%) rename web/settings/assets/{bat-ba97b9ec.js => bat-09618e87.js} (64%) rename web/settings/assets/{bat-845b945a.js => bat-161a0b3f.js} (63%) rename web/settings/assets/{bat-c05ee012.js => bat-177cd510.js} (63%) rename web/settings/assets/{bat-d47d1fd1.js => bat-386b6a71.js} (64%) rename web/settings/assets/{bat-6ae70208.js => bat-41f81d7c.js} (64%) rename web/settings/assets/{bat-5bcb481a.js => bat-46ed5214.js} (83%) rename web/settings/assets/{bat-a09a1026.js => bat-500fac88.js} (61%) rename web/settings/assets/{bat-434d0404.js => bat-515bb8b9.js} (63%) rename web/settings/assets/{bat-13f506c4.js => bat-53f2b2dc.js} (63%) rename web/settings/assets/{bat-d9cdd38d.js => bat-575ac984.js} (80%) rename web/settings/assets/{bat-508dda8e.js => bat-7e2bb1f0.js} (67%) rename web/settings/assets/{bat-1c531740.js => bat-8276d217.js} (64%) rename web/settings/assets/{bat-655f55cd.js => bat-8ecd087b.js} (59%) rename web/settings/assets/{bat-e36a210d.js => bat-8eeb809e.js} (62%) rename web/settings/assets/{bat-47aea623.js => bat-96814af1.js} (58%) rename web/settings/assets/{bat-b459c554.js => bat-b04f324c.js} (68%) rename web/settings/assets/{bat-5d80d1b1.js => bat-b0b74fda.js} (63%) rename web/settings/assets/{bat-8885d269.js => bat-b13c576b.js} (72%) rename web/settings/assets/{bat-09e11c39.js => bat-e525273f.js} (60%) rename web/settings/assets/{bat_smart_energy-8db62ce9.js => bat_smart_energy-99926987.js} (59%) rename web/settings/assets/{chargePoint-776647d8.js => chargePoint-3eb75766.js} (94%) rename web/settings/assets/{chargePoint-542a9664.js => chargePoint-5487f7d8.js} (59%) rename web/settings/assets/{chargePoint-84c8e28d.js => chargePoint-57970a5b.js} (59%) rename web/settings/assets/{chargePoint-f16b10ce.js => chargePoint-61378497.js} (72%) rename web/settings/assets/{chargePoint-e230a14a.js => chargePoint-d73403a3.js} (72%) rename web/settings/assets/{chargePoint-ba464cf4.js => chargePoint-e13a3df6.js} (78%) rename web/settings/assets/{chargePoint-6c271d6b.js => chargePoint-f1ddcbb4.js} (72%) rename web/settings/assets/{commands-b3575711.js => commands-ae4d3051.js} (84%) rename web/settings/assets/{commands-38fd7ea5.js => commands-f10e74ce.js} (86%) rename web/settings/assets/{consumption_counter-704c01f7.js => consumption_counter-d132c159.js} (75%) create mode 100644 web/settings/assets/counter-01848dd0.js rename web/settings/assets/{counter-3492fd19.js => counter-021c90c7.js} (71%) rename web/settings/assets/{counter-d5ce341d.js => counter-09ee9f20.js} (53%) rename web/settings/assets/{counter-55c27daf.js => counter-0e51da5e.js} (65%) rename web/settings/assets/{counter-394e8014.js => counter-11d67ba8.js} (63%) rename web/settings/assets/{counter-7668209b.js => counter-1306a4c6.js} (63%) delete mode 100644 web/settings/assets/counter-1b273ac4.js rename web/settings/assets/{counter-8d45ef9c.js => counter-28bcfaac.js} (87%) rename web/settings/assets/{counter-958da48c.js => counter-2d03ca61.js} (78%) create mode 100644 web/settings/assets/counter-32cca269.js rename web/settings/assets/{counter-00141858.js => counter-40260f20.js} (60%) rename web/settings/assets/{counter-75e3d92e.js => counter-48702b69.js} (72%) create mode 100644 web/settings/assets/counter-5bbed3f1.js rename web/settings/assets/{counter-95bdcdb7.js => counter-6c87b676.js} (71%) rename web/settings/assets/{counter-19e7f139.js => counter-70674361.js} (64%) rename web/settings/assets/{counter-ab315ba3.js => counter-7680421b.js} (59%) create mode 100644 web/settings/assets/counter-76ed3a15.js delete mode 100644 web/settings/assets/counter-7a033879.js rename web/settings/assets/{counter-8520ea8e.js => counter-986853af.js} (62%) rename web/settings/assets/{counter-a31f5e7d.js => counter-9e94ca6b.js} (75%) rename web/settings/assets/{counter-ccad25ea.js => counter-a6252054.js} (65%) delete mode 100644 web/settings/assets/counter-aed75c81.js delete mode 100644 web/settings/assets/counter-b03c0db9.js rename web/settings/assets/{counter-018e7196.js => counter-b5c55995.js} (64%) rename web/settings/assets/{counter-fa232f15.js => counter-b7f323cc.js} (62%) rename web/settings/assets/{counter-7311f96b.js => counter-c0fbd699.js} (92%) rename web/settings/assets/{counter-48217739.js => counter-c4ea528f.js} (61%) rename web/settings/assets/{counter-bef0b821.js => counter-d04c382b.js} (64%) rename web/settings/assets/{counter-d1809224.js => counter-d193f9cd.js} (67%) rename web/settings/assets/{counter-8b96457f.js => counter-dd217c03.js} (63%) rename web/settings/assets/{counter-cfb2a7aa.js => counter-dddfcee5.js} (72%) rename web/settings/assets/{counter-76eff543.js => counter-de0030ac.js} (58%) rename web/settings/assets/{counter-5a3251ce.js => counter-f257201f.js} (57%) rename web/settings/assets/{counter-f0638cd4.js => counter-fea14072.js} (77%) rename web/settings/assets/{counter-40d2f2a6.js => counter-ffe6f59d.js} (90%) rename web/settings/assets/{counter_sm-66058b82.js => counter_sm-dd8aa57c.js} (81%) rename web/settings/assets/{device-2f945435.js => device-0d49a26c.js} (65%) rename web/settings/assets/{device-8c6a7cd7.js => device-11f6d869.js} (69%) rename web/settings/assets/{device-509a4ac4.js => device-13f0437c.js} (73%) rename web/settings/assets/{device-45df0691.js => device-1497b5e4.js} (71%) rename web/settings/assets/{device-8de467ac.js => device-1950c8ef.js} (78%) rename web/settings/assets/{device-653a19f8.js => device-1ad34ad2.js} (80%) rename web/settings/assets/{device-99e093c0.js => device-1cc75082.js} (80%) rename web/settings/assets/{device-5ceb63e9.js => device-1e200cbf.js} (63%) rename web/settings/assets/{device-a9846396.js => device-2144978c.js} (72%) rename web/settings/assets/{device-5cc2cdfa.js => device-21c38268.js} (66%) rename web/settings/assets/{device-4f7aad98.js => device-240bbfb8.js} (63%) rename web/settings/assets/{device-264114d8.js => device-2c344b3e.js} (50%) rename web/settings/assets/{device-30d7c2e0.js => device-342a235f.js} (64%) rename web/settings/assets/{device-6659803e.js => device-35241d4e.js} (68%) rename web/settings/assets/{device-3d86bc85.js => device-429cae7c.js} (70%) rename web/settings/assets/{device-6656b07f.js => device-45781f1b.js} (58%) rename web/settings/assets/{device-31e5797e.js => device-45cfa872.js} (65%) rename web/settings/assets/{device-88e6829b.js => device-55249d75.js} (73%) rename web/settings/assets/{device-7f7452f2.js => device-55bb825c.js} (61%) rename web/settings/assets/{device-4c55f797.js => device-5a5c2204.js} (70%) rename web/settings/assets/{device-9749c9e1.js => device-5e15f44e.js} (63%) rename web/settings/assets/{device-67811713.js => device-5fd78306.js} (74%) rename web/settings/assets/{device-fcda5bd2.js => device-68b75b5b.js} (65%) rename web/settings/assets/{device-fd0ed77c.js => device-69185b02.js} (78%) rename web/settings/assets/{device-1830d04b.js => device-6dd461c4.js} (58%) rename web/settings/assets/{device-04b7418e.js => device-6dfe8cd8.js} (71%) rename web/settings/assets/{device-c61fae76.js => device-6dfeff1b.js} (74%) rename web/settings/assets/{device-1565347a.js => device-72bc8ff3.js} (74%) rename web/settings/assets/{device-123cfe52.js => device-82bb06d6.js} (61%) rename web/settings/assets/{device-aacbf2a5.js => device-86f7621f.js} (73%) rename web/settings/assets/{device-968183c7.js => device-8a67a9ec.js} (61%) rename web/settings/assets/{device-357d44c6.js => device-8b9db644.js} (77%) rename web/settings/assets/{device-e29a0ff7.js => device-8bba052a.js} (76%) rename web/settings/assets/{device-716c4065.js => device-8c80f180.js} (88%) rename web/settings/assets/{device-c8cf6368.js => device-8dcea009.js} (68%) rename web/settings/assets/{device-9befb1d4.js => device-92ff8214.js} (67%) rename web/settings/assets/{device-3f9eff90.js => device-93509dc9.js} (65%) rename web/settings/assets/{device-e44ec84b.js => device-94d6b50f.js} (83%) rename web/settings/assets/{device-eb9518f3.js => device-961ae78d.js} (69%) rename web/settings/assets/{device-4e960663.js => device-9684db49.js} (69%) rename web/settings/assets/{device-f1c2a7a5.js => device-9a79e89c.js} (69%) rename web/settings/assets/{device-3e5adae7.js => device-9eedaff7.js} (62%) rename web/settings/assets/{device-4f5bf65a.js => device-aa0e176c.js} (60%) rename web/settings/assets/{device-249da548.js => device-b9b6be03.js} (50%) rename web/settings/assets/{device-ae68eae2.js => device-cc6d1d33.js} (86%) rename web/settings/assets/{device-b21c21f9.js => device-d1bfd3f3.js} (80%) rename web/settings/assets/{device-3435a852.js => device-d32f448c.js} (61%) rename web/settings/assets/{device-23e00b31.js => device-d74725ec.js} (79%) rename web/settings/assets/{device-dd9fc66e.js => device-d85f27a1.js} (50%) rename web/settings/assets/{device-a319d4b6.js => device-dc895585.js} (88%) rename web/settings/assets/{device-54f1a203.js => device-e3878572.js} (69%) rename web/settings/assets/{device-906beffa.js => device-e51f6a05.js} (64%) rename web/settings/assets/{device-dbe167d8.js => device-e6a31e33.js} (73%) rename web/settings/assets/{device-52c218d2.js => device-e6d1ff67.js} (66%) rename web/settings/assets/{device-8c5dabb3.js => device-e7442473.js} (61%) rename web/settings/assets/{device-354918a0.js => device-e80c7a1a.js} (69%) rename web/settings/assets/{device-99900f00.js => device-e89043ef.js} (80%) rename web/settings/assets/{device-7075a0a8.js => device-eaa956ad.js} (50%) rename web/settings/assets/{device-d1c48c2c.js => device-ebfe2885.js} (74%) rename web/settings/assets/{device-1b11a3ea.js => device-ee4fe242.js} (79%) rename web/settings/assets/{device-f0eb9f12.js => device-f71805ce.js} (62%) rename web/settings/assets/{device-a0c4f59d.js => device-f7b12563.js} (62%) rename web/settings/assets/{device-f3f81832.js => device-f82ddafe.js} (70%) rename web/settings/assets/{device-3be14789.js => device-fec30c56.js} (65%) rename web/settings/assets/{displayTheme-1e1ee4eb.js => displayTheme-575345bd.js} (77%) rename web/settings/assets/{displayTheme-64a8b4a0.js => displayTheme-95f1ddf2.js} (92%) rename web/settings/assets/{electricity_tariff-8330f492.js => electricity_tariff-388476a3.js} (57%) rename web/settings/assets/{electricity_tariff-4d29c538.js => electricity_tariff-5562646b.js} (86%) rename web/settings/assets/{electricity_tariff-0d285d7d.js => electricity_tariff-5e7da4e9.js} (70%) rename web/settings/assets/{electricity_tariff-0c46c1ec.js => electricity_tariff-6bcc7f9b.js} (66%) rename web/settings/assets/{electricity_tariff-a0cf3a14.js => electricity_tariff-91c588df.js} (74%) rename web/settings/assets/{external_inverter-19cf6472.js => external_inverter-e76b5192.js} (82%) create mode 100644 web/settings/assets/index-b236cee5.js delete mode 100644 web/settings/assets/index-cc8f65ba.js rename web/settings/assets/{inverter-82378537.js => inverter-1170f457.js} (67%) rename web/settings/assets/{inverter-4a2cdfd9.js => inverter-1632a4b1.js} (65%) rename web/settings/assets/{inverter-1e549543.js => inverter-1a290548.js} (63%) rename web/settings/assets/{inverter-68f31134.js => inverter-29c8bc0a.js} (64%) rename web/settings/assets/{inverter-617b5e4a.js => inverter-2e18bb9f.js} (75%) rename web/settings/assets/{inverter-896676a9.js => inverter-387e64b9.js} (67%) rename web/settings/assets/{inverter-c0d3b643.js => inverter-407f4ad4.js} (78%) rename web/settings/assets/{inverter-62de90f4.js => inverter-4cc98b34.js} (63%) rename web/settings/assets/{inverter-c1990994.js => inverter-5009ea23.js} (65%) create mode 100644 web/settings/assets/inverter-50a72e83.js delete mode 100644 web/settings/assets/inverter-5571eba7.js rename web/settings/assets/{inverter-39ce3cb1.js => inverter-62f3baf9.js} (63%) rename web/settings/assets/{inverter-0931beee.js => inverter-66844342.js} (73%) rename web/settings/assets/{inverter-d75d32f1.js => inverter-6cea7a86.js} (68%) rename web/settings/assets/{inverter-f287a1d4.js => inverter-6dedf2c0.js} (71%) rename web/settings/assets/{inverter-cad24111.js => inverter-8ea576fa.js} (72%) rename web/settings/assets/{inverter-f9eaf59e.js => inverter-991c91e3.js} (53%) create mode 100644 web/settings/assets/inverter-9c2adc35.js rename web/settings/assets/{inverter-30cf9ccf.js => inverter-a66b9919.js} (68%) rename web/settings/assets/{inverter-db7c45b0.js => inverter-a8875bde.js} (78%) rename web/settings/assets/{inverter-997c828c.js => inverter-b76a9fda.js} (64%) rename web/settings/assets/{inverter-456adc79.js => inverter-b8e6f7ca.js} (58%) rename web/settings/assets/{inverter-0dee4ab1.js => inverter-c852411a.js} (66%) rename web/settings/assets/{inverter-6157a590.js => inverter-cbcef859.js} (76%) rename web/settings/assets/{inverter-e8d6d647.js => inverter-ce8f0bd6.js} (66%) rename web/settings/assets/{inverter-498c1656.js => inverter-dddc65f7.js} (62%) rename web/settings/assets/{inverter-2d9123ee.js => inverter-e972f9b7.js} (65%) rename web/settings/assets/{inverter-f413f2e1.js => inverter-e9bb7891.js} (60%) delete mode 100644 web/settings/assets/inverter-f447aa74.js rename web/settings/assets/{inverter-a427739c.js => inverter-f5f1a5c8.js} (82%) rename web/settings/assets/{inverter-25109ec8.js => inverter-fb891ee4.js} (61%) rename web/settings/assets/{inverter-1eaedb65.js => inverter-ff72f261.js} (67%) rename web/settings/assets/{inverter_secondary-daf65789.js => inverter_secondary-987240b8.js} (78%) create mode 100644 web/settings/assets/io_action-15f350b8.js create mode 100644 web/settings/assets/io_action-465b927d.js create mode 100644 web/settings/assets/io_action-def63b3b.js create mode 100644 web/settings/assets/io_action-f16988cb.js create mode 100644 web/settings/assets/io_device-6aded7c0.js create mode 100644 web/settings/assets/io_device-a553d2c1.js rename web/settings/assets/{monitoring-f3474b05.js => monitoring-df87d8aa.js} (81%) delete mode 100644 web/settings/assets/ripple_control_receiver-14c898b9.js delete mode 100644 web/settings/assets/ripple_control_receiver-cd0099ce.js rename web/settings/assets/{vehicle-2da6d3ec.js => vehicle-048a17cd.js} (90%) rename web/settings/assets/{vehicle-0f1f6912.js => vehicle-0cab1a3e.js} (84%) rename web/settings/assets/{vehicle-9a78a8ba.js => vehicle-14a72276.js} (64%) create mode 100644 web/settings/assets/vehicle-18edee3a.js delete mode 100644 web/settings/assets/vehicle-1fd068b4.js rename web/settings/assets/{vehicle-da54a31e.js => vehicle-2530ac78.js} (69%) rename web/settings/assets/{vehicle-47f7fadf.js => vehicle-3f811862.js} (64%) rename web/settings/assets/{vehicle-47a5b0e6.js => vehicle-5227ffda.js} (75%) rename web/settings/assets/{vehicle-9fdd28f6.js => vehicle-6006f37f.js} (91%) rename web/settings/assets/{vehicle-1c25409c.js => vehicle-711a16c0.js} (82%) rename web/settings/assets/{vehicle-74dc0824.js => vehicle-7ee8a745.js} (84%) rename web/settings/assets/{vehicle-5cb1a571.js => vehicle-865f01e8.js} (66%) rename web/settings/assets/{vehicle-0951b87d.js => vehicle-9213f7f9.js} (68%) rename web/settings/assets/{vehicle-f595aaa1.js => vehicle-94956e80.js} (77%) rename web/settings/assets/{vehicle-b464d124.js => vehicle-b63b1879.js} (79%) rename web/settings/assets/{vehicle-5d229e55.js => vehicle-c305e7fc.js} (65%) rename web/settings/assets/{vehicle-56b45282.js => vehicle-d18e5ce2.js} (81%) rename web/settings/assets/{vehicle-28d453ca.js => vehicle-d5f5aff5.js} (75%) rename web/settings/assets/{vehicle-837ef917.js => vehicle-dfe6b66d.js} (87%) rename web/settings/assets/{vehicle-561e20d5.js => vehicle-e12b30b1.js} (74%) delete mode 100644 web/settings/assets/vendor-3a7c342f.css create mode 100644 web/settings/assets/vendor-aab9f734.css rename web/settings/assets/{vendor-ea36120f.js => vendor-ad7c30fd.js} (89%) rename web/settings/assets/{vendor-axios-1f03ee31.js => vendor-axios-8313efad.js} (99%) rename web/settings/assets/{vendor-bootstrap-038cab7c.js => vendor-bootstrap-a61a47ba.js} (99%) rename web/settings/assets/{vendor-chartjs-1398beb1.js => vendor-chartjs-6a6474b3.js} (99%) delete mode 100644 web/settings/assets/vendor-fortawesome-433470db.js create mode 100644 web/settings/assets/vendor-fortawesome-9d7cfdfb.js rename web/settings/assets/{vendor-jquery-48e02303.js => vendor-jquery-f04b6372.js} (99%) rename web/settings/assets/{vendor-sortablejs-c6aaccb3.js => vendor-sortablejs-20ba8ac2.js} (99%) diff --git a/web/settings/assets/ChargeLog-7f7c5fe2.js b/web/settings/assets/ChargeLog-b1c57fa6.js similarity index 60% rename from web/settings/assets/ChargeLog-7f7c5fe2.js rename to web/settings/assets/ChargeLog-b1c57fa6.js index cd5bb5a5e7..203d9b0adc 100644 --- a/web/settings/assets/ChargeLog-7f7c5fe2.js +++ b/web/settings/assets/ChargeLog-b1c57fa6.js @@ -1,3 +1,3 @@ -import{l as N,Z as k,_ as x,F as B}from"./vendor-fortawesome-433470db.js";import{_ as E,a0 as S,u as h,l as u,m as c,G as g,E as s,x as i,z as V,B as I,y as d,F as n,P as _,q as w}from"./vendor-ea36120f.js";import{C as W}from"./index-cc8f65ba.js";import"./vendor-sortablejs-c6aaccb3.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";N.add(k,x);const F={name:"OpenwbChargeLogView",components:{Vue3TableLite:S,FontAwesomeIcon:B},mixins:[W],emits:["sendCommand"],data(){return{dateTimeFormat:new Intl.DateTimeFormat("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/charge_log_data_config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],tag:[],chargemode:[],prio:void 0}}},downloadFile:null,table:{messages:{pagingInfo:"Einträge {0}-{1} von {2}",pageSizeChangeLabel:"Einträge:",gotoPageLabel:" Gehe zu:",noDataAvailable:"Keine Einträge gefunden."},pageOptions:[{value:5,text:"5"},{value:10,text:"10"},{value:25,text:"25"},{value:50,text:"50"},{value:100,text:"100"}],columns:[{label:"Beginn",field:"time_begin",sortable:!0},{label:"Ende",field:"time_end",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0},{label:"Kosten",field:"data_costs",sortable:!0},{label:"Energieaufteilung",field:"data_power_source",sortable:!1},{label:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0},{label:"Priorität",field:"vehicle_prio",sortable:!0},{label:"ID-Tag",field:"vehicle_rfid",sortable:!0},{label:"SoC Beginn",field:"vehicle_soc_at_start",sortable:!0},{label:"SoC Ende",field:"vehicle_soc_at_end",sortable:!0},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Seriennummer",field:"chargepoint_serial_number",sortable:!0},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0},{label:"Zähler Beginn",field:"chargepoint_imported_at_start",sortable:!0},{label:"Zähler Ende",field:"chargepoint_imported_at_end",sortable:!0}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1},{label:"Energie",field:"imported_since_mode_switch",sortable:!1},{label:"Reichweite",field:"range_charged",sortable:!1},{label:"Kosten",field:"costs",sortable:!1}]}}},computed:{mqttClientId(){return this.$root.mqttClientId},baseUrl(){const t=parseInt(location.port)||(location.protocol==="https:"?443:80);return`${location.protocol}//${location.hostname}:${t}/openWB/web/settings/downloadChargeLog.php`},downloadUrlMonth(){return!this.chargeLogRequestData.year||!this.chargeLogRequestData.month?(console.error("Fehlende Parameter für Monat oder Jahr"),null):`${this.baseUrl}?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},downloadUrlYear(){return this.chargeLogRequestData.year?`${this.baseUrl}?year=${this.chargeLogRequestData.year}`:(console.error("Fehlendes Jahr"),null)},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(t){let e=t.split("-");this.chargeLogRequestData.year=e[0],this.chargeLogRequestData.month=e[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogColumns(){return this.table.columns.map(t=>({...t,headerClasses:this.addClasses(t.field),columnClasses:this.addClasses(t.field)}))},chargeLogDataset:{get(){if(this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]==null)return[];try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(t=>{var e=Date.parse(t.time.begin),o=Date.parse(t.time.end);return{chargepoint_id:t.chargepoint.id,chargepoint_name:t.chargepoint.name,chargepoint_imported_at_start:t.chargepoint.imported_at_start,chargepoint_imported_at_end:t.chargepoint.imported_at_end,chargepoint_serial_number:t.chargepoint.serial_number,vehicle_id:t.vehicle.id,vehicle_name:t.vehicle.name,vehicle_chargemode:this.translateChargeMode(t.vehicle.chargemode),vehicle_rfid:t.vehicle.rfid,vehicle_prio:t.vehicle.prio,vehicle_soc_at_start:t.vehicle.soc_at_start,vehicle_soc_at_end:t.vehicle.soc_at_end,vehicle_range_at_start:t.vehicle.range_at_start,vehicle_range_at_end:t.vehicle.range_at_end,timestamp_begin:e/1e3,time_begin:isNaN(e)?null:this.dateTimeFormat.format(new Date(e)),timestamp_end:o/1e3,time_end:isNaN(o)?null:this.dateTimeFormat.format(new Date(o)),time_time_charged:t.time.time_charged,data_power_source:t.data.power_source?{pv:t.data.power_source.pv*100,grid:t.data.power_source.grid*100,bat:t.data.power_source.bat*100,cp:t.data.power_source.cp*100}:void 0,data_range_charged:t.data.range_charged,data_costs:t.data.costs,data_imported_since_plugged:t.data.imported_since_plugged,data_imported_since_mode_switch:t.data.imported_since_mode_switch}})}catch(t){return console.error(t),[]}}},chargeLogCsv:{get(){return[['"Beginn"','"Ende"','"Zeitstempel Beginn"','"Zeitstempel Ende"','"Dauer"','"Kosten"','"Energieanteil Netz"','"Energieanteil Ladepunkte"','"Energieanteil Speicher"','"Energieanteil PV"','"Fahrzeug"','"Fahrzeug-ID"','"Lademodus"','"Priorität"','"ID-Tag"','"SoC Beginn"','"SoC Ende"','"Reichweite Beginn"','"Reichweite Ende"','"Ladepunkt"','"Ladepunkt-ID"','"Zähler Seriennummer"','"Energie"','"Reichweite"','"Zählerstand Beginn"','"Zählerstand Ende"','"Energie seit Anstecken"'],...this.chargeLogDataset.map(e=>[e.time_begin==null?"":'"'+e.time_begin+'"',e.time_end==null?"":'"'+e.time_end+'"',e.timestamp_begin==null||isNaN(e.timestamp_begin)?"":e.timestamp_begin,e.timestamp_end==null||isNaN(e.timestamp_end)?"":e.timestamp_end,'"'+e.time_time_charged+'"',this.formatCosts(e.data_costs,!1),e.data_power_source==null?"":this.formatNumber(e.data_power_source.grid,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.cp,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.bat,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.pv,2),'"'+e.vehicle_name+'"',e.vehicle_id,'"'+e.vehicle_chargemode+'"','"'+this.formatBool(e.vehicle_prio)+'"',e.vehicle_rfid==null?"":'"'+e.vehicle_rfid+'"',e.vehicle_soc_at_start==null?"":this.formatNumber(e.vehicle_soc_at_start,0),e.vehicle_soc_at_end==null?"":this.formatNumber(e.vehicle_soc_at_end,0),e.vehicle_range_at_start==null?"":this.formatNumber(e.vehicle_range_at_start,0),e.vehicle_range_at_end==null?"":this.formatNumber(e.vehicle_range_at_end,0),'"'+e.chargepoint_name+'"',e.chargepoint_id,e.chargepoint_serial_number==null?"":'"'+e.chargepoint_serial_number+'"',this.formatNumber(e.data_imported_since_mode_switch/1e3,2),this.formatNumber(e.data_range_charged,0),this.formatNumber(e.chargepoint_imported_at_start/1e3,2),this.formatNumber(e.chargepoint_imported_at_end/1e3,2),this.formatNumber(e.data_imported_since_plugged/1e3,2)])].map(e=>e.join(";")).join(` +import{l as N,a1 as k,a2 as x,F as B}from"./vendor-fortawesome-9d7cfdfb.js";import{_ as E,a0 as S,u as h,l as u,m as c,G as g,E as s,A as i,x as V,z as I,B as d,F as n,P as _,q as w}from"./vendor-ad7c30fd.js";import{C as W}from"./index-b236cee5.js";import"./vendor-sortablejs-20ba8ac2.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";N.add(k,x);const F={name:"OpenwbChargeLogView",components:{Vue3TableLite:S,FontAwesomeIcon:B},mixins:[W],emits:["sendCommand"],data(){return{dateTimeFormat:new Intl.DateTimeFormat("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/charge_log_data_config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],tag:[],chargemode:[],prio:void 0}}},downloadFile:null,table:{messages:{pagingInfo:"Einträge {0}-{1} von {2}",pageSizeChangeLabel:"Einträge:",gotoPageLabel:" Gehe zu:",noDataAvailable:"Keine Einträge gefunden."},pageOptions:[{value:5,text:"5"},{value:10,text:"10"},{value:25,text:"25"},{value:50,text:"50"},{value:100,text:"100"}],columns:[{label:"Beginn",field:"time_begin",sortable:!0},{label:"Ende",field:"time_end",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0},{label:"Kosten",field:"data_costs",sortable:!0},{label:"Energieaufteilung",field:"data_power_source",sortable:!1},{label:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0},{label:"Priorität",field:"vehicle_prio",sortable:!0},{label:"ID-Tag",field:"vehicle_rfid",sortable:!0},{label:"SoC Beginn",field:"vehicle_soc_at_start",sortable:!0},{label:"SoC Ende",field:"vehicle_soc_at_end",sortable:!0},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Seriennummer",field:"chargepoint_serial_number",sortable:!0},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0},{label:"Zähler Beginn",field:"chargepoint_imported_at_start",sortable:!0},{label:"Zähler Ende",field:"chargepoint_imported_at_end",sortable:!0}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1},{label:"Energie",field:"imported_since_mode_switch",sortable:!1},{label:"Reichweite",field:"range_charged",sortable:!1},{label:"Kosten",field:"costs",sortable:!1}]}}},computed:{mqttClientId(){return this.$root.mqttClientId},baseUrl(){const t=parseInt(location.port)||(location.protocol==="https:"?443:80);return`${location.protocol}//${location.hostname}:${t}/openWB/web/settings/downloadChargeLog.php`},downloadUrlMonth(){return!this.chargeLogRequestData.year||!this.chargeLogRequestData.month?(console.error("Fehlende Parameter für Monat oder Jahr"),null):`${this.baseUrl}?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},downloadUrlYear(){return this.chargeLogRequestData.year?`${this.baseUrl}?year=${this.chargeLogRequestData.year}`:(console.error("Fehlendes Jahr"),null)},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(t){let e=t.split("-");this.chargeLogRequestData.year=e[0],this.chargeLogRequestData.month=e[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogColumns(){return this.table.columns.map(t=>({...t,headerClasses:this.addClasses(t.field),columnClasses:this.addClasses(t.field)}))},chargeLogDataset:{get(){if(this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]==null)return[];try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(t=>{var e=Date.parse(t.time.begin),o=Date.parse(t.time.end);return{chargepoint_id:t.chargepoint.id,chargepoint_name:t.chargepoint.name,chargepoint_imported_at_start:t.chargepoint.imported_at_start,chargepoint_imported_at_end:t.chargepoint.imported_at_end,chargepoint_serial_number:t.chargepoint.serial_number,vehicle_id:t.vehicle.id,vehicle_name:t.vehicle.name,vehicle_chargemode:this.translateChargeMode(t.vehicle.chargemode),vehicle_rfid:t.vehicle.rfid,vehicle_prio:t.vehicle.prio,vehicle_soc_at_start:t.vehicle.soc_at_start,vehicle_soc_at_end:t.vehicle.soc_at_end,vehicle_range_at_start:t.vehicle.range_at_start,vehicle_range_at_end:t.vehicle.range_at_end,timestamp_begin:e/1e3,time_begin:isNaN(e)?null:this.dateTimeFormat.format(new Date(e)),timestamp_end:o/1e3,time_end:isNaN(o)?null:this.dateTimeFormat.format(new Date(o)),time_time_charged:t.time.time_charged,data_power_source:t.data.power_source?{pv:t.data.power_source.pv*100,grid:t.data.power_source.grid*100,bat:t.data.power_source.bat*100,cp:t.data.power_source.cp*100}:void 0,data_range_charged:t.data.range_charged,data_costs:t.data.costs,data_imported_since_plugged:t.data.imported_since_plugged,data_imported_since_mode_switch:t.data.imported_since_mode_switch}})}catch(t){return console.error(t),[]}}},chargeLogCsv:{get(){return[['"Beginn"','"Ende"','"Zeitstempel Beginn"','"Zeitstempel Ende"','"Dauer"','"Kosten"','"Energieanteil Netz"','"Energieanteil Ladepunkte"','"Energieanteil Speicher"','"Energieanteil PV"','"Fahrzeug"','"Fahrzeug-ID"','"Lademodus"','"Priorität"','"ID-Tag"','"SoC Beginn"','"SoC Ende"','"Reichweite Beginn"','"Reichweite Ende"','"Ladepunkt"','"Ladepunkt-ID"','"Zähler Seriennummer"','"Energie"','"Reichweite"','"Zählerstand Beginn"','"Zählerstand Ende"','"Energie seit Anstecken"'],...this.chargeLogDataset.map(e=>[e.time_begin==null?"":'"'+e.time_begin+'"',e.time_end==null?"":'"'+e.time_end+'"',e.timestamp_begin==null||isNaN(e.timestamp_begin)?"":e.timestamp_begin,e.timestamp_end==null||isNaN(e.timestamp_end)?"":e.timestamp_end,'"'+e.time_time_charged+'"',this.formatCosts(e.data_costs,!1),e.data_power_source==null?"":this.formatNumber(e.data_power_source.grid,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.cp,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.bat,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.pv,2),'"'+e.vehicle_name+'"',e.vehicle_id,'"'+e.vehicle_chargemode+'"','"'+this.formatBool(e.vehicle_prio)+'"',e.vehicle_rfid==null?"":'"'+e.vehicle_rfid+'"',e.vehicle_soc_at_start==null?"":this.formatNumber(e.vehicle_soc_at_start,0),e.vehicle_soc_at_end==null?"":this.formatNumber(e.vehicle_soc_at_end,0),e.vehicle_range_at_start==null?"":this.formatNumber(e.vehicle_range_at_start,0),e.vehicle_range_at_end==null?"":this.formatNumber(e.vehicle_range_at_end,0),'"'+e.chargepoint_name+'"',e.chargepoint_id,e.chargepoint_serial_number==null?"":'"'+e.chargepoint_serial_number+'"',this.formatNumber(e.data_imported_since_mode_switch/1e3,2),this.formatNumber(e.data_range_charged,0),this.formatNumber(e.chargepoint_imported_at_start/1e3,2),this.formatNumber(e.chargepoint_imported_at_end/1e3,2),this.formatNumber(e.data_imported_since_plugged/1e3,2)])].map(e=>e.join(";")).join(` `)+` -`}},chargeLogRead:{get(){return this.chargeLogDataset!=null}},chargeLogHasEntries:{get(){return this.chargeLogDataset==null?!1:this.chargeLogDataset.length>0}},totalRecordCount(){return this.chargeLogDataset.length},chargeModeList(){let t=this.chargeModes.map(e=>({value:e,text:this.translateChargeMode(e)}));return t.unshift({value:void 0,text:"Alle"}),t},chargePointList(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[{value:void 0,text:"Alle"}];for(const[,o]of Object.entries(t))e.push({value:o.id,text:o.name});return e},vehicleList(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[{value:void 0,text:"Alle"}];for(const[o,f]of Object.entries(t)){let l=parseInt(o.match(/\/([0-9]+)\/name$/)[1]);e.push({value:l,text:f})}return e}},beforeMount(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data")},mounted(){const t=new Date;this.currentMonth=this.chargeLogDate=t.getFullYear()+"-"+String(t.getMonth()+1).padStart(2,"0"),this.requestChargeLog()},methods:{cleanRequestData(){"id"in this.chargeLogRequestData.filter.chargepoint&&(this.chargeLogRequestData.filter.chargepoint.id=this.chargeLogRequestData.filter.chargepoint.id.filter(t=>t!=null)),"chargemode"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.chargemode=this.chargeLogRequestData.filter.vehicle.chargemode.filter(t=>t!=null)),"id"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.id=this.chargeLogRequestData.filter.vehicle.id.filter(t=>t!=null))},requestChargeLog(){if(document.forms.chargeLogForm.reportValidity())this.cleanRequestData(),this.$emit("sendCommand",{command:"getChargeLog",data:this.chargeLogRequestData});else{console.warn("form invalid");return}},makeTextFile(t){var e=new Blob([t],{type:"text/csv"});return this.downloadFile!==null&&window.URL.revokeObjectURL(this.downloadFile),this.downloadFile=window.URL.createObjectURL(e),this.downloadFile},downloadChargeLog(){this.$refs.downloadChargeLogLink.setAttribute("download","Ladeprotokoll-"+this.chargeLogDate+".csv"),this.$refs.downloadChargeLogLink.href=this.makeTextFile(this.chargeLogCsv),this.$refs.downloadChargeLogLink.dispatchEvent(new MouseEvent("click"))},addClasses(t){return this.$store.state.mqtt["openWB/general/charge_log_data_config"]!==void 0&&Object.hasOwn(this.$store.state.mqtt["openWB/general/charge_log_data_config"],t)?this.$store.state.mqtt["openWB/general/charge_log_data_config"][t]?[]:["d-none"]:[]},getProgressTitle(t){return`Netz: ${this.formatNumber(t.grid,0,0)}%, Ladepunkte: ${this.formatNumber(t.cp,0,0)}%, Speicher: ${this.formatNumber(t.bat,0,0)}%, PV: ${this.formatNumber(t.pv,0,0)}%`},formatBool(t){return t?"Ja":"Nein"},formatW(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kW":o},formatWh(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kWh":o},formatRange(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"km":o},formatSoc(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"%":o},formatCosts(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,2));return e?o+"€":o},dashIfNotSet(t){return t==null||t==""||t==null?"-":t},getChargeModeClass(t){switch(t){case"Sofort":return"bg-danger";case"PV":return"bg-success";case"Zielladen":return"bg-primary";case"Zeitladen":return"bg-warning";case"Standby":return"bg-secondary";case"Stop":return"bg-dark";default:return console.warn("unknown charge mode:",t),"bg-light"}}}},y={class:"chargeLog"},T={key:0},U={key:1},M={name:"chargeLogForm"},P=["href"],z=["href"],O={key:1},Z={class:"td-end"},A={class:"td-end"},j=["title"],J=["aria-valuenow"],K=["aria-valuenow"],Y=["aria-valuenow"],G=["aria-valuenow"],H={key:1,class:"td-center"},Q={class:"td-end"},X={class:"no-wrap"},$={class:"no-wrap"},ee={class:"td-end"},te={class:"no-wrap"},ae={class:"no-wrap"},re={class:"td-end"},ie={class:"no-wrap"},se={class:"no-wrap"},oe={class:"td-end"},ne={class:"td-end"},le={key:0},de={class:"row justify-content-center"},ge={ref:"downloadChargeLogLink",class:"hide"},he={class:"td-end"},ue={class:"td-end"},ce={class:"td-end"},_e={class:"td-end"};function me(t,e,o,f,l,r){const m=h("openwb-base-alert"),D=h("openwb-base-text-input"),b=h("font-awesome-icon"),C=h("openwb-base-button-group-input"),p=h("openwb-base-select-input"),q=h("openwb-base-array-input"),v=h("openwb-base-card"),L=h("vue3-table-lite"),R=h("openwb-base-click-button");return u(),c("div",y,[t.$store.state.mqtt["openWB/general/extern"]===!0?(u(),c("div",T,[g(m,{subtype:"info"},{default:s(()=>e[13]||(e[13]=[d(' Das Ladeprotokoll ist nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. Du findest alle Ladevorgänge in der openWB, die sich im Steuerungsmodus "primary" befindet. ')])),_:1})])):(u(),c("div",U,[i("form",M,[g(v,{title:"Filter"},{default:s(()=>[g(D,{modelValue:r.chargeLogDate,"onUpdate:modelValue":[e[0]||(e[0]=a=>r.chargeLogDate=a),e[1]||(e[1]=a=>r.requestChargeLog())],title:"Zeitraum",subtype:"month",min:"2018-01","show-quick-buttons":!0,max:l.currentMonth},null,8,["modelValue","max"]),g(v,{title:"Erweiterte Optionen",collapsible:!0,collapsed:!0},{header:s(()=>[g(b,{"fixed-width":"",icon:["fas","filter"]}),e[14]||(e[14]=d(" Erweiterte Optionen "))]),default:s(()=>[g(C,{modelValue:l.chargeLogRequestData.filter.vehicle.prio,"onUpdate:modelValue":[e[2]||(e[2]=a=>l.chargeLogRequestData.filter.vehicle.prio=a),e[3]||(e[3]=a=>r.requestChargeLog())],title:"Priorität",buttons:[{buttonValue:void 0,text:"Alle"},{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"]),g(p,{modelValue:l.chargeLogRequestData.filter.vehicle.chargemode,"onUpdate:modelValue":[e[4]||(e[4]=a=>l.chargeLogRequestData.filter.vehicle.chargemode=a),e[5]||(e[5]=a=>r.requestChargeLog())],title:"Lademodus",multiple:"",options:r.chargeModeList},{help:s(()=>e[15]||(e[15]=[d(" Es können mehrere Elemente ausgewählt werden. ")])),_:1},8,["modelValue","options"]),g(p,{modelValue:l.chargeLogRequestData.filter.chargepoint.id,"onUpdate:modelValue":[e[6]||(e[6]=a=>l.chargeLogRequestData.filter.chargepoint.id=a),e[7]||(e[7]=a=>r.requestChargeLog())],title:"Ladepunkt",multiple:"",options:r.chargePointList},{help:s(()=>e[16]||(e[16]=[d(" Es können mehrere Elemente ausgewählt werden. ")])),_:1},8,["modelValue","options"]),g(p,{modelValue:l.chargeLogRequestData.filter.vehicle.id,"onUpdate:modelValue":[e[8]||(e[8]=a=>l.chargeLogRequestData.filter.vehicle.id=a),e[9]||(e[9]=a=>r.requestChargeLog())],title:"Fahrzeug",multiple:"",options:r.vehicleList},{help:s(()=>e[17]||(e[17]=[d(" Es können mehrere Elemente ausgewählt werden. ")])),_:1},8,["modelValue","options"]),g(q,{modelValue:l.chargeLogRequestData.filter.vehicle.tag,"onUpdate:modelValue":[e[10]||(e[10]=a=>l.chargeLogRequestData.filter.vehicle.tag=a),e[11]||(e[11]=a=>r.requestChargeLog())],title:"ID-Tags"},{help:s(()=>e[18]||(e[18]=[d(" Es können mehrere Tags als Filter verwendet werden. ")])),_:1},8,["modelValue"])]),_:1})]),_:1}),g(m,{subtype:"info"},{default:s(()=>[e[19]||(e[19]=d(" Das Ladeprotokoll kann monatsweise automatisiert über folgende URL abgerufen werden: ")),i("a",{href:r.downloadUrlMonth},n(r.downloadUrlMonth),9,P),e[20]||(e[20]=d()),e[21]||(e[21]=i("br",null,null,-1)),e[22]||(e[22]=d(" Das komplette Ladeprotokoll für das gesamte Jahr kann automatisiert über folgende URL abgerufen werden: ")),i("a",{href:r.downloadUrlYear},n(r.downloadUrlYear),9,z)]),_:1}),r.chargeLogRead?(u(),c("div",O,[g(L,{class:"charge-log-table","is-static-mode":!0,columns:r.chargeLogColumns,rows:r.chargeLogDataset,total:r.totalRecordCount,sortable:l.table.sortable,messages:l.table.messages,"page-options":l.table.pageOptions,limit:25,"is-slot-mode":!0},{time_begin:s(a=>[d(n(r.dashIfNotSet(a.value.time_begin)),1)]),time_end:s(a=>[d(n(r.dashIfNotSet(a.value.time_end)),1)]),time_time_charged:s(a=>[i("div",Z,n(a.value.time_time_charged),1)]),data_costs:s(a=>[i("div",A,n(r.formatCosts(a.value.data_costs)),1)]),data_power_source:s(a=>[a.value.data_power_source?(u(),c("div",{key:0,class:"progress td-center",title:r.getProgressTitle(a.value.data_power_source)},[i("div",{class:"progress-bar bg-danger",role:"progressbar",style:_({width:a.value.data_power_source.grid+"%"}),"aria-valuenow":a.value.data_power_source.grid,"aria-valuemin":"0","aria-valuemax":"100"},null,12,J),i("div",{class:"progress-bar bg-primary",role:"progressbar",style:_({width:a.value.data_power_source.cp+"%"}),"aria-valuenow":a.value.data_power_source.cp,"aria-valuemin":"0","aria-valuemax":"100"},null,12,K),i("div",{class:"progress-bar bg-warning",role:"progressbar",style:_({width:a.value.data_power_source.bat+"%"}),"aria-valuenow":a.value.data_power_source.bat,"aria-valuemin":"0","aria-valuemax":"100"},null,12,Y),i("div",{class:"progress-bar bg-success",role:"progressbar",style:_({width:a.value.data_power_source.pv+"%"}),"aria-valuenow":a.value.data_power_source.pv,"aria-valuemin":"0","aria-valuemax":"100"},null,12,G)],8,j)):(u(),c("div",H," - "))]),vehicle_chargemode:s(a=>[i("div",{class:w(["td-center tag",r.getChargeModeClass(a.value.vehicle_chargemode)])},n(a.value.vehicle_chargemode),3)]),vehicle_prio:s(a=>[i("div",{class:w(["td-center tag",a.value.vehicle_prio?"bg-success":"bg-danger"])},n(r.formatBool(a.value.vehicle_prio)),3)]),vehicle_rfid:s(a=>[d(n(r.dashIfNotSet(a.value.vehicle_rfid)),1)]),vehicle_soc_at_start:s(a=>[i("div",Q,[i("span",X,n(r.formatSoc(a.value.vehicle_soc_at_start)),1),i("span",$," ("+n(r.formatRange(a.value.vehicle_range_at_start))+") ",1)])]),vehicle_soc_at_end:s(a=>[i("div",ee,[i("span",te,n(r.formatSoc(a.value.vehicle_soc_at_end)),1),i("span",ae," ("+n(r.formatRange(a.value.vehicle_range_at_end))+") ",1)])]),chargepoint_name:s(a=>[d(n(r.dashIfNotSet(a.value.chargepoint_name)),1)]),chargepoint_serial_number:s(a=>[d(n(r.dashIfNotSet(a.value.chargepoint_serial_number)),1)]),data_imported_since_mode_switch:s(a=>[i("div",re,[i("span",ie,n(r.formatWh(a.value.data_imported_since_mode_switch)),1),i("span",se," ("+n(r.formatRange(a.value.data_range_charged))+") ",1)])]),chargepoint_imported_at_start:s(a=>[i("div",oe,n(r.formatWh(a.value.chargepoint_imported_at_start)),1)]),chargepoint_imported_at_end:s(a=>[i("div",ne,n(r.formatWh(a.value.chargepoint_imported_at_end)),1)]),_:1},8,["columns","rows","total","sortable","messages","page-options"]),r.totalRecordCount>0?(u(),c("div",le,[i("div",de,[g(R,{class:"col-4 btn-success",onButtonClicked:e[12]||(e[12]=a=>r.downloadChargeLog())},{default:s(()=>[e[24]||(e[24]=d(" Als CSV exportieren ")),g(b,{"fixed-width":"",icon:["fas","download"]})]),_:1}),i("a",ge,null,512)]),e[25]||(e[25]=i("div",{class:"row"},[i("div",{class:"col"},[i("h2",null,"Summe")])],-1)),g(L,{class:"charge-log-totals","is-static-mode":!0,"is-hide-paging":!0,columns:l.totals.columns,rows:r.chargeLogTotals,total:1,"is-slot-mode":!0},{time_charged:s(a=>[i("div",he,n(a.value.time_charged),1)]),imported_since_mode_switch:s(a=>[i("div",ue,n(r.formatWh(a.value.imported_since_mode_switch)),1)]),range_charged:s(a=>[i("div",ce,n(r.formatRange(a.value.range_charged)),1)]),costs:s(a=>[i("div",_e,n(r.formatCosts(a.value.costs)),1)]),_:1},8,["columns","rows"])])):I("",!0)])):(u(),V(m,{key:0,subtype:"info"},{default:s(()=>e[23]||(e[23]=[d(" Es wurden noch keine Daten abgerufen. ")])),_:1}))])]))])}const Ce=E(F,[["render",me],["__scopeId","data-v-8607e7e7"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargeLog.vue"]]);export{Ce as default}; +`}},chargeLogRead:{get(){return this.chargeLogDataset!=null}},chargeLogHasEntries:{get(){return this.chargeLogDataset==null?!1:this.chargeLogDataset.length>0}},totalRecordCount(){return this.chargeLogDataset.length},chargeModeList(){let t=this.chargeModes.map(e=>({value:e,text:this.translateChargeMode(e)}));return t.unshift({value:void 0,text:"Alle"}),t},chargePointList(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[{value:void 0,text:"Alle"}];for(const[,o]of Object.entries(t))e.push({value:o.id,text:o.name});return e},vehicleList(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[{value:void 0,text:"Alle"}];for(const[o,f]of Object.entries(t)){let l=parseInt(o.match(/\/([0-9]+)\/name$/)[1]);e.push({value:l,text:f})}return e}},beforeMount(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data")},mounted(){const t=new Date;this.currentMonth=this.chargeLogDate=t.getFullYear()+"-"+String(t.getMonth()+1).padStart(2,"0"),this.requestChargeLog()},methods:{cleanRequestData(){"id"in this.chargeLogRequestData.filter.chargepoint&&(this.chargeLogRequestData.filter.chargepoint.id=this.chargeLogRequestData.filter.chargepoint.id.filter(t=>t!=null)),"chargemode"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.chargemode=this.chargeLogRequestData.filter.vehicle.chargemode.filter(t=>t!=null)),"id"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.id=this.chargeLogRequestData.filter.vehicle.id.filter(t=>t!=null))},requestChargeLog(){if(document.forms.chargeLogForm.reportValidity())this.cleanRequestData(),this.$emit("sendCommand",{command:"getChargeLog",data:this.chargeLogRequestData});else{console.warn("form invalid");return}},makeTextFile(t){var e=new Blob([t],{type:"text/csv"});return this.downloadFile!==null&&window.URL.revokeObjectURL(this.downloadFile),this.downloadFile=window.URL.createObjectURL(e),this.downloadFile},downloadChargeLog(){this.$refs.downloadChargeLogLink.setAttribute("download","Ladeprotokoll-"+this.chargeLogDate+".csv"),this.$refs.downloadChargeLogLink.href=this.makeTextFile(this.chargeLogCsv),this.$refs.downloadChargeLogLink.dispatchEvent(new MouseEvent("click"))},addClasses(t){return this.$store.state.mqtt["openWB/general/charge_log_data_config"]!==void 0&&Object.hasOwn(this.$store.state.mqtt["openWB/general/charge_log_data_config"],t)?this.$store.state.mqtt["openWB/general/charge_log_data_config"][t]?[]:["d-none"]:[]},getProgressTitle(t){return`Netz: ${this.formatNumber(t.grid,0,0)}%, Ladepunkte: ${this.formatNumber(t.cp,0,0)}%, Speicher: ${this.formatNumber(t.bat,0,0)}%, PV: ${this.formatNumber(t.pv,0,0)}%`},formatBool(t){return t?"Ja":"Nein"},formatW(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kW":o},formatWh(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kWh":o},formatRange(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"km":o},formatSoc(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"%":o},formatCosts(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,2));return e?o+"€":o},dashIfNotSet(t){return t==null||t==""||t==null?"-":t},getChargeModeClass(t){switch(t){case"Sofort":return"bg-danger";case"PV":return"bg-success";case"Zielladen":return"bg-primary";case"Zeitladen":return"bg-warning";case"Standby":return"bg-secondary";case"Stop":return"bg-dark";default:return console.warn("unknown charge mode:",t),"bg-light"}}}},y={class:"chargeLog"},T={key:0},U={key:1},M={name:"chargeLogForm"},P=["href"],z=["href"],O={key:1},A={class:"td-end"},Z={class:"td-end"},j=["title"],J=["aria-valuenow"],K=["aria-valuenow"],Y=["aria-valuenow"],G=["aria-valuenow"],H={key:1,class:"td-center"},Q={class:"td-end"},X={class:"no-wrap"},$={class:"no-wrap"},ee={class:"td-end"},te={class:"no-wrap"},ae={class:"no-wrap"},re={class:"td-end"},ie={class:"no-wrap"},se={class:"no-wrap"},oe={class:"td-end"},ne={class:"td-end"},le={key:0},de={class:"row justify-content-center"},ge={ref:"downloadChargeLogLink",class:"hide"},he={class:"td-end"},ue={class:"td-end"},ce={class:"td-end"},_e={class:"td-end"};function me(t,e,o,f,l,r){const m=h("openwb-base-alert"),D=h("openwb-base-text-input"),b=h("font-awesome-icon"),C=h("openwb-base-button-group-input"),p=h("openwb-base-select-input"),q=h("openwb-base-array-input"),v=h("openwb-base-card"),L=h("vue3-table-lite"),R=h("openwb-base-click-button");return u(),c("div",y,[t.$store.state.mqtt["openWB/general/extern"]===!0?(u(),c("div",T,[g(m,{subtype:"info"},{default:s(()=>e[13]||(e[13]=[d(' Das Ladeprotokoll ist nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. Du findest alle Ladevorgänge in der openWB, die sich im Steuerungsmodus "primary" befindet. ')])),_:1})])):(u(),c("div",U,[i("form",M,[g(v,{title:"Filter"},{default:s(()=>[g(D,{modelValue:r.chargeLogDate,"onUpdate:modelValue":[e[0]||(e[0]=a=>r.chargeLogDate=a),e[1]||(e[1]=a=>r.requestChargeLog())],title:"Zeitraum",subtype:"month",min:"2018-01","show-quick-buttons":!0,max:l.currentMonth},null,8,["modelValue","max"]),g(v,{title:"Erweiterte Optionen",collapsible:!0,collapsed:!0},{header:s(()=>[g(b,{"fixed-width":"",icon:["fas","filter"]}),e[14]||(e[14]=d(" Erweiterte Optionen "))]),default:s(()=>[g(C,{modelValue:l.chargeLogRequestData.filter.vehicle.prio,"onUpdate:modelValue":[e[2]||(e[2]=a=>l.chargeLogRequestData.filter.vehicle.prio=a),e[3]||(e[3]=a=>r.requestChargeLog())],title:"Priorität",buttons:[{buttonValue:void 0,text:"Alle"},{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"]),g(p,{modelValue:l.chargeLogRequestData.filter.vehicle.chargemode,"onUpdate:modelValue":[e[4]||(e[4]=a=>l.chargeLogRequestData.filter.vehicle.chargemode=a),e[5]||(e[5]=a=>r.requestChargeLog())],title:"Lademodus",multiple:"",options:r.chargeModeList},{help:s(()=>e[15]||(e[15]=[d(" Es können mehrere Elemente ausgewählt werden. ")])),_:1},8,["modelValue","options"]),g(p,{modelValue:l.chargeLogRequestData.filter.chargepoint.id,"onUpdate:modelValue":[e[6]||(e[6]=a=>l.chargeLogRequestData.filter.chargepoint.id=a),e[7]||(e[7]=a=>r.requestChargeLog())],title:"Ladepunkt",multiple:"",options:r.chargePointList},{help:s(()=>e[16]||(e[16]=[d(" Es können mehrere Elemente ausgewählt werden. ")])),_:1},8,["modelValue","options"]),g(p,{modelValue:l.chargeLogRequestData.filter.vehicle.id,"onUpdate:modelValue":[e[8]||(e[8]=a=>l.chargeLogRequestData.filter.vehicle.id=a),e[9]||(e[9]=a=>r.requestChargeLog())],title:"Fahrzeug",multiple:"",options:r.vehicleList},{help:s(()=>e[17]||(e[17]=[d(" Es können mehrere Elemente ausgewählt werden. ")])),_:1},8,["modelValue","options"]),g(q,{modelValue:l.chargeLogRequestData.filter.vehicle.tag,"onUpdate:modelValue":[e[10]||(e[10]=a=>l.chargeLogRequestData.filter.vehicle.tag=a),e[11]||(e[11]=a=>r.requestChargeLog())],title:"ID-Tags"},{help:s(()=>e[18]||(e[18]=[d(" Es können mehrere Tags als Filter verwendet werden. ")])),_:1},8,["modelValue"])]),_:1})]),_:1}),g(m,{subtype:"info"},{default:s(()=>[e[19]||(e[19]=d(" Das Ladeprotokoll kann monatsweise automatisiert über folgende URL abgerufen werden: ")),i("a",{href:r.downloadUrlMonth},n(r.downloadUrlMonth),9,P),e[20]||(e[20]=d()),e[21]||(e[21]=i("br",null,null,-1)),e[22]||(e[22]=d(" Das komplette Ladeprotokoll für das gesamte Jahr kann automatisiert über folgende URL abgerufen werden: ")),i("a",{href:r.downloadUrlYear},n(r.downloadUrlYear),9,z)]),_:1}),r.chargeLogRead?(u(),c("div",O,[g(L,{class:"charge-log-table","is-static-mode":!0,columns:r.chargeLogColumns,rows:r.chargeLogDataset,total:r.totalRecordCount,sortable:l.table.sortable,messages:l.table.messages,"page-options":l.table.pageOptions,limit:25,"is-slot-mode":!0},{time_begin:s(a=>[d(n(r.dashIfNotSet(a.value.time_begin)),1)]),time_end:s(a=>[d(n(r.dashIfNotSet(a.value.time_end)),1)]),time_time_charged:s(a=>[i("div",A,n(a.value.time_time_charged),1)]),data_costs:s(a=>[i("div",Z,n(r.formatCosts(a.value.data_costs)),1)]),data_power_source:s(a=>[a.value.data_power_source?(u(),c("div",{key:0,class:"progress td-center",title:r.getProgressTitle(a.value.data_power_source)},[i("div",{class:"progress-bar bg-danger",role:"progressbar",style:_({width:a.value.data_power_source.grid+"%"}),"aria-valuenow":a.value.data_power_source.grid,"aria-valuemin":"0","aria-valuemax":"100"},null,12,J),i("div",{class:"progress-bar bg-primary",role:"progressbar",style:_({width:a.value.data_power_source.cp+"%"}),"aria-valuenow":a.value.data_power_source.cp,"aria-valuemin":"0","aria-valuemax":"100"},null,12,K),i("div",{class:"progress-bar bg-warning",role:"progressbar",style:_({width:a.value.data_power_source.bat+"%"}),"aria-valuenow":a.value.data_power_source.bat,"aria-valuemin":"0","aria-valuemax":"100"},null,12,Y),i("div",{class:"progress-bar bg-success",role:"progressbar",style:_({width:a.value.data_power_source.pv+"%"}),"aria-valuenow":a.value.data_power_source.pv,"aria-valuemin":"0","aria-valuemax":"100"},null,12,G)],8,j)):(u(),c("div",H," - "))]),vehicle_chargemode:s(a=>[i("div",{class:w(["td-center tag",r.getChargeModeClass(a.value.vehicle_chargemode)])},n(a.value.vehicle_chargemode),3)]),vehicle_prio:s(a=>[i("div",{class:w(["td-center tag",a.value.vehicle_prio?"bg-success":"bg-danger"])},n(r.formatBool(a.value.vehicle_prio)),3)]),vehicle_rfid:s(a=>[d(n(r.dashIfNotSet(a.value.vehicle_rfid)),1)]),vehicle_soc_at_start:s(a=>[i("div",Q,[i("span",X,n(r.formatSoc(a.value.vehicle_soc_at_start)),1),i("span",$," ("+n(r.formatRange(a.value.vehicle_range_at_start))+") ",1)])]),vehicle_soc_at_end:s(a=>[i("div",ee,[i("span",te,n(r.formatSoc(a.value.vehicle_soc_at_end)),1),i("span",ae," ("+n(r.formatRange(a.value.vehicle_range_at_end))+") ",1)])]),chargepoint_name:s(a=>[d(n(r.dashIfNotSet(a.value.chargepoint_name)),1)]),chargepoint_serial_number:s(a=>[d(n(r.dashIfNotSet(a.value.chargepoint_serial_number)),1)]),data_imported_since_mode_switch:s(a=>[i("div",re,[i("span",ie,n(r.formatWh(a.value.data_imported_since_mode_switch)),1),i("span",se," ("+n(r.formatRange(a.value.data_range_charged))+") ",1)])]),chargepoint_imported_at_start:s(a=>[i("div",oe,n(r.formatWh(a.value.chargepoint_imported_at_start)),1)]),chargepoint_imported_at_end:s(a=>[i("div",ne,n(r.formatWh(a.value.chargepoint_imported_at_end)),1)]),_:1},8,["columns","rows","total","sortable","messages","page-options"]),r.totalRecordCount>0?(u(),c("div",le,[i("div",de,[g(R,{class:"col-4 btn-success",onButtonClicked:e[12]||(e[12]=a=>r.downloadChargeLog())},{default:s(()=>[e[24]||(e[24]=d(" Als CSV exportieren ")),g(b,{"fixed-width":"",icon:["fas","download"]})]),_:1}),i("a",ge,null,512)]),e[25]||(e[25]=i("div",{class:"row"},[i("div",{class:"col"},[i("h2",null,"Summe")])],-1)),g(L,{class:"charge-log-totals","is-static-mode":!0,"is-hide-paging":!0,columns:l.totals.columns,rows:r.chargeLogTotals,total:1,"is-slot-mode":!0},{time_charged:s(a=>[i("div",he,n(a.value.time_charged),1)]),imported_since_mode_switch:s(a=>[i("div",ue,n(r.formatWh(a.value.imported_since_mode_switch)),1)]),range_charged:s(a=>[i("div",ce,n(r.formatRange(a.value.range_charged)),1)]),costs:s(a=>[i("div",_e,n(r.formatCosts(a.value.costs)),1)]),_:1},8,["columns","rows"])])):I("",!0)])):(u(),V(m,{key:0,subtype:"info"},{default:s(()=>e[23]||(e[23]=[d(" Es wurden noch keine Daten abgerufen. ")])),_:1}))])]))])}const Ce=E(F,[["render",me],["__scopeId","data-v-8607e7e7"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargeLog.vue"]]);export{Ce as default}; diff --git a/web/settings/assets/ChargePointInstallation-408ee2ed.js b/web/settings/assets/ChargePointInstallation-408ee2ed.js deleted file mode 100644 index 49552759b1..0000000000 --- a/web/settings/assets/ChargePointInstallation-408ee2ed.js +++ /dev/null @@ -1 +0,0 @@ -import{l as Z,d as J,a6 as H,A as G,af as Q,ag as X,L as Y,ah as K,F as ee,H as te}from"./vendor-fortawesome-433470db.js";import{_ as P,C as ne}from"./index-cc8f65ba.js";import{_ as D}from"./dynamic-import-helper-be004503.js";import{_ as S,u as h,l as i,m as p,z as f,E as o,y as r,F as w,G as a,x as d,a1 as E,a2 as q,N as A,M as x,B as g,D as F,q as ae,A as oe}from"./vendor-ea36120f.js";const ie={props:{chargePoint:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},le=S(ie,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/ChargePointConfigMixin.vue"]]),re={name:"ChargePointConfigFallback",mixins:[le]},se={class:"charge-point-config-fallback"},ue={key:1};function de(t,e,m,V,c,u){const k=h("openwb-base-alert"),_=h("openwb-base-textarea");return i(),p("div",se,[Object.keys(t.chargePoint.configuration).length==0?(i(),f(k,{key:0,subtype:"info"},{default:o(()=>[r(' Der Ladepunkt-Typ "'+w(t.chargePoint.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(i(),p("div",ue,[a(k,{subtype:"warning"},{default:o(()=>[r(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+w(t.chargePoint.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(_,{title:"Konfiguration",subtype:"json","model-value":t.chargePoint.configuration,"onUpdate:modelValue":e[0]||(e[0]=L=>t.updateConfiguration(L,"configuration"))},{help:o(()=>e[1]||(e[1]=[r(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),a(k,{subtype:"info"},{default:o(()=>[d("pre",null,w(JSON.stringify(t.chargePoint.configuration,void 0,2)),1)]),_:1})]))])}const pe=S(re,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),me={props:{chargePoint:{type:Object,required:!0}}},ge=S(me,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/ChargePointCommandsMixin.vue"]]),he={name:"ChargePointCommandsFallback",mixins:[ge]},ce={class:"charge-point-commands-fallback"};function be(t,e,m,V,c,u){const k=h("openwb-base-alert");return i(),p("div",ce,[a(k,{subtype:"secondary"},{default:o(()=>[r(' Der Ladepunkt-Typ "'+w(t.chargePoint.type)+'" bietet keine Befehle an. ',1)]),_:1})])}const fe=S(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),_e={name:"OpenwbChargePointProxy",props:{chargePoint:{required:!0,type:Object}},emits:["update:configuration"],methods:{getChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePoint.type}`),E({loader:()=>D(Object.assign({"./external_openwb/chargePoint.vue":()=>P(()=>import("./chargePoint-6c271d6b.js"),["assets/chargePoint-6c271d6b.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./internal_openwb/chargePoint.vue":()=>P(()=>import("./chargePoint-ba464cf4.js"),["assets/chargePoint-ba464cf4.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mqtt/chargePoint.vue":()=>P(()=>import("./chargePoint-776647d8.js"),["assets/chargePoint-776647d8.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_dc_adapter/chargePoint.vue":()=>P(()=>import("./chargePoint-84c8e28d.js"),["assets/chargePoint-84c8e28d.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_pro/chargePoint.vue":()=>P(()=>import("./chargePoint-542a9664.js"),["assets/chargePoint-542a9664.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_series2_satellit/chargePoint.vue":()=>P(()=>import("./chargePoint-f16b10ce.js"),["assets/chargePoint-f16b10ce.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smartwb/chargePoint.vue":()=>P(()=>import("./chargePoint-e230a14a.js"),["assets/chargePoint-e230a14a.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.chargePoint.type}/chargePoint.vue`),errorComponent:pe})},getChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePoint.type}`),E({loader:()=>D(Object.assign({"./internal_openwb/commands.vue":()=>P(()=>import("./commands-38fd7ea5.js"),["assets/commands-38fd7ea5.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_pro/commands.vue":()=>P(()=>import("./commands-b3575711.js"),["assets/commands-b3575711.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.chargePoint.type}/commands.vue`),errorComponent:fe})},updateConfiguration(t){this.$emit("update:configuration",t)}}};function ve(t,e,m,V,c,u){const k=h("openwb-base-heading");return i(),p(A,null,[a(k,null,{default:o(()=>[r(' Einstellungen für Ladepunkt Typ "'+w(m.chargePoint.type)+'" ',1)]),_:1}),(i(),f(q(u.getChargePointSettingsComponent()),{"charge-point":m.chargePoint,"onUpdate:configuration":e[0]||(e[0]=_=>u.updateConfiguration(_))},null,40,["charge-point"])),e[1]||(e[1]=d("hr",null,null,-1)),a(k,null,{default:o(()=>[r(' Befehle für Ladepunkt Typ "'+w(m.chargePoint.type)+'" ',1)]),_:1}),(i(),f(q(u.getChargePointCommandsComponent()),{"charge-point":m.chargePoint},null,8,["charge-point"]))],64)}const we=S(_e,[["render",ve],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);Z.add(J,H,G,Q,X,Y,K);const ke={name:"OpenwbChargePointInstallationView",components:{FontAwesomeIcon:ee,FontAwesomeLayers:te,OpenwbChargePointProxy:we},mixins:[ne],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/ocpp/config","openWB/optional/rfid/active","openWB/chargepoint/+/config","openWB/chargepoint/template/+","openWB/chargepoint/template/+/autolock/+","openWB/system/configurable/chargepoints","openWB/system/configurable/chargepoints_internal"],chargePointToAdd:void 0,showChargePointModal:!1,modalChargePointIndex:void 0,showChargePointTemplateModal:!1,modalChargePointTemplateIndex:void 0,showChargePointTemplateAutolockPlanModal:!1,modalChargePointTemplateAutolockPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},installedChargePoints:{get(){let t=this.getWildcardTopics("openWB/chargepoint/+/config"),e={};for(const[m,V]of Object.entries(t))(V.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(e[m]=V);return e}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let t=[];return Object.keys(this.chargePointTemplates).forEach(e=>{let m=parseInt(e.match(/([0-9]+)/g)[0]),V=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;t.push({value:m,text:V})}),t}}},methods:{addChargePoint(){this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(t,e){e.stopPropagation(),this.modalChargePointIndex=parseInt(t.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(t,e){this.showChargePointModal=!1,e=="confirm"&&this.$emit("sendCommand",{command:"removeChargepoint",data:{id:t}})},getChargePointList(){return this.$store.state.mqtt["openWB/general/extern"]===!1?this.$store.state.mqtt["openWB/system/configurable/chargepoints"]:this.$store.state.mqtt["openWB/system/configurable/chargepoints_internal"]},getChargePointName(t){return this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"].name:"Ladepunkt "+t},getChargePointTemplateName(t){return this.$store.state.mqtt["openWB/chargepoint/template/"+t]?this.$store.state.mqtt["openWB/chargepoint/template/"+t].name:"Profil "+t},addChargePointTemplate(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(t){return parseInt(t.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(t,e){e.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(t),this.showChargePointTemplateModal=!0},removeChargePointTemplate(t,e){this.showChargePointTemplateModal=!1,e=="confirm"&&this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:t}})},addChargePointTemplateAutolockPlan(t,e){e.stopPropagation();let m=this.getChargePointTemplateIndex(t);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:m}})},removeChargePointTemplateAutolockPlanModal(t,e,m){m.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(t),this.modalChargePointTemplateAutolockPlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(t,e,m){this.showChargePointTemplateAutolockPlanModal=!1,m=="confirm"&&this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:t,plan:e}})},getChargePointTemplateAutolockPlanName(t,e){return this.$store.state.mqtt["openWB/chargepoint/template/"+t+"/autolock/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+t+"/autolock/"+e].name:"Autolock Zeitplan "+t+"/"+e},getChargePointTemplateAutolockPlans(t){let e=this.getChargePointTemplateIndex(t);return this.getWildcardTopics("openWB/chargepoint/template/"+e+"/autolock/+")},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},Ce={class:"chargePointInstallation"},ye={name:"chargePointInstallationForm"},Pe={key:0},Ve={key:2},Le={key:0},Be={key:0},We={key:1},Ae={key:1},Se={key:0},Ue={key:2},xe={key:4},Ie=["onClick"],Te={key:0},ze={key:1},De={key:2},Ee={key:2};function qe(t,e,m,V,c,u){const k=h("openwb-base-modal-dialog"),_=h("font-awesome-icon"),L=h("openwb-base-avatar"),y=h("openwb-base-text-input"),I=h("openwb-base-select-input"),M=h("openwb-charge-point-proxy"),B=h("openwb-base-heading"),C=h("openwb-base-button-group-input"),U=h("openwb-base-card"),O=h("font-awesome-layers"),T=h("openwb-base-alert"),N=h("openwb-base-array-input"),z=h("openwb-base-range-input"),$=h("openwb-base-number-input"),R=h("openwb-base-submit-buttons");return i(),p(A,null,[a(k,{show:c.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=l=>u.removeChargePoint(c.modalChargePointIndex,l))},{default:o(()=>[r(' Wollen Sie den Ladepunkt "'+w(u.getChargePointName(c.modalChargePointIndex))+'" (ID: '+w(c.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),a(k,{show:c.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[1]||(e[1]=l=>u.removeChargePointTemplate(c.modalChargePointTemplateIndex,l))},{default:o(()=>[r(' Wollen Sie das Ladepunkt-Profil "'+w(u.getChargePointTemplateName(c.modalChargePointTemplateIndex))+'" (ID: '+w(c.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),a(k,{show:c.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[2]||(e[2]=l=>u.removeChargePointTemplateAutolockPlan(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex,l))},{default:o(()=>[r(' Wollen Sie den Autolock Zeitplan "'+w(u.getChargePointTemplateAutolockPlanName(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),d("div",Ce,[d("form",ye,[a(U,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!m.installAssistantActive},{header:o(()=>[a(_,{"fixed-width":"",icon:["fas","charging-station"]}),e[7]||(e[7]=r(" Ladepunkte "))]),default:o(()=>[(i(!0),p(A,null,x(u.installedChargePoints,(l,s)=>(i(),f(U,{key:s,title:l.name+" (ID: "+l.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(n=>[n.collapsed?g("",!0):(i(),f(L,{key:0,class:"bg-danger clickable",onClick:v=>u.removeChargePointModal(s,v)},{default:o(()=>[a(_,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[a(y,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":n=>t.updateState(s,n,"name")},null,8,["model-value","onUpdate:modelValue"]),a(y,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":t.$store.state.mqtt[s].type},null,8,["model-value"]),l.type!=="internal_openwb"||t.$store.state.mqtt["openWB/general/extern"]===!1?(i(),p("span",Pe,[a(I,{title:"Ladepunkt-Profil",options:u.chargePointTemplateList,"model-value":t.$store.state.mqtt[s].template,"onUpdate:modelValue":n=>t.updateState(s,n,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):g("",!0),t.$store.state.mqtt["openWB/optional/ocpp/config"].active===!0?(i(),f(y,{key:1,title:"OCPP-Chargebox ID","model-value":l.ocpp_chargebox_id,"onUpdate:modelValue":n=>t.updateState(s,n,"ocpp_chargebox_id")},{help:o(()=>[...e[8]||(e[8]=[r(" Bitte geben Sie hier die Chargebox ID ein, die im OCPP-Backend für diesen Ladepunkt verwendet wird. Sollen die Daten dieses Ladepunktes nicht an ein OCPP-Backend übertragen werden, lasse dieses Feld leer. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):g("",!0),e[14]||(e[14]=d("hr",null,null,-1)),a(M,{"charge-point":l,"onUpdate:configuration":n=>u.updateConfiguration(s,n)},null,8,["charge-point","onUpdate:configuration"]),(l.type!=="internal_openwb"||t.$store.state.mqtt["openWB/general/extern"]===!1)&&l.charging_type!=="DC"?(i(),p("div",Ve,[e[13]||(e[13]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[9]||(e[9]=[r(" Hardware-Optionen ")])]),_:1}),a(C,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.auto_phase_switch_hw,"onUpdate:modelValue":n=>t.updateState(s,n,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.control_pilot_interruption_hw,"onUpdate:modelValue":n=>t.updateState(s,n,"control_pilot_interruption_hw")},{help:o(()=>[...e[10]||(e[10]=[r(' Die Control-Pilot-Leitung ist im Ladekabel integriert und dient der Steuerung der Fahrzeugladung (An/Aus/Stromvorgaben). Bei einigen Fahrzeugen können durch die Regelung erzwungene, längere Ladestopps (z.B. beim PV-Laden) zu unerwünschten "Einschlaf"-Effekten des Fahrzeuges führen. Mit diesem Feature, welches hardwareseitig verbaut sein muss, kann ein Abstecken des Ladesteckers simuliert werden, um ein Aufwecken des Fahrzeuges zu ermöglichen. Die Funktion hängt immer auch vom Fahrzeugtyp ab. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(B,null,{default:o(()=>[...e[11]||(e[11]=[r(" Elektrischer Anschluss ")])]),_:1}),a(C,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":l.connected_phases,"onUpdate:modelValue":n=>t.updateState(s,n,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:1,text:"EVU L1"},{buttonValue:2,text:"EVU L2"},{buttonValue:3,text:"EVU L3"}],"model-value":l.phase_1,"onUpdate:modelValue":n=>t.updateState(s,n,"phase_1")},{help:o(()=>[...e[12]||(e[12]=[r(" Hier ist anzugeben, an welcher Phase des Hausanschlusses (EVU-Punkt) die Phase 1 dieses Ladepunktes angeschlossen ist. Diese Information wird für das Lastmanagement benötigt, um bei einer Schieflast gezielt einzelne Ladepunkte zu drosseln."),d("br",null,null,-1),r(' Bei mehreren Ladepunkten macht es Sinn, die Phasen der LP rotierend anzuschließen, damit mehrere "nicht-dreiphasig" ladende Fahrzeuge mit optimaler Leistung laden können, bevor das Lastmanagement eingreift.'),d("br",null,null,-1),r(" Es wird vorausgesetzt, dass das Drehfeld innerhalb der Installation gleich bleibt. Wenn z.B. L1 des Ladepunktes auf EVU-L2 liegt, muss L2 des Ladepunktes auf EVU-L3 aufgelegt sein (und L3 des Ladepunktes auf EVU-L1)."),d("br",null,null,-1),r(" Eine Möglichkeit, die zur Ladepunktphase L1 zugehörige EVU-Phase zu ermitteln, ist eine einphasige Ladung zu starten und die Phasenströme am EVU-Zähler zu beobachten. Mit einem zweiphasig ladenden Fahrzeug kann danach auch der Anschluss von L2 ermittelt und so das Drehfeld kontrolliert werden."),d("br",null,null,-1),r(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])])):g("",!0)]),_:2},1032,["title"]))),128)),Object.keys(u.installedChargePoints).length>0?(i(),p("hr",Le)):g("",!0),a(I,{title:"Verfügbare Ladepunkte","not-selected":"Bitte auswählen",options:u.getChargePointList(),"model-value":c.chargePointToAdd,"add-button":!0,"onUpdate:modelValue":e[3]||(e[3]=l=>c.chargePointToAdd=l),"onInput:add":u.addChargePoint},{help:o(()=>e[15]||(e[15]=[r(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),d("br",null,null,-1),d("ul",null,[d("li",null," Interne openWB - wenn diese openWB über einen verbauten Ladepunkt mit Regelcontroller verfügt (z.B. Standard(+), Custom, Duo, Buchse, NICHT Standalone); ansonsten immer anlegen, egal ob diese openWB steuert = primary oder ferngesteuert wird = secondary "),d("li",null," Secondary openWB - wenn diese openWB (primary) die Fernsteuerung von weiteren openWB (secondary) übernimmt "),d("li",null,"MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen"),d("li",null,"openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt"),d("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),d("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)])),_:1},8,["options","model-value","onInput:add"])]),_:1},8,["collapsed"]),e[37]||(e[37]=d("hr",{class:"border-secondary"},null,-1)),a(U,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[a(O,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[a(_,{"fixed-width":"",icon:["far","file"]}),a(_,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),e[16]||(e[16]=r(" Ladepunkt-Profile "))]),actions:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(i(),f(L,{key:0,class:"bg-success clickable",onClick:u.addChargePointTemplate},{default:o(()=>[a(_,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):g("",!0)]),default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),p("div",Be,[a(T,{subtype:"info"},{default:o(()=>e[17]||(e[17]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),p("div",We,[(i(!0),p(A,null,x(u.chargePointTemplates,(l,s)=>(i(),f(U,{key:s,title:l.name+" (ID: "+u.getChargePointTemplateIndex(s)+")",collapsible:!0,collapsed:!0},F({default:o(()=>[a(y,{title:"Bezeichnung",subtype:"text","model-value":l.name,disabled:s.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(s,n,"name")},F({_:2},[s.endsWith("/0")?{name:"help",fn:o(()=>[e[18]||(e[18]=r(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),u.dcChargingEnabled===!0?(i(),f(C,{key:0,title:"Typ des Ladeprofils",buttons:[{buttonValue:"AC",text:"AC"},{buttonValue:"DC",text:"DC"}],"model-value":l.charging_type,"onUpdate:modelValue":n=>t.updateState(s,n,"charging_type")},null,8,["model-value","onUpdate:modelValue"])):g("",!0),e[35]||(e[35]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[19]||(e[19]=[r(" Zugangskontrolle ")])]),_:1}),a(C,{title:"Sperre nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.disable_after_unplug,"onUpdate:modelValue":n=>t.updateState(s,n,"disable_after_unplug")},{help:o(()=>[...e[20]||(e[20]=[r(" Sperrt den Ladepunkt nach Abstecken eines Fahrzeuges. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!m.installAssistantActive?(i(),p("div",Ae,[l.disable_after_unplug?(i(),f(N,{key:0,title:"Zugeordnete ID-Tags","no-elements-message":"Keine ID-Tags zugeordnet.","model-value":l.valid_tags,"onUpdate:modelValue":n=>t.updateState(s,n,"valid_tags")},{help:o(()=>[...e[21]||(e[21]=[r(" Die hier eingetragenen ID-Tags dienen ausschließlich zum Entsperren des Ladepunktes. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):g("",!0)])):g("",!0),e[36]||(e[36]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[22]||(e[22]=[r(" Angaben zum konfigurierten Ladestrom der openWB ")])]),_:1}),a(T,{subtype:"info"},{default:o(()=>[e[23]||(e[23]=r(" Hier werden die maximalen Ladeströme entsprechend der in dem zugeordneten Ladepunkt genutzten Phasen eingestellt.")),e[24]||(e[24]=d("br",null,null,-1)),e[25]||(e[25]=r(" Generell gilt, dass diese Werte in Übereinstimmung mit der Ausführung des Ladepunktes und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. ")),l.charging_type==="AC"?(i(),p("span",Se," Bei einer openWB mit 22kW Maximalleistung sind hier jeweils 32A einzustellen. Ist die openWB beispielsweise auf 11kW begrenzt (KfW-Förderung oder die Zuleitung ist mit 16A abgesichert), dann sind hier jeweils 16A einzustellen. ")):g("",!0),e[26]||(e[26]=d("br",null,null,-1)),e[27]||(e[27]=r(" Komplexere Installationen mit mehreren Ladepunkten werden im ")),e[28]||(e[28]=d("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),e[29]||(e[29]=r(" beschrieben. "))]),_:2},1024),l.charging_type==="AC"||u.dcChargingEnabled!==!0?(i(),p("div",Ue,[a(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":l.max_current_single_phase,"onUpdate:modelValue":n=>t.updateState(s,n,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":l.max_current_multi_phases,"onUpdate:modelValue":n=>t.updateState(s,n,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"])])):(i(),f($,{key:3,title:"Maximalleistung",min:22,max:420,step:1,unit:"kW",precision:5,"model-value":t.ac_current2dc_power(l.dc_max_current),"onUpdate:modelValue":n=>t.updateState(s,t.dc_power2ac_current(n),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])),m.installAssistantActive?g("",!0):(i(),p("div",xe,[e[34]||(e[34]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[30]||(e[30]=[r(" Sperren nach Uhrzeit (Komplettsperrung - keine Freischaltung per ID-Tag möglich) ")])]),_:1}),a(C,{title:"Sperren nach Uhrzeit aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.active,"onUpdate:modelValue":n=>t.updateState(s,n,"autolock.active")},{help:o(()=>[...e[31]||(e[31]=[r(" WirdSperren nach Uhrzeit aktiviert, können Fahrzeugladungen mittels Zeitplan auf gewünschte Zeitbereiche eingeschränkt werden. Dies kann z.B. bei Zugänglichkeiten zu Ladepunkten in öffentlichen oder halb-öffentlichen Bereichen sinnvoll sein. In dieser Zeit ist keine Freischaltung per RFID, Fahrzeugerkennung oder Pin möglich. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(C,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.wait_for_charging_end,"onUpdate:modelValue":n=>t.updateState(s,n,"autolock.wait_for_charging_end")},{help:o(()=>[...e[32]||(e[32]=[r(' Wenn ein Zeitplan Sperren nach Uhrzeit aktiviert, werden alle Ladepunkte direkt gesperrt und laufende Ladevorgänge beendet. Wird hier "Ja" ausgewählt, dann werden laufende Ladevorgänge NICHT beendet und diese Ladepunkte erst nach abgeschlossener Ladung gesperrt. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(B,null,{actions:o(()=>[a(L,{class:"bg-success clickable",onClick:n=>u.addChargePointTemplateAutolockPlan(s,n)},{default:o(()=>[a(_,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[e[33]||(e[33]=r(" Zeitpläne für Sperren nach Uhrzeit "))]),_:2},1024)])),(i(!0),p(A,null,x(u.getChargePointTemplateAutolockPlans(s),(n,v)=>(i(),f(U,{key:v,title:n.name,collapsible:!0,collapsed:!0},{actions:o(b=>[b.collapsed==!0?(i(),p("span",{key:0,class:ae(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:oe(W=>t.updateState(v,!n.active,"active"),["stop"])},[a(_,{"fixed-width":"",icon:["fas","clock"]}),r(" "+w(n.time[0])+" - "+w(n.time[1])+" ",1),n.frequency.selected=="once"?(i(),p("span",Te,[a(_,{"fixed-width":"",icon:["fas","calendar-day"]}),r(" "+w(t.formatDate(n.frequency.once[0])==t.formatDate(n.frequency.once[1])?t.formatDate(n.frequency.once[0]):t.formatDate(n.frequency.once[0])+" - "+t.formatDate(n.frequency.once[1])),1)])):g("",!0),n.frequency.selected=="daily"?(i(),p("span",ze,[a(_,{"fixed-width":"",icon:["fas","calendar-week"]})])):g("",!0),n.frequency.selected=="weekly"?(i(),p("span",De,[a(_,{"fixed-width":"",icon:["fas","calendar-alt"]})])):g("",!0)],10,Ie)):g("",!0),b.collapsed==!1?(i(),f(L,{key:1,class:"bg-danger clickable",onClick:W=>u.removeChargePointTemplateAutolockPlanModal(s,v,W)},{default:o(()=>[a(_,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):g("",!0)]),default:o(()=>[a(y,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":b=>t.updateState(v,b,"name")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":b=>t.updateState(v,b,"active")},null,8,["model-value","onUpdate:modelValue"]),a(y,{title:"Sperren um",subtype:"time","model-value":n.time[0],"onUpdate:modelValue":b=>t.updateState(v,b,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(y,{title:"Freigeben um",subtype:"time","model-value":n.time[1],"onUpdate:modelValue":b=>t.updateState(v,b,"time.1")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(i(),f(y,{key:0,title:"Sperren ab ...",subtype:"date","model-value":n.frequency.once[0],"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):g("",!0),n.frequency.selected=="once"?(i(),f(y,{key:1,title:"... bis",subtype:"date",min:n.frequency.once[0],"model-value":n.frequency.once[1],"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):g("",!0),n.frequency.selected=="weekly"?(i(),p("div",Ee,[(i(!0),p(A,null,x(t.weekdays,(b,W)=>(i(),f(C,{key:W,title:b,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[W],"onUpdate:modelValue":j=>t.updateState(v,j,"frequency.weekly."+W)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):g("",!0)]),_:2},1032,["title"]))),128))]),_:2},[s.endsWith("/0")?void 0:{name:"actions",fn:o(n=>[n.collapsed?g("",!0):(i(),f(L,{key:0,class:"bg-danger clickable",onClick:v=>u.removeChargePointTemplateModal(s,v)},{default:o(()=>[a(_,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),a(R,{"form-name":"chargePointInstallationForm",onSave:e[4]||(e[4]=l=>t.$emit("save")),onReset:e[5]||(e[5]=l=>t.$emit("reset")),onDefaults:e[6]||(e[6]=l=>t.$emit("defaults"))})])])],64)}const Fe=S(ke,[["render",qe],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]),Re=Object.freeze(Object.defineProperty({__proto__:null,default:Fe},Symbol.toStringTag,{value:"Module"}));export{le as C,ge as a,Fe as b,Re as c}; diff --git a/web/settings/assets/ChargePointInstallation-7e51ce35.js b/web/settings/assets/ChargePointInstallation-7e51ce35.js new file mode 100644 index 0000000000..cf02943b95 --- /dev/null +++ b/web/settings/assets/ChargePointInstallation-7e51ce35.js @@ -0,0 +1 @@ +import{l as Z,d as J,a9 as H,E as G,aj as Q,ak as X,P as Y,al as K,F as ee,L as te}from"./vendor-fortawesome-9d7cfdfb.js";import{_ as P,C as ne}from"./index-b236cee5.js";import{_ as D}from"./dynamic-import-helper-be004503.js";import{_ as S,u as h,l,m as p,x as f,E as o,B as r,F as w,G as a,A as d,a1 as E,a2 as q,N as A,M as x,z as g,D as F,q as ae,y as oe}from"./vendor-ad7c30fd.js";const le={props:{chargePoint:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},ie=S(le,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/ChargePointConfigMixin.vue"]]),re={name:"ChargePointConfigFallback",mixins:[ie]},se={class:"charge-point-config-fallback"},ue={key:1};function de(t,e,m,V,c,u){const k=h("openwb-base-alert"),_=h("openwb-base-textarea");return l(),p("div",se,[Object.keys(t.chargePoint.configuration).length==0?(l(),f(k,{key:0,subtype:"info"},{default:o(()=>[r(' Der Ladepunkt-Typ "'+w(t.chargePoint.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),p("div",ue,[a(k,{subtype:"warning"},{default:o(()=>[r(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+w(t.chargePoint.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(_,{title:"Konfiguration",subtype:"json","model-value":t.chargePoint.configuration,"onUpdate:modelValue":e[0]||(e[0]=L=>t.updateConfiguration(L,"configuration"))},{help:o(()=>e[1]||(e[1]=[r(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),a(k,{subtype:"info"},{default:o(()=>[d("pre",null,w(JSON.stringify(t.chargePoint.configuration,void 0,2)),1)]),_:1})]))])}const pe=S(re,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),me={props:{chargePoint:{type:Object,required:!0}}},ge=S(me,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/ChargePointCommandsMixin.vue"]]),he={name:"ChargePointCommandsFallback",mixins:[ge]},ce={class:"charge-point-commands-fallback"};function be(t,e,m,V,c,u){const k=h("openwb-base-alert");return l(),p("div",ce,[a(k,{subtype:"secondary"},{default:o(()=>[r(' Der Ladepunkt-Typ "'+w(t.chargePoint.type)+'" bietet keine Befehle an. ',1)]),_:1})])}const fe=S(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),_e={name:"OpenwbChargePointProxy",props:{chargePoint:{required:!0,type:Object}},emits:["update:configuration"],methods:{getChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePoint.type}`),E({loader:()=>D(Object.assign({"./external_openwb/chargePoint.vue":()=>P(()=>import("./chargePoint-f1ddcbb4.js"),["assets/chargePoint-f1ddcbb4.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./internal_openwb/chargePoint.vue":()=>P(()=>import("./chargePoint-e13a3df6.js"),["assets/chargePoint-e13a3df6.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mqtt/chargePoint.vue":()=>P(()=>import("./chargePoint-3eb75766.js"),["assets/chargePoint-3eb75766.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_dc_adapter/chargePoint.vue":()=>P(()=>import("./chargePoint-57970a5b.js"),["assets/chargePoint-57970a5b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_pro/chargePoint.vue":()=>P(()=>import("./chargePoint-5487f7d8.js"),["assets/chargePoint-5487f7d8.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_series2_satellit/chargePoint.vue":()=>P(()=>import("./chargePoint-61378497.js"),["assets/chargePoint-61378497.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smartwb/chargePoint.vue":()=>P(()=>import("./chargePoint-d73403a3.js"),["assets/chargePoint-d73403a3.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.chargePoint.type}/chargePoint.vue`),errorComponent:pe})},getChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePoint.type}`),E({loader:()=>D(Object.assign({"./internal_openwb/commands.vue":()=>P(()=>import("./commands-f10e74ce.js"),["assets/commands-f10e74ce.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_pro/commands.vue":()=>P(()=>import("./commands-ae4d3051.js"),["assets/commands-ae4d3051.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.chargePoint.type}/commands.vue`),errorComponent:fe})},updateConfiguration(t){this.$emit("update:configuration",t)}}};function ve(t,e,m,V,c,u){const k=h("openwb-base-heading");return l(),p(A,null,[a(k,null,{default:o(()=>[r(' Einstellungen für Ladepunkt Typ "'+w(m.chargePoint.type)+'" ',1)]),_:1}),(l(),f(q(u.getChargePointSettingsComponent()),{"charge-point":m.chargePoint,"onUpdate:configuration":e[0]||(e[0]=_=>u.updateConfiguration(_))},null,40,["charge-point"])),e[1]||(e[1]=d("hr",null,null,-1)),a(k,null,{default:o(()=>[r(' Befehle für Ladepunkt Typ "'+w(m.chargePoint.type)+'" ',1)]),_:1}),(l(),f(q(u.getChargePointCommandsComponent()),{"charge-point":m.chargePoint},null,8,["charge-point"]))],64)}const we=S(_e,[["render",ve],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);Z.add(J,H,G,Q,X,Y,K);const ke={name:"OpenwbChargePointInstallationView",components:{FontAwesomeIcon:ee,FontAwesomeLayers:te,OpenwbChargePointProxy:we},mixins:[ne],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/ocpp/config","openWB/optional/rfid/active","openWB/chargepoint/+/config","openWB/chargepoint/template/+","openWB/chargepoint/template/+/autolock/+","openWB/system/configurable/chargepoints","openWB/system/configurable/chargepoints_internal"],chargePointToAdd:void 0,showChargePointModal:!1,modalChargePointIndex:void 0,showChargePointTemplateModal:!1,modalChargePointTemplateIndex:void 0,showChargePointTemplateAutolockPlanModal:!1,modalChargePointTemplateAutolockPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},installedChargePoints:{get(){let t=this.getWildcardTopics("openWB/chargepoint/+/config"),e={};for(const[m,V]of Object.entries(t))(V.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(e[m]=V);return e}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let t=[];return Object.keys(this.chargePointTemplates).forEach(e=>{let m=parseInt(e.match(/([0-9]+)/g)[0]),V=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;t.push({value:m,text:V})}),t}}},methods:{addChargePoint(){this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(t,e){e.stopPropagation(),this.modalChargePointIndex=parseInt(t.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(t,e){this.showChargePointModal=!1,e=="confirm"&&this.$emit("sendCommand",{command:"removeChargepoint",data:{id:t}})},getChargePointList(){return this.$store.state.mqtt["openWB/general/extern"]===!1?this.$store.state.mqtt["openWB/system/configurable/chargepoints"]:this.$store.state.mqtt["openWB/system/configurable/chargepoints_internal"]},getChargePointName(t){return this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"].name:"Ladepunkt "+t},getChargePointTemplateName(t){return this.$store.state.mqtt["openWB/chargepoint/template/"+t]?this.$store.state.mqtt["openWB/chargepoint/template/"+t].name:"Profil "+t},addChargePointTemplate(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(t){return parseInt(t.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(t,e){e.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(t),this.showChargePointTemplateModal=!0},removeChargePointTemplate(t,e){this.showChargePointTemplateModal=!1,e=="confirm"&&this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:t}})},addChargePointTemplateAutolockPlan(t,e){e.stopPropagation();let m=this.getChargePointTemplateIndex(t);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:m}})},removeChargePointTemplateAutolockPlanModal(t,e,m){m.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(t),this.modalChargePointTemplateAutolockPlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(t,e,m){this.showChargePointTemplateAutolockPlanModal=!1,m=="confirm"&&this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:t,plan:e}})},getChargePointTemplateAutolockPlanName(t,e){return this.$store.state.mqtt["openWB/chargepoint/template/"+t+"/autolock/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+t+"/autolock/"+e].name:"Autolock Zeitplan "+t+"/"+e},getChargePointTemplateAutolockPlans(t){let e=this.getChargePointTemplateIndex(t);return this.getWildcardTopics("openWB/chargepoint/template/"+e+"/autolock/+")},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},Ce={class:"chargePointInstallation"},ye={name:"chargePointInstallationForm"},Pe={key:0},Ve={key:2},Le={key:0},Be={key:0},We={key:1},Ae={key:1},Se={key:0},Ue={key:2},xe={key:4},Ie=["onClick"],Te={key:0},ze={key:1},De={key:2},Ee={key:2};function qe(t,e,m,V,c,u){const k=h("openwb-base-modal-dialog"),_=h("font-awesome-icon"),L=h("openwb-base-avatar"),y=h("openwb-base-text-input"),I=h("openwb-base-select-input"),M=h("openwb-charge-point-proxy"),B=h("openwb-base-heading"),C=h("openwb-base-button-group-input"),U=h("openwb-base-card"),O=h("font-awesome-layers"),T=h("openwb-base-alert"),N=h("openwb-base-array-input"),z=h("openwb-base-range-input"),$=h("openwb-base-number-input"),j=h("openwb-base-submit-buttons");return l(),p(A,null,[a(k,{show:c.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=i=>u.removeChargePoint(c.modalChargePointIndex,i))},{default:o(()=>[r(' Wollen Sie den Ladepunkt "'+w(u.getChargePointName(c.modalChargePointIndex))+'" (ID: '+w(c.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),a(k,{show:c.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[1]||(e[1]=i=>u.removeChargePointTemplate(c.modalChargePointTemplateIndex,i))},{default:o(()=>[r(' Wollen Sie das Ladepunkt-Profil "'+w(u.getChargePointTemplateName(c.modalChargePointTemplateIndex))+'" (ID: '+w(c.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),a(k,{show:c.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[2]||(e[2]=i=>u.removeChargePointTemplateAutolockPlan(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex,i))},{default:o(()=>[r(' Wollen Sie den Autolock Zeitplan "'+w(u.getChargePointTemplateAutolockPlanName(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),d("div",Ce,[d("form",ye,[a(U,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!m.installAssistantActive},{header:o(()=>[a(_,{"fixed-width":"",icon:["fas","charging-station"]}),e[7]||(e[7]=r(" Ladepunkte "))]),default:o(()=>[(l(!0),p(A,null,x(u.installedChargePoints,(i,s)=>(l(),f(U,{key:s,title:i.name+" (ID: "+i.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(n=>[n.collapsed?g("",!0):(l(),f(L,{key:0,class:"bg-danger clickable",onClick:v=>u.removeChargePointModal(s,v)},{default:o(()=>[a(_,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[a(y,{title:"Bezeichnung",subtype:"text","model-value":i.name,"onUpdate:modelValue":n=>t.updateState(s,n,"name")},null,8,["model-value","onUpdate:modelValue"]),a(y,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":t.$store.state.mqtt[s].type},null,8,["model-value"]),i.type!=="internal_openwb"||t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),p("span",Pe,[a(I,{title:"Ladepunkt-Profil",options:u.chargePointTemplateList,"model-value":t.$store.state.mqtt[s].template,"onUpdate:modelValue":n=>t.updateState(s,n,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):g("",!0),t.$store.state.mqtt["openWB/optional/ocpp/config"].active===!0?(l(),f(y,{key:1,title:"OCPP-Chargebox ID","model-value":i.ocpp_chargebox_id,"onUpdate:modelValue":n=>t.updateState(s,n,"ocpp_chargebox_id")},{help:o(()=>[...e[8]||(e[8]=[r(" Bitte geben Sie hier die Chargebox ID ein, die im OCPP-Backend für diesen Ladepunkt verwendet wird. Sollen die Daten dieses Ladepunktes nicht an ein OCPP-Backend übertragen werden, lasse dieses Feld leer. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):g("",!0),e[14]||(e[14]=d("hr",null,null,-1)),a(M,{"charge-point":i,"onUpdate:configuration":n=>u.updateConfiguration(s,n)},null,8,["charge-point","onUpdate:configuration"]),(i.type!=="internal_openwb"||t.$store.state.mqtt["openWB/general/extern"]===!1)&&i.charging_type!=="DC"?(l(),p("div",Ve,[e[13]||(e[13]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[9]||(e[9]=[r(" Hardware-Optionen ")])]),_:1}),a(C,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.auto_phase_switch_hw,"onUpdate:modelValue":n=>t.updateState(s,n,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.control_pilot_interruption_hw,"onUpdate:modelValue":n=>t.updateState(s,n,"control_pilot_interruption_hw")},{help:o(()=>[...e[10]||(e[10]=[r(' Die Control-Pilot-Leitung ist im Ladekabel integriert und dient der Steuerung der Fahrzeugladung (An/Aus/Stromvorgaben). Bei einigen Fahrzeugen können durch die Regelung erzwungene, längere Ladestopps (z.B. beim PV-Laden) zu unerwünschten "Einschlaf"-Effekten des Fahrzeuges führen. Mit diesem Feature, welches hardwareseitig verbaut sein muss, kann ein Abstecken des Ladesteckers simuliert werden, um ein Aufwecken des Fahrzeuges zu ermöglichen. Die Funktion hängt immer auch vom Fahrzeugtyp ab. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(B,null,{default:o(()=>[...e[11]||(e[11]=[r(" Elektrischer Anschluss ")])]),_:1}),a(C,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.connected_phases,"onUpdate:modelValue":n=>t.updateState(s,n,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:1,text:"EVU L1"},{buttonValue:2,text:"EVU L2"},{buttonValue:3,text:"EVU L3"}],"model-value":i.phase_1,"onUpdate:modelValue":n=>t.updateState(s,n,"phase_1")},{help:o(()=>[...e[12]||(e[12]=[r(" Hier ist anzugeben, an welcher Phase des Hausanschlusses (EVU-Punkt) die Phase 1 dieses Ladepunktes angeschlossen ist. Diese Information wird für das Lastmanagement benötigt, um bei einer Schieflast gezielt einzelne Ladepunkte zu drosseln."),d("br",null,null,-1),r(' Bei mehreren Ladepunkten macht es Sinn, die Phasen der LP rotierend anzuschließen, damit mehrere "nicht-dreiphasig" ladende Fahrzeuge mit optimaler Leistung laden können, bevor das Lastmanagement eingreift.'),d("br",null,null,-1),r(" Es wird vorausgesetzt, dass das Drehfeld innerhalb der Installation gleich bleibt. Wenn z.B. L1 des Ladepunktes auf EVU-L2 liegt, muss L2 des Ladepunktes auf EVU-L3 aufgelegt sein (und L3 des Ladepunktes auf EVU-L1)."),d("br",null,null,-1),r(" Eine Möglichkeit, die zur Ladepunktphase L1 zugehörige EVU-Phase zu ermitteln, ist eine einphasige Ladung zu starten und die Phasenströme am EVU-Zähler zu beobachten. Mit einem zweiphasig ladenden Fahrzeug kann danach auch der Anschluss von L2 ermittelt und so das Drehfeld kontrolliert werden."),d("br",null,null,-1),r(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])])):g("",!0)]),_:2},1032,["title"]))),128)),Object.keys(u.installedChargePoints).length>0?(l(),p("hr",Le)):g("",!0),a(I,{title:"Verfügbare Ladepunkte","not-selected":"Bitte auswählen",options:u.getChargePointList(),"model-value":c.chargePointToAdd,"add-button":!0,"onUpdate:modelValue":e[3]||(e[3]=i=>c.chargePointToAdd=i),"onInput:add":u.addChargePoint},{help:o(()=>e[15]||(e[15]=[r(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),d("br",null,null,-1),d("ul",null,[d("li",null," Interne openWB - wenn diese openWB über einen verbauten Ladepunkt mit Regelcontroller verfügt (z.B. Standard(+), Custom, Duo, Buchse, NICHT Standalone); ansonsten immer anlegen, egal ob diese openWB steuert = primary oder ferngesteuert wird = secondary "),d("li",null," Secondary openWB - wenn diese openWB (primary) die Fernsteuerung von weiteren openWB (secondary) übernimmt "),d("li",null,"MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen"),d("li",null,"openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt"),d("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),d("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)])),_:1},8,["options","model-value","onInput:add"])]),_:1},8,["collapsed"]),e[37]||(e[37]=d("hr",{class:"border-secondary"},null,-1)),a(U,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[a(O,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[a(_,{"fixed-width":"",icon:["far","file"]}),a(_,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),e[16]||(e[16]=r(" Ladepunkt-Profile "))]),actions:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),f(L,{key:0,class:"bg-success clickable",onClick:u.addChargePointTemplate},{default:o(()=>[a(_,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):g("",!0)]),default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),p("div",Be,[a(T,{subtype:"info"},{default:o(()=>e[17]||(e[17]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),p("div",We,[(l(!0),p(A,null,x(u.chargePointTemplates,(i,s)=>(l(),f(U,{key:s,title:i.name+" (ID: "+u.getChargePointTemplateIndex(s)+")",collapsible:!0,collapsed:!0},F({default:o(()=>[a(y,{title:"Bezeichnung",subtype:"text","model-value":i.name,disabled:s.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(s,n,"name")},F({_:2},[s.endsWith("/0")?{name:"help",fn:o(()=>[e[18]||(e[18]=r(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),u.dcChargingEnabled===!0?(l(),f(C,{key:0,title:"Typ des Ladeprofils",buttons:[{buttonValue:"AC",text:"AC"},{buttonValue:"DC",text:"DC"}],"model-value":i.charging_type,"onUpdate:modelValue":n=>t.updateState(s,n,"charging_type")},null,8,["model-value","onUpdate:modelValue"])):g("",!0),e[35]||(e[35]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[19]||(e[19]=[r(" Zugangskontrolle ")])]),_:1}),a(C,{title:"Sperre nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.disable_after_unplug,"onUpdate:modelValue":n=>t.updateState(s,n,"disable_after_unplug")},{help:o(()=>[...e[20]||(e[20]=[r(" Sperrt den Ladepunkt nach Abstecken eines Fahrzeuges. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!m.installAssistantActive?(l(),p("div",Ae,[i.disable_after_unplug?(l(),f(N,{key:0,title:"Zugeordnete ID-Tags","no-elements-message":"Keine ID-Tags zugeordnet.","model-value":i.valid_tags,"onUpdate:modelValue":n=>t.updateState(s,n,"valid_tags")},{help:o(()=>[...e[21]||(e[21]=[r(" Die hier eingetragenen ID-Tags dienen ausschließlich zum Entsperren des Ladepunktes. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):g("",!0)])):g("",!0),e[36]||(e[36]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[22]||(e[22]=[r(" Angaben zum konfigurierten Ladestrom der openWB ")])]),_:1}),a(T,{subtype:"info"},{default:o(()=>[e[23]||(e[23]=r(" Hier werden die maximalen Ladeströme entsprechend der in dem zugeordneten Ladepunkt genutzten Phasen eingestellt.")),e[24]||(e[24]=d("br",null,null,-1)),e[25]||(e[25]=r(" Generell gilt, dass diese Werte in Übereinstimmung mit der Ausführung des Ladepunktes und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. ")),i.charging_type==="AC"?(l(),p("span",Se," Bei einer openWB mit 22kW Maximalleistung sind hier jeweils 32A einzustellen. Ist die openWB beispielsweise auf 11kW begrenzt (KfW-Förderung oder die Zuleitung ist mit 16A abgesichert), dann sind hier jeweils 16A einzustellen. ")):g("",!0),e[26]||(e[26]=d("br",null,null,-1)),e[27]||(e[27]=r(" Komplexere Installationen mit mehreren Ladepunkten werden im ")),e[28]||(e[28]=d("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),e[29]||(e[29]=r(" beschrieben. "))]),_:2},1024),i.charging_type==="AC"||u.dcChargingEnabled!==!0?(l(),p("div",Ue,[a(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":n=>t.updateState(s,n,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":n=>t.updateState(s,n,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"])])):(l(),f($,{key:3,title:"Maximalleistung",min:22,max:420,step:1,unit:"kW",precision:5,"model-value":t.ac_current2dc_power(i.dc_max_current),"onUpdate:modelValue":n=>t.updateState(s,t.dc_power2ac_current(n),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])),m.installAssistantActive?g("",!0):(l(),p("div",xe,[e[34]||(e[34]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[30]||(e[30]=[r(" Sperren nach Uhrzeit (Komplettsperrung - keine Freischaltung per ID-Tag möglich) ")])]),_:1}),a(C,{title:"Sperren nach Uhrzeit aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.autolock.active,"onUpdate:modelValue":n=>t.updateState(s,n,"autolock.active")},{help:o(()=>[...e[31]||(e[31]=[r(" WirdSperren nach Uhrzeit aktiviert, können Fahrzeugladungen mittels Zeitplan auf gewünschte Zeitbereiche eingeschränkt werden. Dies kann z.B. bei Zugänglichkeiten zu Ladepunkten in öffentlichen oder halb-öffentlichen Bereichen sinnvoll sein. In dieser Zeit ist keine Freischaltung per RFID, Fahrzeugerkennung oder Pin möglich. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(C,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.autolock.wait_for_charging_end,"onUpdate:modelValue":n=>t.updateState(s,n,"autolock.wait_for_charging_end")},{help:o(()=>[...e[32]||(e[32]=[r(' Wenn ein Zeitplan Sperren nach Uhrzeit aktiviert, werden alle Ladepunkte direkt gesperrt und laufende Ladevorgänge beendet. Wird hier "Ja" ausgewählt, dann werden laufende Ladevorgänge NICHT beendet und diese Ladepunkte erst nach abgeschlossener Ladung gesperrt. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(B,null,{actions:o(()=>[a(L,{class:"bg-success clickable",onClick:n=>u.addChargePointTemplateAutolockPlan(s,n)},{default:o(()=>[a(_,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[e[33]||(e[33]=r(" Zeitpläne für Sperren nach Uhrzeit "))]),_:2},1024)])),(l(!0),p(A,null,x(u.getChargePointTemplateAutolockPlans(s),(n,v)=>(l(),f(U,{key:v,title:n.name,collapsible:!0,collapsed:!0},{actions:o(b=>[b.collapsed==!0?(l(),p("span",{key:0,class:ae(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:oe(W=>t.updateState(v,!n.active,"active"),["stop"])},[a(_,{"fixed-width":"",icon:["fas","clock"]}),r(" "+w(n.time[0])+" - "+w(n.time[1])+" ",1),n.frequency.selected=="once"?(l(),p("span",Te,[a(_,{"fixed-width":"",icon:["fas","calendar-day"]}),r(" "+w(t.formatDate(n.frequency.once[0])==t.formatDate(n.frequency.once[1])?t.formatDate(n.frequency.once[0]):t.formatDate(n.frequency.once[0])+" - "+t.formatDate(n.frequency.once[1])),1)])):g("",!0),n.frequency.selected=="daily"?(l(),p("span",ze,[a(_,{"fixed-width":"",icon:["fas","calendar-week"]})])):g("",!0),n.frequency.selected=="weekly"?(l(),p("span",De,[a(_,{"fixed-width":"",icon:["fas","calendar-alt"]})])):g("",!0)],10,Ie)):g("",!0),b.collapsed==!1?(l(),f(L,{key:1,class:"bg-danger clickable",onClick:W=>u.removeChargePointTemplateAutolockPlanModal(s,v,W)},{default:o(()=>[a(_,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):g("",!0)]),default:o(()=>[a(y,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":b=>t.updateState(v,b,"name")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":b=>t.updateState(v,b,"active")},null,8,["model-value","onUpdate:modelValue"]),a(y,{title:"Sperren um",subtype:"time","model-value":n.time[0],"onUpdate:modelValue":b=>t.updateState(v,b,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(y,{title:"Freigeben um",subtype:"time","model-value":n.time[1],"onUpdate:modelValue":b=>t.updateState(v,b,"time.1")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(l(),f(y,{key:0,title:"Sperren ab ...",subtype:"date","model-value":n.frequency.once[0],"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):g("",!0),n.frequency.selected=="once"?(l(),f(y,{key:1,title:"... bis",subtype:"date",min:n.frequency.once[0],"model-value":n.frequency.once[1],"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):g("",!0),n.frequency.selected=="weekly"?(l(),p("div",Ee,[(l(!0),p(A,null,x(t.weekdays,(b,W)=>(l(),f(C,{key:W,title:b,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[W],"onUpdate:modelValue":R=>t.updateState(v,R,"frequency.weekly."+W)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):g("",!0)]),_:2},1032,["title"]))),128))]),_:2},[s.endsWith("/0")?void 0:{name:"actions",fn:o(n=>[n.collapsed?g("",!0):(l(),f(L,{key:0,class:"bg-danger clickable",onClick:v=>u.removeChargePointTemplateModal(s,v)},{default:o(()=>[a(_,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),a(j,{"form-name":"chargePointInstallationForm",onSave:e[4]||(e[4]=i=>t.$emit("save")),onReset:e[5]||(e[5]=i=>t.$emit("reset")),onDefaults:e[6]||(e[6]=i=>t.$emit("defaults"))})])])],64)}const Fe=S(ke,[["render",qe],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]),je=Object.freeze(Object.defineProperty({__proto__:null,default:Fe},Symbol.toStringTag,{value:"Module"}));export{ie as C,ge as a,Fe as b,je as c}; diff --git a/web/settings/assets/Chart-bf602480.js b/web/settings/assets/Chart-bf602480.js deleted file mode 100644 index 4a9ab03c2e..0000000000 --- a/web/settings/assets/Chart-bf602480.js +++ /dev/null @@ -1 +0,0 @@ -import{l as L,L as T,V as H,U as q,T as O,$ as j,a0 as M,F as V}from"./vendor-fortawesome-433470db.js";import{C as z}from"./index-cc8f65ba.js";import{C as P,p as E,a as B,L as N,b as F,B as K,f as $,P as J,c as X,T as Z,i as G,d as U,e as Y,g as Q}from"./vendor-chartjs-1398beb1.js";import{_ as ee,u as h,l as s,m as o,G as l,E as d,x as A,z as f,y as b,N as k,M as x,F as C,B as _}from"./vendor-ea36120f.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./vendor-luxon-8ddd27a0.js";L.add(T,H,q,O,j,M);P.register(E,B,N,F,K,$,J,X,Z,G,U);const te={name:"OpenwbChartView",components:{ChartjsLine:Y,FontAwesomeIcon:V},mixins:[z],props:{initialChartRange:{type:String,required:!1,validator:function(e){return["day","month","year"].indexOf(e)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(e){return e.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/log/yearly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",blockChartInit:!1,chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power_average":{label:"Zähler",unit:"kW",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_imported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_exported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 255, 105, 0.7)",backgroundColor:"rgba(0, 255, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-power_exported":{label:"PV",unit:"kW",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"inverter-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energy_exported":{label:"PV",unit:"kWh",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"inverter-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power_average":{label:"Speicher",unit:"kW",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"battery-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_imported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_exported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-soc":{label:"Speicher SoC",unit:"%",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power_average":{label:"Ladepunkt",unit:"kW",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"charge-point-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported":{label:"Ladepunkt",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"charge-point-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_grid":{label:"Ladepunkt (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_pv":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_bat":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"ev-soc":{label:"Fahrzeug SoC",unit:"%",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-power_average":{label:"SmartHome",unit:"kW",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_imported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_exported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-power_imported":{label:"Hausverbrauch",unit:"kW",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported":{label:"Hausverbrauch",unit:"kWh",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_grid":{label:"Hausverbrauch (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_pv":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_bat":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:e=>`${e.dataset.label}: ${e.formattedValue} ${e.dataset.unit}`}},legend:{display:!0},zoom:{pan:{enabled:!0,mode:"x",threshold:5},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},mode:"x"}}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"",tooltipFormat:""},display:!0,title:{display:!0,text:""},ticks:{source:"timestamp",font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Leistung [kW]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y2:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Energie [kWh]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y3:{position:"right",type:"linear",display:"auto",suggestedMin:0,suggestedMax:100,title:{font:{size:12},display:!0,text:"SoC [%]"},grid:{display:!1},ticks:{font:{size:12},stepSize:10,maxTicksLimit:11}}}},chartDatasets:{datasets:[]}}},computed:{dateInput(){var e={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":e={title:"Monat",type:"month",min:"2018-01"};break;case"year":e={title:"Jahr",type:"year",min:"2018"};break}return e},chartDate:{get(){var e=this.chartRequestDate.year;return this.chartRange!="year"&&(e=e+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(e=e+"-"+this.chartRequestDate.day),e},set(e){let t=e.split("-");this.chartRequestDate.year=t[0],t.length>1?this.chartRequestDate.month=t[1]:this.chartRequestDate.month="",t.length>2?this.chartRequestDate.day=t[2]:this.chartRequestDate.day=""}},chartScaleX(){var e={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":e={unit:"day",tooltipFormat:"DD",text:"Tag",maxTicksLimit:31};break;case"year":e={unit:"month",tooltipFormat:"LLLL yyyy",text:"Monat",maxTicksLimit:12};break}return e},commandData(){var e={date:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day,day:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day};switch(this.chartRange){case"month":e={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":e={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return e},baseTopic(){var e="openWB/log/";switch(this.chartRange){case"day":e=e+"daily/";break;case"month":e=e+"monthly/";break;case"year":e=e+"yearly/";break}return e},chartDataRead(){return this.chartDataObject!=null},chartDataHasEntries(){return this.chartDataObject?this.chartDataObject.length>0:!1},chartTotals(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals")){var e=JSON.parse(JSON.stringify(this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals));return delete e.energy_source,Object.keys(e.counter).forEach(t=>{Object.prototype.hasOwnProperty.call(e.counter[t],"grid")&&delete e.counter[t].grid}),Object.keys(e).forEach(t=>{Object.prototype.hasOwnProperty.call(e[t],"all")&&(Object.keys(e[t]).length<=2&&["bat","pv"].includes(t)?delete e[t].all:e[t]={all:e[t].all,...e[t]})}),e}},chartDataObject(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var e=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(e,"entries")&&(e=e.entries);var t=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return t}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const t=this.chartDataObject[this.chartDataObject.length-1];return t&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(t,r)&&(Object.prototype.hasOwnProperty.call(t[r],"all")&&(["bat","pv"].includes(r)&&Object.keys(t[r]).length<=2?delete t[r].all:t[r]={all:t[r].all,...t[r]}),Object.entries(t[r]).forEach(([n,i])=>{Object.keys(i).forEach(a=>{this.initDataset(r,n,a)})}))}),this.chartDatasets}}},watch:{chartRange(){this.init()}},mounted(){this.init()},methods:{handleChartClick(e){if(this.chartRange=="day")return;const t=this.$refs.myChart.chart;if(!t)return;const r=Q(t,e);if(!r.length)return;const{datasetIndex:n,index:i}=r[0],a=this.chartData.datasets[n].data[i].date;var u="",y="";switch(this.chartRange){case"month":u=a.substring(0,4)+"-"+a.substring(4,6)+"-"+a.substring(6),y="day";break;case"year":u=a.substring(0,4)+"-"+a.substring(4,6),y="month";break}this.blockChartInit=!0,this.chartDate=u,this.chartRange=y},getCardSubtype(e){switch(e){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(e){switch(e){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"pv":return["fas","solar-panel"];case"sh":return["fas","house-signal"];case"hc":return["fas","house"];default:return}},hideDataset(e,t,r){return!!(["bat","pv","cp"].includes(e)&&Object.prototype.hasOwnProperty.call(this.chartTotals[e],"all")&&t!="all"||["grid","bat","pv","cp"].includes(r.split("_").pop()))},getTotalsLabel(e,t=void 0,r=void 0){var n="*test*";if(!t&&!r){switch(e){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";case"hc":return"Hausverbrauch";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(t&&!r){if(t=="all")return"Summe";if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]}if(t&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";case"energy_imported_grid":return"Ladung (Netz-Anteil)";case"energy_imported_pv":return"Ladung (PV-Anteil)";case"energy_imported_bat":return"Ladung (Speicher-Anteil)";case"energy_imported_cp":return"Ladung (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;case"counter":switch(r){case"imported":case"energy_imported":return"Bezug/Verbrauch";case"exported":case"energy_exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"pv":switch(r){case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"sh":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"hc":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"energy_imported_grid":return"Verbrauch (Netz-Anteil)";case"energy_imported_pv":return"Verbrauch (PV-Anteil)";case"energy_imported_bat":return"Verbrauch (Speicher-Anteil)";case"energy_imported_cp":return"Verbrauch (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+t+"+"+r+"*"}return n},getDatasetLabel(e,t,r,n){var i=["*"+n],a=[];if(t=="all")switch(e!=="hc"&&a.push("Summe"),e){case"pv":i=["PV"];break;case"bat":switch(i=["Speicher"],r){case"soc":i.push("SoC");break}break;case"cp":i=["Ladepunkte"];break;case"hc":i=["Hausverbrauch"]}else Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names")&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date].names,t)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":a.push("SoC");break;case"energy_imported":a.push("Ladung");break;case"energy_exported":a.push("Entladung");break;case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break;case"counter":switch(r){case"energy_imported":a.push("Bezug/Verbrauch");break;case"energy_exported":a.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":a.push("Verbrauch");break;case"energy_exported":a.push("Erzeugung");break}break;case"hc":switch(r){case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break}return`${i.join(" ")}${a.length?" ("+a.join(", ")+")":""}`},getDatasetIndex(e){let t=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(t!=-1)return t},addDataset(e,t,r,n){if(!(Object.prototype.hasOwnProperty.call(this.chartTotals,e)&&!Object.prototype.hasOwnProperty.call(this.chartTotals[e],t))){var i=e+"-"+r;if(this.datasetTemplates[i]){var a=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return a.parsing.yAxisKey=n,a.jsonKey=n,a.data=this.chartDataObject,a.label=this.getDatasetLabel(e,t,r,n),a.labelSuffix!=null&&(a.label=a.label+a.labelSuffix),a.hidden=this.hideDataset(e,t,r),t=="all"&&(["grid","pv","bat","cp"].includes(r.split("_").slice(-1)[0])||delete a.stack),this.chartDatasets.datasets.push(a)-1}else console.warn("no matching template found for: "+n+" with template: "+i)}},initDataset(e,t,r){var n=[];this.chartRange=="day"?n={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:n={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"]};const i=e+"."+t+"."+r;if(n[e].includes(r)){var a=this.getDatasetIndex(i);a==null&&(a=this.addDataset(e,t,r,i))}else console.debug("skipping dataset:",i)},setupScaleX(){this.chartOptions.scales.x.time.unit=this.chartScaleX.unit,this.chartOptions.scales.x.time.tooltipFormat=this.chartScaleX.tooltipFormat,this.chartOptions.scales.x.title.text=this.chartScaleX.text,this.chartOptions.scales.x.ticks.maxTicksLimit=this.chartScaleX.maxTicksLimit},requestChart(){if(document.forms.chartForm.reportValidity()){this.setupScaleX(),this.chartDatasets.datasets=[];var t="";switch(this.chartRange){case"day":t="getDailyLog";break;case"month":t="getMonthlyLog";break;case"year":t="getYearlyLog";break}this.$emit("sendCommand",{command:t,data:this.commandData})}else{console.warn("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(e=>{this.$store.commit("removeTopic",`${this.baseTopic}${e}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const e=new Date;this.currentDate=String(e.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(e.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(e.getDate()).padStart(2,"0")),this.blockChartInit?this.blockChartInit=!1:this.initialDate==null||this.initialDate==""?this.chartDate=this.currentDate:this.chartDate=this.initialDate,this.updateChart()}}},ae={class:"chart"},re={key:0},ie={key:1},ne={name:"chartForm"},se={key:1},oe={key:1},le={class:"openwb-chart"},de={key:1};function ce(e,t,r,n,i,a){const u=h("openwb-base-alert"),y=h("openwb-base-select-input"),v=h("openwb-base-text-input"),g=h("openwb-base-card"),R=h("chartjs-line"),w=h("font-awesome-icon"),S=h("openwb-base-heading");return s(),o("div",ae,[e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),o("div",re,[l(u,{subtype:"info"},{default:d(()=>t[3]||(t[3]=[b(' Die Auswertungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. Du findest alle Auswertungen in der openWB, welche sich im Steuerungsmodus "primary" befindet. ')])),_:1})])):(s(),o("div",ie,[A("form",ne,[l(g,{title:"Filter",collapsible:!0,collapsed:!1},{default:d(()=>[l(y,{modelValue:i.chartRange,"onUpdate:modelValue":t[0]||(t[0]=p=>i.chartRange=p),title:"Zeitraum",options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),l(v,{modelValue:a.chartDate,"onUpdate:modelValue":[t[1]||(t[1]=p=>a.chartDate=p),t[2]||(t[2]=p=>a.updateChart())],title:a.dateInput.title,subtype:a.dateInput.type,min:a.dateInput.min,max:i.currentDate,"show-quick-buttons":!0},null,8,["modelValue","title","subtype","min","max"])]),_:1}),a.chartDataRead?(s(),o("div",se,[a.chartDataHasEntries?(s(),o("div",oe,[l(g,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:d(()=>[A("div",le,[l(R,{ref:"myChart",data:a.chartData,options:i.chartOptions,onClick:a.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),l(g,{title:"Summen",collapsible:!0,collapsed:!0},{default:d(()=>[(s(!0),o(k,null,x(a.chartTotals,(p,c)=>(s(),o("div",{key:c},[Object.keys(p).length>0?(s(),f(g,{key:0,collapsible:!0,collapsed:!0,subtype:a.getCardSubtype(c)},{header:d(()=>[l(w,{"fixed-width":"",icon:a.getCardIcon(c)},null,8,["icon"]),b(" "+C(a.getTotalsLabel(c)),1)]),default:d(()=>[(s(!0),o(k,null,x(p,(I,m)=>(s(),o("div",{key:m},[c!=="hc"?(s(),f(S,{key:0},{default:d(()=>[b(C(a.getTotalsLabel(c,m)),1)]),_:2},1024)):_("",!0),(s(!0),o(k,null,x(I,(W,D)=>(s(),o("div",{key:D},[l(v,{title:a.getTotalsLabel(c,m,D),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128)),m=="all"&&c!="hc"?(s(),o("hr",de)):_("",!0)]))),128))]),_:2},1032,["subtype"])):_("",!0)]))),128))]),_:1})])):(s(),f(u,{key:0,subtype:"info"},{default:d(()=>t[5]||(t[5]=[b(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")])),_:1}))])):(s(),f(u,{key:0,subtype:"info"},{default:d(()=>t[4]||(t[4]=[b(" Es wurden noch keine Daten abgerufen. ")])),_:1}))])]))])}const xe=ee(te,[["render",ce],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{xe as default}; diff --git a/web/settings/assets/Chart-cfe16b91.js b/web/settings/assets/Chart-cfe16b91.js new file mode 100644 index 0000000000..5099ebb454 --- /dev/null +++ b/web/settings/assets/Chart-cfe16b91.js @@ -0,0 +1 @@ +import{l as L,P as T,Z as H,Y as q,X as O,a3 as j,a4 as M,F as V}from"./vendor-fortawesome-9d7cfdfb.js";import{C as z}from"./index-b236cee5.js";import{C as P,p as E,a as B,L as N,b as F,B as K,f as $,P as J,c as X,T as Z,i as G,d as Y,e as U,g as Q}from"./vendor-chartjs-6a6474b3.js";import{_ as ee,u as h,l as s,m as o,G as l,E as d,A,x as f,B as b,N as k,M as x,F as C,z as _}from"./vendor-ad7c30fd.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./vendor-luxon-8ddd27a0.js";L.add(T,H,q,O,j,M);P.register(E,B,N,F,K,$,J,X,Z,G,Y);const te={name:"OpenwbChartView",components:{ChartjsLine:U,FontAwesomeIcon:V},mixins:[z],props:{initialChartRange:{type:String,required:!1,validator:function(e){return["day","month","year"].indexOf(e)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(e){return e.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/log/yearly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",blockChartInit:!1,chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power_average":{label:"Zähler",unit:"kW",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_imported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_exported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 255, 105, 0.7)",backgroundColor:"rgba(0, 255, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-power_exported":{label:"PV",unit:"kW",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"inverter-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energy_exported":{label:"PV",unit:"kWh",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"inverter-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power_average":{label:"Speicher",unit:"kW",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"battery-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_imported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_exported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-soc":{label:"Speicher SoC",unit:"%",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power_average":{label:"Ladepunkt",unit:"kW",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"charge-point-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported":{label:"Ladepunkt",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"charge-point-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_grid":{label:"Ladepunkt (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_pv":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_bat":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"ev-soc":{label:"Fahrzeug SoC",unit:"%",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-power_average":{label:"SmartHome",unit:"kW",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_imported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_exported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-power_imported":{label:"Hausverbrauch",unit:"kW",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported":{label:"Hausverbrauch",unit:"kWh",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_grid":{label:"Hausverbrauch (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_pv":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_bat":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:e=>`${e.dataset.label}: ${e.formattedValue} ${e.dataset.unit}`}},legend:{display:!0},zoom:{pan:{enabled:!0,mode:"x",threshold:5},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},mode:"x"}}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"",tooltipFormat:""},display:!0,title:{display:!0,text:""},ticks:{source:"timestamp",font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Leistung [kW]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y2:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Energie [kWh]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y3:{position:"right",type:"linear",display:"auto",suggestedMin:0,suggestedMax:100,title:{font:{size:12},display:!0,text:"SoC [%]"},grid:{display:!1},ticks:{font:{size:12},stepSize:10,maxTicksLimit:11}}}},chartDatasets:{datasets:[]}}},computed:{dateInput(){var e={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":e={title:"Monat",type:"month",min:"2018-01"};break;case"year":e={title:"Jahr",type:"year",min:"2018"};break}return e},chartDate:{get(){var e=this.chartRequestDate.year;return this.chartRange!="year"&&(e=e+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(e=e+"-"+this.chartRequestDate.day),e},set(e){let t=e.split("-");this.chartRequestDate.year=t[0],t.length>1?this.chartRequestDate.month=t[1]:this.chartRequestDate.month="",t.length>2?this.chartRequestDate.day=t[2]:this.chartRequestDate.day=""}},chartScaleX(){var e={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":e={unit:"day",tooltipFormat:"DD",text:"Tag",maxTicksLimit:31};break;case"year":e={unit:"month",tooltipFormat:"LLLL yyyy",text:"Monat",maxTicksLimit:12};break}return e},commandData(){var e={date:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day,day:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day};switch(this.chartRange){case"month":e={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":e={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return e},baseTopic(){var e="openWB/log/";switch(this.chartRange){case"day":e=e+"daily/";break;case"month":e=e+"monthly/";break;case"year":e=e+"yearly/";break}return e},chartDataRead(){return this.chartDataObject!=null},chartDataHasEntries(){return this.chartDataObject?this.chartDataObject.length>0:!1},chartTotals(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals")){var e=JSON.parse(JSON.stringify(this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals));return delete e.energy_source,Object.keys(e.counter).forEach(t=>{Object.prototype.hasOwnProperty.call(e.counter[t],"grid")&&delete e.counter[t].grid}),Object.keys(e).forEach(t=>{Object.prototype.hasOwnProperty.call(e[t],"all")&&(Object.keys(e[t]).length<=2&&["bat","pv"].includes(t)?delete e[t].all:e[t]={all:e[t].all,...e[t]})}),e}},chartDataObject(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var e=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(e,"entries")&&(e=e.entries);var t=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return t}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const t=this.chartDataObject[this.chartDataObject.length-1];return t&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(t,r)&&(Object.prototype.hasOwnProperty.call(t[r],"all")&&(["bat","pv"].includes(r)&&Object.keys(t[r]).length<=2?delete t[r].all:t[r]={all:t[r].all,...t[r]}),Object.entries(t[r]).forEach(([n,i])=>{Object.keys(i).forEach(a=>{this.initDataset(r,n,a)})}))}),this.chartDatasets}}},watch:{chartRange(){this.init()}},mounted(){this.init()},methods:{handleChartClick(e){if(this.chartRange=="day")return;const t=this.$refs.myChart.chart;if(!t)return;const r=Q(t,e);if(!r.length)return;const{datasetIndex:n,index:i}=r[0],a=this.chartData.datasets[n].data[i].date;var u="",y="";switch(this.chartRange){case"month":u=a.substring(0,4)+"-"+a.substring(4,6)+"-"+a.substring(6),y="day";break;case"year":u=a.substring(0,4)+"-"+a.substring(4,6),y="month";break}this.blockChartInit=!0,this.chartDate=u,this.chartRange=y},getCardSubtype(e){switch(e){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(e){switch(e){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"pv":return["fas","solar-panel"];case"sh":return["fas","house-signal"];case"hc":return["fas","house"];default:return}},hideDataset(e,t,r){return!!(["bat","pv","cp"].includes(e)&&Object.prototype.hasOwnProperty.call(this.chartTotals[e],"all")&&t!="all"||["grid","bat","pv","cp"].includes(r.split("_").pop()))},getTotalsLabel(e,t=void 0,r=void 0){var n="*test*";if(!t&&!r){switch(e){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";case"hc":return"Hausverbrauch";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(t&&!r){if(t=="all")return"Summe";if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]}if(t&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";case"energy_imported_grid":return"Ladung (Netz-Anteil)";case"energy_imported_pv":return"Ladung (PV-Anteil)";case"energy_imported_bat":return"Ladung (Speicher-Anteil)";case"energy_imported_cp":return"Ladung (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;case"counter":switch(r){case"imported":case"energy_imported":return"Bezug/Verbrauch";case"exported":case"energy_exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"pv":switch(r){case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"sh":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"hc":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"energy_imported_grid":return"Verbrauch (Netz-Anteil)";case"energy_imported_pv":return"Verbrauch (PV-Anteil)";case"energy_imported_bat":return"Verbrauch (Speicher-Anteil)";case"energy_imported_cp":return"Verbrauch (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+t+"+"+r+"*"}return n},getDatasetLabel(e,t,r,n){var i=["*"+n],a=[];if(t=="all")switch(e!=="hc"&&a.push("Summe"),e){case"pv":i=["PV"];break;case"bat":switch(i=["Speicher"],r){case"soc":i.push("SoC");break}break;case"cp":i=["Ladepunkte"];break;case"hc":i=["Hausverbrauch"]}else Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names")&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date].names,t)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":a.push("SoC");break;case"energy_imported":a.push("Ladung");break;case"energy_exported":a.push("Entladung");break;case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break;case"counter":switch(r){case"energy_imported":a.push("Bezug/Verbrauch");break;case"energy_exported":a.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":a.push("Verbrauch");break;case"energy_exported":a.push("Erzeugung");break}break;case"hc":switch(r){case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break}return`${i.join(" ")}${a.length?" ("+a.join(", ")+")":""}`},getDatasetIndex(e){let t=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(t!=-1)return t},addDataset(e,t,r,n){if(!(Object.prototype.hasOwnProperty.call(this.chartTotals,e)&&!Object.prototype.hasOwnProperty.call(this.chartTotals[e],t))){var i=e+"-"+r;if(this.datasetTemplates[i]){var a=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return a.parsing.yAxisKey=n,a.jsonKey=n,a.data=this.chartDataObject,a.label=this.getDatasetLabel(e,t,r,n),a.labelSuffix!=null&&(a.label=a.label+a.labelSuffix),a.hidden=this.hideDataset(e,t,r),t=="all"&&(["grid","pv","bat","cp"].includes(r.split("_").slice(-1)[0])||delete a.stack),this.chartDatasets.datasets.push(a)-1}else console.warn("no matching template found for: "+n+" with template: "+i)}},initDataset(e,t,r){var n=[];this.chartRange=="day"?n={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:n={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"]};const i=e+"."+t+"."+r;if(n[e].includes(r)){var a=this.getDatasetIndex(i);a==null&&(a=this.addDataset(e,t,r,i))}else console.debug("skipping dataset:",i)},setupScaleX(){this.chartOptions.scales.x.time.unit=this.chartScaleX.unit,this.chartOptions.scales.x.time.tooltipFormat=this.chartScaleX.tooltipFormat,this.chartOptions.scales.x.title.text=this.chartScaleX.text,this.chartOptions.scales.x.ticks.maxTicksLimit=this.chartScaleX.maxTicksLimit},requestChart(){if(document.forms.chartForm.reportValidity()){this.setupScaleX(),this.chartDatasets.datasets=[];var t="";switch(this.chartRange){case"day":t="getDailyLog";break;case"month":t="getMonthlyLog";break;case"year":t="getYearlyLog";break}this.$emit("sendCommand",{command:t,data:this.commandData})}else{console.warn("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(e=>{this.$store.commit("removeTopic",`${this.baseTopic}${e}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const e=new Date;this.currentDate=String(e.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(e.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(e.getDate()).padStart(2,"0")),this.blockChartInit?this.blockChartInit=!1:this.initialDate==null||this.initialDate==""?this.chartDate=this.currentDate:this.chartDate=this.initialDate,this.updateChart()}}},ae={class:"chart"},re={key:0},ie={key:1},ne={name:"chartForm"},se={key:1},oe={key:1},le={class:"openwb-chart"},de={key:1};function ce(e,t,r,n,i,a){const u=h("openwb-base-alert"),y=h("openwb-base-select-input"),v=h("openwb-base-text-input"),g=h("openwb-base-card"),R=h("chartjs-line"),w=h("font-awesome-icon"),S=h("openwb-base-heading");return s(),o("div",ae,[e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),o("div",re,[l(u,{subtype:"info"},{default:d(()=>t[3]||(t[3]=[b(' Die Auswertungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. Du findest alle Auswertungen in der openWB, welche sich im Steuerungsmodus "primary" befindet. ')])),_:1})])):(s(),o("div",ie,[A("form",ne,[l(g,{title:"Filter",collapsible:!0,collapsed:!1},{default:d(()=>[l(y,{modelValue:i.chartRange,"onUpdate:modelValue":t[0]||(t[0]=p=>i.chartRange=p),title:"Zeitraum",options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),l(v,{modelValue:a.chartDate,"onUpdate:modelValue":[t[1]||(t[1]=p=>a.chartDate=p),t[2]||(t[2]=p=>a.updateChart())],title:a.dateInput.title,subtype:a.dateInput.type,min:a.dateInput.min,max:i.currentDate,"show-quick-buttons":!0},null,8,["modelValue","title","subtype","min","max"])]),_:1}),a.chartDataRead?(s(),o("div",se,[a.chartDataHasEntries?(s(),o("div",oe,[l(g,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:d(()=>[A("div",le,[l(R,{ref:"myChart",data:a.chartData,options:i.chartOptions,onClick:a.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),l(g,{title:"Summen",collapsible:!0,collapsed:!0},{default:d(()=>[(s(!0),o(k,null,x(a.chartTotals,(p,c)=>(s(),o("div",{key:c},[Object.keys(p).length>0?(s(),f(g,{key:0,collapsible:!0,collapsed:!0,subtype:a.getCardSubtype(c)},{header:d(()=>[l(w,{"fixed-width":"",icon:a.getCardIcon(c)},null,8,["icon"]),b(" "+C(a.getTotalsLabel(c)),1)]),default:d(()=>[(s(!0),o(k,null,x(p,(I,m)=>(s(),o("div",{key:m},[c!=="hc"?(s(),f(S,{key:0},{default:d(()=>[b(C(a.getTotalsLabel(c,m)),1)]),_:2},1024)):_("",!0),(s(!0),o(k,null,x(I,(W,D)=>(s(),o("div",{key:D},[l(v,{title:a.getTotalsLabel(c,m,D),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128)),m=="all"&&c!="hc"?(s(),o("hr",de)):_("",!0)]))),128))]),_:2},1032,["subtype"])):_("",!0)]))),128))]),_:1})])):(s(),f(u,{key:0,subtype:"info"},{default:d(()=>t[5]||(t[5]=[b(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")])),_:1}))])):(s(),f(u,{key:0,subtype:"info"},{default:d(()=>t[4]||(t[4]=[b(" Es wurden noch keine Daten abgerufen. ")])),_:1}))])]))])}const xe=ee(te,[["render",ce],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{xe as default}; diff --git a/web/settings/assets/CloudConfig-c17b71a6.js b/web/settings/assets/CloudConfig-9ce250e8.js similarity index 93% rename from web/settings/assets/CloudConfig-c17b71a6.js rename to web/settings/assets/CloudConfig-9ce250e8.js index f11306c7a0..4ae9118372 100644 --- a/web/settings/assets/CloudConfig-c17b71a6.js +++ b/web/settings/assets/CloudConfig-9ce250e8.js @@ -1 +1 @@ -import{l as S,a5 as q,F as z}from"./vendor-fortawesome-433470db.js";import{C as P}from"./index-cc8f65ba.js";import{_ as h,u as a,l,m as b,G as r,E as t,x as m,z as p,B as i,D as Z,N as I,y as s,q as _}from"./vendor-ea36120f.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";S.add(q);const x={name:"OpenwbCloudConfigView",components:{FontAwesomeIcon:z},mixins:[P],emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+","openWB/system/mqtt/valid_partner_ids"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let n=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,B]of Object.entries(n))B.remote.is_openwb_cloud||delete n[e];return n}},cloudBridgeKey:{get(){for(const[n,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return n}},cloudSettings:{get(){return{username:this.cloudBridge[this.cloudBridgeKey].remote.username,password:this.cloudBridge[this.cloudBridgeKey].remote.password,partner:this.cloudBridge[this.cloudBridgeKey].access?this.cloudBridge[this.cloudBridgeKey].access.partner:!1}}}},methods:{getMqttBridgeIndex(n){return parseInt(n.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(n){n.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(n){this.showCloudRemoveModal=!1,n=="confirm"&&(this.updateState("openWB/system/mqtt/valid_partner_ids",[]),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},K={class:"cloud-config"},M={key:1},R={key:1,name:"cloudConfigCreateForm"},N={key:2,name:"cloudConfigConnectForm"},U={class:"row justify-content-center"},F={key:3,name:"cloudConfigured"},A={class:"row justify-content-center"};function j(n,e,B,G,u,d){const D=a("openwb-base-modal-dialog"),c=a("router-link"),g=a("openwb-base-alert"),w=a("openwb-base-card"),f=a("openwb-base-text-input"),y=a("openwb-base-button-group-input"),C=a("font-awesome-icon"),v=a("openwb-base-array-input"),k=a("openwb-base-click-button"),V=a("openwb-base-heading"),W=a("openwb-base-submit-buttons");return l(),b(I,null,[r(D,{show:u.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=o=>d.removeCloud(o))},{default:t(()=>e[13]||(e[13]=[s(" Willst Du den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")])),_:1},8,["show"]),m("div",K,[n.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),p(g,{key:0,subtype:"danger"},{default:t(()=>[e[15]||(e[15]=s(" Du musst der ")),r(c,{to:"/System/LegalSettings"},{default:t(()=>e[14]||(e[14]=[s(" Datenschutzerklärung ")])),_:1}),e[16]||(e[16]=s(" zustimmen, um die openWB Cloud nutzen zu können. "))]),_:1})):(l(),b("div",M,[r(g,{subtype:"success"},{default:t(()=>[e[18]||(e[18]=s(" Du hast der ")),r(c,{to:"/System/LegalSettings"},{default:t(()=>e[17]||(e[17]=[s(" Datenschutzerklärung ")])),_:1}),e[19]||(e[19]=s(" zugestimmt und kannst die openWB Cloud nutzen. "))]),_:1}),u.enableRemoveCloudButton?i("",!0):(l(),p(g,{key:0,subtype:"warning"},{default:t(()=>e[20]||(e[20]=[s(" Der Zugang wurde entfernt. Bitte starte die openWB neu, um die Änderungen anzuwenden! ")])),_:1})),d.cloudBridgeKey?i("",!0):(l(),b("form",R,[r(w,{title:"Neuen Zugang erstellen"},{default:t(()=>[r(g,{subtype:"warning"},{default:t(()=>e[21]||(e[21]=[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutze die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreibe bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),m("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),s(" . ")])),_:1})]),_:1})])),d.cloudBridgeKey?i("",!0):(l(),b("form",N,[r(w,{title:"Vorhandenen Zugang einrichten"},Z({default:t(()=>[r(f,{modelValue:u.connectCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=o=>u.connectCloudData.username=o),title:"Benutzername",required:"",subtype:"user"},null,8,["modelValue"]),r(f,{modelValue:u.connectCloudData.password,"onUpdate:modelValue":e[2]||(e[2]=o=>u.connectCloudData.password=o),title:"Passwort",required:"",subtype:"password"},null,8,["modelValue"]),r(y,{modelValue:u.connectCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=o=>u.connectCloudData.partner=o),title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:t(()=>e[22]||(e[22]=[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")])),_:1},8,["modelValue"]),u.connectCloudData.partner?(l(),p(v,{key:0,title:"Gültige Partner-IDs","no-elements-message":"Keine Partner-ID zugeordnet.","model-value":n.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[4]||(e[4]=o=>n.updateState("openWB/system/mqtt/valid_partner_ids",o))},{"input-prefix":t(()=>[r(C,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(C,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>e[23]||(e[23]=[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")])),_:1},8,["model-value"])):i("",!0)]),_:2},[n.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[m("div",U,[r(k,{class:_(["col-4",u.enableCloudConnectButton?"btn-success":"btn-outline-success"]),disabled:!u.enableCloudConnectButton,onButtonClicked:d.connectCloud},{default:t(()=>e[24]||(e[24]=[s(" Mit Cloud verbinden ")])),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024)])),d.cloudBridgeKey?(l(),b("form",F,[!u.enableCloudConnectButton||!u.enableNewCloudButton?(l(),p(g,{key:0,subtype:"warning"},{default:t(()=>e[25]||(e[25]=[s(" Der Zugang wurde eingerichtet. Bitte starte die die openWB neu, um die Änderungen anzuwenden! ")])),_:1})):i("",!0),r(w,{title:"Vorhandener Cloud Zugang"},{footer:t(()=>[m("div",A,[r(k,{class:_(["col-4",u.enableRemoveCloudButton?"btn-danger":"btn-outline-danger"]),disabled:!u.enableRemoveCloudButton,onButtonClicked:e[9]||(e[9]=o=>d.removeCloudModal(o))},{default:t(()=>e[29]||(e[29]=[s(" Zugang löschen ")])),_:1},8,["class","disabled"])])]),default:t(()=>[r(V,null,{default:t(()=>e[26]||(e[26]=[m("span",null,[s(" Mit diesen Zugangsdaten kannst Du dich in der "),m("a",{href:"https://remote.openwb.de/",target:"_blank",rel:"noopener noreferrer"}," openWB Cloud "),s(" anmelden. ")],-1)])),_:1}),r(f,{modelValue:d.cloudSettings.username,"onUpdate:modelValue":e[5]||(e[5]=o=>d.cloudSettings.username=o),title:"Benutzername",required:"",subtype:"user",disabled:""},null,8,["modelValue"]),r(f,{modelValue:d.cloudSettings.password,"onUpdate:modelValue":e[6]||(e[6]=o=>d.cloudSettings.password=o),title:"Passwort",required:"",subtype:"password",disabled:""},null,8,["modelValue"]),e[30]||(e[30]=m("hr",null,null,-1)),r(y,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":d.cloudSettings.partner,"onUpdate:modelValue":e[7]||(e[7]=o=>n.updateState(d.cloudBridgeKey,o,"access.partner"))},{help:t(()=>e[27]||(e[27]=[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")])),_:1},8,["model-value"]),d.cloudSettings.partner?(l(),p(v,{key:0,title:"Gültige Partner-IDs","no-elements-message":"Keine Partner-ID zugeordnet.","model-value":n.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[8]||(e[8]=o=>n.updateState("openWB/system/mqtt/valid_partner_ids",o))},{"input-prefix":t(()=>[r(C,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(C,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>e[28]||(e[28]=[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")])),_:1},8,["model-value"])):i("",!0)]),_:1})])):i("",!0),d.cloudBridgeKey?(l(),p(W,{key:4,"form-name":"cloudConfigured",onSave:e[10]||(e[10]=o=>n.$emit("save")),onReset:e[11]||(e[11]=o=>n.$emit("reset")),onDefaults:e[12]||(e[12]=o=>n.$emit("defaults"))})):i("",!0)]))])],64)}const X=h(x,[["render",j],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/CloudConfig.vue"]]);export{X as default}; +import{l as S,aa as q,F as z}from"./vendor-fortawesome-9d7cfdfb.js";import{C as P}from"./index-b236cee5.js";import{_ as h,u as a,l,m as b,G as r,E as t,A as m,x as p,z as i,D as Z,N as I,B as s,q as _}from"./vendor-ad7c30fd.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";S.add(q);const x={name:"OpenwbCloudConfigView",components:{FontAwesomeIcon:z},mixins:[P],emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+","openWB/system/mqtt/valid_partner_ids"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let n=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,B]of Object.entries(n))B.remote.is_openwb_cloud||delete n[e];return n}},cloudBridgeKey:{get(){for(const[n,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return n}},cloudSettings:{get(){return{username:this.cloudBridge[this.cloudBridgeKey].remote.username,password:this.cloudBridge[this.cloudBridgeKey].remote.password,partner:this.cloudBridge[this.cloudBridgeKey].access?this.cloudBridge[this.cloudBridgeKey].access.partner:!1}}}},methods:{getMqttBridgeIndex(n){return parseInt(n.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(n){n.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(n){this.showCloudRemoveModal=!1,n=="confirm"&&(this.updateState("openWB/system/mqtt/valid_partner_ids",[]),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},K={class:"cloud-config"},M={key:1},R={key:1,name:"cloudConfigCreateForm"},N={key:2,name:"cloudConfigConnectForm"},U={class:"row justify-content-center"},A={key:3,name:"cloudConfigured"},F={class:"row justify-content-center"};function j(n,e,B,G,u,d){const D=a("openwb-base-modal-dialog"),c=a("router-link"),g=a("openwb-base-alert"),w=a("openwb-base-card"),f=a("openwb-base-text-input"),y=a("openwb-base-button-group-input"),C=a("font-awesome-icon"),v=a("openwb-base-array-input"),k=a("openwb-base-click-button"),V=a("openwb-base-heading"),W=a("openwb-base-submit-buttons");return l(),b(I,null,[r(D,{show:u.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=o=>d.removeCloud(o))},{default:t(()=>e[13]||(e[13]=[s(" Willst Du den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")])),_:1},8,["show"]),m("div",K,[n.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),p(g,{key:0,subtype:"danger"},{default:t(()=>[e[15]||(e[15]=s(" Du musst der ")),r(c,{to:"/System/LegalSettings"},{default:t(()=>e[14]||(e[14]=[s(" Datenschutzerklärung ")])),_:1}),e[16]||(e[16]=s(" zustimmen, um die openWB Cloud nutzen zu können. "))]),_:1})):(l(),b("div",M,[r(g,{subtype:"success"},{default:t(()=>[e[18]||(e[18]=s(" Du hast der ")),r(c,{to:"/System/LegalSettings"},{default:t(()=>e[17]||(e[17]=[s(" Datenschutzerklärung ")])),_:1}),e[19]||(e[19]=s(" zugestimmt und kannst die openWB Cloud nutzen. "))]),_:1}),u.enableRemoveCloudButton?i("",!0):(l(),p(g,{key:0,subtype:"warning"},{default:t(()=>e[20]||(e[20]=[s(" Der Zugang wurde entfernt. Bitte starte die openWB neu, um die Änderungen anzuwenden! ")])),_:1})),d.cloudBridgeKey?i("",!0):(l(),b("form",R,[r(w,{title:"Neuen Zugang erstellen"},{default:t(()=>[r(g,{subtype:"warning"},{default:t(()=>e[21]||(e[21]=[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutze die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreibe bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),m("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),s(" . ")])),_:1})]),_:1})])),d.cloudBridgeKey?i("",!0):(l(),b("form",N,[r(w,{title:"Vorhandenen Zugang einrichten"},Z({default:t(()=>[r(f,{modelValue:u.connectCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=o=>u.connectCloudData.username=o),title:"Benutzername",required:"",subtype:"user"},null,8,["modelValue"]),r(f,{modelValue:u.connectCloudData.password,"onUpdate:modelValue":e[2]||(e[2]=o=>u.connectCloudData.password=o),title:"Passwort",required:"",subtype:"password"},null,8,["modelValue"]),r(y,{modelValue:u.connectCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=o=>u.connectCloudData.partner=o),title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:t(()=>e[22]||(e[22]=[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")])),_:1},8,["modelValue"]),u.connectCloudData.partner?(l(),p(v,{key:0,title:"Gültige Partner-IDs","no-elements-message":"Keine Partner-ID zugeordnet.","model-value":n.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[4]||(e[4]=o=>n.updateState("openWB/system/mqtt/valid_partner_ids",o))},{"input-prefix":t(()=>[r(C,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(C,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>e[23]||(e[23]=[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")])),_:1},8,["model-value"])):i("",!0)]),_:2},[n.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[m("div",U,[r(k,{class:_(["col-4",u.enableCloudConnectButton?"btn-success":"btn-outline-success"]),disabled:!u.enableCloudConnectButton,onButtonClicked:d.connectCloud},{default:t(()=>e[24]||(e[24]=[s(" Mit Cloud verbinden ")])),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024)])),d.cloudBridgeKey?(l(),b("form",A,[!u.enableCloudConnectButton||!u.enableNewCloudButton?(l(),p(g,{key:0,subtype:"warning"},{default:t(()=>e[25]||(e[25]=[s(" Der Zugang wurde eingerichtet. Bitte starte die die openWB neu, um die Änderungen anzuwenden! ")])),_:1})):i("",!0),r(w,{title:"Vorhandener Cloud Zugang"},{footer:t(()=>[m("div",F,[r(k,{class:_(["col-4",u.enableRemoveCloudButton?"btn-danger":"btn-outline-danger"]),disabled:!u.enableRemoveCloudButton,onButtonClicked:e[9]||(e[9]=o=>d.removeCloudModal(o))},{default:t(()=>e[29]||(e[29]=[s(" Zugang löschen ")])),_:1},8,["class","disabled"])])]),default:t(()=>[r(V,null,{default:t(()=>e[26]||(e[26]=[m("span",null,[s(" Mit diesen Zugangsdaten kannst Du dich in der "),m("a",{href:"https://remote.openwb.de/",target:"_blank",rel:"noopener noreferrer"}," openWB Cloud "),s(" anmelden. ")],-1)])),_:1}),r(f,{modelValue:d.cloudSettings.username,"onUpdate:modelValue":e[5]||(e[5]=o=>d.cloudSettings.username=o),title:"Benutzername",required:"",subtype:"user",disabled:""},null,8,["modelValue"]),r(f,{modelValue:d.cloudSettings.password,"onUpdate:modelValue":e[6]||(e[6]=o=>d.cloudSettings.password=o),title:"Passwort",required:"",subtype:"password",disabled:""},null,8,["modelValue"]),e[30]||(e[30]=m("hr",null,null,-1)),r(y,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":d.cloudSettings.partner,"onUpdate:modelValue":e[7]||(e[7]=o=>n.updateState(d.cloudBridgeKey,o,"access.partner"))},{help:t(()=>e[27]||(e[27]=[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")])),_:1},8,["model-value"]),d.cloudSettings.partner?(l(),p(v,{key:0,title:"Gültige Partner-IDs","no-elements-message":"Keine Partner-ID zugeordnet.","model-value":n.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[8]||(e[8]=o=>n.updateState("openWB/system/mqtt/valid_partner_ids",o))},{"input-prefix":t(()=>[r(C,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(C,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>e[28]||(e[28]=[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")])),_:1},8,["model-value"])):i("",!0)]),_:1})])):i("",!0),d.cloudBridgeKey?(l(),p(W,{key:4,"form-name":"cloudConfigured",onSave:e[10]||(e[10]=o=>n.$emit("save")),onReset:e[11]||(e[11]=o=>n.$emit("reset")),onDefaults:e[12]||(e[12]=o=>n.$emit("defaults"))})):i("",!0)]))])],64)}const X=h(x,[["render",j],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/CloudConfig.vue"]]);export{X as default}; diff --git a/web/settings/assets/DataManagement-f14600c5.js b/web/settings/assets/DataManagement-714df651.js similarity index 88% rename from web/settings/assets/DataManagement-f14600c5.js rename to web/settings/assets/DataManagement-714df651.js index 0d5db413a7..ddbbf49a87 100644 --- a/web/settings/assets/DataManagement-f14600c5.js +++ b/web/settings/assets/DataManagement-714df651.js @@ -1 +1 @@ -import{l as z,aj as P,ak as R,al as $,am as U,an as q,F as H}from"./vendor-fortawesome-433470db.js";import{_ as B,C as N}from"./index-cc8f65ba.js";import{_ as x}from"./dynamic-import-helper-be004503.js";import{_ as w,u as f,l as u,m,z as C,E as s,y as i,F as h,G as t,x as o,a1 as L,a2 as T,N as W,B as _,q as M,M as A,D as I}from"./vendor-ea36120f.js";const G={props:{backupCloud:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})},sendSystemCommand(n,e={}){this.$emit("sendCommand",{command:n,data:e})}}},J=w(G,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/BackupCloudConfigMixin.vue"]]),K={name:"BackupCloudConfigFallback",mixins:[J]},Z={class:"backup-cloud-fallback"},Q={key:1};function X(n,e,l,b,r,a){const g=f("openwb-base-alert"),d=f("openwb-base-textarea");return u(),m("div",Z,[Object.keys(n.backupCloud.configuration).length==0?(u(),C(g,{key:0,subtype:"info"},{default:s(()=>[i(' Die Backup-Cloud "'+h(n.backupCloud.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(u(),m("div",Q,[t(g,{subtype:"warning"},{default:s(()=>[i(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+h(n.backupCloud.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),t(d,{title:"Konfiguration",subtype:"json","model-value":n.backupCloud.configuration,"onUpdate:modelValue":e[0]||(e[0]=y=>n.updateConfiguration(y,"configuration"))},{help:s(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),t(g,{subtype:"info"},{default:s(()=>[o("pre",null,h(JSON.stringify(n.backupCloud.configuration,void 0,2)),1)]),_:1})]))])}const Y=w(K,[["render",X],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),ee={name:"OpenwbBackupCloudProxy",props:{backupCloud:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],methods:{getBackupCloudComponent(){return console.debug(`loading backup cloud: ${this.backupCloud.type}`),L({loader:()=>x(Object.assign({"./nextcloud/backup_cloud.vue":()=>B(()=>import("./backup_cloud-30cf5664.js"),["assets/backup_cloud-30cf5664.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./nfs/backup_cloud.vue":()=>B(()=>import("./backup_cloud-b39f2e48.js"),["assets/backup_cloud-b39f2e48.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./onedrive/backup_cloud.vue":()=>B(()=>import("./backup_cloud-30fea215.js"),["assets/backup_cloud-30fea215.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./samba/backup_cloud.vue":()=>B(()=>import("./backup_cloud-c3181aad.js"),["assets/backup_cloud-c3181aad.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.backupCloud.type}/backup_cloud.vue`),errorComponent:Y})},updateConfiguration(n){this.$emit("update:configuration",n)},sendCommand(n){this.$emit("sendCommand",n)}}};function ne(n,e,l,b,r,a){const g=f("openwb-base-heading");return u(),m(W,null,[t(g,null,{default:s(()=>[i(' Einstellungen für Backup-Cloud Modul "'+h(l.backupCloud.name)+'" ',1)]),_:1}),(u(),C(T(a.getBackupCloudComponent()),{"backup-cloud":l.backupCloud,"onUpdate:configuration":e[0]||(e[0]=d=>a.updateConfiguration(d)),onSendCommand:e[1]||(e[1]=d=>a.sendCommand(d))},null,40,["backup-cloud"]))],64)}const te=w(ee,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]),oe={props:{monitoring:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},ie=w(oe,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/monitoring/MonitoringConfigMixin.vue"]]),se={name:"MonitoringConfigFallback",mixins:[ie]},ae={class:"monitoring-fallback"};function re(n,e,l,b,r,a){const g=f("openwb-base-alert"),d=f("openwb-base-textarea");return u(),m("div",ae,[t(g,{subtype:"warning"},{default:s(()=>[i(' Es wurde keine Konfigurationsseite für den Anbieter "'+h(n.monitoring.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),t(d,{title:"Konfiguration",subtype:"json","model-value":n.monitoring.configuration,"onUpdate:modelValue":e[0]||(e[0]=y=>n.updateConfiguration(y,"configuration"))},{help:s(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),t(g,{subtype:"info"},{default:s(()=>[o("pre",null,h(JSON.stringify(n.monitoring.configuration,void 0,2)),1)]),_:1})])}const le=w(se,[["render",re],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/monitoring/OpenwbMonitoringConfigFallback.vue"]]),ue={name:"OpenwbMonitoringProxy",props:{monitoring:{type:Object,required:!0}},emits:["update:configuration"],methods:{getMonitoringComponent(){return console.debug(`loading monitoring: ${this.monitoring.type}`),L({loader:()=>x(Object.assign({"./zabbix/monitoring.vue":()=>B(()=>import("./monitoring-f3474b05.js"),["assets/monitoring-f3474b05.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.monitoring.type}/monitoring.vue`),errorComponent:le})},updateConfiguration(n){this.$emit("update:configuration",n)}}};function de(n,e,l,b,r,a){const g=f("openwb-base-heading");return u(),m(W,null,[t(g,null,{default:s(()=>[i(' Einstellungen für Modul "'+h(l.monitoring.name)+'" ',1)]),_:1}),(u(),C(T(a.getMonitoringComponent()),{monitoring:l.monitoring,"onUpdate:configuration":e[0]||(e[0]=d=>a.updateConfiguration(d))},null,40,["monitoring"]))],64)}const pe=w(ue,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/monitoring/OpenwbMonitoringProxy.vue"]]);z.add(P,R,$,U,q);const ce={name:"OpenwbDataManagementView",components:{FontAwesomeIcon:H,OpenwbBackupCloudProxy:te,OpenwbMonitoringProxy:pe},mixins:[N],props:{installAssistantActive:{type:Boolean,required:!1,default:!1},showBackupCloudSection:{type:Boolean,required:!1,default:!0}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/configurable/backup_clouds","openWB/system/configurable/monitoring","openWB/system/backup_cloud/config","openWB/system/backup_cloud/backup_before_update","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/optional/monitoring/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,showRestoreSection:!this.installAssistantActive,selectedRestoreFile:void 0,restoreUploadDone:!1,selectedDataMigrationFile:void 0,dataMigrationUploadDone:!1,dataMigrationConfig:[{sectionName:"Ladepunkte",sectionComponents:[{key:"cp1",label:"Ladepunkt 1",validTypes:["chargePoint"]},{key:"cp2",label:"Ladepunkt 2",validTypes:["chargePoint"]},{key:"cp3",label:"Ladepunkt 3",validTypes:["chargePoint"]},{key:"cp4",label:"Ladepunkt 4",validTypes:["chargePoint"]},{key:"cp5",label:"Ladepunkt 5",validTypes:["chargePoint"]},{key:"cp6",label:"Ladepunkt 6",validTypes:["chargePoint"]},{key:"cp7",label:"Ladepunkt 7",validTypes:["chargePoint"]},{key:"cp8",label:"Ladepunkt 8",validTypes:["chargePoint"]}]},{sectionName:"Zähler",sectionComponents:[{key:"evu",label:"EVU",validTypes:["counter"]},{key:"consumer1",label:"Verbraucher 1",validTypes:["counter"]},{key:"consumer2",label:"Verbraucher 2",validTypes:["counter"]},{key:"consumer3",label:"Verbraucher 3",validTypes:["counter"]}]},{sectionName:"Wechselrichter",sectionComponents:[{key:"pvAll",label:"Wechselrichter (Summe)",validTypes:["inverter"],help:"Die 1.9er Version von openWB speichert lediglich die Summen-Leistung aller Wechselrichter."}]},{sectionName:"Batteriespeicher",sectionComponents:[{key:"bat",label:"Speicher 1",validTypes:["battery"]}]},{sectionName:"Fahrzeuge",sectionComponents:[{key:"ev1",label:"Fahrzeug von Ladepunkt 1",validTypes:["vehicle"]},{key:"ev2",label:"Fahrzeug von Ladepunkt 2",validTypes:["vehicle"]}]},{sectionName:"SmartHome 2.0",sectionComponents:[{key:"sh1",label:"Gerät 1",validTypes:["smartHome"]},{key:"sh2",label:"Gerät 2",validTypes:["smartHome"]},{key:"sh3",label:"Gerät 3",validTypes:["smartHome"]},{key:"sh4",label:"Gerät 4",validTypes:["smartHome"]},{key:"sh5",label:"Gerät 5",validTypes:["smartHome"]},{key:"sh6",label:"Gerät 6",validTypes:["smartHome"]},{key:"sh7",label:"Gerät 7",validTypes:["smartHome"]},{key:"sh8",label:"Gerät 8",validTypes:["smartHome"]},{key:"sh9",label:"Gerät 9",validTypes:["smartHome"]}]}],dataMigrationMapping:{cp1:void 0,cp2:void 0,cp3:void 0,cp4:void 0,cp5:void 0,cp6:void 0,cp7:void 0,cp8:void 0,evu:void 0,pvAll:void 0,bat:void 0,consumer1:void 0,consumer2:void 0,consumer3:void 0,sh1:void 0,sh2:void 0,sh3:void 0,sh4:void 0,sh5:void 0,sh6:void 0,sh7:void 0,sh8:void 0,sh9:void 0,ev1:void 0,ev2:void 0}}},computed:{backupCloudList(){return this.$store.state.mqtt["openWB/system/configurable/backup_clouds"]},componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},chargePointOptions(){let n=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const l of Object.values(n))e.push({value:l.id,text:l.name});return e},counterOptions(){var n=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&n.push({value:e.id,text:e.name});return n},inverterOptions(){var n=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&n.push({value:e.id,text:e.name});return n},monitoringList(){return this.$store.state.mqtt["openWB/system/configurable/monitoring"]},batteryOptions(){var n=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&n.push({value:e.id,text:e.name});return n},vehicleOptions(){let n=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[l,b]of Object.entries(n)){let r=parseInt(l.match(/\/(\d\d?)\//)[1]);e.push({value:r,text:b})}return e},smartHomeOptions(){let n=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[l,b]of Object.entries(n))if(b==1){let r=parseInt(l.match(/\/(\d\d?)\//)[1]);e.push({value:r,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${r}/device_name`]})}return e}},methods:{isComponentType(n,e){return n.split("_").includes(e)},getBackupCloudDefaultConfiguration(n){const e=this.backupCloudList.find(l=>l.value==n);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for backup cloud type!",n),{})},sendSystemCommand(n,e={}){this.$emit("sendCommand",{command:n,data:e})},getMigrationOptions(n){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return n.includes("chargePoint")&&e.push(...this.chargePointOptions),n.includes("counter")&&e.push(...this.counterOptions),n.includes("inverter")&&e.push(...this.inverterOptions),n.includes("battery")&&e.push(...this.batteryOptions),n.includes("vehicle")&&e.push(...this.vehicleOptions),n.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(n,e){console.debug("updateConfiguration",n,e),this.updateState(n,e.value,e.object)},updateSelectedBackupCloud(n){this.updateState("openWB/system/backup_cloud/config",n,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(n))},updateSelectedRestoreFile(n){this.selectedRestoreFile=n.target.files[0]},updateSelectedDataMigrationFile(n){this.selectedDataMigrationFile=n.target.files[0]},uploadFile(n,e,l){return new Promise(b=>{if(e!==void 0){this.$root.postClientMessage("Hochladen der Datei gestartet.","info");let r=new FormData;r.append("file",e),r.append("target",n),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",r,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(l,"success"),b(!0)}).catch(a=>{if(a.response){console.error(a.response.status,a.response.data);var g="Hochladen der Datei fehlgeschlagen!
"+a.response.status+": "+a.response.data}else a.request?(console.error(a.request),g+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",a.message),g+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(g,"danger"),b(!1)})}else console.error("no file selected for upload"),b(!1)})},getMonitoringDefaultConfiguration(n){const e=this.monitoringList.find(l=>l.value==n);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for monitoring type!",n),{})},updateSelectedMonitoring(n){this.updateState("openWB/optional/monitoring/config",n,"type"),this.updateState("openWB/optional/monitoring/config",this.getMonitoringDefaultConfiguration(n))},async uploadRestoreFile(){const n="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,n)},async uploadDataMigrationFile(){const n="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,n)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)},factoryReset(){this.sendSystemCommand("factoryReset",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},me={class:"system"},ge={key:1},fe={name:"backupForm"},be={class:"row justify-content-center"},he={class:"col-md-4 d-flex py-1 justify-content-center"},ke={key:0,name:"restoreForm"},ye={class:"input-group"},ve={class:"input-group-prepend"},_e={class:"input-group-text"},we={class:"custom-file"},Ce={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},Be={class:"input-group-append"},De=["disabled"],Se={class:"row justify-content-center"},Me={class:"col-md-4 d-flex py-1 justify-content-center"},We={key:1,name:"cloudBackupForm"},Oe={key:0},Fe={name:"dataMigrationForm"},Ae={class:"input-group"},xe={class:"input-group-prepend"},Le={class:"input-group-text"},Te={class:"custom-file"},Ve={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},je={class:"input-group-append"},Ee=["disabled"],ze={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"},Re={key:1,name:"resetForm"},$e={class:"row justify-content-center"},Ue={class:"col-md-4 d-flex py-1 justify-content-center"},qe={key:2,name:"monitoringConfigured"},He={key:0},Ne={key:1},Ie={key:0};function Ge(n,e,l,b,r,a){const g=f("openwb-base-button-group-input"),d=f("openwb-base-alert"),y=f("openwb-base-heading"),v=f("font-awesome-icon"),D=f("openwb-base-click-button"),O=f("openwb-base-select-input"),V=f("openwb-base-button-input"),j=f("openwb-backup-cloud-proxy"),F=f("openwb-base-submit-buttons"),S=f("openwb-base-card"),E=f("openwb-monitoring-proxy");return u(),m("div",me,[l.installAssistantActive?_("",!0):(u(),C(d,{key:0,subtype:"danger"},{default:s(()=>[e[21]||(e[21]=o("h2",null,"Achtung!",-1)),e[22]||(e[22]=o("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),t(g,{modelValue:r.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=p=>r.warningAcknowledged=p),title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"])]),_:1})),r.warningAcknowledged||l.installAssistantActive?(u(),m("div",ge,[t(S,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!l.installAssistantActive},{default:s(()=>{var p,k;return[o("form",fe,[t(y,null,{default:s(()=>e[23]||(e[23]=[i("Sicherung")])),_:1}),t(d,{subtype:"danger"},{default:s(()=>e[24]||(e[24]=[i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')])),_:1}),t(d,{subtype:"info"},{default:s(()=>e[25]||(e[25]=[i(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),o("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),i(" heruntergeladen werden. Beim Herunterladen bitte darauf achten, dass die Datei mit der Endung .tar.gz gespeichert wird. Ggf. das automatische Entpacken des Browsers deaktivieren. ")])),_:1}),o("div",be,[o("div",he,[t(D,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=c=>a.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:s(()=>[e[26]||(e[26]=i(" Sicherung erstellen ")),t(v,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),r.showRestoreSection?(u(),m("form",ke,[e[31]||(e[31]=o("hr",null,null,-1)),t(y,null,{default:s(()=>e[27]||(e[27]=[i("Wiederherstellung")])),_:1}),t(d,{subtype:"danger"},{default:s(()=>e[28]||(e[28]=[i(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),o("br",null,null,-1),i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')])),_:1}),o("div",ye,[o("div",ve,[o("div",_e,[t(v,{"fixed-width":"",icon:["fas","file-archive"]})])]),o("div",we,[o("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=c=>a.updateSelectedRestoreFile(c))},null,32),o("label",Ce,h(r.selectedRestoreFile?r.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),o("div",Be,[o("button",{class:M(["btn",r.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!r.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=c=>a.uploadRestoreFile())},[e[29]||(e[29]=i(" Hochladen ")),t(v,{"fixed-width":"",icon:["fas","upload"]})],10,De)])]),o("div",Se,[o("div",Me,[t(D,{class:M(r.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!r.restoreUploadDone,onButtonClicked:e[4]||(e[4]=c=>a.restoreBackup())},{default:s(()=>[e[30]||(e[30]=i(" Wiederherstellung starten ")),t(v,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])):_("",!0),l.showBackupCloudSection?(u(),m("form",We,[e[35]||(e[35]=o("hr",null,null,-1)),t(y,null,{default:s(()=>e[32]||(e[32]=[i(" Automatische Sicherung in einen Cloud-Dienst ")])),_:1}),t(d,{subtype:"info"},{default:s(()=>e[33]||(e[33]=[i(" Ist die openWB als primary konfiguriert, wird zwischen Mitternacht und 5:00 Uhr automatisch eine Sicherung erstellt und in den angegebenen Cloud-Dienst (nicht openWB Cloud!) hochgeladen. Ist kein Cloud-Dienst konfiguriert, wird keine automatische Sicherung erstellt. Die automatische Sicherung kann unabhängig von der openWB Cloud genutzt werden."),o("br",null,null,-1),i(" Die manuelle Cloud-Sicherung und -falls aktiviert- die Sicherung vor einem Update werden sowohl von einer primary als auch von einer secondary durchgeführt."),o("br",null,null,-1),i(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),o("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),i(" . ")])),_:1}),t(O,{class:"mb-2",title:"Backup-Cloud",options:a.backupCloudList,"model-value":(p=n.$store.state.mqtt["openWB/system/backup_cloud/config"])==null?void 0:p.type,"onUpdate:modelValue":e[5]||(e[5]=c=>a.updateSelectedBackupCloud(c))},null,8,["options","model-value"]),(k=n.$store.state.mqtt["openWB/system/backup_cloud/config"])!=null&&k.type?(u(),m("div",Oe,[t(g,{title:"Sicherung vor System-Update",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.$store.state.mqtt["openWB/system/backup_cloud/backup_before_update"],"onUpdate:modelValue":e[6]||(e[6]=c=>n.updateState("openWB/system/backup_cloud/backup_before_update",c))},{help:s(()=>e[34]||(e[34]=[i(" Ist diese Option aktiviert, dann wird vor jedem System-Update automatisch eine Sicherung erstellt und diese in die Backup-Cloud hochgeladen. ")])),_:1},8,["model-value"]),t(V,{title:"Manuelle Cloud-Sicherung","button-text":"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[7]||(e[7]=c=>a.sendSystemCommand("createCloudBackup",{}))}),t(j,{"backup-cloud":n.$store.state.mqtt["openWB/system/backup_cloud/config"],"onUpdate:configuration":e[8]||(e[8]=c=>a.updateConfiguration("openWB/system/backup_cloud/config",c)),onSendCommand:e[9]||(e[9]=c=>a.sendSystemCommand(c.command,c.args))},null,8,["backup-cloud"])])):_("",!0),t(F,{"form-name":"cloudBackupForm","hide-reset":!0,"hide-defaults":!0,onSave:e[10]||(e[10]=c=>n.$emit("save")),onReset:e[11]||(e[11]=c=>n.$emit("reset")),onDefaults:e[12]||(e[12]=c=>n.$emit("defaults"))})])):_("",!0)]}),_:1},8,["collapsed"]),!l.installAssistantActive&&!n.$store.state.mqtt["openWB/general/extern"]?(u(),C(S,{key:0,title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:s(()=>[o("form",Fe,[t(d,{subtype:"info"},{default:s(()=>e[36]||(e[36]=[i(" Hier kann die Sicherung aus den älteren Software Versionen 1.9.303 oder 1.9.304 hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren."),o("br",null,null,-1),i(" Ein Import aus Versionen kleiner als 1.9.303 ist nicht möglich. Falls eine Datenübernahme aus 1.9er Versionen gewünscht ist, muss erst ein Upgrade auf 1.9.303 oder 1.9.304 durchgeführt werden! Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden. ")])),_:1}),t(d,{subtype:"danger"},{default:s(()=>e[37]||(e[37]=[i(" Die Portierung kann bei vielen historischen Daten von mehreren Jahren durchaus bis zu 30 Minuten dauern. Die openWB in dieser Zeit bitte nicht herunterfahren! Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist."),o("br",null,null,-1),i(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),o("br",null,null,-1),i(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")])),_:1}),o("div",Ae,[o("div",xe,[o("div",Le,[t(v,{"fixed-width":"",icon:["fas","file-archive"]})])]),o("div",Te,[o("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[13]||(e[13]=p=>a.updateSelectedDataMigrationFile(p))},null,32),o("label",Ve,h(r.selectedDataMigrationFile?r.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),o("div",je,[o("button",{class:M(["btn",r.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!r.selectedDataMigrationFile,type:"button",onClick:e[14]||(e[14]=p=>a.uploadDataMigrationFile())},[e[38]||(e[38]=i(" Hochladen ")),t(v,{"fixed-width":"",icon:["fas","upload"]})],10,Ee)])]),t(y,null,{default:s(()=>e[39]||(e[39]=[i(" Zuordnung der Komponenten ")])),_:1}),(u(!0),m(W,null,A(r.dataMigrationConfig,p=>(u(),m("div",{key:p.sectionName},[t(y,null,{default:s(()=>[i(h(p.sectionName),1)]),_:2},1024),(u(!0),m(W,null,A(p.sectionComponents,k=>(u(),C(O,{key:k.key,modelValue:r.dataMigrationMapping[k.key],"onUpdate:modelValue":c=>r.dataMigrationMapping[k.key]=c,title:k.label,options:a.getMigrationOptions(k.validTypes)},I({_:2},[k.help?{name:"help",fn:s(()=>[i(h(k.help),1)]),key:"0"}:void 0]),1032,["modelValue","onUpdate:modelValue","title","options"]))),128))]))),128)),o("div",ze,[o("div",Pe,[t(D,{class:M(r.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!r.dataMigrationUploadDone,onButtonClicked:e[15]||(e[15]=p=>a.dataMigration())},{default:s(()=>[e[40]||(e[40]=i(" Datenübernahme starten ")),t(v,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1})):_("",!0),l.installAssistantActive?_("",!0):(u(),m("form",Re,[t(S,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:s(()=>[o("div",$e,[o("div",Ue,[t(D,{class:"btn-danger clickable",onButtonClicked:e[16]||(e[16]=p=>a.factoryReset())},{default:s(()=>[t(v,{"fixed-width":"",icon:["fas","skull-crossbones"]}),e[42]||(e[42]=i(" Zurücksetzen ")),t(v,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:s(()=>[t(d,{subtype:"danger"},{default:s(()=>e[41]||(e[41]=[i(" Alle Einstellungen, angelegte Geräte/Komponenten, Ladepunkte und Fahrzeuge, etc., Tages-, Monats- und Jahresauswertungen sowie das Ladeprotokoll werden unwiederbringlich gelöscht. Auch die Vorkonfiguration im Auslieferungszustand wird gelöscht. Die openWB muss danach komplett neu eingerichtet werden. Die openWB wird hierfür automatisch neu gestartet. Bitte erstelle vor dem Zurücksetzen eine Sicherung! ")])),_:1})]),_:1})])),l.installAssistantActive?_("",!0):(u(),m("form",qe,[t(S,{title:"Monitoring",subtype:"success",collapsible:!0,collapsed:!0},{footer:s(()=>[t(F,{"form-name":n.monitoringConfigured,"hide-defaults":!0,onSave:e[19]||(e[19]=p=>n.$emit("save")),onReset:e[20]||(e[20]=p=>n.$emit("reset"))},null,8,["form-name"])]),default:s(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",He,[t(d,{subtype:"info"},{default:s(()=>e[43]||(e[43]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(u(),m("div",Ne,[t(d,{subtype:"info"},{default:s(()=>e[44]||(e[44]=[i(" Das Monitoring informiert Dich sofort per E-Mail, wenn eine Deiner Komponenten oder Ladepunkte ein Problem hat oder die openWB nicht mehr erreichbar ist. ")])),_:1}),t(O,{class:"mb-2",title:"Anbieter",options:a.monitoringList,"model-value":n.$store.state.mqtt["openWB/optional/monitoring/config"]?n.$store.state.mqtt["openWB/optional/monitoring/config"].type:"","onUpdate:modelValue":e[17]||(e[17]=p=>a.updateSelectedMonitoring(p))},null,8,["options","model-value"]),n.$store.state.mqtt["openWB/optional/monitoring/config"]&&n.$store.state.mqtt["openWB/optional/monitoring/config"].type?(u(),m("div",Ie,[t(E,{monitoring:n.$store.state.mqtt["openWB/optional/monitoring/config"],"onUpdate:configuration":e[18]||(e[18]=p=>a.updateConfiguration("openWB/optional/monitoring/config",p))},null,8,["monitoring"])])):_("",!0)]))]),_:1})]))])):_("",!0)])}const Je=w(ce,[["render",Ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]),Ye=Object.freeze(Object.defineProperty({__proto__:null,default:Je},Symbol.toStringTag,{value:"Module"}));export{J as B,Je as D,ie as M,Ye as a}; +import{l as z,an as P,ao as R,ap as $,aq as q,ar as U,F as H}from"./vendor-fortawesome-9d7cfdfb.js";import{_ as B,C as N}from"./index-b236cee5.js";import{_ as x}from"./dynamic-import-helper-be004503.js";import{_ as w,u as f,l as u,m,x as C,E as s,B as i,F as h,G as t,A as o,a1 as L,a2 as T,N as W,z as _,q as M,M as A,D as I}from"./vendor-ad7c30fd.js";const G={props:{backupCloud:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})},sendSystemCommand(n,e={}){this.$emit("sendCommand",{command:n,data:e})}}},J=w(G,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/BackupCloudConfigMixin.vue"]]),K={name:"BackupCloudConfigFallback",mixins:[J]},Z={class:"backup-cloud-fallback"},Q={key:1};function X(n,e,l,b,r,a){const g=f("openwb-base-alert"),d=f("openwb-base-textarea");return u(),m("div",Z,[Object.keys(n.backupCloud.configuration).length==0?(u(),C(g,{key:0,subtype:"info"},{default:s(()=>[i(' Die Backup-Cloud "'+h(n.backupCloud.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(u(),m("div",Q,[t(g,{subtype:"warning"},{default:s(()=>[i(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+h(n.backupCloud.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),t(d,{title:"Konfiguration",subtype:"json","model-value":n.backupCloud.configuration,"onUpdate:modelValue":e[0]||(e[0]=y=>n.updateConfiguration(y,"configuration"))},{help:s(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),t(g,{subtype:"info"},{default:s(()=>[o("pre",null,h(JSON.stringify(n.backupCloud.configuration,void 0,2)),1)]),_:1})]))])}const Y=w(K,[["render",X],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),ee={name:"OpenwbBackupCloudProxy",props:{backupCloud:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],methods:{getBackupCloudComponent(){return console.debug(`loading backup cloud: ${this.backupCloud.type}`),L({loader:()=>x(Object.assign({"./nextcloud/backup_cloud.vue":()=>B(()=>import("./backup_cloud-42fd7d1e.js"),["assets/backup_cloud-42fd7d1e.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./nfs/backup_cloud.vue":()=>B(()=>import("./backup_cloud-b4673e75.js"),["assets/backup_cloud-b4673e75.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./onedrive/backup_cloud.vue":()=>B(()=>import("./backup_cloud-cbe0285e.js"),["assets/backup_cloud-cbe0285e.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./samba/backup_cloud.vue":()=>B(()=>import("./backup_cloud-36fc78b8.js"),["assets/backup_cloud-36fc78b8.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.backupCloud.type}/backup_cloud.vue`),errorComponent:Y})},updateConfiguration(n){this.$emit("update:configuration",n)},sendCommand(n){this.$emit("sendCommand",n)}}};function ne(n,e,l,b,r,a){const g=f("openwb-base-heading");return u(),m(W,null,[t(g,null,{default:s(()=>[i(' Einstellungen für Backup-Cloud Modul "'+h(l.backupCloud.name)+'" ',1)]),_:1}),(u(),C(T(a.getBackupCloudComponent()),{"backup-cloud":l.backupCloud,"onUpdate:configuration":e[0]||(e[0]=d=>a.updateConfiguration(d)),onSendCommand:e[1]||(e[1]=d=>a.sendCommand(d))},null,40,["backup-cloud"]))],64)}const te=w(ee,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]),oe={props:{monitoring:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},ie=w(oe,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/monitoring/MonitoringConfigMixin.vue"]]),se={name:"MonitoringConfigFallback",mixins:[ie]},ae={class:"monitoring-fallback"};function re(n,e,l,b,r,a){const g=f("openwb-base-alert"),d=f("openwb-base-textarea");return u(),m("div",ae,[t(g,{subtype:"warning"},{default:s(()=>[i(' Es wurde keine Konfigurationsseite für den Anbieter "'+h(n.monitoring.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),t(d,{title:"Konfiguration",subtype:"json","model-value":n.monitoring.configuration,"onUpdate:modelValue":e[0]||(e[0]=y=>n.updateConfiguration(y,"configuration"))},{help:s(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),t(g,{subtype:"info"},{default:s(()=>[o("pre",null,h(JSON.stringify(n.monitoring.configuration,void 0,2)),1)]),_:1})])}const le=w(se,[["render",re],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/monitoring/OpenwbMonitoringConfigFallback.vue"]]),ue={name:"OpenwbMonitoringProxy",props:{monitoring:{type:Object,required:!0}},emits:["update:configuration"],methods:{getMonitoringComponent(){return console.debug(`loading monitoring: ${this.monitoring.type}`),L({loader:()=>x(Object.assign({"./zabbix/monitoring.vue":()=>B(()=>import("./monitoring-df87d8aa.js"),["assets/monitoring-df87d8aa.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.monitoring.type}/monitoring.vue`),errorComponent:le})},updateConfiguration(n){this.$emit("update:configuration",n)}}};function de(n,e,l,b,r,a){const g=f("openwb-base-heading");return u(),m(W,null,[t(g,null,{default:s(()=>[i(' Einstellungen für Modul "'+h(l.monitoring.name)+'" ',1)]),_:1}),(u(),C(T(a.getMonitoringComponent()),{monitoring:l.monitoring,"onUpdate:configuration":e[0]||(e[0]=d=>a.updateConfiguration(d))},null,40,["monitoring"]))],64)}const pe=w(ue,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/monitoring/OpenwbMonitoringProxy.vue"]]);z.add(P,R,$,q,U);const ce={name:"OpenwbDataManagementView",components:{FontAwesomeIcon:H,OpenwbBackupCloudProxy:te,OpenwbMonitoringProxy:pe},mixins:[N],props:{installAssistantActive:{type:Boolean,required:!1,default:!1},showBackupCloudSection:{type:Boolean,required:!1,default:!0}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/configurable/backup_clouds","openWB/system/configurable/monitoring","openWB/system/backup_cloud/config","openWB/system/backup_cloud/backup_before_update","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/optional/monitoring/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,showRestoreSection:!this.installAssistantActive,selectedRestoreFile:void 0,restoreUploadDone:!1,selectedDataMigrationFile:void 0,dataMigrationUploadDone:!1,dataMigrationConfig:[{sectionName:"Ladepunkte",sectionComponents:[{key:"cp1",label:"Ladepunkt 1",validTypes:["chargePoint"]},{key:"cp2",label:"Ladepunkt 2",validTypes:["chargePoint"]},{key:"cp3",label:"Ladepunkt 3",validTypes:["chargePoint"]},{key:"cp4",label:"Ladepunkt 4",validTypes:["chargePoint"]},{key:"cp5",label:"Ladepunkt 5",validTypes:["chargePoint"]},{key:"cp6",label:"Ladepunkt 6",validTypes:["chargePoint"]},{key:"cp7",label:"Ladepunkt 7",validTypes:["chargePoint"]},{key:"cp8",label:"Ladepunkt 8",validTypes:["chargePoint"]}]},{sectionName:"Zähler",sectionComponents:[{key:"evu",label:"EVU",validTypes:["counter"]},{key:"consumer1",label:"Verbraucher 1",validTypes:["counter"]},{key:"consumer2",label:"Verbraucher 2",validTypes:["counter"]},{key:"consumer3",label:"Verbraucher 3",validTypes:["counter"]}]},{sectionName:"Wechselrichter",sectionComponents:[{key:"pvAll",label:"Wechselrichter (Summe)",validTypes:["inverter"],help:"Die 1.9er Version von openWB speichert lediglich die Summen-Leistung aller Wechselrichter."}]},{sectionName:"Batteriespeicher",sectionComponents:[{key:"bat",label:"Speicher 1",validTypes:["battery"]}]},{sectionName:"Fahrzeuge",sectionComponents:[{key:"ev1",label:"Fahrzeug von Ladepunkt 1",validTypes:["vehicle"]},{key:"ev2",label:"Fahrzeug von Ladepunkt 2",validTypes:["vehicle"]}]},{sectionName:"SmartHome 2.0",sectionComponents:[{key:"sh1",label:"Gerät 1",validTypes:["smartHome"]},{key:"sh2",label:"Gerät 2",validTypes:["smartHome"]},{key:"sh3",label:"Gerät 3",validTypes:["smartHome"]},{key:"sh4",label:"Gerät 4",validTypes:["smartHome"]},{key:"sh5",label:"Gerät 5",validTypes:["smartHome"]},{key:"sh6",label:"Gerät 6",validTypes:["smartHome"]},{key:"sh7",label:"Gerät 7",validTypes:["smartHome"]},{key:"sh8",label:"Gerät 8",validTypes:["smartHome"]},{key:"sh9",label:"Gerät 9",validTypes:["smartHome"]}]}],dataMigrationMapping:{cp1:void 0,cp2:void 0,cp3:void 0,cp4:void 0,cp5:void 0,cp6:void 0,cp7:void 0,cp8:void 0,evu:void 0,pvAll:void 0,bat:void 0,consumer1:void 0,consumer2:void 0,consumer3:void 0,sh1:void 0,sh2:void 0,sh3:void 0,sh4:void 0,sh5:void 0,sh6:void 0,sh7:void 0,sh8:void 0,sh9:void 0,ev1:void 0,ev2:void 0}}},computed:{backupCloudList(){return this.$store.state.mqtt["openWB/system/configurable/backup_clouds"]},componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},chargePointOptions(){let n=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const l of Object.values(n))e.push({value:l.id,text:l.name});return e},counterOptions(){var n=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&n.push({value:e.id,text:e.name});return n},inverterOptions(){var n=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&n.push({value:e.id,text:e.name});return n},monitoringList(){return this.$store.state.mqtt["openWB/system/configurable/monitoring"]},batteryOptions(){var n=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&n.push({value:e.id,text:e.name});return n},vehicleOptions(){let n=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[l,b]of Object.entries(n)){let r=parseInt(l.match(/\/(\d\d?)\//)[1]);e.push({value:r,text:b})}return e},smartHomeOptions(){let n=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[l,b]of Object.entries(n))if(b==1){let r=parseInt(l.match(/\/(\d\d?)\//)[1]);e.push({value:r,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${r}/device_name`]})}return e}},methods:{isComponentType(n,e){return n.split("_").includes(e)},getBackupCloudDefaultConfiguration(n){const e=this.backupCloudList.find(l=>l.value==n);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for backup cloud type!",n),{})},sendSystemCommand(n,e={}){this.$emit("sendCommand",{command:n,data:e})},getMigrationOptions(n){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return n.includes("chargePoint")&&e.push(...this.chargePointOptions),n.includes("counter")&&e.push(...this.counterOptions),n.includes("inverter")&&e.push(...this.inverterOptions),n.includes("battery")&&e.push(...this.batteryOptions),n.includes("vehicle")&&e.push(...this.vehicleOptions),n.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(n,e){console.debug("updateConfiguration",n,e),this.updateState(n,e.value,e.object)},updateSelectedBackupCloud(n){this.updateState("openWB/system/backup_cloud/config",n,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(n))},updateSelectedRestoreFile(n){this.selectedRestoreFile=n.target.files[0]},updateSelectedDataMigrationFile(n){this.selectedDataMigrationFile=n.target.files[0]},uploadFile(n,e,l){return new Promise(b=>{if(e!==void 0){this.$root.postClientMessage("Hochladen der Datei gestartet.","info");let r=new FormData;r.append("file",e),r.append("target",n),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",r,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(l,"success"),b(!0)}).catch(a=>{if(a.response){console.error(a.response.status,a.response.data);var g="Hochladen der Datei fehlgeschlagen!
"+a.response.status+": "+a.response.data}else a.request?(console.error(a.request),g+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",a.message),g+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(g,"danger"),b(!1)})}else console.error("no file selected for upload"),b(!1)})},getMonitoringDefaultConfiguration(n){const e=this.monitoringList.find(l=>l.value==n);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for monitoring type!",n),{})},updateSelectedMonitoring(n){this.updateState("openWB/optional/monitoring/config",n,"type"),this.updateState("openWB/optional/monitoring/config",this.getMonitoringDefaultConfiguration(n))},async uploadRestoreFile(){const n="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,n)},async uploadDataMigrationFile(){const n="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,n)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)},factoryReset(){this.sendSystemCommand("factoryReset",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},me={class:"system"},ge={key:1},fe={name:"backupForm"},be={class:"row justify-content-center"},he={class:"col-md-4 d-flex py-1 justify-content-center"},ke={key:0,name:"restoreForm"},ye={class:"input-group"},ve={class:"input-group-prepend"},_e={class:"input-group-text"},we={class:"custom-file"},Ce={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},Be={class:"input-group-append"},De=["disabled"],Se={class:"row justify-content-center"},Me={class:"col-md-4 d-flex py-1 justify-content-center"},We={key:1,name:"cloudBackupForm"},Oe={key:0},Fe={name:"dataMigrationForm"},Ae={class:"input-group"},xe={class:"input-group-prepend"},Le={class:"input-group-text"},Te={class:"custom-file"},Ve={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Ee={class:"input-group-append"},je=["disabled"],ze={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"},Re={key:1,name:"resetForm"},$e={class:"row justify-content-center"},qe={class:"col-md-4 d-flex py-1 justify-content-center"},Ue={key:2,name:"monitoringConfigured"},He={key:0},Ne={key:1},Ie={key:0};function Ge(n,e,l,b,r,a){const g=f("openwb-base-button-group-input"),d=f("openwb-base-alert"),y=f("openwb-base-heading"),v=f("font-awesome-icon"),D=f("openwb-base-click-button"),O=f("openwb-base-select-input"),V=f("openwb-base-button-input"),E=f("openwb-backup-cloud-proxy"),F=f("openwb-base-submit-buttons"),S=f("openwb-base-card"),j=f("openwb-monitoring-proxy");return u(),m("div",me,[l.installAssistantActive?_("",!0):(u(),C(d,{key:0,subtype:"danger"},{default:s(()=>[e[21]||(e[21]=o("h2",null,"Achtung!",-1)),e[22]||(e[22]=o("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),t(g,{modelValue:r.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=p=>r.warningAcknowledged=p),title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"])]),_:1})),r.warningAcknowledged||l.installAssistantActive?(u(),m("div",ge,[t(S,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!l.installAssistantActive},{default:s(()=>{var p,k;return[o("form",fe,[t(y,null,{default:s(()=>e[23]||(e[23]=[i("Sicherung")])),_:1}),t(d,{subtype:"danger"},{default:s(()=>e[24]||(e[24]=[i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')])),_:1}),t(d,{subtype:"info"},{default:s(()=>e[25]||(e[25]=[i(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),o("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),i(" heruntergeladen werden. Beim Herunterladen bitte darauf achten, dass die Datei mit der Endung .tar.gz gespeichert wird. Ggf. das automatische Entpacken des Browsers deaktivieren. ")])),_:1}),o("div",be,[o("div",he,[t(D,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=c=>a.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:s(()=>[e[26]||(e[26]=i(" Sicherung erstellen ")),t(v,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),r.showRestoreSection?(u(),m("form",ke,[e[31]||(e[31]=o("hr",null,null,-1)),t(y,null,{default:s(()=>e[27]||(e[27]=[i("Wiederherstellung")])),_:1}),t(d,{subtype:"danger"},{default:s(()=>e[28]||(e[28]=[i(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),o("br",null,null,-1),i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')])),_:1}),o("div",ye,[o("div",ve,[o("div",_e,[t(v,{"fixed-width":"",icon:["fas","file-archive"]})])]),o("div",we,[o("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=c=>a.updateSelectedRestoreFile(c))},null,32),o("label",Ce,h(r.selectedRestoreFile?r.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),o("div",Be,[o("button",{class:M(["btn",r.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!r.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=c=>a.uploadRestoreFile())},[e[29]||(e[29]=i(" Hochladen ")),t(v,{"fixed-width":"",icon:["fas","upload"]})],10,De)])]),o("div",Se,[o("div",Me,[t(D,{class:M(r.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!r.restoreUploadDone,onButtonClicked:e[4]||(e[4]=c=>a.restoreBackup())},{default:s(()=>[e[30]||(e[30]=i(" Wiederherstellung starten ")),t(v,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])):_("",!0),l.showBackupCloudSection?(u(),m("form",We,[e[35]||(e[35]=o("hr",null,null,-1)),t(y,null,{default:s(()=>e[32]||(e[32]=[i(" Automatische Sicherung in einen Cloud-Dienst ")])),_:1}),t(d,{subtype:"info"},{default:s(()=>e[33]||(e[33]=[i(" Ist die openWB als primary konfiguriert, wird zwischen Mitternacht und 5:00 Uhr automatisch eine Sicherung erstellt und in den angegebenen Cloud-Dienst (nicht openWB Cloud!) hochgeladen. Ist kein Cloud-Dienst konfiguriert, wird keine automatische Sicherung erstellt. Die automatische Sicherung kann unabhängig von der openWB Cloud genutzt werden."),o("br",null,null,-1),i(" Die manuelle Cloud-Sicherung und -falls aktiviert- die Sicherung vor einem Update werden sowohl von einer primary als auch von einer secondary durchgeführt."),o("br",null,null,-1),i(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),o("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),i(" . ")])),_:1}),t(O,{class:"mb-2",title:"Backup-Cloud",options:a.backupCloudList,"model-value":(p=n.$store.state.mqtt["openWB/system/backup_cloud/config"])==null?void 0:p.type,"onUpdate:modelValue":e[5]||(e[5]=c=>a.updateSelectedBackupCloud(c))},null,8,["options","model-value"]),(k=n.$store.state.mqtt["openWB/system/backup_cloud/config"])!=null&&k.type?(u(),m("div",Oe,[t(g,{title:"Sicherung vor System-Update",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.$store.state.mqtt["openWB/system/backup_cloud/backup_before_update"],"onUpdate:modelValue":e[6]||(e[6]=c=>n.updateState("openWB/system/backup_cloud/backup_before_update",c))},{help:s(()=>e[34]||(e[34]=[i(" Ist diese Option aktiviert, dann wird vor jedem System-Update automatisch eine Sicherung erstellt und diese in die Backup-Cloud hochgeladen. ")])),_:1},8,["model-value"]),t(V,{title:"Manuelle Cloud-Sicherung","button-text":"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[7]||(e[7]=c=>a.sendSystemCommand("createCloudBackup",{}))}),t(E,{"backup-cloud":n.$store.state.mqtt["openWB/system/backup_cloud/config"],"onUpdate:configuration":e[8]||(e[8]=c=>a.updateConfiguration("openWB/system/backup_cloud/config",c)),onSendCommand:e[9]||(e[9]=c=>a.sendSystemCommand(c.command,c.args))},null,8,["backup-cloud"])])):_("",!0),t(F,{"form-name":"cloudBackupForm","hide-reset":!0,"hide-defaults":!0,onSave:e[10]||(e[10]=c=>n.$emit("save")),onReset:e[11]||(e[11]=c=>n.$emit("reset")),onDefaults:e[12]||(e[12]=c=>n.$emit("defaults"))})])):_("",!0)]}),_:1},8,["collapsed"]),!l.installAssistantActive&&!n.$store.state.mqtt["openWB/general/extern"]?(u(),C(S,{key:0,title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:s(()=>[o("form",Fe,[t(d,{subtype:"info"},{default:s(()=>e[36]||(e[36]=[i(" Hier kann die Sicherung aus den älteren Software Versionen 1.9.303 oder 1.9.304 hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren."),o("br",null,null,-1),i(" Ein Import aus Versionen kleiner als 1.9.303 ist nicht möglich. Falls eine Datenübernahme aus 1.9er Versionen gewünscht ist, muss erst ein Upgrade auf 1.9.303 oder 1.9.304 durchgeführt werden! Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden. ")])),_:1}),t(d,{subtype:"danger"},{default:s(()=>e[37]||(e[37]=[i(" Die Portierung kann bei vielen historischen Daten von mehreren Jahren durchaus bis zu 30 Minuten dauern. Die openWB in dieser Zeit bitte nicht herunterfahren! Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist."),o("br",null,null,-1),i(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),o("br",null,null,-1),i(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")])),_:1}),o("div",Ae,[o("div",xe,[o("div",Le,[t(v,{"fixed-width":"",icon:["fas","file-archive"]})])]),o("div",Te,[o("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[13]||(e[13]=p=>a.updateSelectedDataMigrationFile(p))},null,32),o("label",Ve,h(r.selectedDataMigrationFile?r.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),o("div",Ee,[o("button",{class:M(["btn",r.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!r.selectedDataMigrationFile,type:"button",onClick:e[14]||(e[14]=p=>a.uploadDataMigrationFile())},[e[38]||(e[38]=i(" Hochladen ")),t(v,{"fixed-width":"",icon:["fas","upload"]})],10,je)])]),t(y,null,{default:s(()=>e[39]||(e[39]=[i(" Zuordnung der Komponenten ")])),_:1}),(u(!0),m(W,null,A(r.dataMigrationConfig,p=>(u(),m("div",{key:p.sectionName},[t(y,null,{default:s(()=>[i(h(p.sectionName),1)]),_:2},1024),(u(!0),m(W,null,A(p.sectionComponents,k=>(u(),C(O,{key:k.key,modelValue:r.dataMigrationMapping[k.key],"onUpdate:modelValue":c=>r.dataMigrationMapping[k.key]=c,title:k.label,options:a.getMigrationOptions(k.validTypes)},I({_:2},[k.help?{name:"help",fn:s(()=>[i(h(k.help),1)]),key:"0"}:void 0]),1032,["modelValue","onUpdate:modelValue","title","options"]))),128))]))),128)),o("div",ze,[o("div",Pe,[t(D,{class:M(r.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!r.dataMigrationUploadDone,onButtonClicked:e[15]||(e[15]=p=>a.dataMigration())},{default:s(()=>[e[40]||(e[40]=i(" Datenübernahme starten ")),t(v,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1})):_("",!0),l.installAssistantActive?_("",!0):(u(),m("form",Re,[t(S,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:s(()=>[o("div",$e,[o("div",qe,[t(D,{class:"btn-danger clickable",onButtonClicked:e[16]||(e[16]=p=>a.factoryReset())},{default:s(()=>[t(v,{"fixed-width":"",icon:["fas","skull-crossbones"]}),e[42]||(e[42]=i(" Zurücksetzen ")),t(v,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:s(()=>[t(d,{subtype:"danger"},{default:s(()=>e[41]||(e[41]=[i(" Alle Einstellungen, angelegte Geräte/Komponenten, Ladepunkte und Fahrzeuge, etc., Tages-, Monats- und Jahresauswertungen sowie das Ladeprotokoll werden unwiederbringlich gelöscht. Auch die Vorkonfiguration im Auslieferungszustand wird gelöscht. Die openWB muss danach komplett neu eingerichtet werden. Die openWB wird hierfür automatisch neu gestartet. Bitte erstelle vor dem Zurücksetzen eine Sicherung! ")])),_:1})]),_:1})])),l.installAssistantActive?_("",!0):(u(),m("form",Ue,[t(S,{title:"Monitoring",subtype:"success",collapsible:!0,collapsed:!0},{footer:s(()=>[t(F,{"form-name":n.monitoringConfigured,"hide-defaults":!0,onSave:e[19]||(e[19]=p=>n.$emit("save")),onReset:e[20]||(e[20]=p=>n.$emit("reset"))},null,8,["form-name"])]),default:s(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",He,[t(d,{subtype:"info"},{default:s(()=>e[43]||(e[43]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(u(),m("div",Ne,[t(d,{subtype:"info"},{default:s(()=>e[44]||(e[44]=[i(" Das Monitoring informiert Dich sofort per E-Mail, wenn eine Deiner Komponenten oder Ladepunkte ein Problem hat oder die openWB nicht mehr erreichbar ist. ")])),_:1}),t(O,{class:"mb-2",title:"Anbieter",options:a.monitoringList,"model-value":n.$store.state.mqtt["openWB/optional/monitoring/config"]?n.$store.state.mqtt["openWB/optional/monitoring/config"].type:"","onUpdate:modelValue":e[17]||(e[17]=p=>a.updateSelectedMonitoring(p))},null,8,["options","model-value"]),n.$store.state.mqtt["openWB/optional/monitoring/config"]&&n.$store.state.mqtt["openWB/optional/monitoring/config"].type?(u(),m("div",Ie,[t(j,{monitoring:n.$store.state.mqtt["openWB/optional/monitoring/config"],"onUpdate:configuration":e[18]||(e[18]=p=>a.updateConfiguration("openWB/optional/monitoring/config",p))},null,8,["monitoring"])])):_("",!0)]))]),_:1})]))])):_("",!0)])}const Je=w(ce,[["render",Ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]),Ye=Object.freeze(Object.defineProperty({__proto__:null,default:Je},Symbol.toStringTag,{value:"Module"}));export{J as B,Je as D,ie as M,Ye as a}; diff --git a/web/settings/assets/DebugConfig-8637145c.js b/web/settings/assets/DebugConfig-8637145c.js new file mode 100644 index 0000000000..fa4fe5eb60 --- /dev/null +++ b/web/settings/assets/DebugConfig-8637145c.js @@ -0,0 +1,2 @@ +import{C as B}from"./index-b236cee5.js";import{l as k,ab as D,ac as W,F as L}from"./vendor-fortawesome-9d7cfdfb.js";import{_,u as s,l as d,x as w,E as l,G as i,q as C,y as F,A as v,F as x,m as b,N as y,M as N,B as f}from"./vendor-ad7c30fd.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";k.add(D,W);const S={name:"OpenwbLogCard",components:{FontAwesomeIcon:L},props:{title:{type:String,required:!0},logFile:{type:String,required:!0}},data(){return{logData:"-- noch nicht geladen --",loading:!1}},methods:{async getFilePromise(n,e=!1){return this.axios.get(location.protocol+"//"+location.host+n).then(t=>t.data).catch(t=>t.response?t.response.status==404&&e?"":`A 404 is expected if running node.js dev server! +`+t.response.status+" "+t.response.statusText+": "+t.response.request.responseURL:t.request?t.request:t.message)},async loadLog(n){this.logData="wird aktualisiert...",this.loading=!0;var e="";for(let r=4;r>=1;r--){const a=await this.getFilePromise(n+"."+r,!0);e+=a}const t=await this.getFilePromise(n);e+=t,this.logData=e,this.loading=!1}}},$={class:"log-data mb-0"};function P(n,e,t,r,a,g){const u=s("font-awesome-icon"),m=s("openwb-base-avatar"),p=s("openwb-base-card");return d(),w(p,{title:t.title,class:"log-card",collapsible:!0,collapsed:!0},{actions:l(()=>[i(m,{class:"bg-success clickable",onClick:e[0]||(e[0]=F(c=>g.loadLog(t.logFile),["stop"]))},{default:l(()=>[i(u,{"fixed-width":"",class:C(a.loading?"fa-spin-pulse":""),icon:a.loading?["fas","spinner"]:["fas","file-download"]},null,8,["class","icon"])]),_:1})]),default:l(()=>[v("pre",$,x(a.logData),1)]),_:1},8,["title"])}const I=_(S,[["render",P],["__scopeId","data-v-a320c3d6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/debug_config/LogCard.vue"]]),V={name:"OpenwbDebuggingView",components:{OpenwbLogCard:I},mixins:[B],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],logFiles:[{title:"Main-Log",fileName:"/openWB/ramdisk/main.log"},{title:"Log des internen Ladepunktes",fileName:"/openWB/ramdisk/internal_chargepoint.log"},{title:"MQTT-Log",fileName:"/openWB/ramdisk/mqtt.log"},{title:"SoC-Log",fileName:"/openWB/ramdisk/soc.log"},{title:"Protokoll des letzten Updates",fileName:"/openWB/data/log/update.log"},{title:"Protokoll des Remote-Dienstes",fileName:"/openWB/ramdisk/remote_support.log"},{title:"Protokoll des SmartHome Dienstes",fileName:"/openWB/ramdisk/smarthome.log"},{title:"Protokoll der Datenmigration",fileName:"/openWB/data/log/data_migration.log"},{title:"Protokoll über die Schaltvorgänge von steuerbaren Verbrauchseinrichtungen",fileName:"/openWB/data/log/steuve_control_command.log"}]}}},q={class:"debugging"},z={name:"debugConfigForm"};function T(n,e,t,r,a,g){const u=s("openwb-base-button-group-input"),m=s("openwb-base-alert"),p=s("openwb-base-card"),c=s("openwb-base-submit-buttons"),h=s("openwb-log-card");return d(),b("div",q,[v("form",z,[i(p,{title:"Protokollierung"},{default:l(()=>[i(u,{title:"Debug Level",buttons:[{buttonValue:30,text:"Warnungen und Fehler"},{buttonValue:20,text:"Info"},{buttonValue:10,text:"Details"}],"model-value":n.$store.state.mqtt["openWB/system/debug_level"],"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateState("openWB/system/debug_level",o))},{help:l(()=>e[4]||(e[4]=[f(' Wenn der Debug Level auf "Info" oder "Details" gesetzt wird, werden mehr Informationen in die Logdateien geschrieben. Im normalen Betrieb sollte immer "Warnungen und Fehler" gewählt werden, um die Schreibvorgänge auf der SD-Karte zu reduzieren. ')])),_:1},8,["model-value"]),i(m,{subtype:"warning"},{default:l(()=>e[5]||(e[5]=[f(' Achtung! In den Einstellungen "Info" und "Details" können in den Logdateien sensible Daten wie Benutzernamen und Passwörter enthalten sein. Diese sollten vor dem Veröffentlichen z.B. im Forum unkenntlich gemacht werden. Private IP-Adressen (z.B. 192.168.x.x) müssen nicht maskiert werden, da diese nicht über das Internet erreichbar sind. ')])),_:1})]),_:1}),i(c,{"form-name":"debugConfigForm",onSave:e[1]||(e[1]=o=>n.$emit("save")),onReset:e[2]||(e[2]=o=>n.$emit("reset")),onDefaults:e[3]||(e[3]=o=>n.$emit("defaults"))})]),(d(!0),b(y,null,N(a.logFiles,o=>(d(),w(h,{key:o.fileName,title:o.title,"log-file":o.fileName},null,8,["title","log-file"]))),128))])}const G=_(V,[["render",T],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DebugConfig.vue"]]);export{G as default}; diff --git a/web/settings/assets/DebugConfig-ee93cd2f.js b/web/settings/assets/DebugConfig-ee93cd2f.js deleted file mode 100644 index a78832a04f..0000000000 --- a/web/settings/assets/DebugConfig-ee93cd2f.js +++ /dev/null @@ -1,2 +0,0 @@ -import{C as k}from"./index-cc8f65ba.js";import{l as B,a7 as D,a8 as L,F as W}from"./vendor-fortawesome-433470db.js";import{_,u as s,l as d,z as w,E as l,G as i,q as C,A as F,x as v,F as x,m as b,N as y,M as N,y as f}from"./vendor-ea36120f.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";B.add(D,L);const $={name:"OpenwbLogCard",components:{FontAwesomeIcon:W},props:{title:{type:String,required:!0},logFile:{type:String,required:!0}},data(){return{logData:"-- noch nicht geladen --",loading:!1}},methods:{async getFilePromise(n,e=!1){return this.axios.get(location.protocol+"//"+location.host+n).then(t=>t.data).catch(t=>t.response?t.response.status==404&&e?"":`A 404 is expected if running node.js dev server! -`+t.response.status+" "+t.response.statusText+": "+t.response.request.responseURL:t.request?t.request:t.message)},async loadLog(n){this.logData="wird aktualisiert...",this.loading=!0;var e="";for(let r=4;r>=1;r--){const a=await this.getFilePromise(n+"."+r,!0);e+=a}const t=await this.getFilePromise(n);e+=t,this.logData=e,this.loading=!1}}},S={class:"log-data mb-0"};function P(n,e,t,r,a,g){const u=s("font-awesome-icon"),m=s("openwb-base-avatar"),p=s("openwb-base-card");return d(),w(p,{title:t.title,class:"log-card",collapsible:!0,collapsed:!0},{actions:l(()=>[i(m,{class:"bg-success clickable",onClick:e[0]||(e[0]=F(c=>g.loadLog(t.logFile),["stop"]))},{default:l(()=>[i(u,{"fixed-width":"",class:C(a.loading?"fa-spin-pulse":""),icon:a.loading?["fas","spinner"]:["fas","file-download"]},null,8,["class","icon"])]),_:1})]),default:l(()=>[v("pre",S,x(a.logData),1)]),_:1},8,["title"])}const I=_($,[["render",P],["__scopeId","data-v-a320c3d6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/debug_config/LogCard.vue"]]),q={name:"OpenwbDebuggingView",components:{OpenwbLogCard:I},mixins:[k],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],logFiles:[{title:"Main-Log",fileName:"/openWB/ramdisk/main.log"},{title:"Log des internen Ladepunktes",fileName:"/openWB/ramdisk/internal_chargepoint.log"},{title:"MQTT-Log",fileName:"/openWB/ramdisk/mqtt.log"},{title:"SoC-Log",fileName:"/openWB/ramdisk/soc.log"},{title:"Protokoll des letzten Updates",fileName:"/openWB/data/log/update.log"},{title:"Protokoll des Remote-Dienstes",fileName:"/openWB/ramdisk/remote_support.log"},{title:"Protokoll des SmartHome Dienstes",fileName:"/openWB/ramdisk/smarthome.log"},{title:"Protokoll der Datenmigration",fileName:"/openWB/data/log/data_migration.log"}]}}},z={class:"debugging"},V={name:"debugConfigForm"};function T(n,e,t,r,a,g){const u=s("openwb-base-button-group-input"),m=s("openwb-base-alert"),p=s("openwb-base-card"),c=s("openwb-base-submit-buttons"),h=s("openwb-log-card");return d(),b("div",z,[v("form",V,[i(p,{title:"Protokollierung"},{default:l(()=>[i(u,{title:"Debug Level",buttons:[{buttonValue:30,text:"Warnungen und Fehler"},{buttonValue:20,text:"Info"},{buttonValue:10,text:"Details"}],"model-value":n.$store.state.mqtt["openWB/system/debug_level"],"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateState("openWB/system/debug_level",o))},{help:l(()=>e[4]||(e[4]=[f(' Wenn der Debug Level auf "Info" oder "Details" gesetzt wird, werden mehr Informationen in die Logdateien geschrieben. Im normalen Betrieb sollte immer "Warnungen und Fehler" gewählt werden, um die Schreibvorgänge auf der SD-Karte zu reduzieren. ')])),_:1},8,["model-value"]),i(m,{subtype:"warning"},{default:l(()=>e[5]||(e[5]=[f(' Achtung! In den Einstellungen "Info" und "Details" können in den Logdateien sensible Daten wie Benutzernamen und Passwörter enthalten sein. Diese sollten vor dem Veröffentlichen z.B. im Forum unkenntlich gemacht werden. Private IP-Adressen (z.B. 192.168.x.x) müssen nicht maskiert werden, da diese nicht über das Internet erreichbar sind. ')])),_:1})]),_:1}),i(c,{"form-name":"debugConfigForm",onSave:e[1]||(e[1]=o=>n.$emit("save")),onReset:e[2]||(e[2]=o=>n.$emit("reset")),onDefaults:e[3]||(e[3]=o=>n.$emit("defaults"))})]),(d(!0),b(y,null,N(a.logFiles,o=>(d(),w(h,{key:o.fileName,title:o.title,"log-file":o.fileName},null,8,["title","log-file"]))),128))])}const G=_(q,[["render",T],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DebugConfig.vue"]]);export{G as default}; diff --git a/web/settings/assets/GeneralChargeConfig-401ab7d4.js b/web/settings/assets/GeneralChargeConfig-5075da0e.js similarity index 88% rename from web/settings/assets/GeneralChargeConfig-401ab7d4.js rename to web/settings/assets/GeneralChargeConfig-5075da0e.js index 40ba3e3685..81106b4b43 100644 --- a/web/settings/assets/GeneralChargeConfig-401ab7d4.js +++ b/web/settings/assets/GeneralChargeConfig-5075da0e.js @@ -1 +1 @@ -import{_ as b,C as L}from"./index-cc8f65ba.js";import{_ as q}from"./dynamic-import-helper-be004503.js";import{_ as h,u,l as a,m as l,G as n,E as o,y as i,F as B,x as s,a1 as O,z as W,a2 as F,N as D,B as y}from"./vendor-ea36120f.js";const U={props:{electricityTariff:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},A=h(U,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/ElectricityTariffConfigMixin.vue"]]),N={name:"ElectricityTariffConfigFallback",mixins:[A]},Z={class:"backup-cloud-fallback"};function M(t,e,m,k,z,g){const d=u("openwb-base-alert"),p=u("openwb-base-textarea");return a(),l("div",Z,[n(d,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für den Anbieter "'+B(t.electricityTariff.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(p,{title:"Konfiguration",subtype:"json","model-value":t.electricityTariff.configuration,"onUpdate:modelValue":e[0]||(e[0]=_=>t.updateConfiguration(_,"configuration"))},{help:o(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(d,{subtype:"info"},{default:o(()=>[s("pre",null,B(JSON.stringify(t.electricityTariff.configuration,void 0,2)),1)]),_:1})])}const I=h(N,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffConfigFallback.vue"]]),j={name:"OpenwbElectricityTariffProxy",props:{electricityTariff:{type:Object,required:!0}},emits:["update:configuration"],methods:{getTariffComponent(){return console.debug(`loading electricity tariff: ${this.electricityTariff.type}`),O({loader:()=>q(Object.assign({"./awattar/electricity_tariff.vue":()=>b(()=>import("./electricity_tariff-8330f492.js"),["assets/electricity_tariff-8330f492.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/index-cc8f65ba.js","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./energycharts/electricity_tariff.vue":()=>b(()=>import("./electricity_tariff-a0cf3a14.js"),["assets/electricity_tariff-a0cf3a14.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/index-cc8f65ba.js","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./rabot/electricity_tariff.vue":()=>b(()=>import("./electricity_tariff-0d285d7d.js"),["assets/electricity_tariff-0d285d7d.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/index-cc8f65ba.js","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tibber/electricity_tariff.vue":()=>b(()=>import("./electricity_tariff-4d29c538.js"),["assets/electricity_tariff-4d29c538.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/index-cc8f65ba.js","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./voltego/electricity_tariff.vue":()=>b(()=>import("./electricity_tariff-0c46c1ec.js"),["assets/electricity_tariff-0c46c1ec.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/index-cc8f65ba.js","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.electricityTariff.type}/electricity_tariff.vue`),errorComponent:I})},updateConfiguration(t){this.$emit("update:configuration",t)}}};function R(t,e,m,k,z,g){const d=u("openwb-base-heading");return a(),l(D,null,[n(d,null,{default:o(()=>[i(' Einstellungen für Modul "'+B(m.electricityTariff.name)+'" ',1)]),_:1}),(a(),W(F(g.getTariffComponent()),{"electricity-tariff":m.electricityTariff,"onUpdate:configuration":e[0]||(e[0]=p=>g.updateConfiguration(p))},null,40,["electricity-tariff"]))],64)}const H=h(j,[["render",R],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffProxy.vue"]]),G={name:"OpenwbGeneralChargeConfigView",components:{OpenwbElectricityTariffProxy:H},mixins:[L],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/bat/config/power_limit_mode","openWB/bat/get/power_limit_controllable","openWB/general/extern","openWB/general/chargemode_config/phase_switch_delay","openWB/general/chargemode_config/retry_failed_phase_switches","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit","openWB/general/prices/bat","openWB/general/prices/grid","openWB/general/prices/pv","openWB/optional/et/provider","openWB/optional/ocpp/config","openWB/system/configurable/electricity_tariffs"]}},computed:{electricityTariffList(){return this.$store.state.mqtt["openWB/system/configurable/electricity_tariffs"]}},methods:{getElectricityTariffDefaultConfiguration(t){const e=this.electricityTariffList.find(m=>m.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for electricity tariff type!",t),{})},updateSelectedElectricityTariff(t){this.updateState("openWB/optional/et/provider",t,"type"),this.updateState("openWB/optional/et/provider",this.getElectricityTariffDefaultConfiguration(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},J={class:"generalChargeConfig"},K={name:"generalChargeConfigForm"},x={key:0},Q={key:1},X={key:2},Y={key:0},ee={key:1},te={key:0},ne={key:1},ie={key:2},re={key:0},oe={key:1},ae={key:0};function le(t,e,m,k,z,g){const d=u("openwb-base-alert"),p=u("openwb-base-button-group-input"),_=u("openwb-base-range-input"),c=u("openwb-base-number-input"),v=u("openwb-base-heading"),w=u("openwb-base-card"),S=u("openwb-base-select-input"),V=u("openwb-electricity-tariff-proxy"),$=u("openwb-base-text-input"),T=u("openwb-base-submit-buttons");return a(),l("div",J,[s("form",K,[n(w,{title:"Allgemein"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),l("div",x,[n(d,{subtype:"info"},{default:o(()=>e[16]||(e[16]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(a(),l("div",Q,[n(p,{title:"Begrenzung der Schieflast",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"],"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateState("openWB/general/chargemode_config/unbalanced_load",r))},{help:o(()=>e[17]||(e[17]=[i(" Wenn diese Option aktiviert ist, werden nicht-dreiphasige Ladevorgänge so geregelt, dass am Netzanschlusspunkt (EVU-Zähler) die eingestellte Grenze für die Schieflast nicht überschritten wird. Hierfür muss der EVU-Zähler einzelne Phasenströme bereitstellen!"),s("br",null,null,-1),i(' Weiterhin müssen bei den Ladepunkten sowie Fahrzeugen sämtliche Angaben zur Anzahl angeschlossener/unterstützter Phasen und der Phasenrotation hinterlegt werden, damit der Regelung bekannt ist, welcher Ladevorgang welche Phase am Netzanschluss beeinflusst. siehe "Konfiguration - Ladepunkte -> elektrischer Anschluss - Phase 1" und "Konfiguration - Fahrzeuge -> Fahrzeug-Profile" ')])),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(a(),W(_,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":e[1]||(e[1]=r=>t.updateState("openWB/general/chargemode_config/unbalanced_load_limit",r))},{help:o(()=>e[18]||(e[18]=[i(" Hiermit wird festgelegt, welche Schieflast am Netzanschlusspunkt erlaubt ist. Bei Überschreitung werden gezielt einzelne Ladevorgänge in der Leistung begrenzt. ")])),_:1},8,["model-value"])):y("",!0),n(p,{title:"Phasenumschaltung wiederholt anstoßen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/retry_failed_phase_switches"],"onUpdate:modelValue":e[2]||(e[2]=r=>t.updateState("openWB/general/chargemode_config/retry_failed_phase_switches",r))},{help:o(()=>e[19]||(e[19]=[i(" Wenn diese Option aktiviert ist, werden bis zu drei Umschaltversuche vorgenommen, wenn die vorgegebene und genutzte Phasenzahl nicht übereinstimmen. Wird die Option deaktiviert, wird nur eine Umschaltung durchgeführt."),s("br",null,null,-1),i(" Die gezählten Fehlversuche werden mit dem Abstecken zurückgesetzt. ")])),_:1},8,["model-value"]),n(c,{title:"Verzögerung automat. Phasenumschaltung",unit:"Min.",min:5,max:20,step:1,"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/phase_switch_delay"],"onUpdate:modelValue":e[3]||(e[3]=r=>t.updateState("openWB/general/chargemode_config/phase_switch_delay",r))},{help:o(()=>e[20]||(e[20]=[i(" Um zu viele Umschaltungen zu vermeiden, wird mindestens die hier eingestellte Zeit zwischen zwei Umschaltungen abgewartet. Das Umschalten auf mehrphasiges Laden erfolgt nur, wenn mit der maximalen Stromstärke geladen wird und genug Leistung für mehrphasiges Laden zur Verfügung steht. Auf einphasiges Laden wird zurückgeschaltet, wenn auf die minimale Stromstärke heruntergeregelt wurde. Die Verzögerung wird nur bei der automatischen Phasenumschaltung bei Überschuss-Laden abgewartet."),s("br",null,null,-1),i(" Ist ausreichend Überschuss vorhanden, wird beim Ladestart die Umschaltverzögerung nicht abgewartet, sondern direkt mit mehrphasiger Ladung begonnen. ")])),_:1},8,["model-value"]),e[24]||(e[24]=s("hr",null,null,-1)),n(v,null,{help:o(()=>e[21]||(e[21]=[i(" Zur Berechnung der Ladekosten im Lade-Protokoll werden stundenweise die Anteile der Stromquellen (Speicher, Netz, PV) berechnet und mit den hier angegebenen Preisen multipliziert."),s("br",null,null,-1),i(" Ist die Abrechnung über das Ladeprotokoll, z.B. mit dem Arbeitgeber, vereinbart, ist bei allen drei Feldern der vereinbarte Preis einzutragen. ")])),default:o(()=>[e[22]||(e[22]=i(" Berechnung der Ladekosten "))]),_:1}),t.$store.state.mqtt["openWB/optional/et/provider"]&&t.$store.state.mqtt["openWB/optional/et/provider"].type?(a(),W(d,{key:1,subtype:"info"},{default:o(()=>e[23]||(e[23]=[i(" Für den Netzbezug wird der dynamische Strompreis des Anbieters für variable Stromtarife verwendet. ")])),_:1})):(a(),l("div",X,[n(c,{title:"Preis für Netzbezug",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/grid"]*1e5,"onUpdate:modelValue":e[4]||(e[4]=r=>t.updateState("openWB/general/prices/grid",parseFloat((r/1e5).toFixed(7))))},null,8,["model-value"])])),n(c,{title:"Preis für Speicherentladung",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/bat"]*1e5,"onUpdate:modelValue":e[5]||(e[5]=r=>t.updateState("openWB/general/prices/bat",parseFloat((r/1e5).toFixed(7))))},null,8,["model-value"]),n(c,{title:"Preis für PV-Strom",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/pv"]*1e5,"onUpdate:modelValue":e[6]||(e[6]=r=>t.updateState("openWB/general/prices/pv",parseFloat((r/1e5).toFixed(7))))},null,8,["model-value"])]))]),_:1}),n(w,{title:"Optional"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),l("div",Y,[n(d,{subtype:"info"},{default:o(()=>e[25]||(e[25]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(a(),l("div",ee,[n(v,null,{default:o(()=>e[26]||(e[26]=[i(" Variable Stromtarife ")])),_:1}),n(d,{subtype:"info"},{default:o(()=>e[27]||(e[27]=[i(" Bei Sofort- und Zeitladen wird nur geladen, wenn der Strompreis unter dem angegebenen maximalen Strompreis liegt. Für Zielladen wird die Ladedauer ermittelt und dann zu den günstigsten Stunden geladen."),s("br",null,null,-1),i(" Wenn keine Preise abgefragt werden können, wird bei Sofort- und Zeitladen immer geladen und bei Zielladen zunächst mit PV-Überschuss und zum Erreichen des Zieltermins mit Netzstrom. ")])),_:1}),n(S,{class:"mb-2",title:"Anbieter",options:g.electricityTariffList,"model-value":t.$store.state.mqtt["openWB/optional/et/provider"]?t.$store.state.mqtt["openWB/optional/et/provider"].type:"","onUpdate:modelValue":e[7]||(e[7]=r=>g.updateSelectedElectricityTariff(r))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/optional/et/provider"]&&t.$store.state.mqtt["openWB/optional/et/provider"].type?(a(),l("div",te,[n(V,{"electricity-tariff":t.$store.state.mqtt["openWB/optional/et/provider"],"onUpdate:configuration":e[8]||(e[8]=r=>g.updateConfiguration("openWB/optional/et/provider",r))},null,8,["electricity-tariff"])])):y("",!0),e[31]||(e[31]=s("hr",null,null,-1)),n(v,null,{default:o(()=>e[28]||(e[28]=[i(" Speicher-Entladung ins Fahrzeug steuern ")])),_:1}),t.$store.state.mqtt["openWB/bat/get/power_limit_controllable"]===!0?(a(),l("div",ne,[n(p,{title:"Speicher-Entladung",buttons:[{buttonValue:"no_limit",text:"immer"},{buttonValue:"limit_stop",text:"gesperrt, wenn Fahrzeug lädt"},{buttonValue:"limit_to_home_consumption",text:"für Hausverbrauch"}],"model-value":t.$store.state.mqtt["openWB/bat/config/power_limit_mode"],"onUpdate:modelValue":e[9]||(e[9]=r=>t.updateState("openWB/bat/config/power_limit_mode",r))},{help:o(()=>e[29]||(e[29]=[i(" Wenn das Entladen des Speichers immer erlaubt ist, wird das Fahrzeug aus dem Speicher geladen anstatt Strom aus dem Netz zu beziehen. "),s("br",null,null,-1),i(' Im Modus "gesperrt, wenn Fahrzeug lädt", wird die Entladung nur zugelassen, wenn alle Fahrzeuge im Modus PV-Laden ohne Mindeststrom oder Zielladen mit PV-Überschuss laden.'),s("br",null,null,-1),i(' Wenn das Entladen des Speichers auf den Hausverbrauch begrenzt ist und mindestens Fahrzeuge nicht im Modus PV-Laden ohne Mindeststrom oder Zielladen lädt, wird die Entladung des Speichers in Höhe des Hausverbrauchs zugelassen. Kann die Entladung am Speicher nur komplett gesperrt werden, verhält sich diese Einstellung wie "gesperrt, wenn Fahrzeug lädt".'),s("br",null,null,-1),i(" Diese Einstellung übersteuert ggf die Einstellungen zur Speicher-Beachtung im Modus PV-Laden. ")])),_:1},8,["model-value"])])):(a(),l("div",ie,[n(d,{subtype:"info"},{default:o(()=>e[30]||(e[30]=[i(" Die Speicher-Entladung ins Fahrzeug kann nicht gesteuert werden, da die Entladeleistung nicht an den/die konfigurierten Speicher übergeben werden kann. ")])),_:1})]))]))]),_:1}),n(w,{title:"OCPP Anbindung"},{default:o(()=>{var r,P,E,C;return[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),l("div",re,[n(d,{subtype:"info"},{default:o(()=>e[32]||(e[32]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(a(),l("div",oe,[n(p,{title:"OCPP aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(r=t.$store.state.mqtt["openWB/optional/ocpp/config"])==null?void 0:r.active,"onUpdate:modelValue":e[10]||(e[10]=f=>t.updateState("openWB/optional/ocpp/config",f,"active"))},null,8,["model-value"]),((P=t.$store.state.mqtt["openWB/optional/ocpp/config"])==null?void 0:P.active)===!0?(a(),l("div",ae,[n(d,{subtype:"info"},{default:o(()=>e[33]||(e[33]=[i(" Die Ladepunkte übermitteln den ID-Tag, Heartbeat und den Zählerstand zum Zeitpunkt des Ansteckens, Absteckens und alle 5 Minuten. Eine Steuerung per OCPP ist nicht möglich."),s("br",null,null,-1),i(" Alle Ladepunkte, die ihre Daten an das OCPP-Backend übermitteln sollen, müssen zunächst im OCPP-Backend angelegt werden. Die dort eingetragene Chargebox ID muss in der openWB in den Einstellungen des Ladepunkts eingetragen werden. ")])),_:1}),n($,{title:"URL des OCPP-Backends",subtype:"host","model-value":(E=t.$store.state.mqtt["openWB/optional/ocpp/config"])==null?void 0:E.url,"onUpdate:modelValue":e[11]||(e[11]=f=>t.updateState("openWB/optional/ocpp/config",f,"url"))},null,8,["model-value"]),n(S,{title:"Version","not-selected":"Bitte auswählen",options:[{value:"ocpp1.6",text:"OCPP 1.6"},{value:"ocpp2.0.1",text:"OCPP 2.0.1"}],"model-value":(C=t.$store.state.mqtt["openWB/optional/ocpp/config"])==null?void 0:C.version,"onUpdate:modelValue":e[12]||(e[12]=f=>t.updateState("openWB/optional/ocpp/config",f,"version"))},null,8,["model-value"])])):y("",!0)]))]}),_:1}),n(T,{"form-name":"generalChargeConfigForm",onSave:e[13]||(e[13]=r=>t.$emit("save")),onReset:e[14]||(e[14]=r=>t.$emit("reset")),onDefaults:e[15]||(e[15]=r=>t.$emit("defaults"))})])])}const se=h(G,[["render",le],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]),ge=Object.freeze(Object.defineProperty({__proto__:null,default:se},Symbol.toStringTag,{value:"Module"}));export{A as E,ge as G}; +import{_ as b,C as L}from"./index-b236cee5.js";import{_ as q}from"./dynamic-import-helper-be004503.js";import{_ as h,u,l as a,m as l,G as n,E as o,B as i,F as B,A as s,a1 as O,x as W,a2 as F,N as D,z as y}from"./vendor-ad7c30fd.js";const U={props:{electricityTariff:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},A=h(U,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/ElectricityTariffConfigMixin.vue"]]),N={name:"ElectricityTariffConfigFallback",mixins:[A]},Z={class:"backup-cloud-fallback"};function M(t,e,m,k,z,g){const d=u("openwb-base-alert"),p=u("openwb-base-textarea");return a(),l("div",Z,[n(d,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für den Anbieter "'+B(t.electricityTariff.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(p,{title:"Konfiguration",subtype:"json","model-value":t.electricityTariff.configuration,"onUpdate:modelValue":e[0]||(e[0]=_=>t.updateConfiguration(_,"configuration"))},{help:o(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(d,{subtype:"info"},{default:o(()=>[s("pre",null,B(JSON.stringify(t.electricityTariff.configuration,void 0,2)),1)]),_:1})])}const I=h(N,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffConfigFallback.vue"]]),j={name:"OpenwbElectricityTariffProxy",props:{electricityTariff:{type:Object,required:!0}},emits:["update:configuration"],methods:{getTariffComponent(){return console.debug(`loading electricity tariff: ${this.electricityTariff.type}`),O({loader:()=>q(Object.assign({"./awattar/electricity_tariff.vue":()=>b(()=>import("./electricity_tariff-388476a3.js"),["assets/electricity_tariff-388476a3.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/index-b236cee5.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./energycharts/electricity_tariff.vue":()=>b(()=>import("./electricity_tariff-91c588df.js"),["assets/electricity_tariff-91c588df.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/index-b236cee5.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./rabot/electricity_tariff.vue":()=>b(()=>import("./electricity_tariff-5e7da4e9.js"),["assets/electricity_tariff-5e7da4e9.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/index-b236cee5.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tibber/electricity_tariff.vue":()=>b(()=>import("./electricity_tariff-5562646b.js"),["assets/electricity_tariff-5562646b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/index-b236cee5.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./voltego/electricity_tariff.vue":()=>b(()=>import("./electricity_tariff-6bcc7f9b.js"),["assets/electricity_tariff-6bcc7f9b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/index-b236cee5.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.electricityTariff.type}/electricity_tariff.vue`),errorComponent:I})},updateConfiguration(t){this.$emit("update:configuration",t)}}};function R(t,e,m,k,z,g){const d=u("openwb-base-heading");return a(),l(D,null,[n(d,null,{default:o(()=>[i(' Einstellungen für Modul "'+B(m.electricityTariff.name)+'" ',1)]),_:1}),(a(),W(F(g.getTariffComponent()),{"electricity-tariff":m.electricityTariff,"onUpdate:configuration":e[0]||(e[0]=p=>g.updateConfiguration(p))},null,40,["electricity-tariff"]))],64)}const H=h(j,[["render",R],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffProxy.vue"]]),G={name:"OpenwbGeneralChargeConfigView",components:{OpenwbElectricityTariffProxy:H},mixins:[L],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/bat/config/power_limit_mode","openWB/bat/get/power_limit_controllable","openWB/general/extern","openWB/general/chargemode_config/phase_switch_delay","openWB/general/chargemode_config/retry_failed_phase_switches","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit","openWB/general/prices/bat","openWB/general/prices/grid","openWB/general/prices/pv","openWB/optional/et/provider","openWB/optional/ocpp/config","openWB/system/configurable/electricity_tariffs"]}},computed:{electricityTariffList(){return this.$store.state.mqtt["openWB/system/configurable/electricity_tariffs"]}},methods:{getElectricityTariffDefaultConfiguration(t){const e=this.electricityTariffList.find(m=>m.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for electricity tariff type!",t),{})},updateSelectedElectricityTariff(t){this.updateState("openWB/optional/et/provider",t,"type"),this.updateState("openWB/optional/et/provider",this.getElectricityTariffDefaultConfiguration(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},J={class:"generalChargeConfig"},K={name:"generalChargeConfigForm"},x={key:0},Q={key:1},X={key:2},Y={key:0},ee={key:1},te={key:0},ne={key:1},ie={key:2},re={key:0},oe={key:1},ae={key:0};function le(t,e,m,k,z,g){const d=u("openwb-base-alert"),p=u("openwb-base-button-group-input"),_=u("openwb-base-range-input"),c=u("openwb-base-number-input"),v=u("openwb-base-heading"),w=u("openwb-base-card"),S=u("openwb-base-select-input"),V=u("openwb-electricity-tariff-proxy"),$=u("openwb-base-text-input"),T=u("openwb-base-submit-buttons");return a(),l("div",J,[s("form",K,[n(w,{title:"Allgemein"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),l("div",x,[n(d,{subtype:"info"},{default:o(()=>e[16]||(e[16]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(a(),l("div",Q,[n(p,{title:"Begrenzung der Schieflast",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"],"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateState("openWB/general/chargemode_config/unbalanced_load",r))},{help:o(()=>e[17]||(e[17]=[i(" Wenn diese Option aktiviert ist, werden nicht-dreiphasige Ladevorgänge so geregelt, dass am Netzanschlusspunkt (EVU-Zähler) die eingestellte Grenze für die Schieflast nicht überschritten wird. Hierfür muss der EVU-Zähler einzelne Phasenströme bereitstellen!"),s("br",null,null,-1),i(' Weiterhin müssen bei den Ladepunkten sowie Fahrzeugen sämtliche Angaben zur Anzahl angeschlossener/unterstützter Phasen und der Phasenrotation hinterlegt werden, damit der Regelung bekannt ist, welcher Ladevorgang welche Phase am Netzanschluss beeinflusst. siehe "Konfiguration - Ladepunkte -> elektrischer Anschluss - Phase 1" und "Konfiguration - Fahrzeuge -> Fahrzeug-Profile" ')])),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(a(),W(_,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":e[1]||(e[1]=r=>t.updateState("openWB/general/chargemode_config/unbalanced_load_limit",r))},{help:o(()=>e[18]||(e[18]=[i(" Hiermit wird festgelegt, welche Schieflast am Netzanschlusspunkt erlaubt ist. Bei Überschreitung werden gezielt einzelne Ladevorgänge in der Leistung begrenzt. ")])),_:1},8,["model-value"])):y("",!0),n(p,{title:"Phasenumschaltung wiederholt anstoßen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/retry_failed_phase_switches"],"onUpdate:modelValue":e[2]||(e[2]=r=>t.updateState("openWB/general/chargemode_config/retry_failed_phase_switches",r))},{help:o(()=>e[19]||(e[19]=[i(" Wenn diese Option aktiviert ist, werden bis zu drei Umschaltversuche vorgenommen, wenn die vorgegebene und genutzte Phasenzahl nicht übereinstimmen. Wird die Option deaktiviert, wird nur eine Umschaltung durchgeführt."),s("br",null,null,-1),i(" Die gezählten Fehlversuche werden mit dem Abstecken zurückgesetzt. ")])),_:1},8,["model-value"]),n(c,{title:"Verzögerung automat. Phasenumschaltung",unit:"Min.",min:5,max:20,step:1,"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/phase_switch_delay"],"onUpdate:modelValue":e[3]||(e[3]=r=>t.updateState("openWB/general/chargemode_config/phase_switch_delay",r))},{help:o(()=>e[20]||(e[20]=[i(" Um zu viele Umschaltungen zu vermeiden, wird mindestens die hier eingestellte Zeit zwischen zwei Umschaltungen abgewartet. Das Umschalten auf mehrphasiges Laden erfolgt nur, wenn mit der maximalen Stromstärke geladen wird und genug Leistung für mehrphasiges Laden zur Verfügung steht. Auf einphasiges Laden wird zurückgeschaltet, wenn auf die minimale Stromstärke heruntergeregelt wurde. Die Verzögerung wird nur bei der automatischen Phasenumschaltung bei Überschuss-Laden abgewartet."),s("br",null,null,-1),i(" Ist ausreichend Überschuss vorhanden, wird beim Ladestart die Umschaltverzögerung nicht abgewartet, sondern direkt mit mehrphasiger Ladung begonnen. ")])),_:1},8,["model-value"]),e[24]||(e[24]=s("hr",null,null,-1)),n(v,null,{help:o(()=>e[21]||(e[21]=[i(" Zur Berechnung der Ladekosten im Lade-Protokoll werden stundenweise die Anteile der Stromquellen (Speicher, Netz, PV) berechnet und mit den hier angegebenen Preisen multipliziert."),s("br",null,null,-1),i(" Ist die Abrechnung über das Ladeprotokoll, z.B. mit dem Arbeitgeber, vereinbart, ist bei allen drei Feldern der vereinbarte Preis einzutragen. ")])),default:o(()=>[e[22]||(e[22]=i(" Berechnung der Ladekosten "))]),_:1}),t.$store.state.mqtt["openWB/optional/et/provider"]&&t.$store.state.mqtt["openWB/optional/et/provider"].type?(a(),W(d,{key:1,subtype:"info"},{default:o(()=>e[23]||(e[23]=[i(" Für den Netzbezug wird der dynamische Strompreis des Anbieters für variable Stromtarife verwendet. ")])),_:1})):(a(),l("div",X,[n(c,{title:"Preis für Netzbezug",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/grid"]*1e5,"onUpdate:modelValue":e[4]||(e[4]=r=>t.updateState("openWB/general/prices/grid",parseFloat((r/1e5).toFixed(7))))},null,8,["model-value"])])),n(c,{title:"Preis für Speicherentladung",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/bat"]*1e5,"onUpdate:modelValue":e[5]||(e[5]=r=>t.updateState("openWB/general/prices/bat",parseFloat((r/1e5).toFixed(7))))},null,8,["model-value"]),n(c,{title:"Preis für PV-Strom",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/pv"]*1e5,"onUpdate:modelValue":e[6]||(e[6]=r=>t.updateState("openWB/general/prices/pv",parseFloat((r/1e5).toFixed(7))))},null,8,["model-value"])]))]),_:1}),n(w,{title:"Optional"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),l("div",Y,[n(d,{subtype:"info"},{default:o(()=>e[25]||(e[25]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(a(),l("div",ee,[n(v,null,{default:o(()=>e[26]||(e[26]=[i(" Variable Stromtarife ")])),_:1}),n(d,{subtype:"info"},{default:o(()=>e[27]||(e[27]=[i(" Bei Sofort- und Zeitladen wird nur geladen, wenn der Strompreis unter dem angegebenen maximalen Strompreis liegt. Für Zielladen wird die Ladedauer ermittelt und dann zu den günstigsten Stunden geladen."),s("br",null,null,-1),i(" Wenn keine Preise abgefragt werden können, wird bei Sofort- und Zeitladen immer geladen und bei Zielladen zunächst mit PV-Überschuss und zum Erreichen des Zieltermins mit Netzstrom. ")])),_:1}),n(S,{class:"mb-2",title:"Anbieter",options:g.electricityTariffList,"model-value":t.$store.state.mqtt["openWB/optional/et/provider"]?t.$store.state.mqtt["openWB/optional/et/provider"].type:"","onUpdate:modelValue":e[7]||(e[7]=r=>g.updateSelectedElectricityTariff(r))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/optional/et/provider"]&&t.$store.state.mqtt["openWB/optional/et/provider"].type?(a(),l("div",te,[n(V,{"electricity-tariff":t.$store.state.mqtt["openWB/optional/et/provider"],"onUpdate:configuration":e[8]||(e[8]=r=>g.updateConfiguration("openWB/optional/et/provider",r))},null,8,["electricity-tariff"])])):y("",!0),e[31]||(e[31]=s("hr",null,null,-1)),n(v,null,{default:o(()=>e[28]||(e[28]=[i(" Speicher-Entladung ins Fahrzeug steuern ")])),_:1}),t.$store.state.mqtt["openWB/bat/get/power_limit_controllable"]===!0?(a(),l("div",ne,[n(p,{title:"Speicher-Entladung",buttons:[{buttonValue:"no_limit",text:"immer"},{buttonValue:"limit_stop",text:"gesperrt, wenn Fahrzeug lädt"},{buttonValue:"limit_to_home_consumption",text:"für Hausverbrauch"}],"model-value":t.$store.state.mqtt["openWB/bat/config/power_limit_mode"],"onUpdate:modelValue":e[9]||(e[9]=r=>t.updateState("openWB/bat/config/power_limit_mode",r))},{help:o(()=>e[29]||(e[29]=[i(" Wenn das Entladen des Speichers immer erlaubt ist, wird das Fahrzeug aus dem Speicher geladen anstatt Strom aus dem Netz zu beziehen. "),s("br",null,null,-1),i(' Im Modus "gesperrt, wenn Fahrzeug lädt", wird die Entladung nur zugelassen, wenn alle Fahrzeuge im Modus PV-Laden ohne Mindeststrom oder Zielladen mit PV-Überschuss laden.'),s("br",null,null,-1),i(' Wenn das Entladen des Speichers auf den Hausverbrauch begrenzt ist und mindestens Fahrzeuge nicht im Modus PV-Laden ohne Mindeststrom oder Zielladen lädt, wird die Entladung des Speichers in Höhe des Hausverbrauchs zugelassen. Kann die Entladung am Speicher nur komplett gesperrt werden, verhält sich diese Einstellung wie "gesperrt, wenn Fahrzeug lädt".'),s("br",null,null,-1),i(" Diese Einstellung übersteuert ggf die Einstellungen zur Speicher-Beachtung im Modus PV-Laden. ")])),_:1},8,["model-value"])])):(a(),l("div",ie,[n(d,{subtype:"info"},{default:o(()=>e[30]||(e[30]=[i(" Die Speicher-Entladung ins Fahrzeug kann nicht gesteuert werden, da die Entladeleistung nicht an den/die konfigurierten Speicher übergeben werden kann. ")])),_:1})]))]))]),_:1}),n(w,{title:"OCPP Anbindung"},{default:o(()=>{var r,P,E,C;return[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),l("div",re,[n(d,{subtype:"info"},{default:o(()=>e[32]||(e[32]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(a(),l("div",oe,[n(p,{title:"OCPP aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(r=t.$store.state.mqtt["openWB/optional/ocpp/config"])==null?void 0:r.active,"onUpdate:modelValue":e[10]||(e[10]=f=>t.updateState("openWB/optional/ocpp/config",f,"active"))},null,8,["model-value"]),((P=t.$store.state.mqtt["openWB/optional/ocpp/config"])==null?void 0:P.active)===!0?(a(),l("div",ae,[n(d,{subtype:"info"},{default:o(()=>e[33]||(e[33]=[i(" Die Ladepunkte übermitteln den ID-Tag, Heartbeat und den Zählerstand zum Zeitpunkt des Ansteckens, Absteckens und alle 5 Minuten. Eine Steuerung per OCPP ist nicht möglich."),s("br",null,null,-1),i(" Alle Ladepunkte, die ihre Daten an das OCPP-Backend übermitteln sollen, müssen zunächst im OCPP-Backend angelegt werden. Die dort eingetragene Chargebox ID muss in der openWB in den Einstellungen des Ladepunkts eingetragen werden. ")])),_:1}),n($,{title:"URL des OCPP-Backends",subtype:"host","model-value":(E=t.$store.state.mqtt["openWB/optional/ocpp/config"])==null?void 0:E.url,"onUpdate:modelValue":e[11]||(e[11]=f=>t.updateState("openWB/optional/ocpp/config",f,"url"))},null,8,["model-value"]),n(S,{title:"Version","not-selected":"Bitte auswählen",options:[{value:"ocpp1.6",text:"OCPP 1.6"},{value:"ocpp2.0.1",text:"OCPP 2.0.1"}],"model-value":(C=t.$store.state.mqtt["openWB/optional/ocpp/config"])==null?void 0:C.version,"onUpdate:modelValue":e[12]||(e[12]=f=>t.updateState("openWB/optional/ocpp/config",f,"version"))},null,8,["model-value"])])):y("",!0)]))]}),_:1}),n(T,{"form-name":"generalChargeConfigForm",onSave:e[13]||(e[13]=r=>t.$emit("save")),onReset:e[14]||(e[14]=r=>t.$emit("reset")),onDefaults:e[15]||(e[15]=r=>t.$emit("defaults"))})])])}const se=h(G,[["render",le],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]),ge=Object.freeze(Object.defineProperty({__proto__:null,default:se},Symbol.toStringTag,{value:"Module"}));export{A as E,ge as G}; diff --git a/web/settings/assets/GeneralConfig-b0e93144.js b/web/settings/assets/GeneralConfig-b0e93144.js deleted file mode 100644 index eb9d70afb0..0000000000 --- a/web/settings/assets/GeneralConfig-b0e93144.js +++ /dev/null @@ -1 +0,0 @@ -import{l as P,a1 as Z,a2 as Q,F as J,X,L as Y,z as ee,aa as te,ab as ne,ac as oe}from"./vendor-fortawesome-433470db.js";import{_ as L,C as ae}from"./index-cc8f65ba.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as h,u as g,l,m as d,z as v,E as o,y as a,F as w,G as n,x as f,a1 as F,a2 as j,N as G,B as c}from"./vendor-ea36120f.js";const re={props:{webTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},ie=h(re,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/WebThemeConfigMixin.vue"]]),le={name:"WebThemeFallback",mixins:[ie]},se={class:"web-theme-fallback"},ue={key:1};function de(t,e,s,B,y,b){const p=g("openwb-base-alert"),r=g("openwb-base-textarea");return l(),d("div",se,[Object.keys(t.webTheme.configuration).length==0?(l(),v(p,{key:0,subtype:"info"},{default:o(()=>[a(' Das Web Theme "'+w(t.webTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),d("div",ue,[n(p,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Web Theme "'+w(t.webTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Theme Konfiguration",subtype:"json","model-value":t.webTheme.configuration,"onUpdate:modelValue":e[0]||(e[0]=_=>t.updateConfiguration(_,"configuration"))},{help:o(()=>e[1]||(e[1]=[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(p,{subtype:"info"},{default:o(()=>[f("pre",null,w(JSON.stringify(t.webTheme.configuration,void 0,2)),1)]),_:1})]))])}const pe=h(le,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeFallback.vue"]]);P.add(Z,Q);const ge={name:"OpenwbWebThemeProxy",components:{FontAwesomeIcon:J},props:{webTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{getThemeComponent(){return console.debug(`loading web theme: ${this.webTheme.type}`),F({loader:()=>M(Object.assign({}),`./${this.webTheme.type}/webTheme.vue`),errorComponent:pe})},updateConfiguration(t){this.$emit("update:configuration",t)}}};function me(t,e,s,B,y,b){const p=g("font-awesome-icon"),r=g("openwb-base-alert"),_=g("openwb-base-heading");return l(),d(G,null,[s.webTheme.official?(l(),v(r,{key:0,subtype:"success"},{default:o(()=>[n(p,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Web Theme "'+w(s.webTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(l(),v(r,{key:1,subtype:"info"},{default:o(()=>[n(p,{"fixed-width":"",icon:["fas","people-group"]}),e[1]||(e[1]=a(" Das ausgewählte Theme wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. "))]),_:1})),n(_,null,{default:o(()=>[a(' Einstellungen für Web Theme "'+w(s.webTheme.name)+'" ',1)]),_:1}),(l(),v(j(b.getThemeComponent()),{"web-theme":s.webTheme,"onUpdate:configuration":e[0]||(e[0]=W=>b.updateConfiguration(W))},null,40,["web-theme"]))],64)}const be=h(ge,[["render",me],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeProxy.vue"]]),fe={props:{rippleControlReceiver:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},ce=h(fe,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/RippleControlReceiverConfigMixin.vue"]]),_e={name:"RippleControlReceiverConfigFallback",mixins:[ce]},ve={class:"ripple-control-receiver-fallback"},we={key:1};function he(t,e,s,B,y,b){const p=g("openwb-base-alert"),r=g("openwb-base-textarea");return l(),d("div",ve,[Object.keys(t.rippleControlReceiver.configuration).length==0?(l(),v(p,{key:0,subtype:"info"},{default:o(()=>[a(' Das RSE-Modul "'+w(t.rippleControlReceiver.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),d("div",we,[n(p,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das RSE-Modul "'+w(t.rippleControlReceiver.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Konfiguration",subtype:"json","model-value":t.rippleControlReceiver.configuration,"onUpdate:modelValue":e[0]||(e[0]=_=>t.updateConfiguration(_,"configuration"))},{help:o(()=>e[1]||(e[1]=[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(p,{subtype:"info"},{default:o(()=>[f("pre",null,w(JSON.stringify(t.rippleControlReceiver.configuration,void 0,2)),1)]),_:1})]))])}const We=h(_e,[["render",he],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverConfigFallback.vue"]]),Be={name:"OpenwbRippleControlReceiverProxy",props:{rippleControlReceiver:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],methods:{getRippleControlReceiverComponent(){return console.debug(`loading ripple control receiver: ${this.rippleControlReceiver.type}`),F({loader:()=>M(Object.assign({"./dimm_kit/ripple_control_receiver.vue":()=>L(()=>import("./ripple_control_receiver-14c898b9.js"),["assets/ripple_control_receiver-14c898b9.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./gpio/ripple_control_receiver.vue":()=>L(()=>import("./ripple_control_receiver-cd0099ce.js"),["assets/ripple_control_receiver-cd0099ce.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.rippleControlReceiver.type}/ripple_control_receiver.vue`),errorComponent:We})},updateConfiguration(t){this.$emit("update:configuration",t)},sendCommand(t){this.$emit("sendCommand",t)}}};function ye(t,e,s,B,y,b){const p=g("openwb-base-heading");return l(),d(G,null,[n(p,null,{default:o(()=>[a(' Einstellungen für RSE-Modul "'+w(s.rippleControlReceiver.name)+'" ',1)]),_:1}),(l(),v(j(b.getRippleControlReceiverComponent()),{"ripple-control-receiver":s.rippleControlReceiver,"onUpdate:configuration":e[0]||(e[0]=r=>b.updateConfiguration(r)),onSendCommand:e[1]||(e[1]=r=>b.sendCommand(r))},null,40,["ripple-control-receiver"]))],64)}const Ce=h(Be,[["render",ye],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverProxy.vue"]]);P.add(X,Y,ee,te,ne,oe);const Se={name:"OpenwbGeneralConfigView",components:{OpenwbWebThemeProxy:be,OpenwbRippleControlReceiverProxy:Ce,FontAwesomeIcon:J},mixins:[ae],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/charge_log_data_config","openWB/general/control_interval","openWB/general/extern","openWB/general/external_buttons_hw","openWB/general/grid_protection_configured","openWB/general/http_api","openWB/general/modbus_control","openWB/general/notifications/configuration","openWB/general/notifications/plug","openWB/general/notifications/selected","openWB/general/notifications/smart_home","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/price_kwh","openWB/general/range_unit","openWB/general/ripple_control_receiver/module","openWB/general/web_theme","openWB/system/configurable/ripple_control_receivers","openWB/system/configurable/web_themes","openWB/system/ip_address"]}},computed:{webThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/web_themes"]}},webThemeGroupList:{get(){var e;let t=[{label:"openWB",options:[]},{label:"Community",options:[]}];return(e=this.webThemeList)==null||e.forEach(s=>{s.official===!0?t[0].options.push(s):t[1].options.push(s)}),t}},rippleControlReceiverList(){return this.$store.state.mqtt["openWB/system/configurable/ripple_control_receivers"]}},methods:{getIpAddress(){return this.$store.state.mqtt["openWB/system/ip_address"]},getWebThemeDefaults(t){const e=this.webThemeList.find(s=>s.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for web theme type!",t),{})},updateSelectedWebTheme(t){this.updateState("openWB/general/web_theme",this.getWebThemeDefaults(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},getRippleControlReceiverDefaultConfiguration(t){const e=this.rippleControlReceiverList.find(s=>s.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for electricity tariff type!",t),{})},updateSelectedRippleControlReceiverModule(t){this.updateState("openWB/general/ripple_control_receiver/module",t,"type"),this.updateState("openWB/general/ripple_control_receiver/module",this.getRippleControlReceiverDefaultConfiguration(t))}}},Ve={class:"generalConfig"},ke={name:"generalConfigForm"},$e={key:0},Re={key:1},Te={key:1},qe={key:0},Ee={key:1},ze={key:0},De={key:2},Ne={key:0},Ae={key:0},Oe={key:1},Ue={key:0},xe={key:0},Le={key:1};function Pe(t,e,s,B,y,b){const p=g("openwb-base-alert"),r=g("openwb-base-button-group-input"),_=g("openwb-base-card"),W=g("openwb-base-heading"),C=g("openwb-base-select-input"),I=g("openwb-ripple-control-receiver-proxy"),H=g("openwb-web-theme-proxy"),m=g("font-awesome-icon"),K=g("openwb-base-submit-buttons");return l(),d("div",Ve,[f("form",ke,[n(_,{title:"Steuerungsmodus"},{default:o(()=>[n(p,{subtype:"info"},{default:o(()=>e[29]||(e[29]=[f("p",null,' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. secondary openWB, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. ',-1),f("p",null,[a(' Wird für den Steuerungsmodus "secondary" gewählt, übernimmt diese openWB keine Regelung und muss von einer anderen primary openWB ferngesteuert werden. Wichtig ist, dass in der secondary-openWB eine "interne openWB" mit der korrekten Bauart (= openWB-Hardwarevariante z.B. "Custom, Standard, Standard+, Duo, Buchse") konfiguriert ist. Bei einer Duo sind zwei "interne openWB" zu konfigurieren. Im "secondary"-Modus bleiben alle ausgeblendeten Einstellungen unbeachtet.'),f("br"),a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),f("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage "),a(". ")],-1)])),_:1}),n(r,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":e[0]||(e[0]=u=>t.updateState("openWB/general/extern",u))},null,8,["model-value"]),s.installAssistantActive?c("",!0):(l(),d("div",$e,[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),v(r,{key:0,title:"Steuerung über Modbus als secondary",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/modbus_control"],"onUpdate:modelValue":e[1]||(e[1]=u=>t.updateState("openWB/general/modbus_control",u))},{help:o(()=>e[30]||(e[30]=[a(" Im secondary-Modus kann die openWB über die Modbus-Schnittstelle gesteuert werden. Die Register sind "),f("a",{href:"https://openwb.de/main/wp-content/uploads/2023/10/ModbusTCP-openWB-series2-Pro-1.pdf",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),a(" dokumentiert. Bei aktivierter Modbus-Schnittstelle darf die openWB nicht von einer primary-openWB gesteuert werden. ")])),_:1},8,["model-value"])):c("",!0),t.$store.state.mqtt["openWB/general/extern"]===!0&&t.$store.state.mqtt["openWB/general/modbus_control"]!==!0?(l(),d("div",Re,[n(p,{subtype:"info",class:"mb-2"},{default:o(()=>e[31]||(e[31]=[a(' Wenn die Steuerung über Modbus auf "Aus" geändert wird, muss danach ein Neustart durchgeführt werden! ')])),_:1})])):c("",!0)])),s.installAssistantActive?c("",!0):(l(),d("div",Te,[n(r,{title:"HTTP-API",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/http_api"],"onUpdate:modelValue":e[2]||(e[2]=u=>t.updateState("openWB/general/http_api",u))},{help:o(()=>e[32]||(e[32]=[f("p",null,[a(" Mit der HTTP-API kann man den Wert eines MQTT-Topics per HTTPs abfragen oder neu setzen. Die Schnittstelle ist "),f("a",{href:"https://openwb.de/main/wp-content/uploads/2025/02/HTTP-API-fuer-openWB-series1-und-series2.pdf",target:"_blank",rel:"noopener noreferrer"}," hier "),a(" dokumentiert. ")],-1)])),_:1},8,["model-value"])]))]),_:1}),n(_,{title:"Hardware"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),d("div",qe,[n(p,{subtype:"info"},{default:o(()=>e[33]||(e[33]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):c("",!0),s.installAssistantActive?c("",!0):(l(),d("div",Ee,[t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),d("div",ze,[n(r,{title:"Geschwindigkeit Regelintervall",buttons:[{buttonValue:10,text:"Normal",class:"btn-outline-success"},{buttonValue:20,text:"Langsam",class:"btn-outline-warning"},{buttonValue:60,text:"Sehr Langsam",class:"btn-outline-danger"}],"model-value":t.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":e[3]||(e[3]=u=>t.updateState("openWB/general/control_interval",u))},{help:o(()=>e[34]||(e[34]=[a(' Sollten Probleme oder Fehlermeldungen auftauchen, stelle bitte zunächst das Regelintervall auf "Normal". Werden Module genutzt, welche z.B. eine Online-API zur Abfrage nutzen (höhere Latenzzeiten) oder möchte man weniger Regeleingriffe, so kann man das Regelintervall auf "Langsam" (20 Sekunden) herabsetzen. Die Einstellung „Sehr Langsam“ führt zu einer Regelzeit von 60 Sekunden.'),f("br",null,null,-1),f("span",{class:"text-danger"},' Nicht nur die Regelung der PV geführten Ladung, sondern auch die Ladestromänderung, beispielsweise “Stop“ etc., werden dann nur noch in diesem Intervall ausgeführt. Die Regelung wird insgesamt träger. Solange es keinen triftigen Grund gibt, sollte "Normal" gewählt werden. ',-1)])),_:1},8,["model-value"]),n(r,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":e[4]||(e[4]=u=>t.updateState("openWB/general/grid_protection_configured",u))},{help:o(()=>e[35]||(e[35]=[a(' Diese Option ist standardmäßig aktiviert und sollte so belassen werden. Bei Unterschreitung einer kritischen Frequenz des Stromnetzes wird die Ladung nach einer zufälligen Zeit zwischen 1 und 90 Sekunden pausiert. Der Lademodus wechselt auf "Stop". Sobald die Frequenz wieder in einem normalen Bereich ist wird automatisch der zuletzt gewählte Lademodus wieder aktiviert. Ebenso wird die Ladung bei Überschreiten von 51,8 Hz unterbrochen. Dies ist dann der Fall, wenn der Energieversorger Wartungsarbeiten am (Teil-)Netz durchführt und auf einen vorübergehenden Generator-Betrieb umschaltet. Die Erhöhung der Frequenz wird durchgeführt, um die PV Anlagen abzuschalten.'),f("br",null,null,-1),f("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1)])),_:1},8,["model-value"])])):c("",!0),e[36]||(e[36]=f("hr",null,null,-1))])),t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),d("div",De,[n(W,{class:"mt-0"},{default:o(()=>e[37]||(e[37]=[a(" Steuerbare Verbrauchseinrichtung ")])),_:1}),n(p,{sub_type:"info"},{default:o(()=>e[38]||(e[38]=[a(' Aktuell unterstützt openWB die eingehende Steuerung als "Steuerbare Verbrauchseinrichtung" nur über potentialfreie Kontakte (Rundsteuerempfänger, RSE). Ebenfalls können derzeit bei Auslösung des RSE nur alle Ladevorgänge komplett beendet werden. Die Unterstützung von "Dimmung" im Sinne von §14a EnWG wird umgesetzt, sobald wir weitere Informationen von den Netzbetreibern erhalten, wie die Ansteuerung technisch umgesetzt wird. ')])),_:1}),n(C,{class:"mb-2",title:"Anbindung RSE-Kontakt",options:b.rippleControlReceiverList,"model-value":t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]?t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type:"","onUpdate:modelValue":e[5]||(e[5]=u=>b.updateSelectedRippleControlReceiverModule(u))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(l(),d("div",Ne,[n(I,{"ripple-control-receiver":t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"],"onUpdate:configuration":e[6]||(e[6]=u=>b.updateConfiguration("openWB/general/ripple_control_receiver/module",u))},null,8,["ripple-control-receiver"])])):c("",!0)])):c("",!0)]),_:1}),s.installAssistantActive?c("",!0):(l(),v(_,{key:0,title:"Darstellung"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),d("div",Ae,[n(p,{subtype:"info"},{default:o(()=>e[39]||(e[39]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),d("div",Oe,[n(W,{class:"mt-0"},{default:o(()=>e[40]||(e[40]=[a(" Hauptseite ")])),_:1}),t.$store.state.mqtt["openWB/general/web_theme"]!==void 0?(l(),d("div",Ue,[n(C,{class:"mb-2",title:"Theme",groups:b.webThemeGroupList,"model-value":t.$store.state.mqtt["openWB/general/web_theme"].type,"onUpdate:modelValue":e[7]||(e[7]=u=>b.updateSelectedWebTheme(u))},null,8,["groups","model-value"]),t.$store.state.mqtt["openWB/general/web_theme"].type?(l(),v(H,{key:0,"web-theme":t.$store.state.mqtt["openWB/general/web_theme"],"onUpdate:configuration":e[8]||(e[8]=u=>b.updateConfiguration("openWB/general/web_theme",u))},null,8,["web-theme"])):c("",!0)])):c("",!0)]))]),_:1})),s.installAssistantActive?c("",!0):(l(),v(_,{key:1,title:"Lade-Protokoll"},{default:o(()=>{var u,S,V,k,$,R,T,q,E,z,D,N,A,O,U,x;return[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),d("div",xe,[n(p,{subtype:"info"},{default:o(()=>e[41]||(e[41]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),d("div",Le,[n(r,{title:"Einheit für Entfernungen","model-value":t.$store.state.mqtt["openWB/general/range_unit"],buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}],"onUpdate:modelValue":e[9]||(e[9]=i=>t.updateState("openWB/general/range_unit",i))},null,8,["model-value"]),n(W,null,{default:o(()=>e[42]||(e[42]=[a(" Auswahl der Datenfelder ")])),_:1}),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(u=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:u.time_begin,"onUpdate:modelValue":e[10]||(e[10]=i=>t.updateState("openWB/general/charge_log_data_config",i,"time_begin"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","calendar"]}),e[43]||(e[43]=a(" Beginn "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(S=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:S.time_end,"onUpdate:modelValue":e[11]||(e[11]=i=>t.updateState("openWB/general/charge_log_data_config",i,"time_end"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","calendar"]}),e[44]||(e[44]=a(" Ende "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(V=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:V.time_time_charged,"onUpdate:modelValue":e[12]||(e[12]=i=>t.updateState("openWB/general/charge_log_data_config",i,"time_time_charged"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","clock"]}),e[45]||(e[45]=a(" Dauer "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(k=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:k.data_costs,"onUpdate:modelValue":e[13]||(e[13]=i=>t.updateState("openWB/general/charge_log_data_config",i,"data_costs"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","coins"]}),e[46]||(e[46]=a(" Kosten "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":($=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:$.data_power_source,"onUpdate:modelValue":e[14]||(e[14]=i=>t.updateState("openWB/general/charge_log_data_config",i,"data_power_source"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","pie-chart"]}),e[47]||(e[47]=a(" Energieaufteilung "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(R=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:R.vehicle_name,"onUpdate:modelValue":e[15]||(e[15]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_name"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","car"]}),e[48]||(e[48]=a(" Name "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(T=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:T.vehicle_chargemode,"onUpdate:modelValue":e[16]||(e[16]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_chargemode"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","car"]}),e[49]||(e[49]=a(" Lademodus "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(q=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:q.vehicle_prio,"onUpdate:modelValue":e[17]||(e[17]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_prio"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","car"]}),e[50]||(e[50]=a(" Priorität "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(E=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:E.vehicle_rfid,"onUpdate:modelValue":e[18]||(e[18]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_rfid"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","car"]}),e[51]||(e[51]=a(" ID-Tag "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(z=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:z.vehicle_soc_at_start,"onUpdate:modelValue":e[19]||(e[19]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_start"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","car"]}),e[52]||(e[52]=a(" SoC bei Ladebeginn "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(D=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:D.vehicle_soc_at_end,"onUpdate:modelValue":e[20]||(e[20]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_end"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","car"]}),e[53]||(e[53]=a(" SoC bei Ladende "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(N=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:N.chargepoint_name,"onUpdate:modelValue":e[21]||(e[21]=i=>t.updateState("openWB/general/charge_log_data_config",i,"chargepoint_name"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","charging-station"]}),e[54]||(e[54]=a(" Name "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(A=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:A.chargepoint_serial_number,"onUpdate:modelValue":e[22]||(e[22]=i=>t.updateState("openWB/general/charge_log_data_config",i,"chargepoint_serial_number"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","charging-station"]}),e[55]||(e[55]=a(" Seriennummer "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(O=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:O.data_imported_since_mode_switch,"onUpdate:modelValue":e[23]||(e[23]=i=>t.updateState("openWB/general/charge_log_data_config",i,"data_imported_since_mode_switch"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","charging-station"]}),e[56]||(e[56]=a(" Geladene Energie "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(U=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:U.chargepoint_imported_at_start,"onUpdate:modelValue":e[24]||(e[24]=i=>t.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_start"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","charging-station"]}),e[57]||(e[57]=a(" Zählerstand bei Ladebeginn "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(x=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:x.chargepoint_imported_at_end,"onUpdate:modelValue":e[25]||(e[25]=i=>t.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_end"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","charging-station"]}),e[58]||(e[58]=a(" Zählerstand bei Ladeende "))]),_:1},8,["model-value"])]))]}),_:1})),n(K,{"form-name":"generalConfigForm",onSave:e[26]||(e[26]=u=>t.$emit("save")),onReset:e[27]||(e[27]=u=>t.$emit("reset")),onDefaults:e[28]||(e[28]=u=>t.$emit("defaults"))})])])}const Je=h(Se,[["render",Pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]),Ie=Object.freeze(Object.defineProperty({__proto__:null,default:Je},Symbol.toStringTag,{value:"Module"}));export{Je as G,ce as R,Ie as a}; diff --git a/web/settings/assets/GeneralConfig-bc70f34a.js b/web/settings/assets/GeneralConfig-bc70f34a.js new file mode 100644 index 0000000000..c94d251fcc --- /dev/null +++ b/web/settings/assets/GeneralConfig-bc70f34a.js @@ -0,0 +1 @@ +import{l as P,a5 as R,a6 as G,F as J,$ as I,P as H,D as j,ae as K,af as Z,ag as Q}from"./vendor-fortawesome-9d7cfdfb.js";import{C as X}from"./index-b236cee5.js";import{_ as Y}from"./dynamic-import-helper-be004503.js";import{_ as v,u as m,l as i,m as g,x as c,E as o,B as a,F as w,G as n,A as p,a1 as ee,a2 as te,N as ne,z as f}from"./vendor-ad7c30fd.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";const oe={props:{webTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},ae=v(oe,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/WebThemeConfigMixin.vue"]]),se={name:"WebThemeFallback",mixins:[ae]},le={class:"web-theme-fallback"},ie={key:1};function re(t,e,u,B,V,h){const b=m("openwb-base-alert"),l=m("openwb-base-textarea");return i(),g("div",le,[Object.keys(t.webTheme.configuration).length==0?(i(),c(b,{key:0,subtype:"info"},{default:o(()=>[a(' Das Web Theme "'+w(t.webTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(i(),g("div",ie,[n(b,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Web Theme "'+w(t.webTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(l,{title:"Theme Konfiguration",subtype:"json","model-value":t.webTheme.configuration,"onUpdate:modelValue":e[0]||(e[0]=_=>t.updateConfiguration(_,"configuration"))},{help:o(()=>e[1]||(e[1]=[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(b,{subtype:"info"},{default:o(()=>[p("pre",null,w(JSON.stringify(t.webTheme.configuration,void 0,2)),1)]),_:1})]))])}const ue=v(se,[["render",re],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeFallback.vue"]]);P.add(R,G);const de={name:"OpenwbWebThemeProxy",components:{FontAwesomeIcon:J},props:{webTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{getThemeComponent(){return console.debug(`loading web theme: ${this.webTheme.type}`),ee({loader:()=>Y(Object.assign({}),`./${this.webTheme.type}/webTheme.vue`),errorComponent:ue})},updateConfiguration(t){this.$emit("update:configuration",t)}}};function ge(t,e,u,B,V,h){const b=m("font-awesome-icon"),l=m("openwb-base-alert"),_=m("openwb-base-heading");return i(),g(ne,null,[u.webTheme.official?(i(),c(l,{key:0,subtype:"success"},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Web Theme "'+w(u.webTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(i(),c(l,{key:1,subtype:"info"},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","people-group"]}),e[1]||(e[1]=a(" Das ausgewählte Theme wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. "))]),_:1})),n(_,null,{default:o(()=>[a(' Einstellungen für Web Theme "'+w(u.webTheme.name)+'" ',1)]),_:1}),(i(),c(te(h.getThemeComponent()),{"web-theme":u.webTheme,"onUpdate:configuration":e[0]||(e[0]=W=>h.updateConfiguration(W))},null,40,["web-theme"]))],64)}const pe=v(de,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeProxy.vue"]]);P.add(I,H,j,K,Z,Q);const me={name:"OpenwbGeneralConfigView",components:{OpenwbWebThemeProxy:pe,FontAwesomeIcon:J},mixins:[X],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/charge_log_data_config","openWB/general/control_interval","openWB/general/extern","openWB/general/external_buttons_hw","openWB/general/grid_protection_configured","openWB/general/http_api","openWB/general/modbus_control","openWB/general/notifications/configuration","openWB/general/notifications/plug","openWB/general/notifications/selected","openWB/general/notifications/smart_home","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/price_kwh","openWB/general/range_unit","openWB/general/web_theme","openWB/system/configurable/web_themes","openWB/system/ip_address"]}},computed:{webThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/web_themes"]}},webThemeGroupList:{get(){var e;let t=[{label:"openWB",options:[]},{label:"Community",options:[]}];return(e=this.webThemeList)==null||e.forEach(u=>{u.official===!0?t[0].options.push(u):t[1].options.push(u)}),t}}},methods:{getIpAddress(){return this.$store.state.mqtt["openWB/system/ip_address"]},getWebThemeDefaults(t){const e=this.webThemeList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for web theme type!",t),{})},updateSelectedWebTheme(t){this.updateState("openWB/general/web_theme",this.getWebThemeDefaults(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},be={class:"generalConfig"},fe={name:"generalConfigForm"},_e={key:0},ce={key:1},he={key:1},we={key:0},We={key:1},ve={key:0},Be={key:0},Ve={key:1},ye={key:0},Se={key:0},ke={key:1};function Te(t,e,u,B,V,h){const b=m("openwb-base-alert"),l=m("openwb-base-button-group-input"),_=m("openwb-base-card"),W=m("openwb-base-heading"),O=m("openwb-base-select-input"),F=m("openwb-web-theme-proxy"),d=m("font-awesome-icon"),M=m("openwb-base-submit-buttons");return i(),g("div",be,[p("form",fe,[n(_,{title:"Steuerungsmodus"},{default:o(()=>[n(b,{subtype:"info"},{default:o(()=>e[27]||(e[27]=[p("p",null,' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. secondary openWB, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. ',-1),p("p",null,[a(' Wird für den Steuerungsmodus "secondary" gewählt, übernimmt diese openWB keine Regelung und muss von einer anderen primary openWB ferngesteuert werden. Wichtig ist, dass in der secondary-openWB eine "interne openWB" mit der korrekten Bauart (= openWB-Hardwarevariante z.B. "Custom, Standard, Standard+, Duo, Buchse") konfiguriert ist. Bei einer Duo sind zwei "interne openWB" zu konfigurieren. Im "secondary"-Modus bleiben alle ausgeblendeten Einstellungen unbeachtet.'),p("br"),a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),p("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage "),a(". ")],-1)])),_:1}),n(l,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateState("openWB/general/extern",r))},null,8,["model-value"]),u.installAssistantActive?f("",!0):(i(),g("div",_e,[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),c(l,{key:0,title:"Steuerung über Modbus als secondary",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/modbus_control"],"onUpdate:modelValue":e[1]||(e[1]=r=>t.updateState("openWB/general/modbus_control",r))},{help:o(()=>e[28]||(e[28]=[a(" Im secondary-Modus kann die openWB über die Modbus-Schnittstelle gesteuert werden. Die Register sind "),p("a",{href:"https://openwb.de/main/wp-content/uploads/2023/10/ModbusTCP-openWB-series2-Pro-1.pdf",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),a(" dokumentiert. Bei aktivierter Modbus-Schnittstelle darf die openWB nicht von einer primary-openWB gesteuert werden. ")])),_:1},8,["model-value"])):f("",!0),t.$store.state.mqtt["openWB/general/extern"]===!0&&t.$store.state.mqtt["openWB/general/modbus_control"]!==!0?(i(),g("div",ce,[n(b,{subtype:"info",class:"mb-2"},{default:o(()=>e[29]||(e[29]=[a(' Wenn die Steuerung über Modbus auf "Aus" geändert wird, muss danach ein Neustart durchgeführt werden! ')])),_:1})])):f("",!0)])),u.installAssistantActive?f("",!0):(i(),g("div",he,[n(l,{title:"HTTP-API",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/http_api"],"onUpdate:modelValue":e[2]||(e[2]=r=>t.updateState("openWB/general/http_api",r))},{help:o(()=>e[30]||(e[30]=[p("p",null,[a(" Mit der HTTP-API kann man den Wert eines MQTT-Topics per HTTPs abfragen oder neu setzen. Die Schnittstelle ist "),p("a",{href:"https://openwb.de/main/wp-content/uploads/2025/02/HTTP-API-fuer-openWB-series1-und-series2.pdf",target:"_blank",rel:"noopener noreferrer"}," hier "),a(" dokumentiert. ")],-1)])),_:1},8,["model-value"])]))]),_:1}),n(_,{title:"Hardware"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),g("div",we,[n(b,{subtype:"info"},{default:o(()=>e[31]||(e[31]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):f("",!0),u.installAssistantActive?f("",!0):(i(),g("div",We,[t.$store.state.mqtt["openWB/general/extern"]===!1?(i(),g("div",ve,[n(l,{title:"Geschwindigkeit Regelintervall",buttons:[{buttonValue:10,text:"Normal",class:"btn-outline-success"},{buttonValue:20,text:"Langsam",class:"btn-outline-warning"},{buttonValue:60,text:"Sehr Langsam",class:"btn-outline-danger"}],"model-value":t.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":e[3]||(e[3]=r=>t.updateState("openWB/general/control_interval",r))},{help:o(()=>e[32]||(e[32]=[a(' Sollten Probleme oder Fehlermeldungen auftauchen, stelle bitte zunächst das Regelintervall auf "Normal". Werden Module genutzt, welche z.B. eine Online-API zur Abfrage nutzen (höhere Latenzzeiten) oder möchte man weniger Regeleingriffe, so kann man das Regelintervall auf "Langsam" (20 Sekunden) herabsetzen. Die Einstellung „Sehr Langsam“ führt zu einer Regelzeit von 60 Sekunden.'),p("br",null,null,-1),p("span",{class:"text-danger"},' Nicht nur die Regelung der PV geführten Ladung, sondern auch die Ladestromänderung, beispielsweise “Stop“ etc., werden dann nur noch in diesem Intervall ausgeführt. Die Regelung wird insgesamt träger. Solange es keinen triftigen Grund gibt, sollte "Normal" gewählt werden. ',-1)])),_:1},8,["model-value"]),n(l,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":e[4]||(e[4]=r=>t.updateState("openWB/general/grid_protection_configured",r))},{help:o(()=>e[33]||(e[33]=[a(' Diese Option ist standardmäßig aktiviert und sollte so belassen werden. Bei Unterschreitung einer kritischen Frequenz des Stromnetzes wird die Ladung nach einer zufälligen Zeit zwischen 1 und 90 Sekunden pausiert. Der Lademodus wechselt auf "Stop". Sobald die Frequenz wieder in einem normalen Bereich ist wird automatisch der zuletzt gewählte Lademodus wieder aktiviert. Ebenso wird die Ladung bei Überschreiten von 51,8 Hz unterbrochen. Dies ist dann der Fall, wenn der Energieversorger Wartungsarbeiten am (Teil-)Netz durchführt und auf einen vorübergehenden Generator-Betrieb umschaltet. Die Erhöhung der Frequenz wird durchgeführt, um die PV Anlagen abzuschalten.'),p("br",null,null,-1),p("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1)])),_:1},8,["model-value"])])):f("",!0)]))]),_:1}),u.installAssistantActive?f("",!0):(i(),c(_,{key:0,title:"Darstellung"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),g("div",Be,[n(b,{subtype:"info"},{default:o(()=>e[34]||(e[34]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),g("div",Ve,[n(W,{class:"mt-0"},{default:o(()=>e[35]||(e[35]=[a(" Hauptseite ")])),_:1}),t.$store.state.mqtt["openWB/general/web_theme"]!==void 0?(i(),g("div",ye,[n(O,{class:"mb-2",title:"Theme",groups:h.webThemeGroupList,"model-value":t.$store.state.mqtt["openWB/general/web_theme"].type,"onUpdate:modelValue":e[5]||(e[5]=r=>h.updateSelectedWebTheme(r))},null,8,["groups","model-value"]),t.$store.state.mqtt["openWB/general/web_theme"].type?(i(),c(F,{key:0,"web-theme":t.$store.state.mqtt["openWB/general/web_theme"],"onUpdate:configuration":e[6]||(e[6]=r=>h.updateConfiguration("openWB/general/web_theme",r))},null,8,["web-theme"])):f("",!0)])):f("",!0)]))]),_:1})),u.installAssistantActive?f("",!0):(i(),c(_,{key:1,title:"Lade-Protokoll"},{default:o(()=>{var r,y,S,k,T,$,q,C,N,z,A,D,x,U,E,L;return[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),g("div",Se,[n(b,{subtype:"info"},{default:o(()=>e[36]||(e[36]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),g("div",ke,[n(l,{title:"Einheit für Entfernungen","model-value":t.$store.state.mqtt["openWB/general/range_unit"],buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}],"onUpdate:modelValue":e[7]||(e[7]=s=>t.updateState("openWB/general/range_unit",s))},null,8,["model-value"]),n(W,null,{default:o(()=>e[37]||(e[37]=[a(" Auswahl der Datenfelder ")])),_:1}),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(r=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:r.time_begin,"onUpdate:modelValue":e[8]||(e[8]=s=>t.updateState("openWB/general/charge_log_data_config",s,"time_begin"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","calendar"]}),e[38]||(e[38]=a(" Beginn "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(y=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:y.time_end,"onUpdate:modelValue":e[9]||(e[9]=s=>t.updateState("openWB/general/charge_log_data_config",s,"time_end"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","calendar"]}),e[39]||(e[39]=a(" Ende "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(S=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:S.time_time_charged,"onUpdate:modelValue":e[10]||(e[10]=s=>t.updateState("openWB/general/charge_log_data_config",s,"time_time_charged"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","clock"]}),e[40]||(e[40]=a(" Dauer "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(k=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:k.data_costs,"onUpdate:modelValue":e[11]||(e[11]=s=>t.updateState("openWB/general/charge_log_data_config",s,"data_costs"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","coins"]}),e[41]||(e[41]=a(" Kosten "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(T=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:T.data_power_source,"onUpdate:modelValue":e[12]||(e[12]=s=>t.updateState("openWB/general/charge_log_data_config",s,"data_power_source"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","pie-chart"]}),e[42]||(e[42]=a(" Energieaufteilung "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":($=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:$.vehicle_name,"onUpdate:modelValue":e[13]||(e[13]=s=>t.updateState("openWB/general/charge_log_data_config",s,"vehicle_name"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","car"]}),e[43]||(e[43]=a(" Name "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(q=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:q.vehicle_chargemode,"onUpdate:modelValue":e[14]||(e[14]=s=>t.updateState("openWB/general/charge_log_data_config",s,"vehicle_chargemode"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","car"]}),e[44]||(e[44]=a(" Lademodus "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(C=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:C.vehicle_prio,"onUpdate:modelValue":e[15]||(e[15]=s=>t.updateState("openWB/general/charge_log_data_config",s,"vehicle_prio"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","car"]}),e[45]||(e[45]=a(" Priorität "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(N=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:N.vehicle_rfid,"onUpdate:modelValue":e[16]||(e[16]=s=>t.updateState("openWB/general/charge_log_data_config",s,"vehicle_rfid"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","car"]}),e[46]||(e[46]=a(" ID-Tag "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(z=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:z.vehicle_soc_at_start,"onUpdate:modelValue":e[17]||(e[17]=s=>t.updateState("openWB/general/charge_log_data_config",s,"vehicle_soc_at_start"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","car"]}),e[47]||(e[47]=a(" SoC bei Ladebeginn "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(A=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:A.vehicle_soc_at_end,"onUpdate:modelValue":e[18]||(e[18]=s=>t.updateState("openWB/general/charge_log_data_config",s,"vehicle_soc_at_end"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","car"]}),e[48]||(e[48]=a(" SoC bei Ladende "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(D=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:D.chargepoint_name,"onUpdate:modelValue":e[19]||(e[19]=s=>t.updateState("openWB/general/charge_log_data_config",s,"chargepoint_name"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","charging-station"]}),e[49]||(e[49]=a(" Name "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(x=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:x.chargepoint_serial_number,"onUpdate:modelValue":e[20]||(e[20]=s=>t.updateState("openWB/general/charge_log_data_config",s,"chargepoint_serial_number"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","charging-station"]}),e[50]||(e[50]=a(" Seriennummer "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(U=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:U.data_imported_since_mode_switch,"onUpdate:modelValue":e[21]||(e[21]=s=>t.updateState("openWB/general/charge_log_data_config",s,"data_imported_since_mode_switch"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","charging-station"]}),e[51]||(e[51]=a(" Geladene Energie "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(E=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:E.chargepoint_imported_at_start,"onUpdate:modelValue":e[22]||(e[22]=s=>t.updateState("openWB/general/charge_log_data_config",s,"chargepoint_imported_at_start"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","charging-station"]}),e[52]||(e[52]=a(" Zählerstand bei Ladebeginn "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(L=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:L.chargepoint_imported_at_end,"onUpdate:modelValue":e[23]||(e[23]=s=>t.updateState("openWB/general/charge_log_data_config",s,"chargepoint_imported_at_end"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","charging-station"]}),e[53]||(e[53]=a(" Zählerstand bei Ladeende "))]),_:1},8,["model-value"])]))]}),_:1})),n(M,{"form-name":"generalConfigForm",onSave:e[24]||(e[24]=r=>t.$emit("save")),onReset:e[25]||(e[25]=r=>t.$emit("reset")),onDefaults:e[26]||(e[26]=r=>t.$emit("defaults"))})])])}const Ue=v(me,[["render",Te],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]);export{Ue as default}; diff --git a/web/settings/assets/HardwareInstallation-3a644290.js b/web/settings/assets/HardwareInstallation-3a644290.js deleted file mode 100644 index 8719cf3fca..0000000000 --- a/web/settings/assets/HardwareInstallation-3a644290.js +++ /dev/null @@ -1 +0,0 @@ -import{l as S,d as U,t as q,ad as G,a6 as N,V as K,U as F,T as H,F as $}from"./vendor-fortawesome-433470db.js";import{_ as e,C as J}from"./index-cc8f65ba.js";import{_ as C}from"./dynamic-import-helper-be004503.js";import{_ as T,u as p,l as s,m as g,z as E,E as r,y as d,F as V,G as u,x as c,a1 as z,a2 as Z,B as P,N as L,M as k,q as Q}from"./vendor-ea36120f.js";const X={props:{device:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(o,t=void 0){this.$emit("update:configuration",{value:o,object:t})}}},B=T(X,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/DeviceConfigMixin.vue"]]),Y={name:"DeviceFallback",mixins:[B]},ee={class:"device-fallback"},te={key:1};function oe(o,t,i,m,v,n){const l=p("openwb-base-alert"),I=p("openwb-base-textarea");return s(),g("div",ee,[Object.keys(o.device.configuration).length==0?(s(),E(l,{key:0,subtype:"info"},{default:r(()=>[d(' Der Gerät-Typ "'+V(o.device.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),g("div",te,[u(l,{subtype:"warning"},{default:r(()=>[d(' Es wurde keine Konfigurationsseite für den Geräte-Typ "'+V(o.device.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),u(I,{title:"Konfiguration",subtype:"json","model-value":o.device.configuration,"onUpdate:modelValue":t[0]||(t[0]=O=>o.updateConfiguration(O,"configuration"))},{help:r(()=>t[1]||(t[1]=[d(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),u(l,{subtype:"info"},{default:r(()=>[c("pre",null,V(JSON.stringify(o.device.configuration,void 0,2)),1)]),_:1})]))])}const _e=T(Y,[["render",oe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ie={mixins:[B],props:{component:{type:Object,required:!0}}},re=T(ie,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/ComponentConfigMixin.vue"]]),ne={name:"ComponentFallback",mixins:[re]},ue={class:"component-fallback"},de={key:1};function se(o,t,i,m,v,n){const l=p("openwb-base-alert"),I=p("openwb-base-textarea");return s(),g("div",ue,[Object.keys(o.component.configuration).length==0?(s(),E(l,{key:0,subtype:"info"},{default:r(()=>[d(' Der Komponenten-Typ "'+V(o.component.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),g("div",de,[u(l,{subtype:"warning"},{default:r(()=>[d(' Es wurde keine Konfigurationsseite für den Komponenten-Typ "'+V(o.component.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),u(I,{title:"Konfiguration",subtype:"json","model-value":o.component.configuration,"onUpdate:modelValue":t[0]||(t[0]=O=>o.updateConfiguration(O,"configuration"))},{help:r(()=>t[1]||(t[1]=[d(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),u(l,{subtype:"info"},{default:r(()=>[c("pre",null,V(JSON.stringify(o.component.configuration,void 0,2)),1)]),_:1})]))])}const ve=T(ne,[["render",se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbComponentConfigFallback.vue"]]),ae={name:"OpenwbConfigProxy",props:{device:{type:Object,required:!0},component:{type:Object,required:!1,default:void 0}},emits:["update:configuration"],methods:{getComponent(){var o;return console.debug(`loading component: ${this.device.type} / ${(o=this.component)==null?void 0:o.type}`),this.component!==void 0?z({loader:()=>C(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-e44ec84b.js"),["assets/device-e44ec84b.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./ampere/ampere/device.vue":()=>e(()=>import("./device-509a4ac4.js"),["assets/device-509a4ac4.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-d1c48c2c.js"),["assets/device-d1c48c2c.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-249da548.js"),["assets/device-249da548.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/device.vue":()=>e(()=>import("./device-dd9fc66e.js"),["assets/device-dd9fc66e.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/inverter.vue":()=>e(()=>import("./inverter-f447aa74.js"),["assets/inverter-f447aa74.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./byd/byd/device.vue":()=>e(()=>import("./device-88e6829b.js"),["assets/device-88e6829b.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-b03c0db9.js"),["assets/counter-b03c0db9.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-67811713.js"),["assets/device-67811713.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/bat.vue":()=>e(()=>import("./bat-e36a210d.js"),["assets/bat-e36a210d.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/counter.vue":()=>e(()=>import("./counter-fa232f15.js"),["assets/counter-fa232f15.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/device.vue":()=>e(()=>import("./device-1565347a.js"),["assets/device-1565347a.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/inverter.vue":()=>e(()=>import("./inverter-39ce3cb1.js"),["assets/inverter-39ce3cb1.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/counter.vue":()=>e(()=>import("./counter-cfb2a7aa.js"),["assets/counter-cfb2a7aa.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-eb9518f3.js"),["assets/device-eb9518f3.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/inverter.vue":()=>e(()=>import("./inverter-d75d32f1.js"),["assets/inverter-d75d32f1.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-52c218d2.js"),["assets/device-52c218d2.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/counter.vue":()=>e(()=>import("./counter-d5ce341d.js"),["assets/counter-d5ce341d.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-716c4065.js"),["assets/device-716c4065.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/inverter.vue":()=>e(()=>import("./inverter-f9eaf59e.js"),["assets/inverter-f9eaf59e.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/bat.vue":()=>e(()=>import("./bat-d47d1fd1.js"),["assets/bat-d47d1fd1.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/device.vue":()=>e(()=>import("./device-aacbf2a5.js"),["assets/device-aacbf2a5.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/bat.vue":()=>e(()=>import("./bat-845b945a.js"),["assets/bat-845b945a.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/counter.vue":()=>e(()=>import("./counter-8b96457f.js"),["assets/counter-8b96457f.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-8c5dabb3.js"),["assets/device-8c5dabb3.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/inverter.vue":()=>e(()=>import("./inverter-62de90f4.js"),["assets/inverter-62de90f4.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/bat.vue":()=>e(()=>import("./bat-13f506c4.js"),["assets/bat-13f506c4.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-66058b82.js"),["assets/counter_sm-66058b82.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-a9846396.js"),["assets/device-a9846396.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/inverter_secondary.vue":()=>e(()=>import("./inverter_secondary-daf65789.js"),["assets/inverter_secondary-daf65789.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/bat.vue":()=>e(()=>import("./bat-5d86d2d0.js"),["assets/bat-5d86d2d0.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/counter.vue":()=>e(()=>import("./counter-7311f96b.js"),["assets/counter-7311f96b.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/device.vue":()=>e(()=>import("./device-9749c9e1.js"),["assets/device-9749c9e1.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/inverter.vue":()=>e(()=>import("./inverter-db7c45b0.js"),["assets/inverter-db7c45b0.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/bat.vue":()=>e(()=>import("./bat-d9cdd38d.js"),["assets/bat-d9cdd38d.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/counter.vue":()=>e(()=>import("./counter-40d2f2a6.js"),["assets/counter-40d2f2a6.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/device.vue":()=>e(()=>import("./device-354918a0.js"),["assets/device-354918a0.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/inverter.vue":()=>e(()=>import("./inverter-6157a590.js"),["assets/inverter-6157a590.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/bat.vue":()=>e(()=>import("./bat-5bcb481a.js"),["assets/bat-5bcb481a.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/counter.vue":()=>e(()=>import("./counter-8d45ef9c.js"),["assets/counter-8d45ef9c.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-6659803e.js"),["assets/device-6659803e.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/inverter.vue":()=>e(()=>import("./inverter-c0d3b643.js"),["assets/inverter-c0d3b643.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/virtual/counter.vue":()=>e(()=>import("./counter-3492fd19.js"),["assets/counter-3492fd19.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-ae68eae2.js"),["assets/device-ae68eae2.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./growatt/growatt/device.vue":()=>e(()=>import("./device-99e093c0.js"),["assets/device-99e093c0.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-99900f00.js"),["assets/device-99900f00.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-ba97b9ec.js"),["assets/bat-ba97b9ec.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-bef0b821.js"),["assets/counter-bef0b821.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-4c55f797.js"),["assets/device-4c55f797.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-4a2cdfd9.js"),["assets/inverter-4a2cdfd9.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/counter.vue":()=>e(()=>import("./counter-7a033879.js"),["assets/counter-7a033879.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-dbe167d8.js"),["assets/device-dbe167d8.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/counter.vue":()=>e(()=>import("./counter-018e7196.js"),["assets/counter-018e7196.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-5ceb63e9.js"),["assets/device-5ceb63e9.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/inverter.vue":()=>e(()=>import("./inverter-e8d6d647.js"),["assets/inverter-e8d6d647.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-45df0691.js"),["assets/device-45df0691.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/counter.vue":()=>e(()=>import("./counter-19e7f139.js"),["assets/counter-19e7f139.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-8de467ac.js"),["assets/device-8de467ac.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/counter.vue":()=>e(()=>import("./counter-ab315ba3.js"),["assets/counter-ab315ba3.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-9befb1d4.js"),["assets/device-9befb1d4.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-30d7c2e0.js"),["assets/device-30d7c2e0.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/inverter.vue":()=>e(()=>import("./inverter-456adc79.js"),["assets/inverter-456adc79.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./lg/lg/device.vue":()=>e(()=>import("./device-4e960663.js"),["assets/device-4e960663.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/bat.vue":()=>e(()=>import("./bat-b459c554.js"),["assets/bat-b459c554.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/counter.vue":()=>e(()=>import("./counter-55c27daf.js"),["assets/counter-55c27daf.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-f1c2a7a5.js"),["assets/device-f1c2a7a5.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/inverter.vue":()=>e(()=>import("./inverter-c1990994.js"),["assets/inverter-c1990994.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-3e5adae7.js"),["assets/device-3e5adae7.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/inverter.vue":()=>e(()=>import("./inverter-5571eba7.js"),["assets/inverter-5571eba7.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-a09a1026.js"),["assets/bat-a09a1026.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-508dda8e.js"),["assets/bat-508dda8e.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-d1809224.js"),["assets/counter-d1809224.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-82378537.js"),["assets/inverter-82378537.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/bat.vue":()=>e(()=>import("./bat-8885d269.js"),["assets/bat-8885d269.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/consumption_counter.vue":()=>e(()=>import("./consumption_counter-704c01f7.js"),["assets/consumption_counter-704c01f7.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/counter.vue":()=>e(()=>import("./counter-958da48c.js"),["assets/counter-958da48c.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-4f5bf65a.js"),["assets/device-4f5bf65a.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/inverter.vue":()=>e(()=>import("./inverter-0931beee.js"),["assets/inverter-0931beee.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-1eaedb65.js"),["assets/inverter-1eaedb65.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/counter.vue":()=>e(()=>import("./counter-ccad25ea.js"),["assets/counter-ccad25ea.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-c8cf6368.js"),["assets/device-c8cf6368.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/counter.vue":()=>e(()=>import("./counter-7668209b.js"),["assets/counter-7668209b.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-1830d04b.js"),["assets/device-1830d04b.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/inverter.vue":()=>e(()=>import("./inverter-896676a9.js"),["assets/inverter-896676a9.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-3be14789.js"),["assets/device-3be14789.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./rct/rct/device.vue":()=>e(()=>import("./device-968183c7.js"),["assets/device-968183c7.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-fcda5bd2.js"),["assets/device-fcda5bd2.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/counter.vue":()=>e(()=>import("./counter-48217739.js"),["assets/counter-48217739.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-fd0ed77c.js"),["assets/device-fd0ed77c.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-f3f81832.js"),["assets/device-f3f81832.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-357d44c6.js"),["assets/device-357d44c6.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/bat.vue":()=>e(()=>import("./bat-09e11c39.js"),["assets/bat-09e11c39.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/counter.vue":()=>e(()=>import("./counter-00141858.js"),["assets/counter-00141858.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-906beffa.js"),["assets/device-906beffa.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/inverter.vue":()=>e(()=>import("./inverter-25109ec8.js"),["assets/inverter-25109ec8.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_shm/counter.vue":()=>e(()=>import("./counter-76eff543.js"),["assets/counter-76eff543.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_shm/inverter.vue":()=>e(()=>import("./inverter-cad24111.js"),["assets/inverter-cad24111.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-47aea623.js"),["assets/bat-47aea623.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-8db62ce9.js"),["assets/bat_smart_energy-8db62ce9.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-5a3251ce.js"),["assets/counter-5a3251ce.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-3d86bc85.js"),["assets/device-3d86bc85.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-a427739c.js"),["assets/inverter-a427739c.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/bat.vue":()=>e(()=>import("./bat-1c531740.js"),["assets/bat-1c531740.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-8c6a7cd7.js"),["assets/device-8c6a7cd7.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-a0c4f59d.js"),["assets/device-a0c4f59d.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/counter.vue":()=>e(()=>import("./counter-8520ea8e.js"),["assets/counter-8520ea8e.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-6656b07f.js"),["assets/device-6656b07f.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/inverter.vue":()=>e(()=>import("./inverter-498c1656.js"),["assets/inverter-498c1656.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-7075a0a8.js"),["assets/device-7075a0a8.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-2f945435.js"),["assets/device-2f945435.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/counter.vue":()=>e(()=>import("./counter-95bdcdb7.js"),["assets/counter-95bdcdb7.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-264114d8.js"),["assets/device-264114d8.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-31e5797e.js"),["assets/device-31e5797e.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/inverter.vue":()=>e(()=>import("./inverter-30cf9ccf.js"),["assets/inverter-30cf9ccf.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-c61fae76.js"),["assets/device-c61fae76.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-4f7aad98.js"),["assets/device-4f7aad98.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/bat.vue":()=>e(()=>import("./bat-6ae70208.js"),["assets/bat-6ae70208.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/counter.vue":()=>e(()=>import("./counter-a31f5e7d.js"),["assets/counter-a31f5e7d.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-23e00b31.js"),["assets/device-23e00b31.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-19cf6472.js"),["assets/external_inverter-19cf6472.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/inverter.vue":()=>e(()=>import("./inverter-68f31134.js"),["assets/inverter-68f31134.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/bat.vue":()=>e(()=>import("./bat-655f55cd.js"),["assets/bat-655f55cd.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-123cfe52.js"),["assets/device-123cfe52.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/inverter.vue":()=>e(()=>import("./inverter-997c828c.js"),["assets/inverter-997c828c.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solax/solax/device.vue":()=>e(()=>import("./device-b21c21f9.js"),["assets/device-b21c21f9.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/bat.vue":()=>e(()=>import("./bat-5d80d1b1.js"),["assets/bat-5d80d1b1.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/counter.vue":()=>e(()=>import("./counter-394e8014.js"),["assets/counter-394e8014.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/device.vue":()=>e(()=>import("./device-e29a0ff7.js"),["assets/device-e29a0ff7.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/inverter.vue":()=>e(()=>import("./inverter-1e549543.js"),["assets/inverter-1e549543.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/counter.vue":()=>e(()=>import("./counter-1b273ac4.js"),["assets/counter-1b273ac4.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-1b11a3ea.js"),["assets/device-1b11a3ea.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/bat.vue":()=>e(()=>import("./bat-c05ee012.js"),["assets/bat-c05ee012.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/device.vue":()=>e(()=>import("./device-7f7452f2.js"),["assets/device-7f7452f2.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/inverter.vue":()=>e(()=>import("./inverter-0dee4ab1.js"),["assets/inverter-0dee4ab1.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-a319d4b6.js"),["assets/device-a319d4b6.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-54f1a203.js"),["assets/device-54f1a203.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-04b7418e.js"),["assets/device-04b7418e.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/counter.vue":()=>e(()=>import("./counter-aed75c81.js"),["assets/counter-aed75c81.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-653a19f8.js"),["assets/device-653a19f8.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/device.vue":()=>e(()=>import("./device-3f9eff90.js"),["assets/device-3f9eff90.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/inverter.vue":()=>e(()=>import("./inverter-f413f2e1.js"),["assets/inverter-f413f2e1.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/bat.vue":()=>e(()=>import("./bat-434d0404.js"),["assets/bat-434d0404.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/counter.vue":()=>e(()=>import("./counter-75e3d92e.js"),["assets/counter-75e3d92e.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/device.vue":()=>e(()=>import("./device-3435a852.js"),["assets/device-3435a852.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/inverter.vue":()=>e(()=>import("./inverter-f287a1d4.js"),["assets/inverter-f287a1d4.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/counter.vue":()=>e(()=>import("./counter-f0638cd4.js"),["assets/counter-f0638cd4.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-5cc2cdfa.js"),["assets/device-5cc2cdfa.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/inverter.vue":()=>e(()=>import("./inverter-617b5e4a.js"),["assets/inverter-617b5e4a.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/device.vue":()=>e(()=>import("./device-f0eb9f12.js"),["assets/device-f0eb9f12.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/inverter.vue":()=>e(()=>import("./inverter-2d9123ee.js"),["assets/inverter-2d9123ee.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.device.vendor}/${this.device.type}/${this.component.type}.vue`),errorComponent:ve}):z({loader:()=>C(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-e44ec84b.js"),["assets/device-e44ec84b.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./ampere/ampere/device.vue":()=>e(()=>import("./device-509a4ac4.js"),["assets/device-509a4ac4.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-d1c48c2c.js"),["assets/device-d1c48c2c.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-249da548.js"),["assets/device-249da548.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/device.vue":()=>e(()=>import("./device-dd9fc66e.js"),["assets/device-dd9fc66e.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./byd/byd/device.vue":()=>e(()=>import("./device-88e6829b.js"),["assets/device-88e6829b.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-67811713.js"),["assets/device-67811713.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/device.vue":()=>e(()=>import("./device-1565347a.js"),["assets/device-1565347a.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-eb9518f3.js"),["assets/device-eb9518f3.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-52c218d2.js"),["assets/device-52c218d2.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-716c4065.js"),["assets/device-716c4065.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/device.vue":()=>e(()=>import("./device-aacbf2a5.js"),["assets/device-aacbf2a5.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-8c5dabb3.js"),["assets/device-8c5dabb3.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-a9846396.js"),["assets/device-a9846396.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/device.vue":()=>e(()=>import("./device-9749c9e1.js"),["assets/device-9749c9e1.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/device.vue":()=>e(()=>import("./device-354918a0.js"),["assets/device-354918a0.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-6659803e.js"),["assets/device-6659803e.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-ae68eae2.js"),["assets/device-ae68eae2.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./growatt/growatt/device.vue":()=>e(()=>import("./device-99e093c0.js"),["assets/device-99e093c0.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-99900f00.js"),["assets/device-99900f00.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-4c55f797.js"),["assets/device-4c55f797.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-dbe167d8.js"),["assets/device-dbe167d8.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-5ceb63e9.js"),["assets/device-5ceb63e9.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-45df0691.js"),["assets/device-45df0691.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-8de467ac.js"),["assets/device-8de467ac.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-9befb1d4.js"),["assets/device-9befb1d4.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-30d7c2e0.js"),["assets/device-30d7c2e0.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./lg/lg/device.vue":()=>e(()=>import("./device-4e960663.js"),["assets/device-4e960663.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-f1c2a7a5.js"),["assets/device-f1c2a7a5.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-3e5adae7.js"),["assets/device-3e5adae7.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-4f5bf65a.js"),["assets/device-4f5bf65a.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-c8cf6368.js"),["assets/device-c8cf6368.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-1830d04b.js"),["assets/device-1830d04b.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-3be14789.js"),["assets/device-3be14789.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./rct/rct/device.vue":()=>e(()=>import("./device-968183c7.js"),["assets/device-968183c7.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-fcda5bd2.js"),["assets/device-fcda5bd2.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-fd0ed77c.js"),["assets/device-fd0ed77c.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-f3f81832.js"),["assets/device-f3f81832.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-357d44c6.js"),["assets/device-357d44c6.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-906beffa.js"),["assets/device-906beffa.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-3d86bc85.js"),["assets/device-3d86bc85.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-8c6a7cd7.js"),["assets/device-8c6a7cd7.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-a0c4f59d.js"),["assets/device-a0c4f59d.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-6656b07f.js"),["assets/device-6656b07f.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-7075a0a8.js"),["assets/device-7075a0a8.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-2f945435.js"),["assets/device-2f945435.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-264114d8.js"),["assets/device-264114d8.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-31e5797e.js"),["assets/device-31e5797e.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-c61fae76.js"),["assets/device-c61fae76.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-4f7aad98.js"),["assets/device-4f7aad98.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-23e00b31.js"),["assets/device-23e00b31.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-123cfe52.js"),["assets/device-123cfe52.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solax/solax/device.vue":()=>e(()=>import("./device-b21c21f9.js"),["assets/device-b21c21f9.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/device.vue":()=>e(()=>import("./device-e29a0ff7.js"),["assets/device-e29a0ff7.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-1b11a3ea.js"),["assets/device-1b11a3ea.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/device.vue":()=>e(()=>import("./device-7f7452f2.js"),["assets/device-7f7452f2.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-a319d4b6.js"),["assets/device-a319d4b6.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-54f1a203.js"),["assets/device-54f1a203.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-04b7418e.js"),["assets/device-04b7418e.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-653a19f8.js"),["assets/device-653a19f8.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/device.vue":()=>e(()=>import("./device-3f9eff90.js"),["assets/device-3f9eff90.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/device.vue":()=>e(()=>import("./device-3435a852.js"),["assets/device-3435a852.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-5cc2cdfa.js"),["assets/device-5cc2cdfa.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/device.vue":()=>e(()=>import("./device-f0eb9f12.js"),["assets/device-f0eb9f12.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.device.vendor}/${this.device.type}/device.vue`),errorComponent:_e})},updateConfiguration(o){this.$emit("update:configuration",o)}}};function me(o,t,i,m,v,n){return s(),E(Z(n.getComponent()),{device:i.device,component:i.component,configuration:i.component?i.component.configuration:i.device.configuration,"device-id":i.device.id,"device-type":i.device.type,"component-id":i.component?i.component.id:void 0,"component-type":i.component?i.component.type:void 0,"onUpdate:configuration":t[0]||(t[0]=l=>n.updateConfiguration(l))},null,40,["device","component","configuration","device-id","device-type","component-id","component-type"])}const pe=T(ae,[["render",me],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);S.add(U,q,G,N,K,F,H);const le={name:"OpenwbHardwareInstallationView",components:{FontAwesomeIcon:$,OpenwbConfigProxy:pe},mixins:[J],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],selectedVendor:void 0,deviceToAdd:void 0,showDeviceRemoveModal:!1,modalDevice:void 0,modalDeviceName:"",componentToAdd:[],showComponentRemoveModal:!1,modalComponent:void 0,modalComponentName:""}},computed:{installedDevices:{get(){return this.getWildcardTopics("openWB/system/device/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}},vendorList:{get(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]===void 0?[]:Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).map(([o,t])=>({label:t.group_name,options:Object.entries(t.vendors).map(([i,m])=>({value:[o,i],text:m.vendor_name})).sort((i,m)=>i.text.localeCompare(m.text))})).sort((o,t)=>-o.label.localeCompare(t.label))}},deviceList:{get(){if(this.selectedVendor===void 0)return[];let[o,t]=this.selectedVendor;return Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"][o].vendors[t].devices).map(([i,m])=>({value:[t,i],text:m.device_name})).sort((i,m)=>i.text.localeCompare(m.text))}}},methods:{getComponentTypeClass(o){return o.match(/^(.+_)?counter(_.+)?$/)?"danger":o.match(/^(.+_)?inverter(_.+)?$/)?"success":o.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(o){return o.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:o.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:o.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(o){return this.getWildcardTopics("openWB/system/device/"+o+"/component/+/config")},deviceHasConfiguredComponents(o){return Object.keys(this.getMyInstalledComponents(o)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{vendor:this.deviceToAdd[0],type:this.deviceToAdd[1]}})},removeDeviceModal(o,t,i){i.stopPropagation(),this.modalDevice=o,this.modalDeviceName=t,this.showDeviceRemoveModal=!0},removeDevice(o){this.showDeviceRemoveModal=!1,o=="confirm"&&this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}})},addComponent(o,t,i,m){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:o,deviceType:i,deviceVendor:t,type:m}})},removeComponentModal(o,t,i,m,v){v.stopPropagation(),this.modalComponent={deviceId:o,id:t,type:i},this.modalComponentName=m,this.showComponentRemoveModal=!0},removeComponent(o){this.showComponentRemoveModal=!1,o=="confirm"&&this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent})},getComponentList(o,t){if(o===void 0||t===void 0)return[];let i=[];return Object.values(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).every(m=>m.vendors[o]!==void 0?(m.vendors[o].devices[t]!==void 0&&(i=Object.entries(m.vendors[o].devices[t].components).map(([n,l])=>({value:n,text:l.component_name}))),!1):!0),i},updateConfiguration(o,t){console.debug("updateConfiguration",o,t),this.updateState(o,t.value,t.object)}}},ce={class:"hardwareInstallation"},Ee={name:"hardwareInstallationForm"},ge={key:0},fe={key:1},Ve={key:1},be={key:0};function Oe(o,t,i,m,v,n){const l=p("openwb-base-modal-dialog"),I=p("router-link"),O=p("openwb-base-alert"),A=p("font-awesome-icon"),D=p("openwb-base-avatar"),R=p("openwb-base-text-input"),x=p("openwb-config-proxy"),M=p("openwb-base-heading"),w=p("openwb-base-card"),y=p("openwb-base-select-input"),j=p("openwb-base-submit-buttons");return s(),g(L,null,[u(l,{show:v.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeDevice},{default:r(()=>[d(' Wollen Sie das Gerät "'+V(v.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),u(l,{show:v.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeComponent},{default:r(()=>[d(' Wollen Sie die Komponente "'+V(v.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),c("div",ce,[c("form",Ee,[i.installAssistantActive?P("",!0):(s(),E(O,{key:0,subtype:"info"},{default:r(()=>[t[7]||(t[7]=d(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das ")),u(I,{to:"/LoadManagementConfiguration"},{default:r(()=>t[6]||(t[6]=[d(" Lastmanagement ")])),_:1}),t[8]||(t[8]=d(" zu prüfen! "))]),_:1})),u(w,{title:"Geräte und Komponenten"},{default:r(()=>[o.$store.state.mqtt["openWB/general/extern"]===!0?(s(),g("div",ge,[u(O,{subtype:"info"},{default:r(()=>t[9]||(t[9]=[d(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),g("div",fe,[(s(!0),g(L,null,k(n.installedDevices,(_,h)=>(s(),E(w,{key:h,collapsible:!0,collapsed:!0,subtype:"dark"},{header:r(()=>[u(A,{"fixed-width":"",icon:["fas","network-wired"]}),d(" "+V(_==null?void 0:_.name),1)]),actions:r(a=>[a.collapsed?(s(),g("div",Ve,[(s(!0),g(L,null,k(n.getMyInstalledComponents(_==null?void 0:_.id),f=>(s(),E(D,{key:f.id,class:Q("ml-1 bg-"+n.getComponentTypeClass(f.type))},{default:r(()=>[u(A,{"fixed-width":"",icon:n.getComponentTypeIcon(f.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(s(),E(D,{key:0,class:"bg-danger clickable",onClick:f=>n.removeDeviceModal(_==null?void 0:_.id,_==null?void 0:_.name,f)},{default:r(()=>[u(A,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:r(()=>[u(R,{title:"Bezeichnung",subtype:"text","model-value":_==null?void 0:_.name,"onUpdate:modelValue":a=>o.updateState(h,a,"name")},null,8,["model-value","onUpdate:modelValue"]),t[17]||(t[17]=c("hr",null,null,-1)),u(x,{device:_,"onUpdate:configuration":a=>n.updateConfiguration(h,a)},null,8,["device","onUpdate:configuration"]),t[18]||(t[18]=c("hr",null,null,-1)),u(M,null,{default:r(()=>[...t[10]||(t[10]=[d("Komponenten")])]),_:1}),n.deviceHasConfiguredComponents(_==null?void 0:_.id)?P("",!0):(s(),E(O,{key:0,subtype:"warning"},{default:r(()=>[...t[11]||(t[11]=[d(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")])]),_:1})),(s(!0),g(L,null,k(n.getMyInstalledComponents(_.id),(a,f)=>(s(),E(w,{key:a.id,collapsible:!0,collapsed:!0,subtype:n.getComponentTypeClass(a.type)},{header:r(()=>[u(A,{"fixed-width":"",icon:n.getComponentTypeIcon(a.type)},null,8,["icon"]),d(" "+V(a.name),1)]),actions:r(b=>[b.collapsed?P("",!0):(s(),E(D,{key:0,class:"bg-danger clickable",onClick:W=>n.removeComponentModal(_.id,a.id,a.type,a.name,W)},{default:r(()=>[u(A,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:r(()=>[u(R,{title:"Bezeichnung",subtype:"text","model-value":a.name,"onUpdate:modelValue":b=>o.updateState(f,b,"name")},null,8,["model-value","onUpdate:modelValue"]),u(R,{title:"Hersteller",subtype:"text","model-value":a.info.manufacturer,"onUpdate:modelValue":b=>o.updateState(f,b,"info.manufacturer")},{help:r(()=>[...t[12]||(t[12]=[d(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),u(R,{title:"Modell",subtype:"text","model-value":a.info.model,"onUpdate:modelValue":b=>o.updateState(f,b,"info.model")},{help:r(()=>[...t[13]||(t[13]=[d(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),t[14]||(t[14]=c("hr",null,null,-1)),u(x,{device:_,component:a,"onUpdate:configuration":b=>n.updateConfiguration(f,b)},null,8,["device","component","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),t[19]||(t[19]=c("hr",null,null,-1)),n.getComponentList(_.vendor,_.type).length?(s(),E(y,{key:1,title:"Verfügbare Komponenten","not-selected":"Bitte auswählen",options:n.getComponentList(_.vendor,_.type),"model-value":v.componentToAdd[_.id],"add-button":!0,"onUpdate:modelValue":a=>v.componentToAdd[_.id]=a,"onInput:add":a=>n.addComponent(_.id,_.vendor,_.type,v.componentToAdd[_.id])},{help:r(()=>[...t[15]||(t[15]=[d(" Bitte eine Komponente auswählen, die hinzugefügt werden soll. Für jeden Datensatz, z.B. Wechselrichter- und Batteriedaten, muss eine Wechselrichter- und eine Batteriekomponente hinzugefügt werden. ")])]),_:2},1032,["options","model-value","onUpdate:modelValue","onInput:add"])):(s(),E(O,{key:2,subtype:"info"},{default:r(()=>[...t[16]||(t[16]=[d(" Dieses System bietet keine Komponenten zur Installation an. ")])]),_:1}))]),_:2},1024))),128)),Object.keys(n.installedDevices).length>0?(s(),g("hr",be)):P("",!0),u(y,{modelValue:v.selectedVendor,"onUpdate:modelValue":t[0]||(t[0]=_=>v.selectedVendor=_),title:"Hersteller","not-selected":"Bitte auswählen",groups:n.vendorList},null,8,["modelValue","groups"]),u(y,{modelValue:v.deviceToAdd,"onUpdate:modelValue":[t[1]||(t[1]=_=>v.deviceToAdd=_),t[2]||(t[2]=_=>v.deviceToAdd=_)],title:"Verfügbare Geräte","not-selected":"Bitte auswählen",disabled:v.selectedVendor===void 0,options:n.deviceList,"model-value":v.deviceToAdd,"add-button":!0,"onInput:add":n.addDevice},{help:r(()=>t[20]||(t[20]=[c("p",null,[d(' Die openWB-Regelung ist auf Werte von Messpunkten (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),c("br"),d(' Ein "Gerät" wird hierbei durch seine Verbindungseinstellungen (z.B. IP-Adresse) spezifiziert (häufig durch manuelle Eingabe oder manchmal automatisch ermittelt) und kann über mehrere untergeordnete "Komponenten" verfügen, z.B. einen Messpunkt für PV-Erzeugung, einen Messpunkt für Netzeinspeisung/-bezug am EVU-Punkt usw.. Ein "Gerät" bedingt somit immer mindestens eine zugehörige "Komponente". ')],-1),c("p",null,[d(' Bsp: Werden die Werte von verschiedenen Messpunkten (z.B. PV und EVU) über die gleiche IP-Adresse abgefragt, wird dafür ein "Gerät" mit zwei "Komponenten" für PV- und EVU- Messpunkt angelegt.'),c("br"),d(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt. ')],-1),c("p",null,' Das "Gerät" wird in der Dropdown-Liste ausgewählt und mit "+" der Regelung hinzugefügt. Im Anschluss erfolgt die Konfiguration des "Gerätes" innerhalb des schwarzen "Geräte"-Reiters. ',-1)])),_:1},8,["modelValue","disabled","options","model-value","onInput:add"])]))]),_:1}),u(j,{"form-name":"hardwareInstallationForm",onSave:t[3]||(t[3]=_=>o.$emit("save")),onReset:t[4]||(t[4]=_=>o.$emit("reset")),onDefaults:t[5]||(t[5]=_=>o.$emit("defaults"))})])])],64)}const Te=T(le,[["render",Oe],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]),Le=Object.freeze(Object.defineProperty({__proto__:null,default:Te},Symbol.toStringTag,{value:"Module"}));export{re as C,B as D,Te as H,Le as a}; diff --git a/web/settings/assets/HardwareInstallation-727b5962.js b/web/settings/assets/HardwareInstallation-727b5962.js new file mode 100644 index 0000000000..13557ef70c --- /dev/null +++ b/web/settings/assets/HardwareInstallation-727b5962.js @@ -0,0 +1 @@ +import{l as S,d as U,x as q,ah as G,a9 as N,Z as K,Y as F,X as H,F as $}from"./vendor-fortawesome-9d7cfdfb.js";import{_ as e,C as J}from"./index-b236cee5.js";import{_ as C}from"./dynamic-import-helper-be004503.js";import{_ as T,u as p,l as s,m as g,x as E,E as r,B as d,F as V,G as u,A as c,a1 as z,a2 as Z,z as P,N as L,M as k,q as X}from"./vendor-ad7c30fd.js";const Y={props:{device:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,o=void 0){this.$emit("update:configuration",{value:t,object:o})}}},B=T(Y,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/DeviceConfigMixin.vue"]]),Q={name:"DeviceFallback",mixins:[B]},ee={class:"device-fallback"},oe={key:1};function te(t,o,i,m,v,n){const l=p("openwb-base-alert"),I=p("openwb-base-textarea");return s(),g("div",ee,[Object.keys(t.device.configuration).length==0?(s(),E(l,{key:0,subtype:"info"},{default:r(()=>[d(' Der Gerät-Typ "'+V(t.device.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),g("div",oe,[u(l,{subtype:"warning"},{default:r(()=>[d(' Es wurde keine Konfigurationsseite für den Geräte-Typ "'+V(t.device.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),u(I,{title:"Konfiguration",subtype:"json","model-value":t.device.configuration,"onUpdate:modelValue":o[0]||(o[0]=O=>t.updateConfiguration(O,"configuration"))},{help:r(()=>o[1]||(o[1]=[d(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),u(l,{subtype:"info"},{default:r(()=>[c("pre",null,V(JSON.stringify(t.device.configuration,void 0,2)),1)]),_:1})]))])}const _e=T(Q,[["render",te],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ie={mixins:[B],props:{component:{type:Object,required:!0}}},re=T(ie,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/ComponentConfigMixin.vue"]]),ne={name:"ComponentFallback",mixins:[re]},ue={class:"component-fallback"},de={key:1};function se(t,o,i,m,v,n){const l=p("openwb-base-alert"),I=p("openwb-base-textarea");return s(),g("div",ue,[Object.keys(t.component.configuration).length==0?(s(),E(l,{key:0,subtype:"info"},{default:r(()=>[d(' Der Komponenten-Typ "'+V(t.component.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),g("div",de,[u(l,{subtype:"warning"},{default:r(()=>[d(' Es wurde keine Konfigurationsseite für den Komponenten-Typ "'+V(t.component.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),u(I,{title:"Konfiguration",subtype:"json","model-value":t.component.configuration,"onUpdate:modelValue":o[0]||(o[0]=O=>t.updateConfiguration(O,"configuration"))},{help:r(()=>o[1]||(o[1]=[d(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),u(l,{subtype:"info"},{default:r(()=>[c("pre",null,V(JSON.stringify(t.component.configuration,void 0,2)),1)]),_:1})]))])}const ve=T(ne,[["render",se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbComponentConfigFallback.vue"]]),ae={name:"OpenwbConfigProxy",props:{device:{type:Object,required:!0},component:{type:Object,required:!1,default:void 0}},emits:["update:configuration"],methods:{getComponent(){var t;return console.debug(`loading component: ${this.device.type} / ${(t=this.component)==null?void 0:t.type}`),this.component!==void 0?z({loader:()=>C(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-94d6b50f.js"),["assets/device-94d6b50f.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./ampere/ampere/device.vue":()=>e(()=>import("./device-13f0437c.js"),["assets/device-13f0437c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-ebfe2885.js"),["assets/device-ebfe2885.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-b9b6be03.js"),["assets/device-b9b6be03.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/device.vue":()=>e(()=>import("./device-d85f27a1.js"),["assets/device-d85f27a1.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/inverter.vue":()=>e(()=>import("./inverter-9c2adc35.js"),["assets/inverter-9c2adc35.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./byd/byd/device.vue":()=>e(()=>import("./device-55249d75.js"),["assets/device-55249d75.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-5bbed3f1.js"),["assets/counter-5bbed3f1.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-5fd78306.js"),["assets/device-5fd78306.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/bat.vue":()=>e(()=>import("./bat-8eeb809e.js"),["assets/bat-8eeb809e.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/counter.vue":()=>e(()=>import("./counter-b7f323cc.js"),["assets/counter-b7f323cc.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/device.vue":()=>e(()=>import("./device-72bc8ff3.js"),["assets/device-72bc8ff3.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/inverter.vue":()=>e(()=>import("./inverter-62f3baf9.js"),["assets/inverter-62f3baf9.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/counter.vue":()=>e(()=>import("./counter-dddfcee5.js"),["assets/counter-dddfcee5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-961ae78d.js"),["assets/device-961ae78d.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/inverter.vue":()=>e(()=>import("./inverter-6cea7a86.js"),["assets/inverter-6cea7a86.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-e6d1ff67.js"),["assets/device-e6d1ff67.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/counter.vue":()=>e(()=>import("./counter-09ee9f20.js"),["assets/counter-09ee9f20.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-8c80f180.js"),["assets/device-8c80f180.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/inverter.vue":()=>e(()=>import("./inverter-991c91e3.js"),["assets/inverter-991c91e3.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/bat.vue":()=>e(()=>import("./bat-386b6a71.js"),["assets/bat-386b6a71.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/device.vue":()=>e(()=>import("./device-86f7621f.js"),["assets/device-86f7621f.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/bat.vue":()=>e(()=>import("./bat-161a0b3f.js"),["assets/bat-161a0b3f.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/counter.vue":()=>e(()=>import("./counter-dd217c03.js"),["assets/counter-dd217c03.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-e7442473.js"),["assets/device-e7442473.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/inverter.vue":()=>e(()=>import("./inverter-4cc98b34.js"),["assets/inverter-4cc98b34.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/bat.vue":()=>e(()=>import("./bat-53f2b2dc.js"),["assets/bat-53f2b2dc.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-dd8aa57c.js"),["assets/counter_sm-dd8aa57c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-2144978c.js"),["assets/device-2144978c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/inverter_secondary.vue":()=>e(()=>import("./inverter_secondary-987240b8.js"),["assets/inverter_secondary-987240b8.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/bat.vue":()=>e(()=>import("./bat-00ee042f.js"),["assets/bat-00ee042f.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/counter.vue":()=>e(()=>import("./counter-c0fbd699.js"),["assets/counter-c0fbd699.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/device.vue":()=>e(()=>import("./device-5e15f44e.js"),["assets/device-5e15f44e.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/inverter.vue":()=>e(()=>import("./inverter-a8875bde.js"),["assets/inverter-a8875bde.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/bat.vue":()=>e(()=>import("./bat-575ac984.js"),["assets/bat-575ac984.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/counter.vue":()=>e(()=>import("./counter-ffe6f59d.js"),["assets/counter-ffe6f59d.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/device.vue":()=>e(()=>import("./device-e80c7a1a.js"),["assets/device-e80c7a1a.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/inverter.vue":()=>e(()=>import("./inverter-cbcef859.js"),["assets/inverter-cbcef859.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/bat.vue":()=>e(()=>import("./bat-46ed5214.js"),["assets/bat-46ed5214.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/counter.vue":()=>e(()=>import("./counter-28bcfaac.js"),["assets/counter-28bcfaac.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-35241d4e.js"),["assets/device-35241d4e.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/inverter.vue":()=>e(()=>import("./inverter-407f4ad4.js"),["assets/inverter-407f4ad4.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/virtual/counter.vue":()=>e(()=>import("./counter-021c90c7.js"),["assets/counter-021c90c7.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-cc6d1d33.js"),["assets/device-cc6d1d33.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./growatt/growatt/device.vue":()=>e(()=>import("./device-1cc75082.js"),["assets/device-1cc75082.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-e89043ef.js"),["assets/device-e89043ef.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-09618e87.js"),["assets/bat-09618e87.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-d04c382b.js"),["assets/counter-d04c382b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-5a5c2204.js"),["assets/device-5a5c2204.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-1632a4b1.js"),["assets/inverter-1632a4b1.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/counter.vue":()=>e(()=>import("./counter-01848dd0.js"),["assets/counter-01848dd0.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-e6a31e33.js"),["assets/device-e6a31e33.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/counter.vue":()=>e(()=>import("./counter-b5c55995.js"),["assets/counter-b5c55995.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-1e200cbf.js"),["assets/device-1e200cbf.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/inverter.vue":()=>e(()=>import("./inverter-ce8f0bd6.js"),["assets/inverter-ce8f0bd6.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-1497b5e4.js"),["assets/device-1497b5e4.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/counter.vue":()=>e(()=>import("./counter-70674361.js"),["assets/counter-70674361.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-1950c8ef.js"),["assets/device-1950c8ef.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/counter.vue":()=>e(()=>import("./counter-7680421b.js"),["assets/counter-7680421b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-92ff8214.js"),["assets/device-92ff8214.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-342a235f.js"),["assets/device-342a235f.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/inverter.vue":()=>e(()=>import("./inverter-b8e6f7ca.js"),["assets/inverter-b8e6f7ca.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./lg/lg/device.vue":()=>e(()=>import("./device-9684db49.js"),["assets/device-9684db49.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/bat.vue":()=>e(()=>import("./bat-b04f324c.js"),["assets/bat-b04f324c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/counter.vue":()=>e(()=>import("./counter-0e51da5e.js"),["assets/counter-0e51da5e.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-9a79e89c.js"),["assets/device-9a79e89c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/inverter.vue":()=>e(()=>import("./inverter-5009ea23.js"),["assets/inverter-5009ea23.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-9eedaff7.js"),["assets/device-9eedaff7.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/inverter.vue":()=>e(()=>import("./inverter-50a72e83.js"),["assets/inverter-50a72e83.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-500fac88.js"),["assets/bat-500fac88.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-7e2bb1f0.js"),["assets/bat-7e2bb1f0.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-d193f9cd.js"),["assets/counter-d193f9cd.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-1170f457.js"),["assets/inverter-1170f457.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/bat.vue":()=>e(()=>import("./bat-b13c576b.js"),["assets/bat-b13c576b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/consumption_counter.vue":()=>e(()=>import("./consumption_counter-d132c159.js"),["assets/consumption_counter-d132c159.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/counter.vue":()=>e(()=>import("./counter-2d03ca61.js"),["assets/counter-2d03ca61.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-aa0e176c.js"),["assets/device-aa0e176c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/inverter.vue":()=>e(()=>import("./inverter-66844342.js"),["assets/inverter-66844342.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-ff72f261.js"),["assets/inverter-ff72f261.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/counter.vue":()=>e(()=>import("./counter-a6252054.js"),["assets/counter-a6252054.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-8dcea009.js"),["assets/device-8dcea009.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/counter.vue":()=>e(()=>import("./counter-1306a4c6.js"),["assets/counter-1306a4c6.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-6dd461c4.js"),["assets/device-6dd461c4.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/inverter.vue":()=>e(()=>import("./inverter-387e64b9.js"),["assets/inverter-387e64b9.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-fec30c56.js"),["assets/device-fec30c56.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./rct/rct/device.vue":()=>e(()=>import("./device-8a67a9ec.js"),["assets/device-8a67a9ec.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-68b75b5b.js"),["assets/device-68b75b5b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/counter.vue":()=>e(()=>import("./counter-c4ea528f.js"),["assets/counter-c4ea528f.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-69185b02.js"),["assets/device-69185b02.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-f82ddafe.js"),["assets/device-f82ddafe.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-8b9db644.js"),["assets/device-8b9db644.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/bat.vue":()=>e(()=>import("./bat-e525273f.js"),["assets/bat-e525273f.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/counter.vue":()=>e(()=>import("./counter-40260f20.js"),["assets/counter-40260f20.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-e51f6a05.js"),["assets/device-e51f6a05.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/inverter.vue":()=>e(()=>import("./inverter-fb891ee4.js"),["assets/inverter-fb891ee4.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_shm/counter.vue":()=>e(()=>import("./counter-de0030ac.js"),["assets/counter-de0030ac.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_shm/inverter.vue":()=>e(()=>import("./inverter-8ea576fa.js"),["assets/inverter-8ea576fa.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-96814af1.js"),["assets/bat-96814af1.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-99926987.js"),["assets/bat_smart_energy-99926987.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-f257201f.js"),["assets/counter-f257201f.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-429cae7c.js"),["assets/device-429cae7c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-f5f1a5c8.js"),["assets/inverter-f5f1a5c8.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/bat.vue":()=>e(()=>import("./bat-8276d217.js"),["assets/bat-8276d217.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-11f6d869.js"),["assets/device-11f6d869.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-f7b12563.js"),["assets/device-f7b12563.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/counter.vue":()=>e(()=>import("./counter-986853af.js"),["assets/counter-986853af.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-45781f1b.js"),["assets/device-45781f1b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/inverter.vue":()=>e(()=>import("./inverter-dddc65f7.js"),["assets/inverter-dddc65f7.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-eaa956ad.js"),["assets/device-eaa956ad.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-0d49a26c.js"),["assets/device-0d49a26c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/counter.vue":()=>e(()=>import("./counter-6c87b676.js"),["assets/counter-6c87b676.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-2c344b3e.js"),["assets/device-2c344b3e.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-45cfa872.js"),["assets/device-45cfa872.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/inverter.vue":()=>e(()=>import("./inverter-a66b9919.js"),["assets/inverter-a66b9919.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-6dfeff1b.js"),["assets/device-6dfeff1b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-240bbfb8.js"),["assets/device-240bbfb8.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/bat.vue":()=>e(()=>import("./bat-41f81d7c.js"),["assets/bat-41f81d7c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/counter.vue":()=>e(()=>import("./counter-9e94ca6b.js"),["assets/counter-9e94ca6b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-d74725ec.js"),["assets/device-d74725ec.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-e76b5192.js"),["assets/external_inverter-e76b5192.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/inverter.vue":()=>e(()=>import("./inverter-29c8bc0a.js"),["assets/inverter-29c8bc0a.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/bat.vue":()=>e(()=>import("./bat-8ecd087b.js"),["assets/bat-8ecd087b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-82bb06d6.js"),["assets/device-82bb06d6.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/inverter.vue":()=>e(()=>import("./inverter-b76a9fda.js"),["assets/inverter-b76a9fda.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solax/solax/device.vue":()=>e(()=>import("./device-d1bfd3f3.js"),["assets/device-d1bfd3f3.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/bat.vue":()=>e(()=>import("./bat-b0b74fda.js"),["assets/bat-b0b74fda.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/counter.vue":()=>e(()=>import("./counter-11d67ba8.js"),["assets/counter-11d67ba8.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/device.vue":()=>e(()=>import("./device-8bba052a.js"),["assets/device-8bba052a.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/inverter.vue":()=>e(()=>import("./inverter-1a290548.js"),["assets/inverter-1a290548.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/counter.vue":()=>e(()=>import("./counter-76ed3a15.js"),["assets/counter-76ed3a15.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-ee4fe242.js"),["assets/device-ee4fe242.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/bat.vue":()=>e(()=>import("./bat-177cd510.js"),["assets/bat-177cd510.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/device.vue":()=>e(()=>import("./device-55bb825c.js"),["assets/device-55bb825c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/inverter.vue":()=>e(()=>import("./inverter-c852411a.js"),["assets/inverter-c852411a.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-dc895585.js"),["assets/device-dc895585.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-e3878572.js"),["assets/device-e3878572.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-6dfe8cd8.js"),["assets/device-6dfe8cd8.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/counter.vue":()=>e(()=>import("./counter-32cca269.js"),["assets/counter-32cca269.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-1ad34ad2.js"),["assets/device-1ad34ad2.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/device.vue":()=>e(()=>import("./device-93509dc9.js"),["assets/device-93509dc9.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/inverter.vue":()=>e(()=>import("./inverter-e9bb7891.js"),["assets/inverter-e9bb7891.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/bat.vue":()=>e(()=>import("./bat-515bb8b9.js"),["assets/bat-515bb8b9.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/counter.vue":()=>e(()=>import("./counter-48702b69.js"),["assets/counter-48702b69.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/device.vue":()=>e(()=>import("./device-d32f448c.js"),["assets/device-d32f448c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/inverter.vue":()=>e(()=>import("./inverter-6dedf2c0.js"),["assets/inverter-6dedf2c0.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/counter.vue":()=>e(()=>import("./counter-fea14072.js"),["assets/counter-fea14072.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-21c38268.js"),["assets/device-21c38268.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/inverter.vue":()=>e(()=>import("./inverter-2e18bb9f.js"),["assets/inverter-2e18bb9f.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/device.vue":()=>e(()=>import("./device-f71805ce.js"),["assets/device-f71805ce.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/inverter.vue":()=>e(()=>import("./inverter-e972f9b7.js"),["assets/inverter-e972f9b7.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.device.vendor}/${this.device.type}/${this.component.type}.vue`),errorComponent:ve}):z({loader:()=>C(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-94d6b50f.js"),["assets/device-94d6b50f.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./ampere/ampere/device.vue":()=>e(()=>import("./device-13f0437c.js"),["assets/device-13f0437c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-ebfe2885.js"),["assets/device-ebfe2885.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-b9b6be03.js"),["assets/device-b9b6be03.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/device.vue":()=>e(()=>import("./device-d85f27a1.js"),["assets/device-d85f27a1.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./byd/byd/device.vue":()=>e(()=>import("./device-55249d75.js"),["assets/device-55249d75.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-5fd78306.js"),["assets/device-5fd78306.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/device.vue":()=>e(()=>import("./device-72bc8ff3.js"),["assets/device-72bc8ff3.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-961ae78d.js"),["assets/device-961ae78d.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-e6d1ff67.js"),["assets/device-e6d1ff67.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-8c80f180.js"),["assets/device-8c80f180.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/device.vue":()=>e(()=>import("./device-86f7621f.js"),["assets/device-86f7621f.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-e7442473.js"),["assets/device-e7442473.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-2144978c.js"),["assets/device-2144978c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/device.vue":()=>e(()=>import("./device-5e15f44e.js"),["assets/device-5e15f44e.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/device.vue":()=>e(()=>import("./device-e80c7a1a.js"),["assets/device-e80c7a1a.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-35241d4e.js"),["assets/device-35241d4e.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-cc6d1d33.js"),["assets/device-cc6d1d33.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./growatt/growatt/device.vue":()=>e(()=>import("./device-1cc75082.js"),["assets/device-1cc75082.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-e89043ef.js"),["assets/device-e89043ef.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-5a5c2204.js"),["assets/device-5a5c2204.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-e6a31e33.js"),["assets/device-e6a31e33.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-1e200cbf.js"),["assets/device-1e200cbf.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-1497b5e4.js"),["assets/device-1497b5e4.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-1950c8ef.js"),["assets/device-1950c8ef.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-92ff8214.js"),["assets/device-92ff8214.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-342a235f.js"),["assets/device-342a235f.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./lg/lg/device.vue":()=>e(()=>import("./device-9684db49.js"),["assets/device-9684db49.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-9a79e89c.js"),["assets/device-9a79e89c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-9eedaff7.js"),["assets/device-9eedaff7.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-aa0e176c.js"),["assets/device-aa0e176c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-8dcea009.js"),["assets/device-8dcea009.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-6dd461c4.js"),["assets/device-6dd461c4.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-fec30c56.js"),["assets/device-fec30c56.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./rct/rct/device.vue":()=>e(()=>import("./device-8a67a9ec.js"),["assets/device-8a67a9ec.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-68b75b5b.js"),["assets/device-68b75b5b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-69185b02.js"),["assets/device-69185b02.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-f82ddafe.js"),["assets/device-f82ddafe.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-8b9db644.js"),["assets/device-8b9db644.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-e51f6a05.js"),["assets/device-e51f6a05.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-429cae7c.js"),["assets/device-429cae7c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-11f6d869.js"),["assets/device-11f6d869.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-f7b12563.js"),["assets/device-f7b12563.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-45781f1b.js"),["assets/device-45781f1b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-eaa956ad.js"),["assets/device-eaa956ad.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-0d49a26c.js"),["assets/device-0d49a26c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-2c344b3e.js"),["assets/device-2c344b3e.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-45cfa872.js"),["assets/device-45cfa872.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-6dfeff1b.js"),["assets/device-6dfeff1b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-240bbfb8.js"),["assets/device-240bbfb8.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-d74725ec.js"),["assets/device-d74725ec.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-82bb06d6.js"),["assets/device-82bb06d6.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solax/solax/device.vue":()=>e(()=>import("./device-d1bfd3f3.js"),["assets/device-d1bfd3f3.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/device.vue":()=>e(()=>import("./device-8bba052a.js"),["assets/device-8bba052a.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-ee4fe242.js"),["assets/device-ee4fe242.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/device.vue":()=>e(()=>import("./device-55bb825c.js"),["assets/device-55bb825c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-dc895585.js"),["assets/device-dc895585.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-e3878572.js"),["assets/device-e3878572.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-6dfe8cd8.js"),["assets/device-6dfe8cd8.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-1ad34ad2.js"),["assets/device-1ad34ad2.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/device.vue":()=>e(()=>import("./device-93509dc9.js"),["assets/device-93509dc9.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/device.vue":()=>e(()=>import("./device-d32f448c.js"),["assets/device-d32f448c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-21c38268.js"),["assets/device-21c38268.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/device.vue":()=>e(()=>import("./device-f71805ce.js"),["assets/device-f71805ce.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.device.vendor}/${this.device.type}/device.vue`),errorComponent:_e})},updateConfiguration(t){this.$emit("update:configuration",t)}}};function me(t,o,i,m,v,n){return s(),E(Z(n.getComponent()),{device:i.device,component:i.component,configuration:i.component?i.component.configuration:i.device.configuration,"device-id":i.device.id,"device-type":i.device.type,"component-id":i.component?i.component.id:void 0,"component-type":i.component?i.component.type:void 0,"onUpdate:configuration":o[0]||(o[0]=l=>n.updateConfiguration(l))},null,40,["device","component","configuration","device-id","device-type","component-id","component-type"])}const pe=T(ae,[["render",me],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);S.add(U,q,G,N,K,F,H);const le={name:"OpenwbHardwareInstallationView",components:{FontAwesomeIcon:$,OpenwbConfigProxy:pe},mixins:[J],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],selectedVendor:void 0,deviceToAdd:void 0,showDeviceRemoveModal:!1,modalDevice:void 0,modalDeviceName:"",componentToAdd:[],showComponentRemoveModal:!1,modalComponent:void 0,modalComponentName:""}},computed:{installedDevices:{get(){return this.getWildcardTopics("openWB/system/device/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}},vendorList:{get(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]===void 0?[]:Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).map(([t,o])=>({label:o.group_name,options:Object.entries(o.vendors).map(([i,m])=>({value:[t,i],text:m.vendor_name})).sort((i,m)=>i.text.localeCompare(m.text))})).sort((t,o)=>-t.label.localeCompare(o.label))}},deviceList:{get(){if(this.selectedVendor===void 0)return[];let[t,o]=this.selectedVendor;return Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"][t].vendors[o].devices).map(([i,m])=>({value:[o,i],text:m.device_name})).sort((i,m)=>i.text.localeCompare(m.text))}}},methods:{getComponentTypeClass(t){return t.match(/^(.+_)?counter(_.+)?$/)?"danger":t.match(/^(.+_)?inverter(_.+)?$/)?"success":t.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(t){return t.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:t.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:t.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(t){return this.getWildcardTopics("openWB/system/device/"+t+"/component/+/config")},deviceHasConfiguredComponents(t){return Object.keys(this.getMyInstalledComponents(t)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{vendor:this.deviceToAdd[0],type:this.deviceToAdd[1]}})},removeDeviceModal(t,o,i){i.stopPropagation(),this.modalDevice=t,this.modalDeviceName=o,this.showDeviceRemoveModal=!0},removeDevice(t){this.showDeviceRemoveModal=!1,t=="confirm"&&this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}})},addComponent(t,o,i,m){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:t,deviceType:i,deviceVendor:o,type:m}})},removeComponentModal(t,o,i,m,v){v.stopPropagation(),this.modalComponent={deviceId:t,id:o,type:i},this.modalComponentName=m,this.showComponentRemoveModal=!0},removeComponent(t){this.showComponentRemoveModal=!1,t=="confirm"&&this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent})},getComponentList(t,o){if(t===void 0||o===void 0)return[];let i=[];return Object.values(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).every(m=>m.vendors[t]!==void 0?(m.vendors[t].devices[o]!==void 0&&(i=Object.entries(m.vendors[t].devices[o].components).map(([n,l])=>({value:n,text:l.component_name}))),!1):!0),i},updateConfiguration(t,o){console.debug("updateConfiguration",t,o),this.updateState(t,o.value,o.object)}}},ce={class:"hardwareInstallation"},Ee={name:"hardwareInstallationForm"},ge={key:0},fe={key:1},Ve={key:1},be={key:0};function Oe(t,o,i,m,v,n){const l=p("openwb-base-modal-dialog"),I=p("router-link"),O=p("openwb-base-alert"),A=p("font-awesome-icon"),D=p("openwb-base-avatar"),R=p("openwb-base-text-input"),x=p("openwb-config-proxy"),M=p("openwb-base-heading"),w=p("openwb-base-card"),y=p("openwb-base-select-input"),j=p("openwb-base-submit-buttons");return s(),g(L,null,[u(l,{show:v.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeDevice},{default:r(()=>[d(' Wollen Sie das Gerät "'+V(v.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),u(l,{show:v.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeComponent},{default:r(()=>[d(' Wollen Sie die Komponente "'+V(v.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),c("div",ce,[c("form",Ee,[i.installAssistantActive?P("",!0):(s(),E(O,{key:0,subtype:"info"},{default:r(()=>[o[7]||(o[7]=d(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das ")),u(I,{to:"/LoadManagementConfiguration"},{default:r(()=>o[6]||(o[6]=[d(" Lastmanagement ")])),_:1}),o[8]||(o[8]=d(" zu prüfen! "))]),_:1})),u(w,{title:"Geräte und Komponenten"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(s(),g("div",ge,[u(O,{subtype:"info"},{default:r(()=>o[9]||(o[9]=[d(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),g("div",fe,[(s(!0),g(L,null,k(n.installedDevices,(_,h)=>(s(),E(w,{key:h,collapsible:!0,collapsed:!0,subtype:"dark"},{header:r(()=>[u(A,{"fixed-width":"",icon:["fas","network-wired"]}),d(" "+V(_==null?void 0:_.name),1)]),actions:r(a=>[a.collapsed?(s(),g("div",Ve,[(s(!0),g(L,null,k(n.getMyInstalledComponents(_==null?void 0:_.id),f=>(s(),E(D,{key:f.id,class:X("ml-1 bg-"+n.getComponentTypeClass(f.type))},{default:r(()=>[u(A,{"fixed-width":"",icon:n.getComponentTypeIcon(f.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(s(),E(D,{key:0,class:"bg-danger clickable",onClick:f=>n.removeDeviceModal(_==null?void 0:_.id,_==null?void 0:_.name,f)},{default:r(()=>[u(A,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:r(()=>[u(R,{title:"Bezeichnung",subtype:"text","model-value":_==null?void 0:_.name,"onUpdate:modelValue":a=>t.updateState(h,a,"name")},null,8,["model-value","onUpdate:modelValue"]),o[17]||(o[17]=c("hr",null,null,-1)),u(x,{device:_,"onUpdate:configuration":a=>n.updateConfiguration(h,a)},null,8,["device","onUpdate:configuration"]),o[18]||(o[18]=c("hr",null,null,-1)),u(M,null,{default:r(()=>[...o[10]||(o[10]=[d("Komponenten")])]),_:1}),n.deviceHasConfiguredComponents(_==null?void 0:_.id)?P("",!0):(s(),E(O,{key:0,subtype:"warning"},{default:r(()=>[...o[11]||(o[11]=[d(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")])]),_:1})),(s(!0),g(L,null,k(n.getMyInstalledComponents(_.id),(a,f)=>(s(),E(w,{key:a.id,collapsible:!0,collapsed:!0,subtype:n.getComponentTypeClass(a.type)},{header:r(()=>[u(A,{"fixed-width":"",icon:n.getComponentTypeIcon(a.type)},null,8,["icon"]),d(" "+V(a.name),1)]),actions:r(b=>[b.collapsed?P("",!0):(s(),E(D,{key:0,class:"bg-danger clickable",onClick:W=>n.removeComponentModal(_.id,a.id,a.type,a.name,W)},{default:r(()=>[u(A,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:r(()=>[u(R,{title:"Bezeichnung",subtype:"text","model-value":a.name,"onUpdate:modelValue":b=>t.updateState(f,b,"name")},null,8,["model-value","onUpdate:modelValue"]),u(R,{title:"Hersteller",subtype:"text","model-value":a.info.manufacturer,"onUpdate:modelValue":b=>t.updateState(f,b,"info.manufacturer")},{help:r(()=>[...o[12]||(o[12]=[d(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),u(R,{title:"Modell",subtype:"text","model-value":a.info.model,"onUpdate:modelValue":b=>t.updateState(f,b,"info.model")},{help:r(()=>[...o[13]||(o[13]=[d(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o[14]||(o[14]=c("hr",null,null,-1)),u(x,{device:_,component:a,"onUpdate:configuration":b=>n.updateConfiguration(f,b)},null,8,["device","component","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),o[19]||(o[19]=c("hr",null,null,-1)),n.getComponentList(_.vendor,_.type).length?(s(),E(y,{key:1,title:"Verfügbare Komponenten","not-selected":"Bitte auswählen",options:n.getComponentList(_.vendor,_.type),"model-value":v.componentToAdd[_.id],"add-button":!0,"onUpdate:modelValue":a=>v.componentToAdd[_.id]=a,"onInput:add":a=>n.addComponent(_.id,_.vendor,_.type,v.componentToAdd[_.id])},{help:r(()=>[...o[15]||(o[15]=[d(" Bitte eine Komponente auswählen, die hinzugefügt werden soll. Für jeden Datensatz, z.B. Wechselrichter- und Batteriedaten, muss eine Wechselrichter- und eine Batteriekomponente hinzugefügt werden. ")])]),_:2},1032,["options","model-value","onUpdate:modelValue","onInput:add"])):(s(),E(O,{key:2,subtype:"info"},{default:r(()=>[...o[16]||(o[16]=[d(" Dieses System bietet keine Komponenten zur Installation an. ")])]),_:1}))]),_:2},1024))),128)),Object.keys(n.installedDevices).length>0?(s(),g("hr",be)):P("",!0),u(y,{modelValue:v.selectedVendor,"onUpdate:modelValue":o[0]||(o[0]=_=>v.selectedVendor=_),title:"Hersteller","not-selected":"Bitte auswählen",groups:n.vendorList},null,8,["modelValue","groups"]),u(y,{modelValue:v.deviceToAdd,"onUpdate:modelValue":[o[1]||(o[1]=_=>v.deviceToAdd=_),o[2]||(o[2]=_=>v.deviceToAdd=_)],title:"Verfügbare Geräte","not-selected":"Bitte auswählen",disabled:v.selectedVendor===void 0,options:n.deviceList,"model-value":v.deviceToAdd,"add-button":!0,"onInput:add":n.addDevice},{help:r(()=>o[20]||(o[20]=[c("p",null,[d(' Die openWB-Regelung ist auf Werte von Messpunkten (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),c("br"),d(' Ein "Gerät" wird hierbei durch seine Verbindungseinstellungen (z.B. IP-Adresse) spezifiziert (häufig durch manuelle Eingabe oder manchmal automatisch ermittelt) und kann über mehrere untergeordnete "Komponenten" verfügen, z.B. einen Messpunkt für PV-Erzeugung, einen Messpunkt für Netzeinspeisung/-bezug am EVU-Punkt usw.. Ein "Gerät" bedingt somit immer mindestens eine zugehörige "Komponente". ')],-1),c("p",null,[d(' Bsp: Werden die Werte von verschiedenen Messpunkten (z.B. PV und EVU) über die gleiche IP-Adresse abgefragt, wird dafür ein "Gerät" mit zwei "Komponenten" für PV- und EVU- Messpunkt angelegt.'),c("br"),d(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt. ')],-1),c("p",null,' Das "Gerät" wird in der Dropdown-Liste ausgewählt und mit "+" der Regelung hinzugefügt. Im Anschluss erfolgt die Konfiguration des "Gerätes" innerhalb des schwarzen "Geräte"-Reiters. ',-1)])),_:1},8,["modelValue","disabled","options","model-value","onInput:add"])]))]),_:1}),u(j,{"form-name":"hardwareInstallationForm",onSave:o[3]||(o[3]=_=>t.$emit("save")),onReset:o[4]||(o[4]=_=>t.$emit("reset")),onDefaults:o[5]||(o[5]=_=>t.$emit("defaults"))})])])],64)}const Te=T(le,[["render",Oe],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]),Le=Object.freeze(Object.defineProperty({__proto__:null,default:Te},Symbol.toStringTag,{value:"Module"}));export{re as C,B as D,Te as H,Le as a}; diff --git a/web/settings/assets/InstallAssistant-01649aee.js b/web/settings/assets/InstallAssistant-01649aee.js new file mode 100644 index 0000000000..72f05c2493 --- /dev/null +++ b/web/settings/assets/InstallAssistant-01649aee.js @@ -0,0 +1 @@ +import{C as r,_ as t}from"./index-b236cee5.js";import{_}from"./dynamic-import-helper-be004503.js";import{_ as m,a1 as p,u as d,l as i,m as u,G as A,E as v,x as E,a2 as I,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";const P={name:"InstallAssistantView",mixins:[r],emits:["sendCommand","save","reset","defaults"],data(){return{currentPage:0,lastPage:10,showEndAssistantModal:!1}},methods:{getInstallAssistantStepComponent(){return console.debug(`loading assistant page: ${this.currentPage}`),p({loader:()=>_(Object.assign({"../components/install_assistant/InstallAssistantStep0.vue":()=>t(()=>import("./InstallAssistantStep0-4eb59c03.js"),["assets/InstallAssistantStep0-4eb59c03.js","assets/index-b236cee5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-d8d588b6.js","assets/InstallAssistantStepTemplate-930e3c07.css"]),"../components/install_assistant/InstallAssistantStep1.vue":()=>t(()=>import("./InstallAssistantStep1-7532f4ad.js"),["assets/InstallAssistantStep1-7532f4ad.js","assets/index-b236cee5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-d8d588b6.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/DataManagement-714df651.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep10.vue":()=>t(()=>import("./InstallAssistantStep10-b5154c47.js"),["assets/InstallAssistantStep10-b5154c47.js","assets/index-b236cee5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-d8d588b6.js","assets/InstallAssistantStepTemplate-930e3c07.css"]),"../components/install_assistant/InstallAssistantStep2.vue":()=>t(()=>import("./InstallAssistantStep2-97ea4181.js"),["assets/InstallAssistantStep2-97ea4181.js","assets/index-b236cee5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-d8d588b6.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/System-71b2e67e.js","assets/System-0f1d217b.css"]),"../components/install_assistant/InstallAssistantStep3.vue":()=>t(()=>import("./InstallAssistantStep3-d28da6cc.js"),["assets/InstallAssistantStep3-d28da6cc.js","assets/index-b236cee5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-d8d588b6.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/GeneralConfig-bc70f34a.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep4.vue":()=>t(()=>import("./InstallAssistantStep4-b80669cd.js"),["assets/InstallAssistantStep4-b80669cd.js","assets/index-b236cee5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-d8d588b6.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/ChargePointInstallation-7e51ce35.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-7b9399a8.css"]),"../components/install_assistant/InstallAssistantStep5.vue":()=>t(()=>import("./InstallAssistantStep5-f3c200c9.js"),["assets/InstallAssistantStep5-f3c200c9.js","assets/index-b236cee5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-d8d588b6.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/HardwareInstallation-727b5962.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep6.vue":()=>t(()=>import("./InstallAssistantStep6-0eab35fd.js"),["assets/InstallAssistantStep6-0eab35fd.js","assets/index-b236cee5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-d8d588b6.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/ChargePointInstallation-7e51ce35.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-7b9399a8.css"]),"../components/install_assistant/InstallAssistantStep7.vue":()=>t(()=>import("./InstallAssistantStep7-8b2d70ea.js"),["assets/InstallAssistantStep7-8b2d70ea.js","assets/index-b236cee5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-d8d588b6.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/LoadManagementConfig-d6d290f9.js","assets/OpenwbSortableList-13147a4b.js","assets/OpenwbSortableList-7ba533e4.css"]),"../components/install_assistant/InstallAssistantStep8.vue":()=>t(()=>import("./InstallAssistantStep8-d0a57c9f.js"),["assets/InstallAssistantStep8-d0a57c9f.js","assets/index-b236cee5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-d8d588b6.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/VehicleConfig-e49e5ddc.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep9.vue":()=>t(()=>import("./InstallAssistantStep9-26ed6631.js"),["assets/InstallAssistantStep9-26ed6631.js","assets/index-b236cee5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-d8d588b6.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/DataManagement-714df651.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStepTemplate.vue":()=>t(()=>import("./InstallAssistantStepTemplate-d8d588b6.js"),["assets/InstallAssistantStepTemplate-d8d588b6.js","assets/index-b236cee5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-930e3c07.css"])}),`../components/install_assistant/InstallAssistantStep${this.currentPage}.vue`)})},switchPage(s){s>=0&&s<=this.lastPage?this.currentPage=s:console.error(`invalid assistant page number: ${s}`)},endAssistantModal(){this.currentPage!=this.lastPage?this.showEndAssistantModal=!0:this.endAssistant("confirm")},endAssistant(s){this.showEndAssistantModal=!1,s=="confirm"&&(this.updateState("openWB/system/installAssistantDone",!0),this.$root.doPublish("openWB/set/system/installAssistantDone",!0),this.$router.push("/Status"))}}};function S(s,e,f,g,o,n){const l=d("openwb-base-modal-dialog");return i(),u("div",null,[A(l,{show:o.showEndAssistantModal,title:"Assistent beenden",subtype:"danger",buttons:[{text:"Beenden",event:"confirm",subtype:"danger"}],onModalResult:n.endAssistant},{default:v(()=>e[4]||(e[4]=[c(" Wollen Sie den Assistenten wirklich vorzeitig beenden? ")])),_:1},8,["show","onModalResult"]),(i(),E(I(n.getInstallAssistantStepComponent()),{onSendCommand:e[0]||(e[0]=a=>s.$emit("sendCommand",a)),onSave:e[1]||(e[1]=a=>s.$emit("save")),onReset:e[2]||(e[2]=a=>s.$emit("reset")),onDefaults:e[3]||(e[3]=a=>s.$emit("defaults")),onSwitchPage:n.switchPage,onEndAssistant:n.endAssistantModal},null,40,["onSwitchPage","onEndAssistant"]))])}const L=m(P,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstallAssistant.vue"]]);export{L as default}; diff --git a/web/settings/assets/InstallAssistant-06ef733c.js b/web/settings/assets/InstallAssistant-06ef733c.js deleted file mode 100644 index 94fc946b2f..0000000000 --- a/web/settings/assets/InstallAssistant-06ef733c.js +++ /dev/null @@ -1 +0,0 @@ -import{C as r,_ as t}from"./index-cc8f65ba.js";import{_}from"./dynamic-import-helper-be004503.js";import{_ as m,a1 as p,u as d,l as i,m as u,G as A,E as v,z as E,a2 as I,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";const P={name:"InstallAssistantView",mixins:[r],emits:["sendCommand","save","reset","defaults"],data(){return{currentPage:0,lastPage:10,showEndAssistantModal:!1}},methods:{getInstallAssistantStepComponent(){return console.debug(`loading assistant page: ${this.currentPage}`),p({loader:()=>_(Object.assign({"../components/install_assistant/InstallAssistantStep0.vue":()=>t(()=>import("./InstallAssistantStep0-e773f28e.js"),["assets/InstallAssistantStep0-e773f28e.js","assets/index-cc8f65ba.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-3bdc8973.js","assets/InstallAssistantStepTemplate-930e3c07.css"]),"../components/install_assistant/InstallAssistantStep1.vue":()=>t(()=>import("./InstallAssistantStep1-e0d32a00.js"),["assets/InstallAssistantStep1-e0d32a00.js","assets/index-cc8f65ba.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-3bdc8973.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/DataManagement-f14600c5.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep10.vue":()=>t(()=>import("./InstallAssistantStep10-1b3e0f38.js"),["assets/InstallAssistantStep10-1b3e0f38.js","assets/index-cc8f65ba.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-3bdc8973.js","assets/InstallAssistantStepTemplate-930e3c07.css"]),"../components/install_assistant/InstallAssistantStep2.vue":()=>t(()=>import("./InstallAssistantStep2-50ad5d87.js"),["assets/InstallAssistantStep2-50ad5d87.js","assets/index-cc8f65ba.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-3bdc8973.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/System-20e6cb5e.js","assets/System-0f1d217b.css"]),"../components/install_assistant/InstallAssistantStep3.vue":()=>t(()=>import("./InstallAssistantStep3-ac7124e1.js"),["assets/InstallAssistantStep3-ac7124e1.js","assets/index-cc8f65ba.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-3bdc8973.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/GeneralConfig-b0e93144.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep4.vue":()=>t(()=>import("./InstallAssistantStep4-b1f7c847.js"),["assets/InstallAssistantStep4-b1f7c847.js","assets/index-cc8f65ba.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-3bdc8973.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/ChargePointInstallation-408ee2ed.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-7b9399a8.css"]),"../components/install_assistant/InstallAssistantStep5.vue":()=>t(()=>import("./InstallAssistantStep5-133577c4.js"),["assets/InstallAssistantStep5-133577c4.js","assets/index-cc8f65ba.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-3bdc8973.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/HardwareInstallation-3a644290.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep6.vue":()=>t(()=>import("./InstallAssistantStep6-fe6bd91e.js"),["assets/InstallAssistantStep6-fe6bd91e.js","assets/index-cc8f65ba.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-3bdc8973.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/ChargePointInstallation-408ee2ed.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-7b9399a8.css"]),"../components/install_assistant/InstallAssistantStep7.vue":()=>t(()=>import("./InstallAssistantStep7-51125106.js"),["assets/InstallAssistantStep7-51125106.js","assets/index-cc8f65ba.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-3bdc8973.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/LoadManagementConfig-c15dfafe.js","assets/OpenwbSortableList-bde71f66.js","assets/OpenwbSortableList-7ba533e4.css"]),"../components/install_assistant/InstallAssistantStep8.vue":()=>t(()=>import("./InstallAssistantStep8-1047f636.js"),["assets/InstallAssistantStep8-1047f636.js","assets/index-cc8f65ba.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-3bdc8973.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/VehicleConfig-a49bda81.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep9.vue":()=>t(()=>import("./InstallAssistantStep9-bd70c725.js"),["assets/InstallAssistantStep9-bd70c725.js","assets/index-cc8f65ba.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-3bdc8973.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/DataManagement-f14600c5.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStepTemplate.vue":()=>t(()=>import("./InstallAssistantStepTemplate-3bdc8973.js"),["assets/InstallAssistantStepTemplate-3bdc8973.js","assets/index-cc8f65ba.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-930e3c07.css"])}),`../components/install_assistant/InstallAssistantStep${this.currentPage}.vue`)})},switchPage(s){s>=0&&s<=this.lastPage?this.currentPage=s:console.error(`invalid assistant page number: ${s}`)},endAssistantModal(){this.currentPage!=this.lastPage?this.showEndAssistantModal=!0:this.endAssistant("confirm")},endAssistant(s){this.showEndAssistantModal=!1,s=="confirm"&&(this.updateState("openWB/system/installAssistantDone",!0),this.$root.doPublish("openWB/set/system/installAssistantDone",!0),this.$router.push("/Status"))}}};function S(s,e,f,g,o,n){const l=d("openwb-base-modal-dialog");return i(),u("div",null,[A(l,{show:o.showEndAssistantModal,title:"Assistent beenden",subtype:"danger",buttons:[{text:"Beenden",event:"confirm",subtype:"danger"}],onModalResult:n.endAssistant},{default:v(()=>e[4]||(e[4]=[c(" Wollen Sie den Assistenten wirklich vorzeitig beenden? ")])),_:1},8,["show","onModalResult"]),(i(),E(I(n.getInstallAssistantStepComponent()),{onSendCommand:e[0]||(e[0]=a=>s.$emit("sendCommand",a)),onSave:e[1]||(e[1]=a=>s.$emit("save")),onReset:e[2]||(e[2]=a=>s.$emit("reset")),onDefaults:e[3]||(e[3]=a=>s.$emit("defaults")),onSwitchPage:n.switchPage,onEndAssistant:n.endAssistantModal},null,40,["onSwitchPage","onEndAssistant"]))])}const L=m(P,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstallAssistant.vue"]]);export{L as default}; diff --git a/web/settings/assets/InstallAssistantStep0-e773f28e.js b/web/settings/assets/InstallAssistantStep0-4eb59c03.js similarity index 85% rename from web/settings/assets/InstallAssistantStep0-e773f28e.js rename to web/settings/assets/InstallAssistantStep0-4eb59c03.js index fe39c9431f..38e4745572 100644 --- a/web/settings/assets/InstallAssistantStep0-e773f28e.js +++ b/web/settings/assets/InstallAssistantStep0-4eb59c03.js @@ -1 +1 @@ -import{C as u}from"./index-cc8f65ba.js";import d from"./InstallAssistantStepTemplate-3bdc8973.js";import{_ as p,u as i,l as m,z as g,E as a,G as h,y as f,x as t}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";const c={name:"InstallAssistantStep0",components:{InstallAssistantStepTemplate:d},mixins:[u],emits:["switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[],showModalWarning:!1}),methods:{requestNextPage(){this.showModalWarning=!0},nextPage(s){this.showModalWarning=!1,s==="confirm"&&this.$emit("switchPage",1)},previousPage(){},endAssistant(){this.$emit("endAssistant")}}};function b(s,e,A,w,P,n){const o=i("openwb-base-modal-dialog"),r=i("InstallAssistantStepTemplate");return m(),g(r,{title:"Start","hide-previous":!0,onNextPage:n.requestNextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{content:a(()=>[h(o,{show:s.showModalWarning,title:"Achtung!",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"success"}],onModalResult:e[0]||(e[0]=l=>n.nextPage(l))},{default:a(()=>e[1]||(e[1]=[f(" Bevor der Assistent gestartet wird, ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ")])),_:1},8,["show"]),e[2]||(e[2]=t("h2",null,"Vielen Dank, dass Du Dich für openWB entschieden hast.",-1)),e[3]||(e[3]=t("p",null,"Dieser Assistent führt Dich durch die Konfiguration der einzelnen Module:",-1)),e[4]||(e[4]=t("ol",null,[t("li",null,"Datensicherung der bestehenden Konfiguration"),t("li",null,"Aktualisierung des openWB-Systems"),t("li",null,"Allgemeine Einstellungen: Auswahl des Betriebsmodus primary (steuernd) bzw. secondary (gesteuerte WB)")],-1)),e[5]||(e[5]=t("p",null," Wird diese openWB als secondary betrieben, so werden nur die lokalen Ladepunkte eingerichtet. Im Betriebsmodus primary werden die folgenden zusätzlichen Schritte durchlaufen: ",-1)),e[6]||(e[6]=t("ol",{start:"4"},[t("li",null,"Energiesystem - Geräte und Komponenten einrichten"),t("li",null,"Einrichten der Ladepunkte (openWB als primary)"),t("li",null,"Konfiguration des Lastmanagements"),t("li",null,"Einrichten der Fahrzeuge"),t("li",null,"Datensicherung der neuen Konfiguration")],-1)),e[7]||(e[7]=t("p",null,"Danach ist die Grundkonfiguration abgeschlossen.",-1))]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const D=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep0.vue"]]);export{D as default}; +import{C as u}from"./index-b236cee5.js";import d from"./InstallAssistantStepTemplate-d8d588b6.js";import{_ as p,u as i,l as m,x as g,E as a,G as h,B as f,A as t}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";const c={name:"InstallAssistantStep0",components:{InstallAssistantStepTemplate:d},mixins:[u],emits:["switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[],showModalWarning:!1}),methods:{requestNextPage(){this.showModalWarning=!0},nextPage(s){this.showModalWarning=!1,s==="confirm"&&this.$emit("switchPage",1)},previousPage(){},endAssistant(){this.$emit("endAssistant")}}};function b(s,e,A,w,P,n){const o=i("openwb-base-modal-dialog"),r=i("InstallAssistantStepTemplate");return m(),g(r,{title:"Start","hide-previous":!0,onNextPage:n.requestNextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{content:a(()=>[h(o,{show:s.showModalWarning,title:"Achtung!",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"success"}],onModalResult:e[0]||(e[0]=l=>n.nextPage(l))},{default:a(()=>e[1]||(e[1]=[f(" Bevor der Assistent gestartet wird, ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ")])),_:1},8,["show"]),e[2]||(e[2]=t("h2",null,"Vielen Dank, dass Du Dich für openWB entschieden hast.",-1)),e[3]||(e[3]=t("p",null,"Dieser Assistent führt Dich durch die Konfiguration der einzelnen Module:",-1)),e[4]||(e[4]=t("ol",null,[t("li",null,"Datensicherung der bestehenden Konfiguration"),t("li",null,"Aktualisierung des openWB-Systems"),t("li",null,"Allgemeine Einstellungen: Auswahl des Betriebsmodus primary (steuernd) bzw. secondary (gesteuerte WB)")],-1)),e[5]||(e[5]=t("p",null," Wird diese openWB als secondary betrieben, so werden nur die lokalen Ladepunkte eingerichtet. Im Betriebsmodus primary werden die folgenden zusätzlichen Schritte durchlaufen: ",-1)),e[6]||(e[6]=t("ol",{start:"4"},[t("li",null,"Energiesystem - Geräte und Komponenten einrichten"),t("li",null,"Einrichten der Ladepunkte (openWB als primary)"),t("li",null,"Konfiguration des Lastmanagements"),t("li",null,"Einrichten der Fahrzeuge"),t("li",null,"Datensicherung der neuen Konfiguration")],-1)),e[7]||(e[7]=t("p",null,"Danach ist die Grundkonfiguration abgeschlossen.",-1))]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const D=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep0.vue"]]);export{D as default}; diff --git a/web/settings/assets/InstallAssistantStep1-e0d32a00.js b/web/settings/assets/InstallAssistantStep1-7532f4ad.js similarity index 75% rename from web/settings/assets/InstallAssistantStep1-e0d32a00.js rename to web/settings/assets/InstallAssistantStep1-7532f4ad.js index 3ecc62dd60..92c15f664f 100644 --- a/web/settings/assets/InstallAssistantStep1-e0d32a00.js +++ b/web/settings/assets/InstallAssistantStep1-7532f4ad.js @@ -1 +1 @@ -import{C as m}from"./index-cc8f65ba.js";import p from"./InstallAssistantStepTemplate-3bdc8973.js";import{D as l}from"./DataManagement-f14600c5.js";import{_ as d,u as a,l as u,z as g,E as o,x as f,G as v}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep1",components:{InstallAssistantStepTemplate:p,DataManagement:l},mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",2)},previousPage(){this.$emit("switchPage",0)},endAssistant(){this.$emit("endAssistant")}}};function P(t,e,c,S,w,n){const i=a("DataManagement"),r=a("InstallAssistantStepTemplate");return u(),g(r,{title:"1. Datensicherung der bestehenden Konfiguration",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>e[4]||(e[4]=[f("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erstellen, auf welche später zurückgegriffen werden kann, insbesondere, wenn die openWB schon konfiguriert war und der Assistent nun erneut ausgeführt wird. ",-1)])),content:o(()=>[v(i,{"install-assistant-active":!0,"show-backup-cloud-section":!1,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const N=d(A,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep1.vue"]]);export{N as default}; +import{C as m}from"./index-b236cee5.js";import p from"./InstallAssistantStepTemplate-d8d588b6.js";import{D as l}from"./DataManagement-714df651.js";import{_ as d,u as a,l as u,x as g,E as o,A as f,G as v}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep1",components:{InstallAssistantStepTemplate:p,DataManagement:l},mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",2)},previousPage(){this.$emit("switchPage",0)},endAssistant(){this.$emit("endAssistant")}}};function P(t,e,c,S,w,n){const i=a("DataManagement"),r=a("InstallAssistantStepTemplate");return u(),g(r,{title:"1. Datensicherung der bestehenden Konfiguration",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>e[4]||(e[4]=[f("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erstellen, auf welche später zurückgegriffen werden kann, insbesondere, wenn die openWB schon konfiguriert war und der Assistent nun erneut ausgeführt wird. ",-1)])),content:o(()=>[v(i,{"install-assistant-active":!0,"show-backup-cloud-section":!1,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const N=d(A,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep1.vue"]]);export{N as default}; diff --git a/web/settings/assets/InstallAssistantStep10-1b3e0f38.js b/web/settings/assets/InstallAssistantStep10-b5154c47.js similarity index 75% rename from web/settings/assets/InstallAssistantStep10-1b3e0f38.js rename to web/settings/assets/InstallAssistantStep10-b5154c47.js index 249694bf7d..831a571168 100644 --- a/web/settings/assets/InstallAssistantStep10-1b3e0f38.js +++ b/web/settings/assets/InstallAssistantStep10-b5154c47.js @@ -1 +1 @@ -import{C as a}from"./index-cc8f65ba.js";import o from"./InstallAssistantStepTemplate-3bdc8973.js";import{_ as r,u as l,l as m,z as p,E as d,x as n}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";const u={name:"InstallAssistantStep10",components:{InstallAssistantStepTemplate:o},mixins:[a],emits:["switchPage","endAssistant","sendCommand"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){},previousPage(){this.$emit("switchPage",9)},sendCommand(t){this.$emit("sendCommand",t)},endAssistant(){this.$emit("endAssistant")}}};function g(t,s,c,f,A,e){const i=l("InstallAssistantStepTemplate");return m(),p(i,{title:"Abgeschlossen","hide-next":!0,onNextPage:e.nextPage,onPreviousPage:e.previousPage,onEndAssistant:e.endAssistant},{content:d(()=>s[0]||(s[0]=[n("h2",null,"Die Grundkonfiguration ist abgeschlossen.",-1),n("p",null," Die grundlegende Konfiguration der openWB ist abgeschlossen. Du wirst mit Beendigung dieses Assistenten auf die Statusseite weitergeleitet. Bitte überprüfe die dargestellten Informationen und passe bei Unstimmigkeiten die Einstellungen in den jeweiligen Konfigurationsseiten an (openWB -> Einstellungen -> Konfiguration). ",-1)])),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const w=r(u,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep10.vue"]]);export{w as default}; +import{C as a}from"./index-b236cee5.js";import o from"./InstallAssistantStepTemplate-d8d588b6.js";import{_ as r,u as l,l as m,x as p,E as d,A as n}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";const u={name:"InstallAssistantStep10",components:{InstallAssistantStepTemplate:o},mixins:[a],emits:["switchPage","endAssistant","sendCommand"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){},previousPage(){this.$emit("switchPage",9)},sendCommand(t){this.$emit("sendCommand",t)},endAssistant(){this.$emit("endAssistant")}}};function g(t,s,c,f,A,e){const i=l("InstallAssistantStepTemplate");return m(),p(i,{title:"Abgeschlossen","hide-next":!0,onNextPage:e.nextPage,onPreviousPage:e.previousPage,onEndAssistant:e.endAssistant},{content:d(()=>s[0]||(s[0]=[n("h2",null,"Die Grundkonfiguration ist abgeschlossen.",-1),n("p",null," Die grundlegende Konfiguration der openWB ist abgeschlossen. Du wirst mit Beendigung dieses Assistenten auf die Statusseite weitergeleitet. Bitte überprüfe die dargestellten Informationen und passe bei Unstimmigkeiten die Einstellungen in den jeweiligen Konfigurationsseiten an (openWB -> Einstellungen -> Konfiguration). ",-1)])),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const w=r(u,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep10.vue"]]);export{w as default}; diff --git a/web/settings/assets/InstallAssistantStep2-50ad5d87.js b/web/settings/assets/InstallAssistantStep2-97ea4181.js similarity index 68% rename from web/settings/assets/InstallAssistantStep2-50ad5d87.js rename to web/settings/assets/InstallAssistantStep2-97ea4181.js index 276b0878a1..94a5c9dba3 100644 --- a/web/settings/assets/InstallAssistantStep2-50ad5d87.js +++ b/web/settings/assets/InstallAssistantStep2-97ea4181.js @@ -1 +1 @@ -import{C as l}from"./index-cc8f65ba.js";import u from"./InstallAssistantStepTemplate-3bdc8973.js";import d from"./System-20e6cb5e.js";import{_ as p,u as a,l as f,z as g,E as o,x as s,G as S}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";const c={name:"InstallAssistantStep2",components:{InstallAssistantStepTemplate:u,SystemView:d},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",3)},previousPage(){this.$emit("switchPage",1)},endAssistant(){this.$emit("endAssistant")}}};function A(t,e,w,v,k,i){const r=a("SystemView"),m=a("InstallAssistantStepTemplate");return f(),g(m,{title:"2. Aktualisierung des openWB-Systems",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:o(()=>e[4]||(e[4]=[s("p",null," Bitte ein System-Update durchführen, um die Software auf den neuesten Stand der Features und Funktionen zu bringen. ",-1),s("p",null," Hierzu Versions-Informationen / Aktualisierung auswählen, Informationen aktualisieren klicken und falls ein Update verfügbar ist, wird der Update-Button grün (zum Update bereit). ",-1),s("p",null," Bei openWB-Systemen mit integriertem Display muss nach Zurücksetzen auf Werkseinstellungen oder nach Ausführen eines Updates das Display wieder eingeschaltet werden. ",-1),s("p",null,' Ein Klick auf "Änderungen" zeigt die Modifikationen. Ein Klick auf "Update" startet die Aktualisierung, welche auch einen automatischen Reboot initiiert (bitte ca. 5 Minuten warten). Danach muss der Assistent neu gestartet werden. ',-1)])),content:o(()=>[S(r,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const z=p(c,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep2.vue"]]);export{z as default}; +import{C as l}from"./index-b236cee5.js";import u from"./InstallAssistantStepTemplate-d8d588b6.js";import d from"./System-71b2e67e.js";import{_ as p,u as a,l as f,x as g,E as o,A as s,G as A}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";const S={name:"InstallAssistantStep2",components:{InstallAssistantStepTemplate:u,SystemView:d},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",3)},previousPage(){this.$emit("switchPage",1)},endAssistant(){this.$emit("endAssistant")}}};function c(t,e,w,v,k,i){const r=a("SystemView"),m=a("InstallAssistantStepTemplate");return f(),g(m,{title:"2. Aktualisierung des openWB-Systems",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:o(()=>e[4]||(e[4]=[s("p",null," Bitte ein System-Update durchführen, um die Software auf den neuesten Stand der Features und Funktionen zu bringen. ",-1),s("p",null," Hierzu Versions-Informationen / Aktualisierung auswählen, Informationen aktualisieren klicken und falls ein Update verfügbar ist, wird der Update-Button grün (zum Update bereit). ",-1),s("p",null," Bei openWB-Systemen mit integriertem Display muss nach Zurücksetzen auf Werkseinstellungen oder nach Ausführen eines Updates das Display wieder eingeschaltet werden. ",-1),s("p",null,' Ein Klick auf "Änderungen" zeigt die Modifikationen. Ein Klick auf "Update" startet die Aktualisierung, welche auch einen automatischen Reboot initiiert (bitte ca. 5 Minuten warten). Danach muss der Assistent neu gestartet werden. ',-1)])),content:o(()=>[A(r,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const U=p(S,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep2.vue"]]);export{U as default}; diff --git a/web/settings/assets/InstallAssistantStep3-ac7124e1.js b/web/settings/assets/InstallAssistantStep3-ac7124e1.js deleted file mode 100644 index 85dd5476d1..0000000000 --- a/web/settings/assets/InstallAssistantStep3-ac7124e1.js +++ /dev/null @@ -1 +0,0 @@ -import{C as u}from"./index-cc8f65ba.js";import d from"./InstallAssistantStepTemplate-3bdc8973.js";import{G as m}from"./GeneralConfig-b0e93144.js";import{_ as p,u as a,l as g,z as f,E as i,x as n,G as w}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"InstallAssistantStep3",components:{InstallAssistantStepTemplate:d,GeneralConfigView:m},mixins:[u],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),methods:{nextPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:5)},previousPage(){this.$emit("switchPage",2)},endAssistant(){this.$emit("endAssistant")}}};function B(t,e,S,c,h,r){const o=a("GeneralConfigView"),l=a("InstallAssistantStepTemplate");return g(),f(l,{title:"3. Allgemeine Einstellungen: Auswahl des Betriebsmodus primary (steuernd) bzw. secondary (gesteuerte WB)",onNextPage:r.nextPage,onPreviousPage:r.previousPage,onEndAssistant:r.endAssistant},{help:i(()=>e[4]||(e[4]=[n("p",null," Hier wird abgefragt, ob Dein System mit mehreren openWBs oder nur mit einer openWB betrieben wird. Eine openWB kann andere openWBs steuern. ",-1),n("p",null,' Zuerst ist im Feld "Steuerungsmodus" festzulegen, ob die openWB als "steuernd" (primary) oder als ferngesteuert (secondary) arbeiten soll. Die Einstellung gilt für genau die WB, auf der aktuell konfiguriert wird (korrekte IP-Adresse beachten). ',-1),n("p",null," Eine openWB standalone hat keinen Ladepunkt und arbeitet nur als Steuerteil (primary). Eine openWB Standard(+), custom, Duo und Buchse können sowohl als steuernder primary oder als ferngesteuerte secondary betrieben werden (Duo mit 2 Ladepunkten). Eine openWB Pro und Satellit können nur als s.g. Ladepunkt genutzt werden und benötigen zwingend einen separaten primary als Steuerteil. ",-1),n("p",null,' Sofern openWB als Energiemanagementsystem für steuerbare Verbrauchseinrichtungen (SteuVE) gemäß §14a EnWG verwendet werden soll, so ist für die VNB-Signaleingänge die entsprechende Hardware auszuwählen. -> s. Beschreibung zu "Steuerbare Verbrauchseinrichtung". ',-1),n("p",{class:"font-weight-bold"},"Änderungen werden nur durch Klicken auf Speichern wirksam!",-1)])),content:i(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const x=p(b,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep3.vue"]]);export{x as default}; diff --git a/web/settings/assets/InstallAssistantStep3-d28da6cc.js b/web/settings/assets/InstallAssistantStep3-d28da6cc.js new file mode 100644 index 0000000000..f04363f70b --- /dev/null +++ b/web/settings/assets/InstallAssistantStep3-d28da6cc.js @@ -0,0 +1 @@ +import{C as u}from"./index-b236cee5.js";import d from"./InstallAssistantStepTemplate-d8d588b6.js";import m from"./GeneralConfig-bc70f34a.js";import{_ as p,u as a,l as g,x as f,E as i,A as n,G as w}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"InstallAssistantStep3",components:{InstallAssistantStepTemplate:d,GeneralConfigView:m},mixins:[u],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),methods:{nextPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:5)},previousPage(){this.$emit("switchPage",2)},endAssistant(){this.$emit("endAssistant")}}};function B(t,e,S,c,h,r){const o=a("GeneralConfigView"),l=a("InstallAssistantStepTemplate");return g(),f(l,{title:"3. Allgemeine Einstellungen: Auswahl des Betriebsmodus primary (steuernd) bzw. secondary (gesteuerte WB)",onNextPage:r.nextPage,onPreviousPage:r.previousPage,onEndAssistant:r.endAssistant},{help:i(()=>e[4]||(e[4]=[n("p",null," Hier wird abgefragt, ob Dein System mit mehreren openWBs oder nur mit einer openWB betrieben wird. Eine openWB kann andere openWBs steuern. ",-1),n("p",null,' Zuerst ist im Feld "Steuerungsmodus" festzulegen, ob die openWB als "steuernd" (primary) oder als ferngesteuert (secondary) arbeiten soll. Die Einstellung gilt für genau die WB, auf der aktuell konfiguriert wird (korrekte IP-Adresse beachten). ',-1),n("p",null," Eine openWB standalone hat keinen Ladepunkt und arbeitet nur als Steuerteil (primary). Eine openWB Standard(+), custom, Duo und Buchse können sowohl als steuernder primary oder als ferngesteuerte secondary betrieben werden (Duo mit 2 Ladepunkten). Eine openWB Pro und Satellit können nur als s.g. Ladepunkt genutzt werden und benötigen zwingend einen separaten primary als Steuerteil. ",-1),n("p",null,' Sofern openWB als Energiemanagementsystem für steuerbare Verbrauchseinrichtungen (SteuVE) gemäß §14a EnWG verwendet werden soll, so ist für die VNB-Signaleingänge die entsprechende Hardware auszuwählen. -> s. Beschreibung zu "Steuerbare Verbrauchseinrichtung". ',-1),n("p",{class:"font-weight-bold"},"Änderungen werden nur durch Klicken auf Speichern wirksam!",-1)])),content:i(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const x=p(b,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep3.vue"]]);export{x as default}; diff --git a/web/settings/assets/InstallAssistantStep4-b1f7c847.js b/web/settings/assets/InstallAssistantStep4-b80669cd.js similarity index 83% rename from web/settings/assets/InstallAssistantStep4-b1f7c847.js rename to web/settings/assets/InstallAssistantStep4-b80669cd.js index 952fb125d1..ac6a33f64b 100644 --- a/web/settings/assets/InstallAssistantStep4-b1f7c847.js +++ b/web/settings/assets/InstallAssistantStep4-b80669cd.js @@ -1 +1 @@ -import{C as l}from"./index-cc8f65ba.js";import p from"./InstallAssistantStepTemplate-3bdc8973.js";import{b as u}from"./ChargePointInstallation-408ee2ed.js";import{_ as m,u as a,l as g,z as f,E as o,x as n,G as w}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep4",components:{InstallAssistantStepTemplate:p,ChargePointInstallationView:u},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}};function h(t,e,k,B,v,i){const r=a("ChargePointInstallationView"),d=a("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Einrichten der Ladepunkte (openWB als secondary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:o(()=>e[4]||(e[4]=[n("p",null,' Diese hier vorzukonfigurierende openWB wurde als "secondary" eingestellt und wird von einer anderen openWB oder standalone ferngesteuert. ',-1),n("p",null," Bei vorkonfigurierten openWBs ist ab Werk bereits ein (zwei bei einer DUO) interner Ladepunkt eingetragen, es müssen keine weiteren Ladepunkte hinzugefügt werden. ",-1),n("p",null,' Tragen Sie unter Ladepunkte bei verfügbare Ladepunkte "Interne openWB" ein und wählen Sie die Bauart der openWB (z.B. openWB series 1/2 custom, Standard (+) oder Buchse) aus. ',-1),n("p",null," Wenn eine openWB Duo gewählt wird, so sind zwei Ladepunkte mit Ladepunkt-Nummer 1 und 2 zu konfigurieren. Bei der openWB Pro und Satellit sind keine Einstellungen notwendig. ",-1),n("p",null,"Weitere Einstellungen sind bei der Vorkonfiguration einer secondary nicht notwendig.",-1),n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),n("p",{class:"font-weight-bold"},"Änderungen werden nur durch Klicken auf Speichern wirksam!",-1)])),content:o(()=>[w(r,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const E=m(c,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep4.vue"]]);export{E as default}; +import{C as l}from"./index-b236cee5.js";import p from"./InstallAssistantStepTemplate-d8d588b6.js";import{b as u}from"./ChargePointInstallation-7e51ce35.js";import{_ as m,u as a,l as g,x as f,E as o,A as n,G as w}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep4",components:{InstallAssistantStepTemplate:p,ChargePointInstallationView:u},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}};function h(t,e,k,B,v,i){const r=a("ChargePointInstallationView"),d=a("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Einrichten der Ladepunkte (openWB als secondary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:o(()=>e[4]||(e[4]=[n("p",null,' Diese hier vorzukonfigurierende openWB wurde als "secondary" eingestellt und wird von einer anderen openWB oder standalone ferngesteuert. ',-1),n("p",null," Bei vorkonfigurierten openWBs ist ab Werk bereits ein (zwei bei einer DUO) interner Ladepunkt eingetragen, es müssen keine weiteren Ladepunkte hinzugefügt werden. ",-1),n("p",null,' Tragen Sie unter Ladepunkte bei verfügbare Ladepunkte "Interne openWB" ein und wählen Sie die Bauart der openWB (z.B. openWB series 1/2 custom, Standard (+) oder Buchse) aus. ',-1),n("p",null," Wenn eine openWB Duo gewählt wird, so sind zwei Ladepunkte mit Ladepunkt-Nummer 1 und 2 zu konfigurieren. Bei der openWB Pro und Satellit sind keine Einstellungen notwendig. ",-1),n("p",null,"Weitere Einstellungen sind bei der Vorkonfiguration einer secondary nicht notwendig.",-1),n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),n("p",{class:"font-weight-bold"},"Änderungen werden nur durch Klicken auf Speichern wirksam!",-1)])),content:o(()=>[w(r,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const E=m(c,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep4.vue"]]);export{E as default}; diff --git a/web/settings/assets/InstallAssistantStep5-133577c4.js b/web/settings/assets/InstallAssistantStep5-f3c200c9.js similarity index 82% rename from web/settings/assets/InstallAssistantStep5-133577c4.js rename to web/settings/assets/InstallAssistantStep5-f3c200c9.js index 9889682fc8..9d8df7ffeb 100644 --- a/web/settings/assets/InstallAssistantStep5-133577c4.js +++ b/web/settings/assets/InstallAssistantStep5-f3c200c9.js @@ -1 +1 @@ -import{C as l}from"./index-cc8f65ba.js";import m from"./InstallAssistantStepTemplate-3bdc8973.js";import{H as u}from"./HardwareInstallation-3a644290.js";import{_ as p,u as r,l as g,z as f,E as a,x as n,G as w}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep5",components:{InstallAssistantStepTemplate:m,HardwareInstallationView:u},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",6)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}};function c(t,e,v,S,b,i){const o=r("HardwareInstallationView"),d=r("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Energiesystem - Geräte und Komponenten einrichten",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>e[4]||(e[4]=[n("p",null,' Diese openWB wurde als "primary" konfiguriert und übernimmt die Steuerung anderer openWBs, falls vorhanden, sowie die alleinige Regelung des Systems. Dazu müssen im Folgenden die Geräte und Komponenten eingerichtet werden. ',-1),n("p",null," Sofern das System nicht zurückgesetzt wurde, ist im Auslieferungszustand für erste Ladetests nach der WB-Montage ein virtueller Zähler vorkonfiguriert. Dieser muss zuerst gelöscht werden, wenn das im Gebäude installierte Energiesystem bestehend aus EVU-Zähler, PV-Anlage und ggf. Speicher in openWB konfiguriert wird. ",-1),n("p",null," Jedes verfügbare Gerät wird durch eine eigene IP-Adresse definiert. Dieses Gerät ist über den Herstellernamen des Energiesystems im Auswahlmenü der verfügbaren Geräte auszuwählen. Unterhalb des Gerätes werden die zugehörigen Komponenten EVU-Zähler, WR und Speicher konfiguriert. Es können je nach Bedarf beliebig viele Geräte und Komponenten miteinander kombiniert werden. ",-1),n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),n("p",{class:"font-weight-bold"},"Änderungen werden nur durch Klicken auf Speichern wirksam!",-1)])),content:a(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const x=p(h,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep5.vue"]]);export{x as default}; +import{C as l}from"./index-b236cee5.js";import m from"./InstallAssistantStepTemplate-d8d588b6.js";import{H as u}from"./HardwareInstallation-727b5962.js";import{_ as p,u as r,l as g,x as f,E as a,A as n,G as w}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep5",components:{InstallAssistantStepTemplate:m,HardwareInstallationView:u},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",6)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}};function c(t,e,v,S,A,i){const o=r("HardwareInstallationView"),d=r("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Energiesystem - Geräte und Komponenten einrichten",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>e[4]||(e[4]=[n("p",null,' Diese openWB wurde als "primary" konfiguriert und übernimmt die Steuerung anderer openWBs, falls vorhanden, sowie die alleinige Regelung des Systems. Dazu müssen im Folgenden die Geräte und Komponenten eingerichtet werden. ',-1),n("p",null," Sofern das System nicht zurückgesetzt wurde, ist im Auslieferungszustand für erste Ladetests nach der WB-Montage ein virtueller Zähler vorkonfiguriert. Dieser muss zuerst gelöscht werden, wenn das im Gebäude installierte Energiesystem bestehend aus EVU-Zähler, PV-Anlage und ggf. Speicher in openWB konfiguriert wird. ",-1),n("p",null," Jedes verfügbare Gerät wird durch eine eigene IP-Adresse definiert. Dieses Gerät ist über den Herstellernamen des Energiesystems im Auswahlmenü der verfügbaren Geräte auszuwählen. Unterhalb des Gerätes werden die zugehörigen Komponenten EVU-Zähler, WR und Speicher konfiguriert. Es können je nach Bedarf beliebig viele Geräte und Komponenten miteinander kombiniert werden. ",-1),n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),n("p",{class:"font-weight-bold"},"Änderungen werden nur durch Klicken auf Speichern wirksam!",-1)])),content:a(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const x=p(h,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep5.vue"]]);export{x as default}; diff --git a/web/settings/assets/InstallAssistantStep6-fe6bd91e.js b/web/settings/assets/InstallAssistantStep6-0eab35fd.js similarity index 86% rename from web/settings/assets/InstallAssistantStep6-fe6bd91e.js rename to web/settings/assets/InstallAssistantStep6-0eab35fd.js index 34733acb3b..8bd3fa3609 100644 --- a/web/settings/assets/InstallAssistantStep6-fe6bd91e.js +++ b/web/settings/assets/InstallAssistantStep6-0eab35fd.js @@ -1 +1 @@ -import{C as d}from"./index-cc8f65ba.js";import u from"./InstallAssistantStepTemplate-3bdc8973.js";import{b as p}from"./ChargePointInstallation-408ee2ed.js";import{_ as m,u as a,l as g,z as h,E as r,x as n,G as w}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const P={name:"InstallAssistantStep6",components:{InstallAssistantStepTemplate:u,ChargePointInstallationView:p},mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",7)},previousPage(){this.$emit("switchPage",5)},endAssistant(){this.$emit("endAssistant")}}};function f(t,e,c,b,k,i){const o=a("ChargePointInstallationView"),l=a("InstallAssistantStepTemplate");return g(),h(l,{title:"5. Einrichten der Ladepunkte (openWB als primary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>e[4]||(e[4]=[n("p",null,' Enthält die steuernde openWB (primary) Ladetechnik, wird bei "Verfügbare Ladepunkte" Interne openWB ausgewählt. Weitere LP werden im primary als secondary konfigurierte openWB oder andere WB-Typen wie Pro, Satellit eingebunden. ',-1),n("p",null,"Bei openWBs ab Werk kann hier bereits ein Ladepunkt eingetragen sein.",-1),n("p",null," Nachfolgend werden die Eigenschaften des Ladepunktes wie IP-Adresse und elektrischer Anschluss definiert. Die meisten openWB werden 3-phasig angeschlossen! Bei mehreren Ladepunkten ist auf phasenrotierten Anschluss der openWB-Zuleitung zu achten! Abschließend wird die korrekte Zuordnung der Phase 1 des Ladekabels zur zugehörigen EVU-Zählerphase konfiguriert. Dies ist sehr wichtig, um optimales Lastmanagement sicherzustellen! ",-1),n("p",null," Tipp zur Zuordnung: Verwende ein nur 1-phasig ladendes Auto (z.B. Hybrid) oder stelle bei openWB mit 1p3p-Phasenumschaltung temporär unter Sofortladen (s. Einstellungen -> Ladeeinstellungen) auf einphasig, um eine 1-phasige Ladung zu erzwingen. Gehe unter Status und vergleiche die Leistungen bzw. Ströme der 3 Phasen am EVU-Zähler (rot) beim und nach dem Autoladen (Sofortladen mit 16A/ Stop). Diejenige EVU-Phase, die deutlich erhöhte Werte anzeigt, ist die auszuwählende EVU-Phase. ",-1),n("p",null," Im grauen Menü Ladepunkt-Profile können neben dem Standard-Ladepunkt-Profil auch weitere Ladepunkt-Profile, die andere WB-Typen abbilden, erstellt werden. Dort sind Eintragungen bzgl. des Ladepunkt-Maximalstroms bei einer Phase bzw. mehreren Phasen vorzunehmen. Die Profile werden abschließend im jeweiligen blauen Ladepunkt mittels Auswahlmenü zugeordnet. ",-1),n("p",{class:"font-weight-bold"},"Änderungen werden nur durch Klicken auf Speichern wirksam!",-1)])),content:r(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const $=m(P,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep6.vue"]]);export{$ as default}; +import{C as d}from"./index-b236cee5.js";import u from"./InstallAssistantStepTemplate-d8d588b6.js";import{b as p}from"./ChargePointInstallation-7e51ce35.js";import{_ as m,u as a,l as g,x as h,E as r,A as n,G as w}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const P={name:"InstallAssistantStep6",components:{InstallAssistantStepTemplate:u,ChargePointInstallationView:p},mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",7)},previousPage(){this.$emit("switchPage",5)},endAssistant(){this.$emit("endAssistant")}}};function f(t,e,c,b,k,i){const o=a("ChargePointInstallationView"),l=a("InstallAssistantStepTemplate");return g(),h(l,{title:"5. Einrichten der Ladepunkte (openWB als primary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>e[4]||(e[4]=[n("p",null,' Enthält die steuernde openWB (primary) Ladetechnik, wird bei "Verfügbare Ladepunkte" Interne openWB ausgewählt. Weitere LP werden im primary als secondary konfigurierte openWB oder andere WB-Typen wie Pro, Satellit eingebunden. ',-1),n("p",null,"Bei openWBs ab Werk kann hier bereits ein Ladepunkt eingetragen sein.",-1),n("p",null," Nachfolgend werden die Eigenschaften des Ladepunktes wie IP-Adresse und elektrischer Anschluss definiert. Die meisten openWB werden 3-phasig angeschlossen! Bei mehreren Ladepunkten ist auf phasenrotierten Anschluss der openWB-Zuleitung zu achten! Abschließend wird die korrekte Zuordnung der Phase 1 des Ladekabels zur zugehörigen EVU-Zählerphase konfiguriert. Dies ist sehr wichtig, um optimales Lastmanagement sicherzustellen! ",-1),n("p",null," Tipp zur Zuordnung: Verwende ein nur 1-phasig ladendes Auto (z.B. Hybrid) oder stelle bei openWB mit 1p3p-Phasenumschaltung temporär unter Sofortladen (s. Einstellungen -> Ladeeinstellungen) auf einphasig, um eine 1-phasige Ladung zu erzwingen. Gehe unter Status und vergleiche die Leistungen bzw. Ströme der 3 Phasen am EVU-Zähler (rot) beim und nach dem Autoladen (Sofortladen mit 16A/ Stop). Diejenige EVU-Phase, die deutlich erhöhte Werte anzeigt, ist die auszuwählende EVU-Phase. ",-1),n("p",null," Im grauen Menü Ladepunkt-Profile können neben dem Standard-Ladepunkt-Profil auch weitere Ladepunkt-Profile, die andere WB-Typen abbilden, erstellt werden. Dort sind Eintragungen bzgl. des Ladepunkt-Maximalstroms bei einer Phase bzw. mehreren Phasen vorzunehmen. Die Profile werden abschließend im jeweiligen blauen Ladepunkt mittels Auswahlmenü zugeordnet. ",-1),n("p",{class:"font-weight-bold"},"Änderungen werden nur durch Klicken auf Speichern wirksam!",-1)])),content:r(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const $=m(P,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep6.vue"]]);export{$ as default}; diff --git a/web/settings/assets/InstallAssistantStep7-51125106.js b/web/settings/assets/InstallAssistantStep7-8b2d70ea.js similarity index 83% rename from web/settings/assets/InstallAssistantStep7-51125106.js rename to web/settings/assets/InstallAssistantStep7-8b2d70ea.js index 673be718c0..2130dec239 100644 --- a/web/settings/assets/InstallAssistantStep7-51125106.js +++ b/web/settings/assets/InstallAssistantStep7-8b2d70ea.js @@ -1 +1 @@ -import{C as l}from"./index-cc8f65ba.js";import m from"./InstallAssistantStepTemplate-3bdc8973.js";import p from"./LoadManagementConfig-c15dfafe.js";import{_ as u,u as r,l as g,z as h,E as a,x as n,G as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./OpenwbSortableList-bde71f66.js";const f={name:"InstallAssistantStep7",components:{InstallAssistantStepTemplate:m,LoadManagementConfigView:p},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",8)},previousPage(){this.$emit("switchPage",6)},endAssistant(){this.$emit("endAssistant")}}};function b(t,e,S,w,A,i){const o=r("LoadManagementConfigView"),d=r("InstallAssistantStepTemplate");return g(),h(d,{title:"6. Konfiguration des Lastmanagements",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>e[4]||(e[4]=[n("p",null," Im Lastmanagement werden die maximale Leistung sowie die maximalen Ströme für jede Phase des Zählermoduls sowie bei Hybrid-Systemen (per DC-angebundener Speicher) die maximale Ausgangsleistung des Wechselrichters der PV-Anlage eingetragen, falls eine solche vorhanden ist. ",-1),n("p",null,' Der erste Zähler ist in der Regel der Zähler am EVU-Punkt (Position des PV/Speicher-Smartmeters direkt hinter dem VNB-Zähler). In openWB ist hierzu auf die unterhalb der "Vorhandene Zählermodule" liegende (rote) EVU-Zähler-Komponente zu klicken, in welche die maximale EVU-Leistung sowie die Phasenströme eingetragen werden, für die der Hausanschluss abgesichert ist (Elektriker fragen, typisch f. EFH: 24kW/3x35A, 43kW/3x63A). ',-1),n("p",null," Ist ein Wechselrichter mit DC-angebundenem Speicher unter Geräte hinzugefügt worden, dann ist unter der (grünen) WR-Komponente noch die maximale Ausgangsleistung des WR einzutragen. ",-1),n("p",null," Der EVU-Zähler (rot) schließt alle weiteren Komponenten wie WR und Speicher unter sich ein. Bei AC-eingebundenen Speichern befinden sich WR und Speicher in derselben Ebene, bei DC-eingebundenen Speichern (Hybrid) der Speicher unterhalb des WR. Die Ladepunkte (z.B. secondary openWB) befinden sich auf derselben Ebene wie der WR und unterhalb des EVU-Zählers. Anpassungen der Anordnungen sind über die Pfeil-Bereiche der Komponenten durch einfaches Verschieben mit der Maus oder am Smartphone möglich. ",-1),n("p",null,null,-1),n("p",{class:"font-weight-bold"},"Änderungen werden nur durch Klicken auf Speichern wirksam!",-1)])),content:a(()=>[c(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const I=u(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep7.vue"]]);export{I as default}; +import{C as l}from"./index-b236cee5.js";import m from"./InstallAssistantStepTemplate-d8d588b6.js";import p from"./LoadManagementConfig-d6d290f9.js";import{_ as u,u as r,l as g,x as h,E as a,A as n,G as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./OpenwbSortableList-13147a4b.js";const f={name:"InstallAssistantStep7",components:{InstallAssistantStepTemplate:m,LoadManagementConfigView:p},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",8)},previousPage(){this.$emit("switchPage",6)},endAssistant(){this.$emit("endAssistant")}}};function b(t,e,S,w,A,i){const o=r("LoadManagementConfigView"),d=r("InstallAssistantStepTemplate");return g(),h(d,{title:"6. Konfiguration des Lastmanagements",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>e[4]||(e[4]=[n("p",null," Im Lastmanagement werden die maximale Leistung sowie die maximalen Ströme für jede Phase des Zählermoduls sowie bei Hybrid-Systemen (per DC-angebundener Speicher) die maximale Ausgangsleistung des Wechselrichters der PV-Anlage eingetragen, falls eine solche vorhanden ist. ",-1),n("p",null,' Der erste Zähler ist in der Regel der Zähler am EVU-Punkt (Position des PV/Speicher-Smartmeters direkt hinter dem VNB-Zähler). In openWB ist hierzu auf die unterhalb der "Vorhandene Zählermodule" liegende (rote) EVU-Zähler-Komponente zu klicken, in welche die maximale EVU-Leistung sowie die Phasenströme eingetragen werden, für die der Hausanschluss abgesichert ist (Elektriker fragen, typisch f. EFH: 24kW/3x35A, 43kW/3x63A). ',-1),n("p",null," Ist ein Wechselrichter mit DC-angebundenem Speicher unter Geräte hinzugefügt worden, dann ist unter der (grünen) WR-Komponente noch die maximale Ausgangsleistung des WR einzutragen. ",-1),n("p",null," Der EVU-Zähler (rot) schließt alle weiteren Komponenten wie WR und Speicher unter sich ein. Bei AC-eingebundenen Speichern befinden sich WR und Speicher in derselben Ebene, bei DC-eingebundenen Speichern (Hybrid) der Speicher unterhalb des WR. Die Ladepunkte (z.B. secondary openWB) befinden sich auf derselben Ebene wie der WR und unterhalb des EVU-Zählers. Anpassungen der Anordnungen sind über die Pfeil-Bereiche der Komponenten durch einfaches Verschieben mit der Maus oder am Smartphone möglich. ",-1),n("p",null,null,-1),n("p",{class:"font-weight-bold"},"Änderungen werden nur durch Klicken auf Speichern wirksam!",-1)])),content:a(()=>[c(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const I=u(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep7.vue"]]);export{I as default}; diff --git a/web/settings/assets/InstallAssistantStep8-1047f636.js b/web/settings/assets/InstallAssistantStep8-d0a57c9f.js similarity index 77% rename from web/settings/assets/InstallAssistantStep8-1047f636.js rename to web/settings/assets/InstallAssistantStep8-d0a57c9f.js index 7b83fe2890..2dc6d6baf0 100644 --- a/web/settings/assets/InstallAssistantStep8-1047f636.js +++ b/web/settings/assets/InstallAssistantStep8-d0a57c9f.js @@ -1 +1 @@ -import{C as g}from"./index-cc8f65ba.js";import p from"./InstallAssistantStepTemplate-3bdc8973.js";import{a as h}from"./VehicleConfig-a49bda81.js";import{F as f}from"./vendor-fortawesome-433470db.js";import{_ as z,u as r,l as w,z as P,E as a,x as n,y as o,G as d}from"./vendor-ea36120f.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const F={name:"InstallAssistantStep8",components:{InstallAssistantStepTemplate:p,VehicleConfigView:h,FontAwesomeIcon:f},mixins:[g],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",7)},endAssistant(){this.$emit("endAssistant")}}},A={class:"font-weight-bold"};function v(t,e,c,S,V,i){const l=r("FontAwesomeIcon"),u=r("VehicleConfigView"),m=r("InstallAssistantStepTemplate");return w(),P(m,{title:"7. Einrichten der Fahrzeuge",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[e[6]||(e[6]=n("p",null,"Vor dem eigentlichen Fahrzeug werden zuerst die Fahrzeug- und Lade-Profile konfiguriert.",-1)),e[7]||(e[7]=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Fahrzeug-Profil aus. Bei mehreren Fahrzeugtypen werden weitere Fahrzeug-Profile hinzugefügt. Im Anschluss werden die Fahrzeug-Profile mit den passenden Einstellungen des Fahrzeugtyps versehen (Mindeststromstärke, Maximalstromstärke bei einer/mehreren Phase/n sowie Angaben zur Batterie und Handhabung der Phasen entsprechend den Daten des Automobilherstellers. Im Zweifelsfall den Hersteller des Autos oder im openWB-Forum nachfragen). ",-1)),n("p",A,[e[4]||(e[4]=o(' Wichtig: Die "Angaben zur Handhabung von Phasen" des Fahrzeugs sind richtig einzutragen! Beachte die Hilfstexte, die Du durch Klick auf ')),d(l,{icon:["far","question-circle"]}),e[5]||(e[5]=o(" anzeigen kannst. "))]),e[8]||(e[8]=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Lade-Profil aus. Bei mehreren Fahrzeugen können weitere Lade-Profile hinzugefügt werden. Dies erlaubt die Nutzung unterschiedlicher Lademodi je Fahrzeug (z.B. EV1 = Sofortladen, EV2 = PV-Laden). Im Anschluss werden die Voreinstellungen zu den verschiedenen Lademodi konfiguriert. ",-1)),e[9]||(e[9]=n("p",null," Nun wird das eigentliche Fahrzeug angelegt und mit dem gewünschten Fahrzeug-Profil / Lade-Profil versehen. Ist nur ein Fahrzeug vorhanden, reicht das Standard-Fahrzeug aus. ",-1)),e[10]||(e[10]=n("p",{class:"font-weight-bold"},"Änderungen werden nur durch Klicken auf Speichern wirksam!",-1))]),content:a(()=>[d(u,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=z(F,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep8.vue"]]);export{T as default}; +import{C as g}from"./index-b236cee5.js";import p from"./InstallAssistantStepTemplate-d8d588b6.js";import{a as h}from"./VehicleConfig-e49e5ddc.js";import{F as f}from"./vendor-fortawesome-9d7cfdfb.js";import{_ as z,u as r,l as w,x as P,E as a,A as n,B as o,G as d}from"./vendor-ad7c30fd.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep8",components:{InstallAssistantStepTemplate:p,VehicleConfigView:h,FontAwesomeIcon:f},mixins:[g],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",7)},endAssistant(){this.$emit("endAssistant")}}},F={class:"font-weight-bold"};function v(t,e,c,S,V,i){const l=r("FontAwesomeIcon"),u=r("VehicleConfigView"),m=r("InstallAssistantStepTemplate");return w(),P(m,{title:"7. Einrichten der Fahrzeuge",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[e[6]||(e[6]=n("p",null,"Vor dem eigentlichen Fahrzeug werden zuerst die Fahrzeug- und Lade-Profile konfiguriert.",-1)),e[7]||(e[7]=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Fahrzeug-Profil aus. Bei mehreren Fahrzeugtypen werden weitere Fahrzeug-Profile hinzugefügt. Im Anschluss werden die Fahrzeug-Profile mit den passenden Einstellungen des Fahrzeugtyps versehen (Mindeststromstärke, Maximalstromstärke bei einer/mehreren Phase/n sowie Angaben zur Batterie und Handhabung der Phasen entsprechend den Daten des Automobilherstellers. Im Zweifelsfall den Hersteller des Autos oder im openWB-Forum nachfragen). ",-1)),n("p",F,[e[4]||(e[4]=o(' Wichtig: Die "Angaben zur Handhabung von Phasen" des Fahrzeugs sind richtig einzutragen! Beachte die Hilfstexte, die Du durch Klick auf ')),d(l,{icon:["far","question-circle"]}),e[5]||(e[5]=o(" anzeigen kannst. "))]),e[8]||(e[8]=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Lade-Profil aus. Bei mehreren Fahrzeugen können weitere Lade-Profile hinzugefügt werden. Dies erlaubt die Nutzung unterschiedlicher Lademodi je Fahrzeug (z.B. EV1 = Sofortladen, EV2 = PV-Laden). Im Anschluss werden die Voreinstellungen zu den verschiedenen Lademodi konfiguriert. ",-1)),e[9]||(e[9]=n("p",null," Nun wird das eigentliche Fahrzeug angelegt und mit dem gewünschten Fahrzeug-Profil / Lade-Profil versehen. Ist nur ein Fahrzeug vorhanden, reicht das Standard-Fahrzeug aus. ",-1)),e[10]||(e[10]=n("p",{class:"font-weight-bold"},"Änderungen werden nur durch Klicken auf Speichern wirksam!",-1))]),content:a(()=>[d(u,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=z(A,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep8.vue"]]);export{T as default}; diff --git a/web/settings/assets/InstallAssistantStep9-bd70c725.js b/web/settings/assets/InstallAssistantStep9-26ed6631.js similarity index 77% rename from web/settings/assets/InstallAssistantStep9-bd70c725.js rename to web/settings/assets/InstallAssistantStep9-26ed6631.js index bce073fa64..02fbe149ba 100644 --- a/web/settings/assets/InstallAssistantStep9-bd70c725.js +++ b/web/settings/assets/InstallAssistantStep9-26ed6631.js @@ -1 +1 @@ -import{C as m}from"./index-cc8f65ba.js";import p from"./InstallAssistantStepTemplate-3bdc8973.js";import{D as u}from"./DataManagement-f14600c5.js";import{_ as d,u as i,l as g,z as f,E as o,x as a,G as v}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep9",components:{InstallAssistantStepTemplate:p,DataManagement:u},mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),computed:{stepNumber(){return this.$store.state.mqtt["openWB/general/extern"]?5:8}},methods:{nextPage(){this.$emit("switchPage",10)},previousPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:8)},endAssistant(){this.$emit("endAssistant")}}};function h(t,e,P,S,$,n){const r=i("DataManagement"),l=i("InstallAssistantStepTemplate");return g(),f(l,{title:`${n.stepNumber}. Datensicherung der neuen Konfiguration`,onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>e[4]||(e[4]=[a("p",null," Wir empfehlen an dieser Stelle eine manuell initiierte Sicherung der neu konfigurierten openWB zu erstellen. ",-1),a("p",null," Dieser Vorgang sollte im Betrieb regelmäßig wiederholt werden (mindestens vor Updates), um sowohl die individuellen Log-Daten als auch auf ältere Konfigurationen zurückgreifen zu können (Backups). ",-1),a("p",null,' Die Sicherung kann auch automatisiert auf einem Cloud-Dienst durchgeführt werden. Hierzu bitte im unteren Bereich "Backup-Cloud" die entsprechenden Einstellungen vornehmen. ',-1)])),content:o(()=>[v(r,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["title","onNextPage","onPreviousPage","onEndAssistant"])}const W=d(c,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep9.vue"]]);export{W as default}; +import{C as m}from"./index-b236cee5.js";import p from"./InstallAssistantStepTemplate-d8d588b6.js";import{D as u}from"./DataManagement-714df651.js";import{_ as d,u as i,l as g,x as f,E as o,A as a,G as v}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep9",components:{InstallAssistantStepTemplate:p,DataManagement:u},mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),computed:{stepNumber(){return this.$store.state.mqtt["openWB/general/extern"]?5:8}},methods:{nextPage(){this.$emit("switchPage",10)},previousPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:8)},endAssistant(){this.$emit("endAssistant")}}};function h(t,e,A,P,S,n){const r=i("DataManagement"),l=i("InstallAssistantStepTemplate");return g(),f(l,{title:`${n.stepNumber}. Datensicherung der neuen Konfiguration`,onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>e[4]||(e[4]=[a("p",null," Wir empfehlen an dieser Stelle eine manuell initiierte Sicherung der neu konfigurierten openWB zu erstellen. ",-1),a("p",null," Dieser Vorgang sollte im Betrieb regelmäßig wiederholt werden (mindestens vor Updates), um sowohl die individuellen Log-Daten als auch auf ältere Konfigurationen zurückgreifen zu können (Backups). ",-1),a("p",null,' Die Sicherung kann auch automatisiert auf einem Cloud-Dienst durchgeführt werden. Hierzu bitte im unteren Bereich "Backup-Cloud" die entsprechenden Einstellungen vornehmen. ',-1)])),content:o(()=>[v(r,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["title","onNextPage","onPreviousPage","onEndAssistant"])}const W=d(c,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep9.vue"]]);export{W as default}; diff --git a/web/settings/assets/InstallAssistantStepTemplate-3bdc8973.js b/web/settings/assets/InstallAssistantStepTemplate-d8d588b6.js similarity index 78% rename from web/settings/assets/InstallAssistantStepTemplate-3bdc8973.js rename to web/settings/assets/InstallAssistantStepTemplate-d8d588b6.js index 94f1bc6d39..5f1a0904d6 100644 --- a/web/settings/assets/InstallAssistantStepTemplate-3bdc8973.js +++ b/web/settings/assets/InstallAssistantStepTemplate-d8d588b6.js @@ -1 +1 @@ -import{C as g}from"./index-cc8f65ba.js";import{l as v,ao as y,ap as w,F as x}from"./vendor-fortawesome-433470db.js";import{_ as k,u as r,l as i,m as a,G as t,E as s,x as n,y as c,B as p,p as _}from"./vendor-ea36120f.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";const B="/openWB/web/settings/img/openWB_logo_light.png";v.add(y,w);const h={name:"InstallAssistantStepTemplate",components:{FontAwesomeIcon:x},mixins:[g],props:{title:{type:String,required:!0},hidePrevious:{type:Boolean,required:!1,default:!1},hideNext:{type:Boolean,required:!1,default:!1},hideEnd:{type:Boolean,required:!1,default:!1}},emits:["previousPage","nextPage","endAssistant"],methods:{nextPage(){window.scrollTo(0,0),this.$emit("nextPage")},previousPage(){window.scrollTo(0,0),this.$emit("previousPage")},endAssistant(){this.$emit("endAssistant")}}},A={class:"row justify-content-center mb-1"},C={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},P={key:1,class:"col-md-4 d-flex py-1 justify-content-center"},S={key:2,class:"col-md-4 d-flex py-1 justify-content-center"},T={class:"row justify-content-center"},I={class:"page-help-text col-md-3 py-2"},N={class:"col py-2"};function $(u,e,o,j,W,l){const m=r("font-awesome-icon"),d=r("openwb-base-click-button"),b=r("openwb-base-card");return i(),a("div",null,[t(b,{title:o.title,"body-bg":"white",class:"p-0 mx-3"},{footer:s(()=>[n("div",A,[o.hidePrevious?p("",!0):(i(),a("div",C,[t(d,{class:"btn-block btn-warning",onButtonClicked:e[0]||(e[0]=f=>l.previousPage())},{default:s(()=>[t(m,{"fixed-width":"",icon:["fas","caret-left"]}),e[3]||(e[3]=c(" Zurück "))]),_:1})])),o.hideNext?p("",!0):(i(),a("div",P,[t(d,{class:"btn-block btn-success",onButtonClicked:e[1]||(e[1]=f=>l.nextPage())},{default:s(()=>[e[4]||(e[4]=c(" Weiter ")),t(m,{"fixed-width":"",icon:["fas","caret-right"]})]),_:1})])),o.hideEnd?p("",!0):(i(),a("div",S,[t(d,{class:"btn-block btn-danger",onButtonClicked:e[2]||(e[2]=f=>l.endAssistant())},{default:s(()=>e[5]||(e[5]=[c(" Assistent beenden ")])),_:1})]))])]),default:s(()=>[n("div",T,[n("div",I,[_(u.$slots,"help",{},()=>[e[6]||(e[6]=n("img",{src:B,alt:"openWB Logo",class:"w-100"},null,-1))],!0)]),n("div",N,[_(u.$slots,"content",{},void 0,!0)])])]),_:3},8,["title"])])}const Z=k(h,[["render",$],["__scopeId","data-v-db9e78cb"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStepTemplate.vue"]]);export{Z as default}; +import{C as g}from"./index-b236cee5.js";import{l as v,as as w,at as y,F as x}from"./vendor-fortawesome-9d7cfdfb.js";import{_ as k,u as r,l as i,m as a,G as t,E as s,A as n,B as c,z as p,p as _}from"./vendor-ad7c30fd.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";const B="/openWB/web/settings/img/openWB_logo_light.png";v.add(w,y);const h={name:"InstallAssistantStepTemplate",components:{FontAwesomeIcon:x},mixins:[g],props:{title:{type:String,required:!0},hidePrevious:{type:Boolean,required:!1,default:!1},hideNext:{type:Boolean,required:!1,default:!1},hideEnd:{type:Boolean,required:!1,default:!1}},emits:["previousPage","nextPage","endAssistant"],methods:{nextPage(){window.scrollTo(0,0),this.$emit("nextPage")},previousPage(){window.scrollTo(0,0),this.$emit("previousPage")},endAssistant(){this.$emit("endAssistant")}}},A={class:"row justify-content-center mb-1"},C={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},P={key:1,class:"col-md-4 d-flex py-1 justify-content-center"},S={key:2,class:"col-md-4 d-flex py-1 justify-content-center"},T={class:"row justify-content-center"},I={class:"page-help-text col-md-3 py-2"},N={class:"col py-2"};function $(u,e,o,j,W,l){const m=r("font-awesome-icon"),d=r("openwb-base-click-button"),b=r("openwb-base-card");return i(),a("div",null,[t(b,{title:o.title,"body-bg":"white",class:"p-0 mx-3"},{footer:s(()=>[n("div",A,[o.hidePrevious?p("",!0):(i(),a("div",C,[t(d,{class:"btn-block btn-warning",onButtonClicked:e[0]||(e[0]=f=>l.previousPage())},{default:s(()=>[t(m,{"fixed-width":"",icon:["fas","caret-left"]}),e[3]||(e[3]=c(" Zurück "))]),_:1})])),o.hideNext?p("",!0):(i(),a("div",P,[t(d,{class:"btn-block btn-success",onButtonClicked:e[1]||(e[1]=f=>l.nextPage())},{default:s(()=>[e[4]||(e[4]=c(" Weiter ")),t(m,{"fixed-width":"",icon:["fas","caret-right"]})]),_:1})])),o.hideEnd?p("",!0):(i(),a("div",S,[t(d,{class:"btn-block btn-danger",onButtonClicked:e[2]||(e[2]=f=>l.endAssistant())},{default:s(()=>e[5]||(e[5]=[c(" Assistent beenden ")])),_:1})]))])]),default:s(()=>[n("div",T,[n("div",I,[_(u.$slots,"help",{},()=>[e[6]||(e[6]=n("img",{src:B,alt:"openWB Logo",class:"w-100"},null,-1))],!0)]),n("div",N,[_(u.$slots,"content",{},void 0,!0)])])]),_:3},8,["title"])])}const R=k(h,[["render",$],["__scopeId","data-v-db9e78cb"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStepTemplate.vue"]]);export{R as default}; diff --git a/web/settings/assets/InstantChargeConfig-8da1d692.js b/web/settings/assets/InstantChargeConfig-bb769188.js similarity index 78% rename from web/settings/assets/InstantChargeConfig-8da1d692.js rename to web/settings/assets/InstantChargeConfig-bb769188.js index cb194175e6..840eaa45d5 100644 --- a/web/settings/assets/InstantChargeConfig-8da1d692.js +++ b/web/settings/assets/InstantChargeConfig-bb769188.js @@ -1 +1 @@ -import{C as l}from"./index-cc8f65ba.js";import{_ as b,u as o,l as a,m as i,x as _,G as s,E as r,y as u}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";const f={name:"OpenwbInstantChargeConfigView",mixins:[l],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},h={class:"instantChargeConfig"},c={name:"instantChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const m=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",h,[_("form",c,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(m,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(a(),i("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/instant_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/instant_charging/phases_to_use",n))},{help:r(()=>e[5]||(e[5]=[u(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Sofortladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),s(d,{"form-name":"instantChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const F=b(f,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{F as default}; +import{C as l}from"./index-b236cee5.js";import{_ as b,u as o,l as a,m as i,A as _,G as s,E as r,B as u}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";const f={name:"OpenwbInstantChargeConfigView",mixins:[l],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},h={class:"instantChargeConfig"},c={name:"instantChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const m=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",h,[_("form",c,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(m,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(a(),i("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/instant_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/instant_charging/phases_to_use",n))},{help:r(()=>e[5]||(e[5]=[u(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Sofortladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),s(d,{"form-name":"instantChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const A=b(f,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{A as default}; diff --git a/web/settings/assets/IoConfig-bc616ac4.js b/web/settings/assets/IoConfig-bc616ac4.js new file mode 100644 index 0000000000..ce1828e290 --- /dev/null +++ b/web/settings/assets/IoConfig-bc616ac4.js @@ -0,0 +1 @@ +import{l as q,a9 as $,F as L}from"./vendor-fortawesome-9d7cfdfb.js";import{_ as k,C as j}from"./index-b236cee5.js";import{_ as W}from"./dynamic-import-helper-be004503.js";import{_ as C,u as d,l as s,m as g,x as _,E as a,B as c,F as f,G as r,A as D,a1 as M,a2 as P,N as I,z as A,M as E}from"./vendor-ad7c30fd.js";const U={props:{ioDevice:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},F=C(U,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/io_devices/OpenwbIoDeviceConfigMixin.vue"]]),N={name:"OpenwbIoDeviceConfigFallback",mixins:[F]},G={class:"io-device-config-fallback"},R={key:1};function z(o,e,i,b,l,n){const p=d("openwb-base-alert"),m=d("openwb-base-textarea");return s(),g("div",G,[Object.keys(o.ioDevice.configuration).length==0?(s(),_(p,{key:0,subtype:"info"},{default:a(()=>[c(' Das I/O-Modul "'+f(o.ioDevice.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),g("div",R,[r(p,{subtype:"warning"},{default:a(()=>[c(' Es wurde keine Konfigurationsseite für das I/O-Modul "'+f(o.ioDevice.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),r(m,{title:"Konfiguration",subtype:"json","model-value":o.ioDevice.configuration,"onUpdate:modelValue":e[0]||(e[0]=w=>o.updateConfiguration(w,"configuration"))},{help:a(()=>e[1]||(e[1]=[c(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),r(p,{subtype:"info"},{default:a(()=>[D("pre",null,f(JSON.stringify(o.ioDevice.configuration,void 0,2)),1)]),_:1})]))])}const J=C(N,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/io_devices/OpenwbIoDeviceConfigFallback.vue"]]),H={name:"OpenwbIoDeviceProxy",props:{ioDevice:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],computed:{myComponent(){return console.debug(`loading io device: ${this.ioDevice.type}`),M({loader:()=>W(Object.assign({"./add_on/io_device.vue":()=>k(()=>import("./io_device-6aded7c0.js"),["assets/io_device-6aded7c0.js","assets/index-b236cee5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./dimm_kit/io_device.vue":()=>k(()=>import("./io_device-a553d2c1.js"),["assets/io_device-a553d2c1.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.ioDevice.type}/io_device.vue`),errorComponent:J})}},methods:{updateConfiguration(o){this.$emit("update:configuration",o)},sendCommand(o){this.$emit("sendCommand",o)}}};function Q(o,e,i,b,l,n){const p=d("openwb-base-heading");return s(),g(I,null,[r(p,null,{default:a(()=>[c(' Einstellungen für I/O-Modul "'+f(i.ioDevice.name)+'" ',1)]),_:1}),(s(),_(P(n.myComponent),{"io-device":i.ioDevice,"onUpdate:configuration":e[0]||(e[0]=m=>n.updateConfiguration(m)),onSendCommand:e[1]||(e[1]=m=>n.sendCommand(m))},null,40,["io-device"]))],64)}const X=C(H,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/io_devices/OpenwbIoDeviceProxy.vue"]]),Y={mixins:[j],props:{ioAction:{type:Object,required:!0},ioDevice:{type:Object,required:!0},availableChargePoints:{type:Array,required:!1,default:()=>[]},availableComponents:{type:Array,required:!1,default:()=>[]},availableIoDevices:{type:Array,required:!1,default:()=>[]}},emits:["update:configuration","sendCommand"],methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},Z=C(Y,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/io_actions/OpenwbIoActionConfigMixin.vue"]]),K={name:"OpenwbIoActionConfigFallback",mixins:[Z]},ee={class:"io-action-config-fallback"},oe={key:1};function te(o,e,i,b,l,n){var w,h;const p=d("openwb-base-alert"),m=d("openwb-base-textarea");return s(),g("div",ee,[Object.keys((w=o.ioAction)==null?void 0:w.configuration).length==0?(s(),_(p,{key:0,subtype:"info"},{default:a(()=>{var u;return[c(' Die I/O-Aktion "'+f((u=o.ioAction)==null?void 0:u.name)+'" bietet keine Einstellungen. ',1)]}),_:1})):(s(),g("div",oe,[r(p,{subtype:"warning"},{default:a(()=>{var u;return[c(' Es wurde keine Konfigurationsseite für die I/O-Aktion "'+f((u=o.ioAction)==null?void 0:u.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]}),_:1}),r(m,{title:"Konfiguration",subtype:"json","model-value":(h=o.ioAction)==null?void 0:h.configuration,"onUpdate:modelValue":e[0]||(e[0]=u=>o.updateConfiguration(u,"configuration"))},{help:a(()=>e[1]||(e[1]=[c(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),r(p,{subtype:"info"},{default:a(()=>{var u;return[D("pre",null,f(JSON.stringify((u=o.ioAction)==null?void 0:u.configuration,void 0,2)),1)]}),_:1})]))])}const ne=C(K,[["render",te],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/io_actions/OpenwbIoActionConfigFallback.vue"]]),ie={name:"OpenwbIoActionProxy",props:{ioAction:{type:Object,required:!0},ioDevices:{type:Object,required:!0},installedChargePoints:{type:Object,required:!0},installedComponents:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],computed:{myComponent(){var o,e;return console.debug(`loading io action: ${(o=this.ioAction)==null?void 0:o.group} / ${(e=this.ioAction)==null?void 0:e.type}`),M({loader:()=>{var i,b;return W(Object.assign({"./controllable_consumers/dimming/io_action.vue":()=>k(()=>import("./io_action-465b927d.js"),["assets/io_action-465b927d.js","assets/OpenwbIoSinglePattern-83dbc24c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/OpenwbIoSinglePattern-e689840a.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./controllable_consumers/dimming_direct_control/io_action.vue":()=>k(()=>import("./io_action-15f350b8.js"),["assets/io_action-15f350b8.js","assets/OpenwbIoSinglePattern-83dbc24c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/OpenwbIoSinglePattern-e689840a.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./controllable_consumers/ripple_control_receiver/io_action.vue":()=>k(()=>import("./io_action-f16988cb.js"),["assets/io_action-f16988cb.js","assets/OpenwbIoPattern-278f5a90.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/OpenwbIoPattern-a1d251cc.css","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generator_systems/power_levels/io_action.vue":()=>k(()=>import("./io_action-def63b3b.js"),["assets/io_action-def63b3b.js","assets/OpenwbIoPattern-278f5a90.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/OpenwbIoPattern-a1d251cc.css","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${(i=this.ioAction)==null?void 0:i.group}/${(b=this.ioAction)==null?void 0:b.type}/io_action.vue`)},errorComponent:ne})},ioDeviceList(){return Object.keys(this.ioDevices).map(o=>{var e,i;return{value:(e=this.ioDevices[o])==null?void 0:e.id,text:(i=this.ioDevices[o])==null?void 0:i.name}})},availableIoDevices(){return Object.values(this.ioDevices)},availableChargePoints(){return Object.values(this.installedChargePoints).map(o=>({value:o==null?void 0:o.id,text:o==null?void 0:o.name}))},availableComponents(){return Object.values(this.installedComponents).map(o=>({value:o==null?void 0:o.id,text:o==null?void 0:o.name,type:o==null?void 0:o.type}))}},methods:{updateConfiguration(o,e=void 0){e?this.$emit("update:configuration",{value:o,object:e}):this.$emit("update:configuration",o)},updateIoDevice(o){var e;if(this.updateConfiguration(o,"configuration.io_device"),Array.isArray((e=this.ioAction.configuration)==null?void 0:e.input_pattern)){let i=this.ioAction.configuration.input_pattern.map(b=>({value:b.value,input_matrix:{}}));this.updateConfiguration(i,"configuration.input_pattern")}Object.prototype.hasOwnProperty.call(this.ioAction.configuration,"digital_input")&&this.updateConfiguration(null,"configuration.digital_input")}}},ae={key:0};function se(o,e,i,b,l,n){var w,h;const p=d("openwb-base-heading"),m=d("openwb-base-select-input");return s(),g(I,null,[r(p,null,{default:a(()=>{var u;return[c(' Einstellungen für I/O-Aktion "'+f((u=i.ioAction)==null?void 0:u.name)+'" ',1)]}),_:1}),r(m,{title:"Eingangs-Gerät","not-selected":"Bitte auswählen","empty-value":null,required:"",options:n.ioDeviceList,"model-value":(w=i.ioAction)==null?void 0:w.configuration.io_device,"onUpdate:modelValue":e[0]||(e[0]=u=>n.updateIoDevice(u))},{help:a(()=>e[2]||(e[2]=[c(" Bitte das Gerät auswählen, über das der Schaltbefehl empfangen werden soll. Für jede Aktion kann nur ein Gerät ausgewählt werden. ")])),_:1},8,["options","model-value"]),((h=i.ioAction)==null?void 0:h.configuration.io_device)!==null?(s(),g("div",ae,[e[3]||(e[3]=D("hr",null,null,-1)),(s(),_(P(n.myComponent),{"io-action":i.ioAction,"io-device":i.ioDevices[`openWB/system/io/${i.ioAction.configuration.io_device}/config`],"available-charge-points":n.availableChargePoints,"available-components":n.availableComponents,"available-io-devices":n.availableIoDevices,"onUpdate:configuration":e[1]||(e[1]=u=>n.updateConfiguration(u))},null,40,["io-action","io-device","available-charge-points","available-components","available-io-devices"]))])):A("",!0)],64)}const re=C(ie,[["render",se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/io_actions/OpenwbIoActionProxy.vue"]]);q.add($);const ue={name:"OpenwbIoConfigView",components:{FontAwesomeIcon:L,OpenwbIoDeviceProxy:X,OpenwbIoActionProxy:re},mixins:[j],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["save","reset","defaults","send-command"],data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/io_devices","openWB/system/io/+/config","openWB/system/configurable/io_actions","openWB/io/action/+/config","openWB/chargepoint/+/config","openWB/system/device/+/component/+/config"],showIoDeviceDeleteModal:!1,modalIoDeviceIndex:void 0,ioDeviceToAdd:void 0,showIoActionDeleteModal:!1,modalIoActionIndex:void 0,ioActionToAdd:void 0}},computed:{ioDeviceList:{get(){return this.$store.state.mqtt["openWB/system/configurable/io_devices"]}},installedIoDevices:{get(){return this.getWildcardTopics("openWB/system/io/+/config")}},ioActionList:{get(){return this.$store.state.mqtt["openWB/system/configurable/io_actions"]===void 0?[]:Object.entries(this.$store.state.mqtt["openWB/system/configurable/io_actions"]).map(([o,e])=>({label:e.group_name,options:e.actions.map(i=>({value:[o,i.value],text:i.text})).sort((i,b)=>i.text.localeCompare(b.text))})).sort((o,e)=>o.label.localeCompare(e.label))}},installedIoActions:{get(){return this.getWildcardTopics("openWB/io/action/+/config")}},installedChargePoints:{get(){return this.getWildcardTopics("openWB/chargepoint/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}}},methods:{getIoDeviceName(o){return this.$store.state.mqtt["openWB/system/io/"+o+"/config"]?this.$store.state.mqtt["openWB/system/io/"+o+"/config"].name:"I/O-Gerät "+o},addIoDevice(){this.$emit("send-command",{command:"addIoDevice",data:{type:this.ioDeviceToAdd}})},removeIoDeviceModal(o,e){e.stopPropagation(),this.modalIoDeviceIndex=parseInt(o.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showIoDeviceDeleteModal=!0},removeIoDevice(o,e){this.showIoDeviceDeleteModal=!1,e=="confirm"&&this.$emit("send-command",{command:"removeIoDevice",data:{id:o}})},addIoAction(){this.$emit("send-command",{command:"addIoAction",data:{type:this.ioActionToAdd}})},removeIoActionModal(o,e){e.stopPropagation(),this.modalIoActionIndex=parseInt(o.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showIoActionDeleteModal=!0},removeIoAction(o,e){this.showIoActionDeleteModal=!1,e=="confirm"&&this.$emit("send-command",{command:"removeIoAction",data:{id:o}})},updateConfiguration(o,e){console.debug("updateConfiguration",o,e),this.updateState(o,e.value,e.object)}}},de={class:"ioConfig"},le={name:"ioConfigForm"},ce={key:0},pe={key:0};function me(o,e,i,b,l,n){const p=d("openwb-base-modal-dialog"),m=d("font-awesome-icon"),w=d("openwb-base-avatar"),h=d("openwb-base-text-input"),u=d("openwb-io-device-proxy"),O=d("openwb-base-card"),B=d("openwb-base-select-input"),V=d("openwb-io-action-proxy"),T=d("openwb-base-alert"),S=d("openwb-base-submit-buttons");return s(),g(I,null,[r(p,{show:l.showIoDeviceDeleteModal,title:"Modul löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=t=>n.removeIoDevice(l.modalIoDeviceIndex,t))},{default:a(()=>[c(' Wollen Sie das Ein-/Ausgangs-Gerät "'+f(n.getIoDeviceName(l.modalIoDeviceIndex))+'" (ID: '+f(l.modalIoDeviceIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),r(p,{show:l.showIoActionDeleteModal,title:"Aktion löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[1]||(e[1]=t=>n.removeIoAction(l.modalIoActionIndex,t))},{default:a(()=>[c(' Wollen Sie die Aktion "'+f(n.getIoDeviceName(l.modalIoActionIndex))+'" (ID: '+f(l.modalIoActionIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),D("div",de,[D("form",le,[r(O,{title:"Ein-/Ausgangs-Geräte"},{default:a(()=>[(s(!0),g(I,null,E(n.installedIoDevices,(t,y)=>(s(),_(O,{key:y,title:(t==null?void 0:t.name)+" (ID: "+(t==null?void 0:t.id)+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:a(v=>[v.collapsed?A("",!0):(s(),_(w,{key:0,class:"bg-danger clickable",onClick:x=>n.removeIoDeviceModal(y,x)},{default:a(()=>[r(m,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:a(()=>[r(h,{title:"Bezeichnung",subtype:"text","model-value":t.name,"onUpdate:modelValue":v=>o.updateState(y,v,"name")},null,8,["model-value","onUpdate:modelValue"]),r(h,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":o.$store.state.mqtt[y].type},null,8,["model-value"]),e[7]||(e[7]=D("hr",null,null,-1)),r(u,{"io-device":t,"onUpdate:configuration":v=>n.updateConfiguration(y,v)},null,8,["io-device","onUpdate:configuration"])]),_:2},1032,["title"]))),128)),Object.keys(n.installedIoDevices).length>0?(s(),g("hr",ce)):A("",!0),r(B,{title:"Verfügbare Geräte","not-selected":"Bitte auswählen",options:n.ioDeviceList,"model-value":l.ioDeviceToAdd,"add-button":!0,"onUpdate:modelValue":e[2]||(e[2]=t=>l.ioDeviceToAdd=t),"onInput:add":n.addIoDevice},{help:a(()=>e[8]||(e[8]=[c(" Bitte ein Ein-/Ausgangs-Modul auswählen, das hinzugefügt werden soll. ")])),_:1},8,["options","model-value","onInput:add"])]),_:1}),r(O,{title:"Ein-/Ausgangs-Aktionen"},{default:a(()=>[(s(!0),g(I,null,E(n.installedIoActions,(t,y)=>(s(),_(O,{key:y,title:(t==null?void 0:t.name)+" (ID: "+(t==null?void 0:t.id)+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:a(v=>[v.collapsed?A("",!0):(s(),_(w,{key:0,class:"bg-danger clickable",onClick:x=>n.removeIoActionModal(y,x)},{default:a(()=>[r(m,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:a(()=>[r(h,{title:"Bezeichnung",subtype:"text","model-value":t==null?void 0:t.name,"onUpdate:modelValue":v=>o.updateState(y,v,"name")},null,8,["model-value","onUpdate:modelValue"]),r(h,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":[t==null?void 0:t.group,t==null?void 0:t.type].join(" / ")},null,8,["model-value"]),e[9]||(e[9]=D("hr",null,null,-1)),t!==void 0?(s(),_(V,{key:0,"io-action":t,"io-devices":n.installedIoDevices,"installed-charge-points":n.installedChargePoints,"installed-components":n.installedComponents,"onUpdate:configuration":v=>n.updateConfiguration(y,v)},null,8,["io-action","io-devices","installed-charge-points","installed-components","onUpdate:configuration"])):A("",!0)]),_:2},1032,["title"]))),128)),Object.keys(n.installedIoActions).length>0?(s(),g("hr",pe)):A("",!0),Object.keys(n.installedIoDevices).length>0?(s(),_(B,{key:1,title:"Verfügbare Aktionen","not-selected":"Bitte auswählen",groups:n.ioActionList,"model-value":l.ioActionToAdd,"add-button":!0,"onUpdate:modelValue":e[3]||(e[3]=t=>l.ioActionToAdd=t),"onInput:add":n.addIoAction},{help:a(()=>e[10]||(e[10]=[c(" Bitte eine Ein-/Ausgangs-Aktion auswählen, die hinzugefügt werden soll. ")])),_:1},8,["groups","model-value","onInput:add"])):(s(),_(T,{key:2,subtype:"warning"},{default:a(()=>e[11]||(e[11]=[c(" Keine Ein-/Ausgangs-Geräte vorhanden!"),D("br",null,null,-1),c(" Bitte fügen Sie zuerst ein Ein-/Ausgangs-Gerät hinzu, bevor Sie Aktionen konfigurieren. ")])),_:1}))]),_:1}),r(S,{"form-name":"ioConfigForm",onSave:e[4]||(e[4]=t=>o.$emit("save")),onReset:e[5]||(e[5]=t=>o.$emit("reset")),onDefaults:e[6]||(e[6]=t=>o.$emit("defaults"))})])])],64)}const ge=C(ue,[["render",me],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/IoConfig.vue"]]),we=Object.freeze(Object.defineProperty({__proto__:null,default:ge},Symbol.toStringTag,{value:"Module"}));export{we as I,F as O,Z as a}; diff --git a/web/settings/assets/LegalSettings-0ab5ea05.js b/web/settings/assets/LegalSettings-0d86ce7f.js similarity index 83% rename from web/settings/assets/LegalSettings-0ab5ea05.js rename to web/settings/assets/LegalSettings-0d86ce7f.js index 47231b94ce..d06cfec3e4 100644 --- a/web/settings/assets/LegalSettings-0ab5ea05.js +++ b/web/settings/assets/LegalSettings-0d86ce7f.js @@ -1 +1 @@ -import{l as _,a9 as k,F as y}from"./vendor-fortawesome-433470db.js";import{C as v}from"./index-cc8f65ba.js";import{_ as B,u as n,l as i,m as h,x as a,G as o,E as r,z as m,y as d,B as p}from"./vendor-ea36120f.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";_.add(k);const z={name:"OpenwbDataProtectionView",components:{FontAwesomeIcon:y},mixins:[v],emits:["sendCommand","save"],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},S={class:"dataProtection"},$={name:"dataProtectionForm"},C={class:"row justify-content-center"},V={class:"col-md-4 d-flex justify-content-center"};function W(t,e,N,x,A,b){const u=n("openwb-base-button-group-input"),c=n("font-awesome-icon"),g=n("openwb-base-click-button"),l=n("openwb-base-alert"),w=n("openwb-base-submit-buttons"),f=n("openwb-base-card");return i(),h("div",S,[a("form",$,[o(f,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:r(()=>[o(w,{"form-name":"dataProtectionForm","hide-reset":!0,"hide-defaults":!0,onSave:e[3]||(e[3]=s=>t.$emit("save"))})]),default:r(()=>[e[7]||(e[7]=a("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1)),e[8]||(e[8]=a("hr",null,null,-1)),o(u,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateState("openWB/system/usage_terms_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?p("",!0):(i(),m(l,{key:0,subtype:"danger",class:"mb-1"},{default:r(()=>[e[5]||(e[5]=d(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. ")),a("div",C,[a("div",V,[o(g,{class:"btn-danger",onButtonClicked:e[1]||(e[1]=s=>b.sendSystemCommand("systemShutdown"))},{default:r(()=>[e[4]||(e[4]=d(" Nicht akzeptieren und ausschalten ")),o(c,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),_:1})),o(u,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":e[2]||(e[2]=s=>t.updateState("openWB/system/dataprotection_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?p("",!0):(i(),m(l,{key:1,subtype:"warning"},{default:r(()=>e[6]||(e[6]=[d(" Wenn Du nicht einwilligst, wird eine ggf. konfigurierte Cloud-Anbindung gelöscht. Die openWB arbeitet autark wie gewohnt weiter. Fernzugriff und Remote-Support sind dann nicht mehr möglich! ")])),_:1}))]),_:1})])])}const L=B(z,[["render",W],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{L as default}; +import{l as _,ad as k,F as v}from"./vendor-fortawesome-9d7cfdfb.js";import{C as y}from"./index-b236cee5.js";import{_ as B,u as n,l as i,m as h,A as a,G as o,E as r,x as m,B as d,z as p}from"./vendor-ad7c30fd.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";_.add(k);const z={name:"OpenwbDataProtectionView",components:{FontAwesomeIcon:v},mixins:[y],emits:["sendCommand","save"],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},S={class:"dataProtection"},$={name:"dataProtectionForm"},C={class:"row justify-content-center"},V={class:"col-md-4 d-flex justify-content-center"};function W(t,e,N,x,A,b){const u=n("openwb-base-button-group-input"),c=n("font-awesome-icon"),g=n("openwb-base-click-button"),l=n("openwb-base-alert"),w=n("openwb-base-submit-buttons"),f=n("openwb-base-card");return i(),h("div",S,[a("form",$,[o(f,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:r(()=>[o(w,{"form-name":"dataProtectionForm","hide-reset":!0,"hide-defaults":!0,onSave:e[3]||(e[3]=s=>t.$emit("save"))})]),default:r(()=>[e[7]||(e[7]=a("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1)),e[8]||(e[8]=a("hr",null,null,-1)),o(u,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateState("openWB/system/usage_terms_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?p("",!0):(i(),m(l,{key:0,subtype:"danger",class:"mb-1"},{default:r(()=>[e[5]||(e[5]=d(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. ")),a("div",C,[a("div",V,[o(g,{class:"btn-danger",onButtonClicked:e[1]||(e[1]=s=>b.sendSystemCommand("systemShutdown"))},{default:r(()=>[e[4]||(e[4]=d(" Nicht akzeptieren und ausschalten ")),o(c,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),_:1})),o(u,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":e[2]||(e[2]=s=>t.updateState("openWB/system/dataprotection_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?p("",!0):(i(),m(l,{key:1,subtype:"warning"},{default:r(()=>e[6]||(e[6]=[d(" Wenn Du nicht einwilligst, wird eine ggf. konfigurierte Cloud-Anbindung gelöscht. Die openWB arbeitet autark wie gewohnt weiter. Fernzugriff und Remote-Support sind dann nicht mehr möglich! ")])),_:1}))]),_:1})])])}const L=B(z,[["render",W],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{L as default}; diff --git a/web/settings/assets/LoadManagementConfig-c15dfafe.js b/web/settings/assets/LoadManagementConfig-d6d290f9.js similarity index 93% rename from web/settings/assets/LoadManagementConfig-c15dfafe.js rename to web/settings/assets/LoadManagementConfig-d6d290f9.js index ec496d6ee5..c0ee1906e3 100644 --- a/web/settings/assets/LoadManagementConfig-c15dfafe.js +++ b/web/settings/assets/LoadManagementConfig-d6d290f9.js @@ -1 +1 @@ -import{l as y,U as C,T as L,F as x}from"./vendor-fortawesome-433470db.js";import{C as V}from"./index-cc8f65ba.js";import{S as $}from"./OpenwbSortableList-bde71f66.js";import{_ as q,u as l,l as u,m,x as d,G as s,E as o,y as i,N as w,M as v,z as W,F as _}from"./vendor-ea36120f.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";y.add(C,L);const Z={name:"OpenwbLoadManagementConfigView",components:{SortableList:$,FontAwesomeIcon:x},mixins:[V],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/home_consumption_source_id","openWB/counter/config/consider_less_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_power_errorcase","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},counterConfigs:{get(){let t=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(t).filter(e=>{var n;return(n=t[e])==null?void 0:n.type.includes("counter")}).reduce((e,n)=>({...e,[n]:t[n]}),{})}},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e==null?void 0:e.type,"counter")&&t.push({value:e.id,text:e.name});return t.sort((e,n)=>e.text==n.text?0:e.text>n.text?1:-1)},inverterConfigs:{get(){let t=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(t).filter(e=>{var n;return(n=t[e])==null?void 0:n.type.includes("inverter")}).reduce((e,n)=>({...e,[n]:t[n]}),{})}},hierarchyLabels:{get(){let t={};for(const e of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))t={...t,...this.getElementTreeNames(e)};return t}},getHcSourceIdOptions(){let t=[{value:null,text:"von openWB berechnen (in 99% der Fälle die richtige Einstellung)"}],e=[{label:"Eingerichtete Zähler-Komponenten",options:[...this.counterOptions]}];return{options:t,groups:e}}},methods:{getElementTreeNames(t){let e={};if(t.type=="cp"){let n=this.getChargePoint(t.id);n&&(e[t.id]=n.name)}else{let n=this.getComponent(t.id);n&&(e[t.id]=n.name)}return t.children.forEach(n=>{e={...e,...this.getElementTreeNames(n)}}),e},getComponent(t){let e;return Object.keys(this.$store.state.mqtt).forEach(n=>{n.match("^openWB/system/device/[0-9]+/component/"+t+"/config$")&&(e=this.$store.state.mqtt[n])}),e},getChargePoint(t){let e;return Object.keys(this.$store.state.mqtt).forEach(n=>{n.match("^openWB/chargepoint/"+t+"/config$")&&(e=this.$store.state.mqtt[n])}),e},isComponentType(t,e){return t==null?void 0:t.split("_").includes(e)}}},M={class:"loadManagementConfig"},U={name:"loadManagementConfigForm"},A={key:0},E={key:1},F={key:0},D={key:1};function O(t,e,n,P,H,g){const h=l("openwb-base-alert"),k=l("openwb-base-button-group-input"),B=l("openwb-base-select-input"),f=l("openwb-base-heading"),b=l("font-awesome-icon"),p=l("openwb-base-number-input"),c=l("openwb-base-card"),S=l("sortable-list"),z=l("openwb-base-submit-buttons");return u(),m("div",M,[d("form",U,[s(c,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",A,[s(h,{subtype:"info"},{default:o(()=>e[6]||(e[6]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(u(),m("div",E,[s(k,{title:"Fahrzeuge, die nicht mit Sollstrom laden",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/counter/config/consider_less_charging"],"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateState("openWB/counter/config/consider_less_charging",r))},{help:o(()=>e[7]||(e[7]=[d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, im Lastmanagement berücksichtigt werden, wird für diese der Sollstrom reserviert. Dadurch können bei Eingreifen des Lastmanagements andere Fahrzeuge möglicherweise nur mit reduzierter Stromstärke laden und der reservierte Strom wird nicht genutzt. Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom. ",-1),d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert bzw. es wird nur der tatsächlich genutzte Strom im Lastmanagement berücksichtigt. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden. Wenn die maximalen Lastmanagement-Grenzen fast erreicht sind und die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, kann es zu einer kurzzeitigen Überschreitung der Lastmanagement-Grenzen kommen, bis im nächsten Zyklus die Stromstärken aller Ladepunkte an die neue Situation angepasst wurden. Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ",-1)])),_:1},8,["model-value"]),s(B,{title:"Hausverbrauch",options:g.getHcSourceIdOptions.options,groups:g.getHcSourceIdOptions.groups,"model-value":t.$store.state.mqtt["openWB/counter/config/home_consumption_source_id"],"onUpdate:modelValue":e[1]||(e[1]=r=>t.updateState("openWB/counter/config/home_consumption_source_id",r))},{help:o(()=>e[8]||(e[8]=[i(" Meist ist der Zähler am EVU-Punkt installiert, dann muss hier 'von openWB berechnen' ausgewählt werden. Wenn der Zähler im Hausverbrauchszweig installiert ist, die Struktur wie im "),d("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"}," Wiki ",-1),i(" beschrieben anordnen und hier den Hausverbrauchszähler auswählen. Dann wird dieser Wert abzüglich der Ladeleistung als Hausverbrauch erfasst. ")])),_:1},8,["options","groups","model-value"]),s(f,null,{default:o(()=>e[9]||(e[9]=[i(" Vorhandene Zählermodule ")])),_:1}),s(h,{subtype:"info"},{default:o(()=>e[10]||(e[10]=[i(" Die maximale Leistung wird nur für den EVU-Zähler berücksichtigt. Bei Zwischenzählern begrenzt das Lastmanagement rein anhand der maximalen Phasenströme."),d("br",null,null,-1),i(" Wenn ein Zähler nicht auslesbar ist, wird weiterhin versucht, diesen auszulesen und nach 60s die angenommene Leistung im Fehlerfall verwendet, die unten für jeden Zähler eingestellt wird, um eine Überlast zu vermeiden. Die angenommene Leistung wird gleichmäßig auf die Phasen verteilt."),d("br",null,null,-1),i(" Überlicherweise sind Hausanschlüsse mit 24kW und 3*35A bzw. 43kW und 3*63A abgesichert. ")])),_:1}),(u(!0),m(w,null,v(g.counterConfigs,r=>(u(),W(c,{key:r.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:o(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),i(" "+_(r.name),1)]),default:o(()=>[s(p,{title:"Maximale Leistung",min:1,step:.1,required:"",unit:"kW","model-value":t.$store.state.mqtt["openWB/counter/"+r.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+r.id+"/config/max_total_power",a*1e3)},{help:o(()=>[...e[11]||(e[11]=[i(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L1",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+r.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+r.id+"/config/max_currents",a,"0")},{help:o(()=>[...e[12]||(e[12]=[i(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L2",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+r.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+r.id+"/config/max_currents",a,"1")},{help:o(()=>[...e[13]||(e[13]=[i(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L3",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+r.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+r.id+"/config/max_currents",a,"2")},{help:o(()=>[...e[14]||(e[14]=[i(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximale Leistung im Fehlerfall",min:0,step:.1,unit:"kW","model-value":t.$store.state.mqtt["openWB/counter/"+r.id+"/config/max_power_errorcase"]/1e3,"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+r.id+"/config/max_power_errorcase",a*1e3)},{help:o(()=>[...e[15]||(e[15]=[i(" Angenommen Leistung für diesen (Zwischen-)Zähler, falls vom Zähler keine Werte abgefragt werden können. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:o(()=>e[16]||(e[16]=[i(" Vorhandene Wechselrichtermodule ")])),_:1}),(u(!0),m(w,null,v(g.inverterConfigs,r=>(u(),W(c,{key:r.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:o(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),i(" "+_(r.name),1)]),default:o(()=>[s(p,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW",required:"","model-value":t.$store.state.mqtt["openWB/pv/"+r.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>t.updateState("openWB/pv/"+r.id+"/config/max_ac_out",a*1e3)},{help:o(()=>[...e[17]||(e[17]=[i(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(c,{title:"Struktur",collapsible:!0,collapsed:!0},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",F,[s(h,{subtype:"info"},{default:o(()=>e[18]||(e[18]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(u(),m("div",D,[s(S,{title:"Anordnung der Komponenten","model-value":t.$store.state.mqtt["openWB/counter/get/hierarchy"],labels:g.hierarchyLabels,"onUpdate:modelValue":e[2]||(e[2]=r=>t.updateState("openWB/counter/get/hierarchy",r))},{help:o(()=>e[19]||(e[19]=[i(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),d("br",null,null,-1),i(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),d("br",null,null,-1),i(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),d("br",null,null,-1),i(" Bei DC-gekoppelten Speichern sind diese hinter dem zugehörigen Wechselrichter zu platzieren, damit die Abhängigkeit in der Regelung berücksichtigt werden kann. ")])),_:1},8,["model-value","labels"])]))]),_:1}),s(z,{"form-name":"loadManagementConfigForm",onSave:e[3]||(e[3]=r=>t.$emit("save")),onReset:e[4]||(e[4]=r=>t.$emit("reset")),onDefaults:e[5]||(e[5]=r=>t.$emit("defaults"))})])])}const Q=q(Z,[["render",O],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{Q as default}; +import{l as y,Y as C,X as L,F as x}from"./vendor-fortawesome-9d7cfdfb.js";import{C as V}from"./index-b236cee5.js";import{S as $}from"./OpenwbSortableList-13147a4b.js";import{_ as q,u as l,l as u,m,A as d,G as s,E as o,B as i,N as w,M as v,x as W,F as _}from"./vendor-ad7c30fd.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";y.add(C,L);const Z={name:"OpenwbLoadManagementConfigView",components:{SortableList:$,FontAwesomeIcon:x},mixins:[V],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/home_consumption_source_id","openWB/counter/config/consider_less_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_power_errorcase","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},counterConfigs:{get(){let t=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(t).filter(e=>{var n;return(n=t[e])==null?void 0:n.type.includes("counter")}).reduce((e,n)=>({...e,[n]:t[n]}),{})}},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e==null?void 0:e.type,"counter")&&t.push({value:e.id,text:e.name});return t.sort((e,n)=>e.text==n.text?0:e.text>n.text?1:-1)},inverterConfigs:{get(){let t=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(t).filter(e=>{var n;return(n=t[e])==null?void 0:n.type.includes("inverter")}).reduce((e,n)=>({...e,[n]:t[n]}),{})}},hierarchyLabels:{get(){let t={};for(const e of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))t={...t,...this.getElementTreeNames(e)};return t}},getHcSourceIdOptions(){let t=[{value:null,text:"von openWB berechnen (in 99% der Fälle die richtige Einstellung)"}],e=[{label:"Eingerichtete Zähler-Komponenten",options:[...this.counterOptions]}];return{options:t,groups:e}}},methods:{getElementTreeNames(t){let e={};if(t.type=="cp"){let n=this.getChargePoint(t.id);n&&(e[t.id]=n.name)}else{let n=this.getComponent(t.id);n&&(e[t.id]=n.name)}return t.children.forEach(n=>{e={...e,...this.getElementTreeNames(n)}}),e},getComponent(t){let e;return Object.keys(this.$store.state.mqtt).forEach(n=>{n.match("^openWB/system/device/[0-9]+/component/"+t+"/config$")&&(e=this.$store.state.mqtt[n])}),e},getChargePoint(t){let e;return Object.keys(this.$store.state.mqtt).forEach(n=>{n.match("^openWB/chargepoint/"+t+"/config$")&&(e=this.$store.state.mqtt[n])}),e},isComponentType(t,e){return t==null?void 0:t.split("_").includes(e)}}},M={class:"loadManagementConfig"},A={name:"loadManagementConfigForm"},U={key:0},E={key:1},F={key:0},D={key:1};function O(t,e,n,P,H,g){const h=l("openwb-base-alert"),k=l("openwb-base-button-group-input"),B=l("openwb-base-select-input"),f=l("openwb-base-heading"),b=l("font-awesome-icon"),p=l("openwb-base-number-input"),c=l("openwb-base-card"),S=l("sortable-list"),z=l("openwb-base-submit-buttons");return u(),m("div",M,[d("form",A,[s(c,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",U,[s(h,{subtype:"info"},{default:o(()=>e[6]||(e[6]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(u(),m("div",E,[s(k,{title:"Fahrzeuge, die nicht mit Sollstrom laden",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/counter/config/consider_less_charging"],"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateState("openWB/counter/config/consider_less_charging",r))},{help:o(()=>e[7]||(e[7]=[d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, im Lastmanagement berücksichtigt werden, wird für diese der Sollstrom reserviert. Dadurch können bei Eingreifen des Lastmanagements andere Fahrzeuge möglicherweise nur mit reduzierter Stromstärke laden und der reservierte Strom wird nicht genutzt. Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom. ",-1),d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert bzw. es wird nur der tatsächlich genutzte Strom im Lastmanagement berücksichtigt. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden. Wenn die maximalen Lastmanagement-Grenzen fast erreicht sind und die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, kann es zu einer kurzzeitigen Überschreitung der Lastmanagement-Grenzen kommen, bis im nächsten Zyklus die Stromstärken aller Ladepunkte an die neue Situation angepasst wurden. Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ",-1)])),_:1},8,["model-value"]),s(B,{title:"Hausverbrauch",options:g.getHcSourceIdOptions.options,groups:g.getHcSourceIdOptions.groups,"model-value":t.$store.state.mqtt["openWB/counter/config/home_consumption_source_id"],"onUpdate:modelValue":e[1]||(e[1]=r=>t.updateState("openWB/counter/config/home_consumption_source_id",r))},{help:o(()=>e[8]||(e[8]=[i(" Meist ist der Zähler am EVU-Punkt installiert, dann muss hier 'von openWB berechnen' ausgewählt werden. Wenn der Zähler im Hausverbrauchszweig installiert ist, die Struktur wie im "),d("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"}," Wiki ",-1),i(" beschrieben anordnen und hier den Hausverbrauchszähler auswählen. Dann wird dieser Wert abzüglich der Ladeleistung als Hausverbrauch erfasst. ")])),_:1},8,["options","groups","model-value"]),s(f,null,{default:o(()=>e[9]||(e[9]=[i(" Vorhandene Zählermodule ")])),_:1}),s(h,{subtype:"info"},{default:o(()=>e[10]||(e[10]=[i(" Die maximale Leistung wird nur für den EVU-Zähler berücksichtigt. Bei Zwischenzählern begrenzt das Lastmanagement rein anhand der maximalen Phasenströme."),d("br",null,null,-1),i(" Wenn ein Zähler nicht auslesbar ist, wird weiterhin versucht, diesen auszulesen und nach 60s die angenommene Leistung im Fehlerfall verwendet, die unten für jeden Zähler eingestellt wird, um eine Überlast zu vermeiden. Die angenommene Leistung wird gleichmäßig auf die Phasen verteilt."),d("br",null,null,-1),i(" Überlicherweise sind Hausanschlüsse mit 24kW und 3*35A bzw. 43kW und 3*63A abgesichert. ")])),_:1}),(u(!0),m(w,null,v(g.counterConfigs,r=>(u(),W(c,{key:r.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:o(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),i(" "+_(r.name),1)]),default:o(()=>[s(p,{title:"Maximale Leistung",min:1,step:.1,required:"",unit:"kW","model-value":t.$store.state.mqtt["openWB/counter/"+r.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+r.id+"/config/max_total_power",a*1e3)},{help:o(()=>[...e[11]||(e[11]=[i(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L1",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+r.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+r.id+"/config/max_currents",a,"0")},{help:o(()=>[...e[12]||(e[12]=[i(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L2",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+r.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+r.id+"/config/max_currents",a,"1")},{help:o(()=>[...e[13]||(e[13]=[i(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L3",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+r.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+r.id+"/config/max_currents",a,"2")},{help:o(()=>[...e[14]||(e[14]=[i(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximale Leistung im Fehlerfall",min:0,step:.1,unit:"kW","model-value":t.$store.state.mqtt["openWB/counter/"+r.id+"/config/max_power_errorcase"]/1e3,"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+r.id+"/config/max_power_errorcase",a*1e3)},{help:o(()=>[...e[15]||(e[15]=[i(" Angenommen Leistung für diesen (Zwischen-)Zähler, falls vom Zähler keine Werte abgefragt werden können. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:o(()=>e[16]||(e[16]=[i(" Vorhandene Wechselrichtermodule ")])),_:1}),(u(!0),m(w,null,v(g.inverterConfigs,r=>(u(),W(c,{key:r.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:o(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),i(" "+_(r.name),1)]),default:o(()=>[s(p,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW",required:"","model-value":t.$store.state.mqtt["openWB/pv/"+r.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>t.updateState("openWB/pv/"+r.id+"/config/max_ac_out",a*1e3)},{help:o(()=>[...e[17]||(e[17]=[i(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(c,{title:"Struktur",collapsible:!0,collapsed:!0},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",F,[s(h,{subtype:"info"},{default:o(()=>e[18]||(e[18]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(u(),m("div",D,[s(S,{title:"Anordnung der Komponenten","model-value":t.$store.state.mqtt["openWB/counter/get/hierarchy"],labels:g.hierarchyLabels,"onUpdate:modelValue":e[2]||(e[2]=r=>t.updateState("openWB/counter/get/hierarchy",r))},{help:o(()=>e[19]||(e[19]=[i(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),d("br",null,null,-1),i(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),d("br",null,null,-1),i(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),d("br",null,null,-1),i(" Bei DC-gekoppelten Speichern sind diese hinter dem zugehörigen Wechselrichter zu platzieren, damit die Abhängigkeit in der Regelung berücksichtigt werden kann. ")])),_:1},8,["model-value","labels"])]))]),_:1}),s(z,{"form-name":"loadManagementConfigForm",onSave:e[3]||(e[3]=r=>t.$emit("save")),onReset:e[4]||(e[4]=r=>t.$emit("reset")),onDefaults:e[5]||(e[5]=r=>t.$emit("defaults"))})])])}const Y=q(Z,[["render",O],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{Y as default}; diff --git a/web/settings/assets/MqttBridgeConfig-74fa4482.js b/web/settings/assets/MqttBridgeConfig-80ff6fb3.js similarity index 90% rename from web/settings/assets/MqttBridgeConfig-74fa4482.js rename to web/settings/assets/MqttBridgeConfig-80ff6fb3.js index 1e2abd60e6..49dc206652 100644 --- a/web/settings/assets/MqttBridgeConfig-74fa4482.js +++ b/web/settings/assets/MqttBridgeConfig-80ff6fb3.js @@ -1 +1 @@ -import{l as x,d as C,a6 as A,F as q}from"./vendor-fortawesome-433470db.js";import{C as z}from"./index-cc8f65ba.js";import{_ as D,u,l as m,m as b,G as o,E as a,x as f,N as M,y as s,F as E,z as k,B as T,M as W}from"./vendor-ea36120f.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";x.add(C,A);const y={name:"OpenwbMqttBridgeConfigurationView",components:{FontAwesomeIcon:q},mixins:[z],emits:["sendCommand","save","reset"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let t=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,v]of Object.entries(t))v.remote.is_openwb_cloud&&delete t[e];return t}}},methods:{addMqttBridge(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(t){return parseInt(t.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(t,e){e.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(t),this.showMqttBridgeModal=!0},removeMqttBridge(t,e){this.showMqttBridgeModal=!1,e=="confirm"&&this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:t}})},getMqttBridgeName(t){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+t]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+t].name:t}}},I={class:"mqttBridgeConfiguration"},P={key:0},Q={key:1},Z=["name"];function N(t,e,v,F,g,i){const U=u("openwb-base-modal-dialog"),c=u("openwb-base-alert"),h=u("font-awesome-icon"),w=u("openwb-base-avatar"),p=u("openwb-base-text-input"),d=u("openwb-base-button-group-input"),V=u("openwb-base-heading"),B=u("openwb-base-number-input"),S=u("openwb-base-submit-buttons"),_=u("openwb-base-card");return m(),b(M,null,[o(U,{show:g.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=r=>i.removeMqttBridge(g.modalMqttBridgeIndex,r))},{default:a(()=>[s(' Wollen Sie die MQTT-Brücke "'+E(i.getMqttBridgeName(g.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),f("div",I,[o(c,{subtype:"danger"},{default:a(()=>e[1]||(e[1]=[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),f("br",null,null,-1),s(' Es wird dringend empfohlen, dies nur für nicht-öffentliche MQTT-Server unter Verwendung starker Transport-Verschlüsselung (TLS) mit persönlichem Login und strenger Zugriffskontrolle (zumindest für die MQTT-Themen unterhalb von "Entfernter Präfix") zu aktivieren! ')])),_:1}),o(_,{title:"Konfigurierte MQTT-Brücken"},{actions:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(m(),k(w,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:a(()=>[o(h,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):T("",!0)]),default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(m(),b("div",P,[o(c,{subtype:"info"},{default:a(()=>e[2]||(e[2]=[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(m(),b("div",Q,[Object.keys(i.configuredMqttBridges).length===0?(m(),k(c,{key:0,subtype:"info"},{default:a(()=>e[3]||(e[3]=[s(" Es wurde noch keine MQTT-Brücke konfiguriert. ")])),_:1})):T("",!0),(m(!0),b(M,null,W(i.configuredMqttBridges,(r,l)=>(m(),b("form",{key:l,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(l)},[o(_,{title:r.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:a(()=>[o(w,{class:"bg-danger clickable",onClick:n=>i.removeMqttBridgeModal(l,n)},{default:a(()=>[o(h,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:a(()=>[o(S,{"form-name":"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(l),"hide-defaults":!0,onSave:n=>t.$emit("save",[l]),onReset:n=>t.$emit("reset",[l])},null,8,["form-name","onSave","onReset"])]),default:a(()=>[o(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":r.name,"onUpdate:modelValue":n=>t.updateState(l,n,"name")},{help:a(()=>[...e[4]||(e[4]=[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":r.active,"onUpdate:modelValue":n=>t.updateState(l,n,"active")},null,8,["model-value","onUpdate:modelValue"]),e[14]||(e[14]=f("hr",null,null,-1)),o(V,null,{default:a(()=>[...e[5]||(e[5]=[s(" Einstellungen zur Verbindung ")])]),_:1}),o(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":r.remote.host,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),o(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":r.remote.port,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":r.remote.username,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Passwort",subtype:"password",required:"","model-value":r.remote.password,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":r.remote.prefix,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.prefix")},{help:a(()=>[...e[6]||(e[6]=[s(' Das Präfix darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. Optional kann mit einem Schrägstrich "/" eine Topic-Struktur abgebildet werden. Am Ende des Präfixes muss ein Schrägstrich "/" stehen. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":r.remote.client_id,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.client_id")},{help:a(()=>[...e[7]||(e[7]=[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":r.remote.protocol,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),o(d,{title:"TLS Version",buttons:[{buttonValue:"auto",text:"Automatisch",class:"btn-outline-success"},{buttonValue:"tlsv1.0",text:"v1.0",class:"btn-outline-warning"},{buttonValue:"tlsv1.1",text:"v1.1",class:"btn-outline-warning"},{buttonValue:"tlsv1.2",text:"v1.2"}],"model-value":r.remote.tls_version,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.tls_version")},{help:a(()=>[...e[8]||(e[8]=[s(' In der Einstellung "Automatisch" wird die Version zwischen Client und Server ausgehandelt. Wenn erforderlich, kann eine spezielle Version erzwungen werden. Versionen kleiner 1.2 gelten als veraltet und sollten nicht mehr verwendet werden. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.remote.try_private,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.try_private")},{help:a(()=>[...e[9]||(e[9]=[s(" Aktiviert eine proprietäre Protokoll-Erweiterung des Mosquitto Brokers, welche dem entfernten Broker signalisiert, dass es sich um eine MQTT Brücke handelt. Ergibt bessere Leistung mit Mosquitto-Brokern, ist jedoch inkompatibel mit vielen anderen MQTT-Brokern. Daher bitte nur aktivieren, wenn der Ziel-Broker sicher ein Mosquitto-Broker ist. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[15]||(e[15]=f("hr",null,null,-1)),o(V,null,{default:a(()=>[...e[10]||(e[10]=[s(" Datenübertragung ")])]),_:1}),o(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.status,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.status")},{help:a(()=>[...e[11]||(e[11]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Datenserien für Diagramme",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.graph,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.graph")},{help:a(()=>[...e[12]||(e[12]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.configuration,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.configuration")},{help:a(()=>[...e[13]||(e[13]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,Z))),128))]))]),_:1})])],64)}const J=D(y,[["render",N],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{J as default}; +import{l as x,d as C,a9 as A,F as q}from"./vendor-fortawesome-9d7cfdfb.js";import{C as z}from"./index-b236cee5.js";import{_ as D,u,l as m,m as b,G as o,E as a,A as f,N as M,B as s,F as E,x as k,z as T,M as W}from"./vendor-ad7c30fd.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";x.add(C,A);const I={name:"OpenwbMqttBridgeConfigurationView",components:{FontAwesomeIcon:q},mixins:[z],emits:["sendCommand","save","reset"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let t=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,v]of Object.entries(t))v.remote.is_openwb_cloud&&delete t[e];return t}}},methods:{addMqttBridge(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(t){return parseInt(t.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(t,e){e.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(t),this.showMqttBridgeModal=!0},removeMqttBridge(t,e){this.showMqttBridgeModal=!1,e=="confirm"&&this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:t}})},getMqttBridgeName(t){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+t]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+t].name:t}}},P={class:"mqttBridgeConfiguration"},Q={key:0},Z={key:1},y=["name"];function N(t,e,v,F,g,i){const U=u("openwb-base-modal-dialog"),c=u("openwb-base-alert"),h=u("font-awesome-icon"),w=u("openwb-base-avatar"),p=u("openwb-base-text-input"),d=u("openwb-base-button-group-input"),V=u("openwb-base-heading"),B=u("openwb-base-number-input"),S=u("openwb-base-submit-buttons"),_=u("openwb-base-card");return m(),b(M,null,[o(U,{show:g.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=r=>i.removeMqttBridge(g.modalMqttBridgeIndex,r))},{default:a(()=>[s(' Wollen Sie die MQTT-Brücke "'+E(i.getMqttBridgeName(g.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),f("div",P,[o(c,{subtype:"danger"},{default:a(()=>e[1]||(e[1]=[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),f("br",null,null,-1),s(' Es wird dringend empfohlen, dies nur für nicht-öffentliche MQTT-Server unter Verwendung starker Transport-Verschlüsselung (TLS) mit persönlichem Login und strenger Zugriffskontrolle (zumindest für die MQTT-Themen unterhalb von "Entfernter Präfix") zu aktivieren! ')])),_:1}),o(_,{title:"Konfigurierte MQTT-Brücken"},{actions:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(m(),k(w,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:a(()=>[o(h,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):T("",!0)]),default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(m(),b("div",Q,[o(c,{subtype:"info"},{default:a(()=>e[2]||(e[2]=[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(m(),b("div",Z,[Object.keys(i.configuredMqttBridges).length===0?(m(),k(c,{key:0,subtype:"info"},{default:a(()=>e[3]||(e[3]=[s(" Es wurde noch keine MQTT-Brücke konfiguriert. ")])),_:1})):T("",!0),(m(!0),b(M,null,W(i.configuredMqttBridges,(r,l)=>(m(),b("form",{key:l,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(l)},[o(_,{title:r.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:a(()=>[o(w,{class:"bg-danger clickable",onClick:n=>i.removeMqttBridgeModal(l,n)},{default:a(()=>[o(h,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:a(()=>[o(S,{"form-name":"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(l),"hide-defaults":!0,onSave:n=>t.$emit("save",[l]),onReset:n=>t.$emit("reset",[l])},null,8,["form-name","onSave","onReset"])]),default:a(()=>[o(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":r.name,"onUpdate:modelValue":n=>t.updateState(l,n,"name")},{help:a(()=>[...e[4]||(e[4]=[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":r.active,"onUpdate:modelValue":n=>t.updateState(l,n,"active")},null,8,["model-value","onUpdate:modelValue"]),e[14]||(e[14]=f("hr",null,null,-1)),o(V,null,{default:a(()=>[...e[5]||(e[5]=[s(" Einstellungen zur Verbindung ")])]),_:1}),o(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":r.remote.host,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),o(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":r.remote.port,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":r.remote.username,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Passwort",subtype:"password",required:"","model-value":r.remote.password,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":r.remote.prefix,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.prefix")},{help:a(()=>[...e[6]||(e[6]=[s(' Das Präfix darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. Optional kann mit einem Schrägstrich "/" eine Topic-Struktur abgebildet werden. Am Ende des Präfixes muss ein Schrägstrich "/" stehen. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":r.remote.client_id,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.client_id")},{help:a(()=>[...e[7]||(e[7]=[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":r.remote.protocol,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),o(d,{title:"TLS Version",buttons:[{buttonValue:"auto",text:"Automatisch",class:"btn-outline-success"},{buttonValue:"tlsv1.0",text:"v1.0",class:"btn-outline-warning"},{buttonValue:"tlsv1.1",text:"v1.1",class:"btn-outline-warning"},{buttonValue:"tlsv1.2",text:"v1.2"}],"model-value":r.remote.tls_version,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.tls_version")},{help:a(()=>[...e[8]||(e[8]=[s(' In der Einstellung "Automatisch" wird die Version zwischen Client und Server ausgehandelt. Wenn erforderlich, kann eine spezielle Version erzwungen werden. Versionen kleiner 1.2 gelten als veraltet und sollten nicht mehr verwendet werden. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.remote.try_private,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.try_private")},{help:a(()=>[...e[9]||(e[9]=[s(" Aktiviert eine proprietäre Protokoll-Erweiterung des Mosquitto Brokers, welche dem entfernten Broker signalisiert, dass es sich um eine MQTT Brücke handelt. Ergibt bessere Leistung mit Mosquitto-Brokern, ist jedoch inkompatibel mit vielen anderen MQTT-Brokern. Daher bitte nur aktivieren, wenn der Ziel-Broker sicher ein Mosquitto-Broker ist. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[15]||(e[15]=f("hr",null,null,-1)),o(V,null,{default:a(()=>[...e[10]||(e[10]=[s(" Datenübertragung ")])]),_:1}),o(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.status,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.status")},{help:a(()=>[...e[11]||(e[11]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Datenserien für Diagramme",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.graph,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.graph")},{help:a(()=>[...e[12]||(e[12]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.configuration,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.configuration")},{help:a(()=>[...e[13]||(e[13]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,y))),128))]))]),_:1})])],64)}const J=D(I,[["render",N],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{J as default}; diff --git a/web/settings/assets/OpenwbIoPattern-278f5a90.js b/web/settings/assets/OpenwbIoPattern-278f5a90.js new file mode 100644 index 0000000000..e0a941da2c --- /dev/null +++ b/web/settings/assets/OpenwbIoPattern-278f5a90.js @@ -0,0 +1 @@ +import{l as v,m as T,n as M,o as D,p as A,a9 as O,d as q,N as z,f as E,a as I,F as y}from"./vendor-fortawesome-9d7cfdfb.js";import{_ as N,u as _,l as a,m as l,A as r,z as c,N as m,M as p,F as w,G as d,E as P,q as k,y as f,K as j,p as B,B as V}from"./vendor-ad7c30fd.js";v.add(T,M,D,A,O,q,z,E,I);const b={undefined:{value:void 0,icon:["fas","question"],iconClass:"text-secondary",title:"Nicht relevant",nextValue:!0},true:{value:!0,icon:["fas","square"],iconClass:"",title:"Geschlossen",nextValue:!1},false:{value:!1,icon:["far","square"],iconClass:"",title:"Offen",nextValue:void 0}},S={name:"IoActionInputPattern",components:{FontAwesomeIcon:y},inheritAttrs:!1,props:{digitalInputs:{type:Object,required:!0},modelValue:{type:Array,required:!0},enableAddDelete:{type:Boolean,default:!0},minPatterns:{type:Number,default:1},maxPatterns:{type:Number,default:10}},emits:["update:modelValue"],data(){return{showTestPattern:!1,testPattern:{...this.digitalInputs}}},computed:{value:{get(){return this.modelValue},set(s){this.$emit("update:modelValue",s)}},numInputs(){return Object.keys(this.digitalInputs).length},addPatternDisabled(){return this.value.length>=this.maxPatterns},addPatternTooltip(){return this.addPatternDisabled?this.maxPatterns===1?"Es kann maximal ein Muster definiert werden":`Es können maximal ${this.maxPatterns} Muster definiert werden`:"Muster hinzufügen"},deletePatternDisabled(){return this.value.length<=this.minPatterns},deletePatternTooltip(){return this.deletePatternDisabled?this.minPatterns===1?"Es muss mindestens ein Muster definiert sein":`Es müssen mindestens ${this.minPatterns} Muster definiert sein`:"Muster löschen"}},watch:{digitalInputs(){this.testPattern={...this.digitalInputs}}},mounted(){for(;this.value.lengththis.testPattern[e]===void 0?!0:this.value[s].input_matrix[e]===this.testPattern[e])},deletePattern(s){delete this.value.splice(s,1)},addPattern(){this.value.push({input_matrix:{},value:null})}}},H={class:"w-100 mb-2"},F=["span"],Q=["colspan"],G={key:0,rowspan:"2",class:"input-header"},L=["colspan"],U={key:0},W={key:0,class:"text-center"},J={key:1},R={key:0},X=["colspan"],Y={key:1,class:"bg-info"},Z=["colspan"];function K(s,e,i,$,u,n){const h=_("font-awesome-icon"),x=_("openwb-base-click-button"),C=_("openwb-base-button-group-input");return a(),l(m,null,[r("table",H,[r("colgroup",null,[r("col",{span:n.numInputs,class:"bg-white",style:{border:"1px solid #dee2e6"}},null,8,F)]),r("thead",null,[r("tr",null,[r("th",{colspan:n.numInputs},"Eingangsmuster",8,Q),u.showTestPattern?(a(),l("th",G,e[6]||(e[6]=[r("div",null,"Prüfergebnis",-1)]))):c("",!0),r("th",{colspan:i.enableAddDelete?2:1},null,8,L)]),r("tr",null,[(a(!0),l(m,null,p(Object.keys(i.digitalInputs),t=>(a(),l("th",{key:t,class:"input-header"},[r("div",null,w(t),1)]))),128)),e[7]||(e[7]=r("th",null,"Verhalten",-1)),i.enableAddDelete?(a(),l("th",U,[d(x,{class:"bg-success text-white",tooltip:n.addPatternTooltip,disabled:n.addPatternDisabled,onClick:e[0]||(e[0]=t=>n.addPattern())},{default:P(()=>[d(h,{icon:["fas","plus"]})]),_:1},8,["tooltip","disabled"])])):c("",!0)])]),r("tbody",null,[(a(!0),l(m,null,p(n.value,(t,g)=>(a(),l("tr",{key:g},[(a(!0),l(m,null,p(Object.keys(i.digitalInputs),o=>(a(),l("td",{key:o,class:"text-center"},[d(h,{title:n.getTitle(t.input_matrix[o]),icon:n.getIcon(t.input_matrix[o]),class:k([n.getIconClass(t.input_matrix[o]),"fa-fw clickable"]),size:"2x",transform:t.input_matrix[o]==null?"shrink-6":null,mask:t.input_matrix[o]==null?["fas","square"]:null,onClick:f(ee=>n.toggleInput(g,o),["stop","prevent"]),onMousedown:e[1]||(e[1]=f(()=>{},["stop","prevent"])),onMouseup:e[2]||(e[2]=f(()=>{},["stop","prevent"]))},null,8,["title","icon","class","transform","mask","onClick"])]))),128)),u.showTestPattern?(a(),l("td",W,[d(h,{title:"Muster passt",icon:["fas","check-circle"],class:k(["text-success fa-fw",{hidden:!n.patternMatch(g)}])},null,8,["class"])])):c("",!0),r("td",j({ref_for:!0},s.$attrs),[B(s.$slots,"default",{pattern:t},()=>[V(w(t.value),1)],!0)],16),i.enableAddDelete?(a(),l("td",J,[d(x,{class:"bg-danger text-white",tooltip:n.deletePatternTooltip,disabled:n.deletePatternDisabled,onClick:o=>n.deletePattern(g)},{default:P(()=>[d(h,{icon:["fas","trash"]})]),_:2},1032,["tooltip","disabled","onClick"])])):c("",!0)]))),128)),u.showTestPattern?(a(),l("tr",R,[(a(!0),l(m,null,p(Object.keys(i.digitalInputs),t=>(a(),l("td",{key:t,class:"pt-4"},"   "))),128)),r("td",{colspan:i.enableAddDelete?3:2},null,8,X)])):c("",!0),u.showTestPattern?(a(),l("tr",Y,[(a(!0),l(m,null,p(Object.keys(i.digitalInputs),t=>(a(),l("td",{key:t,class:"text-center text-body"},[d(h,{title:n.getTitle(u.testPattern[t]),icon:n.getIcon(u.testPattern[t]),class:k([n.getIconClass(u.testPattern[t]),"fa-fw clickable"]),size:"2x",transform:u.testPattern[t]==null?"shrink-6":null,mask:u.testPattern[t]==null?["fas","square"]:null,onClick:f(g=>n.toggleTestPattern(t),["stop","prevent"]),onMousedown:e[3]||(e[3]=f(()=>{},["stop","prevent"])),onMouseup:e[4]||(e[4]=f(()=>{},["stop","prevent"]))},null,8,["title","icon","class","transform","mask","onClick"])]))),128)),r("td",{class:"pl-2",colspan:i.enableAddDelete?3:2}," Prüfmuster ",8,Z)])):c("",!0)])]),d(C,{modelValue:u.showTestPattern,"onUpdate:modelValue":e[5]||(e[5]=t=>u.showTestPattern=t),title:"Prüfmuster",buttons:[{buttonValue:!1,text:"Verbergen"},{buttonValue:!0,text:"Anzeigen"}]},{help:P(()=>e[8]||(e[8]=[V(' Das Prüfmuster ist eine Hilfe um zu testen, ob die Eingangsmuster zum gewünschten Verhalten passen. Ein grüner Haken in der Spalte "Prüfergebnis" zeigt an, dass das Eingangsmuster zu dem Prüfmuster passt. Eingangsmuster mit unterschiedlichem Verhalten dürfen nicht gleichzeitig passen, da sonst das Verhalten nicht eindeutig ist. ')])),_:1},8,["modelValue"])],64)}const ne=N(S,[["render",K],["__scopeId","data-v-3624c649"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/io_actions/OpenwbIoPattern.vue"]]);export{ne as O}; diff --git a/web/settings/assets/OpenwbIoPattern-a1d251cc.css b/web/settings/assets/OpenwbIoPattern-a1d251cc.css new file mode 100644 index 0000000000..00c1fc156b --- /dev/null +++ b/web/settings/assets/OpenwbIoPattern-a1d251cc.css @@ -0,0 +1 @@ +th[data-v-3624c649]{text-align:center;vertical-align:bottom}.input-header[data-v-3624c649]{position:relative;height:6em}.input-header div[data-v-3624c649]{position:absolute;bottom:0;left:50%;transform:rotate(-90deg);transform-origin:left center}.hidden[data-v-3624c649]{visibility:hidden} diff --git a/web/settings/assets/OpenwbIoSinglePattern-83dbc24c.js b/web/settings/assets/OpenwbIoSinglePattern-83dbc24c.js new file mode 100644 index 0000000000..23f4cb4992 --- /dev/null +++ b/web/settings/assets/OpenwbIoSinglePattern-83dbc24c.js @@ -0,0 +1 @@ +import{_ as p,u as a,l as m,m as _,G as l,E as r,B as s,N as g}from"./vendor-ad7c30fd.js";const f={name:"IoActionSingleInputPattern",inheritAttrs:!1,props:{digitalInputs:{type:Object,required:!0},modelValue:{type:Array,required:!0},ioDevice:{type:Object,required:!0}},emits:["update:modelValue"],computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},definedInput:{get(){return Object.keys(this.value[0].input_matrix).length!==0?Object.keys(this.value[0].input_matrix)[0]:null},set(e){if(Object.keys(this.value[0].input_matrix).length===0){this.value=[{value:!0,input_matrix:{[e]:!0}},{value:!1,input_matrix:{[e]:!1}}];return}this.value=[{value:!0,input_matrix:{[e]:this.definedNormalMode}},{value:!1,input_matrix:{[e]:!this.definedNormalMode}}]}},definedNormalMode:{get(){return Object.values(this.value[0].input_matrix)[0]},set(e){this.value=[{value:!0,input_matrix:{[this.definedInput]:e}},{value:!1,input_matrix:{[this.definedInput]:!e}}]}},inputOptions(){var e,t;return Object.keys((t=(e=this.ioDevice)==null?void 0:e.input)==null?void 0:t.digital).map(i=>({value:i,text:i}))}}};function b(e,t,i,c,v,n){const o=a("openwb-base-select-input"),d=a("openwb-base-button-group-input");return m(),_(g,null,[l(o,{modelValue:n.definedInput,"onUpdate:modelValue":t[0]||(t[0]=u=>n.definedInput=u),title:"Eingang",required:"","not-selected":"Bitte auswählen","empty-value":null,options:n.inputOptions},{help:r(()=>t[2]||(t[2]=[s(" Bitte den Eingang auswählen, auf welchen reagiert werden soll. Es kann nur ein Eingang ausgewählt werden. ")])),_:1},8,["modelValue","options"]),l(d,{modelValue:n.definedNormalMode,"onUpdate:modelValue":t[1]||(t[1]=u=>n.definedNormalMode=u),title:"Normaler Zustand",buttons:[{buttonValue:!1,text:"geschlossen (NC)"},{buttonValue:!0,text:"geöffnet (NO)"}],disabled:!n.definedInput,required:""},{help:r(()=>t[3]||(t[3]=[s(" Bitte Einstellen, ob der Eingang im normalen Zustand geschlossen (NC) oder geöffnet (NO) ist. Dieser Zustand wird verwendet, um den Eingang zu überwachen. ")])),_:1},8,["modelValue","disabled"])],64)}const x=p(f,[["render",b],["__scopeId","data-v-ab9155dc"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/io_actions/OpenwbIoSinglePattern.vue"]]);export{x as O}; diff --git a/web/settings/assets/OpenwbIoSinglePattern-e689840a.css b/web/settings/assets/OpenwbIoSinglePattern-e689840a.css new file mode 100644 index 0000000000..906761ff01 --- /dev/null +++ b/web/settings/assets/OpenwbIoSinglePattern-e689840a.css @@ -0,0 +1 @@ +th[data-v-ab9155dc]{text-align:center;vertical-align:bottom}.input-header[data-v-ab9155dc]{position:relative;height:6em}.input-header div[data-v-ab9155dc]{position:absolute;bottom:0;left:50%;transform:rotate(-90deg);transform-origin:left center} diff --git a/web/settings/assets/OpenwbSortableList-bde71f66.js b/web/settings/assets/OpenwbSortableList-13147a4b.js similarity index 65% rename from web/settings/assets/OpenwbSortableList-bde71f66.js rename to web/settings/assets/OpenwbSortableList-13147a4b.js index 271b377b72..338c3b974d 100644 --- a/web/settings/assets/OpenwbSortableList-bde71f66.js +++ b/web/settings/assets/OpenwbSortableList-13147a4b.js @@ -1 +1 @@ -import{O as v}from"./index-cc8f65ba.js";import{_ as b,a3 as V,u as l,l as o,z as i,E as d,x as p,q as S,G as f,B as k,y as _,F as g,D as O,p as m,m as L}from"./vendor-ea36120f.js";import{l as B,ae as E,L as N,V as x,U as C,T as q,F as A}from"./vendor-fortawesome-433470db.js";B.add(E,N,x,C,q);const U={name:"OpenwbNestedList",components:{draggable:V,FontAwesomeIcon:A},props:{list:{type:Object,required:!1,default:void 0},labels:{type:Object,required:!1,default:void 0}},methods:{classes(e){var t="";switch(e.type){case"bat":t+="battery";break;case"cp":t+="charge-point";break;default:t+=e.type;break}return t},getElementLabel(e){return this.labels&&e in this.labels?this.labels[e]:e},getElementIcon(e){switch(e.type){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"inverter":return["fas","solar-panel"];default:return}}}};function $(e,t,n,h,w,a){const r=l("font-awesome-icon"),c=l("openwb-nested-list",!0),u=l("draggable");return o(),i(u,{class:"dragArea w-100 mb-0",tag:"ul",list:n.list,group:{name:"g1"},"item-key":"id",handle:".handle"},{item:d(({element:s})=>[p("li",null,[p("div",{class:S(["element-titel",a.classes(s)])},[p("span",null,[f(r,{class:"handle","fixed-width":"",icon:["fas","arrows-alt"]}),a.getElementIcon(s)?(o(),i(r,{key:0,"fixed-width":"",icon:a.getElementIcon(s)},null,8,["icon"])):k("",!0),_(" "+g(a.getElementLabel(s.id)),1)])],2),f(c,{modelValue:s.children,"onUpdate:modelValue":y=>s.children=y,labels:n.labels},null,8,["modelValue","onUpdate:modelValue","labels"])])]),_:1},8,["list"])}const j=b(U,[["render",$],["__scopeId","data-v-82c9421a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbNestedList.vue"]]),D={name:"OpenwbSortableList",components:{OpenwbBaseSettingElement:v,OpenwbNestedList:j},props:{id:{type:String,required:!1,default:void 0},title:{type:String,required:!1,default:""},modelValue:{type:Array,required:!1,default:void 0},labels:{type:Object,default:void 0}},emits:["update:modelValue"],computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}}},F={key:1};function I(e,t,n,h,w,a){const r=l("openwb-nested-list"),c=l("openwb-base-setting-element");return o(),i(c,null,O({title:d(()=>[m(e.$slots,"title",{},()=>[_(g(n.title),1)])]),default:d(()=>[a.value!==void 0?(o(),i(r,{key:0,modelValue:a.value,"onUpdate:modelValue":t[0]||(t[0]=u=>a.value=u),labels:n.labels},null,8,["modelValue","labels"])):(o(),L("div",F,"Warte auf Daten..."))]),_:2},[e.$slots.help?{name:"help",fn:d(()=>[m(e.$slots,"help")]),key:"0"}:void 0]),1024)}const T=b(D,[["render",I],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbSortableList.vue"]]);export{T as S}; +import{O as v}from"./index-b236cee5.js";import{_ as b,a3 as V,u as l,l as o,x as i,E as d,A as p,q as S,G as f,z as k,B as _,F as g,D as O,p as m,m as B}from"./vendor-ad7c30fd.js";import{l as L,ai as E,P as N,Z as x,Y as C,X as q,F as A}from"./vendor-fortawesome-9d7cfdfb.js";L.add(E,N,x,C,q);const $={name:"OpenwbNestedList",components:{draggable:V,FontAwesomeIcon:A},props:{list:{type:Object,required:!1,default:void 0},labels:{type:Object,required:!1,default:void 0}},methods:{classes(e){var t="";switch(e.type){case"bat":t+="battery";break;case"cp":t+="charge-point";break;default:t+=e.type;break}return t},getElementLabel(e){return this.labels&&e in this.labels?this.labels[e]:e},getElementIcon(e){switch(e.type){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"inverter":return["fas","solar-panel"];default:return}}}};function j(e,t,n,h,w,a){const r=l("font-awesome-icon"),c=l("openwb-nested-list",!0),u=l("draggable");return o(),i(u,{class:"dragArea w-100 mb-0",tag:"ul",list:n.list,group:{name:"g1"},"item-key":"id",handle:".handle"},{item:d(({element:s})=>[p("li",null,[p("div",{class:S(["element-titel",a.classes(s)])},[p("span",null,[f(r,{class:"handle","fixed-width":"",icon:["fas","arrows-alt"]}),a.getElementIcon(s)?(o(),i(r,{key:0,"fixed-width":"",icon:a.getElementIcon(s)},null,8,["icon"])):k("",!0),_(" "+g(a.getElementLabel(s.id)),1)])],2),f(c,{modelValue:s.children,"onUpdate:modelValue":y=>s.children=y,labels:n.labels},null,8,["modelValue","onUpdate:modelValue","labels"])])]),_:1},8,["list"])}const D=b($,[["render",j],["__scopeId","data-v-82c9421a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbNestedList.vue"]]),F={name:"OpenwbSortableList",components:{OpenwbBaseSettingElement:v,OpenwbNestedList:D},props:{id:{type:String,required:!1,default:void 0},title:{type:String,required:!1,default:""},modelValue:{type:Array,required:!1,default:void 0},labels:{type:Object,default:void 0}},emits:["update:modelValue"],computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}}},I={key:1};function U(e,t,n,h,w,a){const r=l("openwb-nested-list"),c=l("openwb-base-setting-element");return o(),i(c,null,O({title:d(()=>[m(e.$slots,"title",{},()=>[_(g(n.title),1)])]),default:d(()=>[a.value!==void 0?(o(),i(r,{key:0,modelValue:a.value,"onUpdate:modelValue":t[0]||(t[0]=u=>a.value=u),labels:n.labels},null,8,["modelValue","labels"])):(o(),B("div",I,"Warte auf Daten..."))]),_:2},[e.$slots.help?{name:"help",fn:d(()=>[m(e.$slots,"help")]),key:"0"}:void 0]),1024)}const P=b(F,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbSortableList.vue"]]);export{P as S}; diff --git a/web/settings/assets/OptionalComponents-f79f9835.js b/web/settings/assets/OptionalComponents-8819b9a1.js similarity index 92% rename from web/settings/assets/OptionalComponents-f79f9835.js rename to web/settings/assets/OptionalComponents-8819b9a1.js index ad18d2fec4..6a8ae48f66 100644 --- a/web/settings/assets/OptionalComponents-f79f9835.js +++ b/web/settings/assets/OptionalComponents-8819b9a1.js @@ -1,2 +1,2 @@ -import{_ as T,C}from"./index-cc8f65ba.js";import{_ as O}from"./dynamic-import-helper-be004503.js";import{l as S,a1 as z,a2 as V,F as E}from"./vendor-fortawesome-433470db.js";import{_ as v,u as p,l as s,m as d,z as y,E as o,y as i,F as g,G as n,x as l,a1 as L,a2 as I,N as F,B as _}from"./vendor-ea36120f.js";const q={props:{displayTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},M=v(q,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/DisplayThemeConfigMixin.vue"]]),N={name:"DisplayThemeFallback",mixins:[M]},j={class:"display-theme-fallback"},P={key:1};function A(t,e,u,c,w,m){const r=p("openwb-base-alert"),b=p("openwb-base-textarea");return s(),d("div",j,[Object.keys(t.displayTheme.configuration).length==0?(s(),y(r,{key:0,subtype:"info"},{default:o(()=>[i(' Das Display-Theme "'+g(t.displayTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),d("div",P,[n(r,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für das Display-Theme "'+g(t.displayTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":t.displayTheme.configuration,"onUpdate:modelValue":e[0]||(e[0]=f=>t.updateConfiguration(f,"configuration"))},{help:o(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(r,{subtype:"info"},{default:o(()=>[l("pre",null,g(JSON.stringify(t.displayTheme.configuration,void 0,2)),1)]),_:1})]))])}const x=v(N,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]);S.add(z,V);const U={name:"OpenwbDisplayThemeProxy",components:{FontAwesomeIcon:E},props:{displayTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{getDisplayThemeComponent(){return console.debug(`loading display theme: ${this.displayTheme.type}`),L({loader:()=>O(Object.assign({"./cards/displayTheme.vue":()=>T(()=>import("./displayTheme-64a8b4a0.js"),["assets/displayTheme-64a8b4a0.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/index-cc8f65ba.js","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./colors/displayTheme.vue":()=>T(()=>import("./displayTheme-1e1ee4eb.js"),["assets/displayTheme-1e1ee4eb.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/index-cc8f65ba.js","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.displayTheme.type}/displayTheme.vue`),errorComponent:x})},updateConfiguration(t){this.$emit("update:configuration",t)}}};function R(t,e,u,c,w,m){const r=p("font-awesome-icon"),b=p("openwb-base-alert"),f=p("openwb-base-heading");return s(),d(F,null,[u.displayTheme.official?(s(),y(b,{key:0,subtype:"success"},{default:o(()=>[n(r,{"fixed-width":"",icon:["fas","certificate"]}),i(' Das ausgewählte Display Theme "'+g(u.displayTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(s(),y(b,{key:1,subtype:"info"},{default:o(()=>[n(r,{"fixed-width":"",icon:["fas","people-group"]}),i(' Das ausgewählte Display Theme "'+g(u.displayTheme.name)+'" wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ',1)]),_:1})),n(f,null,{default:o(()=>[i(' Einstellungen für Display Theme "'+g(u.displayTheme.name)+'" ',1)]),_:1}),(s(),y(I(m.getDisplayThemeComponent()),{"display-theme":u.displayTheme,"onUpdate:configuration":e[0]||(e[0]=h=>m.updateConfiguration(h))},null,40,["display-theme"]))],64)}const H=v(U,[["render",R],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),J={name:"OpenwbOptionalComponentsView",components:{OpenwbDisplayThemeProxy:H},mixins:[C],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/+/config","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/get/rfid_timestamp","openWB/chargepoint/+/set/rfid","openWB/optional/rfid/active","openWB/optional/led/active","ToDo/optional/led/instant_blocked","ToDo/optional/led/pv_blocked","ToDo/optional/led/scheduled_blocked","ToDo/optional/led/standby_blocked","ToDo/optional/led/stop_blocked","ToDo/optional/led/instant","ToDo/optional/led/pv","ToDo/optional/led/scheduled","ToDo/optional/led/standby","ToDo/optional/led/stop","openWB/optional/int_display/active","openWB/optional/int_display/standby","openWB/optional/int_display/rotation","openWB/optional/int_display/on_if_plugged_in","openWB/optional/int_display/pin_active","openWB/optional/int_display/pin_code","openWB/optional/int_display/theme","openWB/optional/int_display/only_local_charge_points","openWB/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"],tempIdTagList:{}}},computed:{idTagList(){return Object.values(this.updateIdTagList())},displayThemeList(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]},displayThemeGroupList(){let t=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.displayThemeList.forEach(e=>{e.official===!0?t[0].options.push(e):t[1].options.push(e)}),t}},methods:{getIdFromTopic(t){return t.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,"")},updateIdTagList(){return Object.entries(this.getWildcardTopics("^openWB/chargepoint/[^+/]+/[gs]et/rfid$",!0)).forEach(t=>{t[1]!==null&&(this.tempIdTagList[t[1]]=`${t[1]} (${t[0].includes("/set/")?"zugewiesen":"erfasst"} an ${this.getChargePointName(this.getIdFromTopic(t[0]))})`)}),this.tempIdTagList},getChargePointName(t){return this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"].name:"Ladepunkt "+t},getDisplayThemeDefaults(t){const e=this.displayThemeList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for display theme type!",t),{})},updateSelectedDisplayTheme(t){this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaults(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},G={class:"optionalComponents"},K={name:"optionalComponentsForm"},Z={key:0},Q={key:1},X={key:0},Y=["innerHTML"],ee={key:0},te={key:1},ne={key:2},oe={key:0};function ie(t,e,u,c,w,m){const r=p("openwb-base-button-group-input"),b=p("openwb-base-alert"),f=p("openwb-base-textarea"),h=p("openwb-base-card"),B=p("openwb-base-heading"),D=p("openwb-base-range-input"),W=p("openwb-base-select-input"),k=p("openwb-display-theme-proxy"),$=p("openwb-base-submit-buttons");return s(),d("div",G,[l("form",K,[n(h,{title:"Identifikation"},{default:o(()=>[n(r,{title:"Identifikation aktivieren","model-value":t.$store.state.mqtt["openWB/optional/rfid/active"],buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[0]||(e[0]=a=>t.updateState("openWB/optional/rfid/active",a))},{help:o(()=>e[10]||(e[10]=[i(" Die Identifikation kann zum Entsperren von Ladepunkten und/oder zur Zuordnung von Fahrzeugen genutzt werden und kann auf mehreren Wegen erfolgen: "),l("ul",null,[l("li",null,"Über einen in der openWB verbauten RFID-Reader (optional, z.B. anhand des Lieferscheins prüfen)."),l("li",null," Durch die automatische Erkennung an einer openWB Pro (muss in den Einstellungen aktiviert werden). "),l("li",null,"Durch manuelle Eingabe einer ID am Display einer openWB.")],-1)])),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",Z,[n(b,{subtype:"info"},{default:o(()=>e[11]||(e[11]=[i(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),d("div",Q,[t.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(s(),d("div",X,[n(b,{subtype:"info",class:"mb-1"},{default:o(()=>[e[12]||(e[12]=i(" Die ID-Tags müssen in den Einstellungen der Fahrzeuge diesen zugeordnet werden.")),e[13]||(e[13]=l("br",null,null,-1)),e[14]||(e[14]=i(" Es kann zuerst das Fahrzeug angesteckt und dann der ID-Tag erfasst werden oder andersherum. Im letzten Fall muss innerhalb von 5 Minuten ein Fahrzeug angesteckt werden, sonst wird der ID-Tag verworfen.")),e[15]||(e[15]=l("br",null,null,-1)),l("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,Y)]),_:1}),n(f,{title:"Erkannte ID-Tags",readonly:"",disabled:"","model-value":m.idTagList.join(` +import{_ as T,C}from"./index-b236cee5.js";import{_ as O}from"./dynamic-import-helper-be004503.js";import{l as S,a5 as z,a6 as V,F as E}from"./vendor-fortawesome-9d7cfdfb.js";import{_ as v,u as p,l as s,m as d,x as y,E as o,B as i,F as g,G as n,A as l,a1 as L,a2 as I,N as F,z as _}from"./vendor-ad7c30fd.js";const q={props:{displayTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},M=v(q,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/DisplayThemeConfigMixin.vue"]]),N={name:"DisplayThemeFallback",mixins:[M]},j={class:"display-theme-fallback"},P={key:1};function A(t,e,u,c,w,m){const r=p("openwb-base-alert"),b=p("openwb-base-textarea");return s(),d("div",j,[Object.keys(t.displayTheme.configuration).length==0?(s(),y(r,{key:0,subtype:"info"},{default:o(()=>[i(' Das Display-Theme "'+g(t.displayTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),d("div",P,[n(r,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für das Display-Theme "'+g(t.displayTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":t.displayTheme.configuration,"onUpdate:modelValue":e[0]||(e[0]=f=>t.updateConfiguration(f,"configuration"))},{help:o(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(r,{subtype:"info"},{default:o(()=>[l("pre",null,g(JSON.stringify(t.displayTheme.configuration,void 0,2)),1)]),_:1})]))])}const x=v(N,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]);S.add(z,V);const U={name:"OpenwbDisplayThemeProxy",components:{FontAwesomeIcon:E},props:{displayTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{getDisplayThemeComponent(){return console.debug(`loading display theme: ${this.displayTheme.type}`),L({loader:()=>O(Object.assign({"./cards/displayTheme.vue":()=>T(()=>import("./displayTheme-95f1ddf2.js"),["assets/displayTheme-95f1ddf2.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/index-b236cee5.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./colors/displayTheme.vue":()=>T(()=>import("./displayTheme-575345bd.js"),["assets/displayTheme-575345bd.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/index-b236cee5.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.displayTheme.type}/displayTheme.vue`),errorComponent:x})},updateConfiguration(t){this.$emit("update:configuration",t)}}};function R(t,e,u,c,w,m){const r=p("font-awesome-icon"),b=p("openwb-base-alert"),f=p("openwb-base-heading");return s(),d(F,null,[u.displayTheme.official?(s(),y(b,{key:0,subtype:"success"},{default:o(()=>[n(r,{"fixed-width":"",icon:["fas","certificate"]}),i(' Das ausgewählte Display Theme "'+g(u.displayTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(s(),y(b,{key:1,subtype:"info"},{default:o(()=>[n(r,{"fixed-width":"",icon:["fas","people-group"]}),i(' Das ausgewählte Display Theme "'+g(u.displayTheme.name)+'" wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ',1)]),_:1})),n(f,null,{default:o(()=>[i(' Einstellungen für Display Theme "'+g(u.displayTheme.name)+'" ',1)]),_:1}),(s(),y(I(m.getDisplayThemeComponent()),{"display-theme":u.displayTheme,"onUpdate:configuration":e[0]||(e[0]=h=>m.updateConfiguration(h))},null,40,["display-theme"]))],64)}const H=v(U,[["render",R],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),J={name:"OpenwbOptionalComponentsView",components:{OpenwbDisplayThemeProxy:H},mixins:[C],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/+/config","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/get/rfid_timestamp","openWB/chargepoint/+/set/rfid","openWB/optional/rfid/active","openWB/optional/led/active","ToDo/optional/led/instant_blocked","ToDo/optional/led/pv_blocked","ToDo/optional/led/scheduled_blocked","ToDo/optional/led/standby_blocked","ToDo/optional/led/stop_blocked","ToDo/optional/led/instant","ToDo/optional/led/pv","ToDo/optional/led/scheduled","ToDo/optional/led/standby","ToDo/optional/led/stop","openWB/optional/int_display/active","openWB/optional/int_display/standby","openWB/optional/int_display/rotation","openWB/optional/int_display/on_if_plugged_in","openWB/optional/int_display/pin_active","openWB/optional/int_display/pin_code","openWB/optional/int_display/theme","openWB/optional/int_display/only_local_charge_points","openWB/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"],tempIdTagList:{}}},computed:{idTagList(){return Object.values(this.updateIdTagList())},displayThemeList(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]},displayThemeGroupList(){let t=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.displayThemeList.forEach(e=>{e.official===!0?t[0].options.push(e):t[1].options.push(e)}),t}},methods:{getIdFromTopic(t){return t.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,"")},updateIdTagList(){return Object.entries(this.getWildcardTopics("^openWB/chargepoint/[^+/]+/[gs]et/rfid$",!0)).forEach(t=>{t[1]!==null&&(this.tempIdTagList[t[1]]=`${t[1]} (${t[0].includes("/set/")?"zugewiesen":"erfasst"} an ${this.getChargePointName(this.getIdFromTopic(t[0]))})`)}),this.tempIdTagList},getChargePointName(t){return this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"].name:"Ladepunkt "+t},getDisplayThemeDefaults(t){const e=this.displayThemeList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for display theme type!",t),{})},updateSelectedDisplayTheme(t){this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaults(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},G={class:"optionalComponents"},K={name:"optionalComponentsForm"},Z={key:0},Q={key:1},X={key:0},Y=["innerHTML"],ee={key:0},te={key:1},ne={key:2},oe={key:0};function ie(t,e,u,c,w,m){const r=p("openwb-base-button-group-input"),b=p("openwb-base-alert"),f=p("openwb-base-textarea"),h=p("openwb-base-card"),B=p("openwb-base-heading"),D=p("openwb-base-range-input"),W=p("openwb-base-select-input"),k=p("openwb-display-theme-proxy"),$=p("openwb-base-submit-buttons");return s(),d("div",G,[l("form",K,[n(h,{title:"Identifikation"},{default:o(()=>[n(r,{title:"Identifikation aktivieren","model-value":t.$store.state.mqtt["openWB/optional/rfid/active"],buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[0]||(e[0]=a=>t.updateState("openWB/optional/rfid/active",a))},{help:o(()=>e[10]||(e[10]=[i(" Die Identifikation kann zum Entsperren von Ladepunkten und/oder zur Zuordnung von Fahrzeugen genutzt werden und kann auf mehreren Wegen erfolgen: "),l("ul",null,[l("li",null,"Über einen in der openWB verbauten RFID-Reader (optional, z.B. anhand des Lieferscheins prüfen)."),l("li",null," Durch die automatische Erkennung an einer openWB Pro (muss in den Einstellungen aktiviert werden). "),l("li",null,"Durch manuelle Eingabe einer ID am Display einer openWB.")],-1)])),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",Z,[n(b,{subtype:"info"},{default:o(()=>e[11]||(e[11]=[i(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),d("div",Q,[t.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(s(),d("div",X,[n(b,{subtype:"info",class:"mb-1"},{default:o(()=>[e[12]||(e[12]=i(" Die ID-Tags müssen in den Einstellungen der Fahrzeuge diesen zugeordnet werden.")),e[13]||(e[13]=l("br",null,null,-1)),e[14]||(e[14]=i(" Es kann zuerst das Fahrzeug angesteckt und dann der ID-Tag erfasst werden oder andersherum. Im letzten Fall muss innerhalb von 5 Minuten ein Fahrzeug angesteckt werden, sonst wird der ID-Tag verworfen.")),e[15]||(e[15]=l("br",null,null,-1)),l("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,Y)]),_:1}),n(f,{title:"Erkannte ID-Tags",readonly:"",disabled:"","model-value":m.idTagList.join(` `)},{help:o(()=>e[16]||(e[16]=[i(" Solange diese Seite geöffnet ist, werden alle erfassten ID-Tags in dieser Liste aufgeführt. Bei der openWB Pro/Pro+ nur bei angestecktem Fahrzeug. ")])),_:1},8,["model-value"])])):_("",!0)]))]),_:1}),n(h,{title:"Display (intern oder extern)"},{default:o(()=>[n(r,{title:"Integriertes Display","model-value":t.$store.state.mqtt["openWB/optional/int_display/active"],buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"onUpdate:modelValue":e[1]||(e[1]=a=>t.updateState("openWB/optional/int_display/active",a))},{help:o(()=>e[17]||(e[17]=[i(' Je nach Bestellung kann die openWB mit oder ohne Display geliefert worden sein. Auch die Variante "Standalone" bietet beide Optionen. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ')])),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/int_display/active"]==!0?(s(),d("div",ee,[n(r,{title:"Orientierung","model-value":t.$store.state.mqtt["openWB/optional/int_display/rotation"],buttons:[{buttonValue:0,text:"0°"},{buttonValue:90,text:"90°"},{buttonValue:180,text:"180°"},{buttonValue:270,text:"270°"}],"onUpdate:modelValue":e[2]||(e[2]=a=>t.updateState("openWB/optional/int_display/rotation",a))},{help:o(()=>e[18]||(e[18]=[i(" Mit dieser Einstellung kann das Display im Uhrzeigersinn gedreht werden, falls erforderlich. Nach einer Änderung ist ein Neustart erforderlich!"),l("br",null,null,-1),i(" Diese Einstellung erfordert ein Raspberry Pi Display. Für eine openWB series2 mit integriertem Display muss 0° ausgewählt werden, für eine Standalone mit Display 180°. Anzeigen, welche über HDMI angeschlossen sind, werden nicht unterstützt. ")])),_:1},8,["model-value"]),e[21]||(e[21]=l("hr",null,null,-1)),n(B,null,{default:o(()=>e[19]||(e[19]=[i(" Display Standby ")])),_:1}),n(D,{title:"Ausschaltzeit",min:0,max:12,step:1,"model-value":t.$store.state.mqtt["openWB/optional/int_display/standby"],unit:"Sek",labels:[{label:"Immer an",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:30,value:30},{label:45,value:45},{label:"1 Min",value:60},{label:"1,5 Min",value:90},{label:"2 Min",value:120},{label:"3 Min",value:180},{label:"4 Min",value:240},{label:"5 Min",value:300},{label:"10 Min",value:600}],"onUpdate:modelValue":e[3]||(e[3]=a=>t.updateState("openWB/optional/int_display/standby",a))},{help:o(()=>e[20]||(e[20]=[i(" Hier kann eine Zeitspanne angegeben werden, nach der das Display ausgeschaltet wird. ")])),_:1},8,["model-value"])])):_("",!0),t.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",te,[e[23]||(e[23]=l("hr",null,null,-1)),n(b,{subtype:"info"},{default:o(()=>e[22]||(e[22]=[i(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),d("div",ne,[e[26]||(e[26]=l("hr",null,null,-1)),n(r,{title:"Ladepunkte auf secondary openWB","model-value":t.$store.state.mqtt["openWB/optional/int_display/only_local_charge_points"],buttons:[{buttonValue:!1,text:"Alle",class:"btn-outline-danger"},{buttonValue:!0,text:"Nur Lokale",class:"btn-outline-success"}],"onUpdate:modelValue":e[4]||(e[4]=a=>t.updateState("openWB/optional/int_display/only_local_charge_points",a))},{help:o(()=>e[24]||(e[24]=[i(" Hiermit kann festgelegt werden, ob an angebundenen secondary openWB alle oder nur die jeweils lokalen Ladepunkte angezeigt werden sollen. ")])),_:1},8,["model-value"]),e[27]||(e[27]=l("hr",null,null,-1)),t.$store.state.mqtt["openWB/optional/int_display/theme"]!==void 0?(s(),d("div",oe,[n(W,{class:"mb-2",title:"Theme des Displays",groups:m.displayThemeGroupList,"model-value":t.$store.state.mqtt["openWB/optional/int_display/theme"].type,"onUpdate:modelValue":e[5]||(e[5]=a=>m.updateSelectedDisplayTheme(a))},{help:o(()=>e[25]||(e[25]=[i(" Hier können unterschiedliche Display-Anzeigen, s.g. Themes, ausgewählt werden. Die Anzahl der Themes wird sich mit zukünftigen Releases erhöhen. ")])),_:1},8,["groups","model-value"]),t.$store.state.mqtt["openWB/optional/int_display/theme"].type?(s(),y(k,{key:0,"display-theme":t.$store.state.mqtt["openWB/optional/int_display/theme"],"onUpdate:configuration":e[6]||(e[6]=a=>m.updateConfiguration("openWB/optional/int_display/theme",a))},null,8,["display-theme"])):_("",!0)])):_("",!0)]))]),_:1}),n($,{"form-name":"optionalComponentsForm",onSave:e[7]||(e[7]=a=>t.$emit("save")),onReset:e[8]||(e[8]=a=>t.$emit("reset")),onDefaults:e[9]||(e[9]=a=>t.$emit("defaults"))})])])}const ae=v(J,[["render",ie],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/OptionalComponents.vue"]]),de=Object.freeze(Object.defineProperty({__proto__:null,default:ae},Symbol.toStringTag,{value:"Module"}));export{M as D,de as O}; diff --git a/web/settings/assets/PVChargeConfig-2c281c8b.js b/web/settings/assets/PVChargeConfig-2c281c8b.js new file mode 100644 index 0000000000..d81d6f2c94 --- /dev/null +++ b/web/settings/assets/PVChargeConfig-2c281c8b.js @@ -0,0 +1 @@ +import{C as S}from"./index-b236cee5.js";import{l as B,Z as V,a7 as z,a8 as k,F as y}from"./vendor-fortawesome-9d7cfdfb.js";import{_ as E,u as g,l,m as u,A as o,G as i,E as a,B as t,F as C,x as v,z as f}from"./vendor-ad7c30fd.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";B.add(V,z,k);const q={name:"OpenwbPVChargeConfigView",components:{FontAwesomeIcon:y},mixins:[S],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/pv_charging/control_range","openWB/general/chargemode_config/pv_charging/feed_in_yield","openWB/general/chargemode_config/pv_charging/switch_on_threshold","openWB/general/chargemode_config/pv_charging/switch_on_delay","openWB/general/chargemode_config/pv_charging/switch_off_threshold","openWB/general/chargemode_config/pv_charging/switch_off_delay","openWB/general/chargemode_config/pv_charging/phases_to_use","openWB/general/chargemode_config/pv_charging/bat_mode","openWB/general/chargemode_config/pv_charging/bat_power_reserve","openWB/general/chargemode_config/pv_charging/bat_power_reserve_active","openWB/general/chargemode_config/pv_charging/bat_power_discharge","openWB/general/chargemode_config/pv_charging/bat_power_discharge_active","openWB/general/chargemode_config/pv_charging/min_bat_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const n="openWB/general/chargemode_config/pv_charging/control_range";let e=this.$store.state.mqtt[n];var p="individual";return typeof e<"u"&&(e[0]===-230&&e[1]===0?p="export":e[0]===0&&e[1]===230?p="import":e[0]===-115&&e[1]===115?p="balanced":p="individual"),p},set(n){const e="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=n,n){case"export":this.updateState(e,[-230,0]);break;case"import":this.updateState(e,[0,230]);break;case"balanced":this.updateState(e,[-115,115]);break}}},chargingSwitchRange:{get(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]+this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]}},batMode:{get(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]},set(n){this.updateState("openWB/general/chargemode_config/pv_charging/bat_mode",n)}}},watch:{controlMode(n){this.calculatedControlMode=n}}},M={class:"pvChargeConfig"},L={name:"pvChargeConfigForm"},A={key:0},$={key:1},U={key:0},R={key:1},P={key:0},F={key:1},D={key:0};function N(n,e,p,I,Z,s){const m=g("openwb-base-alert"),c=g("openwb-base-button-group-input"),d=g("openwb-base-number-input"),b=g("openwb-base-card"),h=g("font-awesome-icon"),w=g("openwb-base-range-input"),_=g("openwb-base-heading"),W=g("openwb-base-submit-buttons");return l(),u("div",M,[o("form",L,[i(b,{title:"Regelparameter"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(l(),u("div",A,[i(m,{subtype:"info"},{default:a(()=>e[18]||(e[18]=[t(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),u("div",$,[i(c,{modelValue:s.controlMode,"onUpdate:modelValue":e[0]||(e[0]=r=>s.controlMode=r),title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"balanced",text:"Ausgewogen"},{buttonValue:"individual",text:"Individuell"}]},{help:a(()=>e[19]||(e[19]=[t(" Die Ladeleistung kann nicht mit absoluter Genauigkeit eingestellt werden, sodass am EVU-Punkt nicht auf exakt 0W geregelt werden kann. Der Regelmodus legt fest, ob diese Differenz am EVU-Punkt (ca. 200-300W) zu geringem Netzbezug oder geringer Netzeinspeisung führen soll."),o("br",null,null,-1),t(" Bei Speichervorrang erzeugt die Regelung bei Bedarf unabhängig vom eingestellten Regelmodus Einspeisung, damit der Speicher seine Ladeleistung erhöht."),o("br",null,null,-1),t(" Achtung: bei unlogischen Einstellungen kann die Regelung gestört werden! Im Zweifel bitte unsere vordefinierten Modi verwenden. ")])),_:1},8,["modelValue"]),i(d,{disabled:s.controlMode!=="individual",readonly:s.controlMode!=="individual",title:"Minimum",step:.005,unit:"kW",required:"","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":e[1]||(e[1]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",r*1e3,"0"))},{help:a(()=>e[20]||(e[20]=[t(" Untere Grenze des Regelbereichs. ")])),_:1},8,["disabled","readonly","model-value"]),i(d,{disabled:s.controlMode!=="individual",readonly:s.controlMode!=="individual",title:"Maximum",step:.005,unit:"kW",required:"","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":e[2]||(e[2]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",r*1e3,"1"))},{help:a(()=>e[21]||(e[21]=[t(" Obere Grenze des Regelbereichs. ")])),_:1},8,["disabled","readonly","model-value"]),e[28]||(e[28]=o("hr",null,null,-1)),i(m,{subtype:s.chargingSwitchRange<1400?"danger":"info"},{default:a(()=>[t(" Die Differenzleistung zw. Ein- und Abschaltschwelle sollte mind. 1,4 kW (230V x 6A) betragen. (Konfiguriert: "+C((s.chargingSwitchRange/1e3).toLocaleString(void 0))+" kW) ",1)]),_:1},8,["subtype"]),i(d,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":e[3]||(e[3]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",r*1e3))},{help:a(()=>e[22]||(e[22]=[t(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet."),o("br",null,null,-1),t(" Dieser Wert wird pro Phase genutzt und ist daher immer für eine Phase anzugeben. ")])),_:1},8,["model-value"]),i(d,{title:"Einschaltverzögerung",min:0,step:1,unit:"s",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":e[4]||(e[4]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",r))},{help:a(()=>e[23]||(e[23]=[t(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),o("br",null,null,-1),t(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")])),_:1},8,["model-value"]),e[29]||(e[29]=o("hr",null,null,-1)),i(m,{subtype:n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3>0?"danger":"info"},{default:a(()=>e[24]||(e[24]=[t(" Ist ein Speicher im System vorhanden, kann eine Abschaltschwelle größer Null zur Speicherentladung führen. (Siehe Fragezeichentext) ")])),_:1},8,["subtype"]),i(d,{title:"Abschaltschwelle",step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":e[5]||(e[5]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",r*1e3))},{help:a(()=>e[25]||(e[25]=[t(" Übersteigt der Netzbezug die Abschaltschwelle, wird die Ladung beendet. Eine Abschaltschaltschwelle, die Netzbezug erlaubt, führt in einem System ohne steuerbaren Speicher zur Entladung des Speichers. Der Speicher wird dann auch über den eingestellten Mindest-SoC hinaus entladen (siehe Speicherbeachtung unten). ")])),_:1},8,["model-value"]),i(d,{title:"Abschaltverzögerung",min:0,step:1,unit:"s",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":e[6]||(e[6]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",r))},{help:a(()=>e[26]||(e[26]=[t(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),o("br",null,null,-1),t(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird die Ladung sofort beendet, wenn die Abschaltschwelle unterschritten wird. ")])),_:1},8,["model-value"]),e[30]||(e[30]=o("hr",null,null,-1)),i(d,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":e[7]||(e[7]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",r*1e3))},{help:a(()=>e[27]||(e[27]=[t(" Ein Wert größer 0kW bewirkt, dass weniger PV-Leistung zum Laden benutzt wird."),o("br",null,null,-1),t(" Die Nutzung dieser Option ergibt nur Sinn, wenn ein Wechselrichter mit separatem Smart-Meter am EVU-Punkt verbaut ist (nicht der originale Zähler des Versorgers!), welches eine dynamische Begrenzung der Einspeiseleistung am EVU-Punkt durch den PV-Wechselrichter bietet (bitte bei ev. Problemen immer vorab prüfen lassen)."),o("br",null,null,-1),t(' Ist eine Einspeiseleistungsreduzierung verbaut (in vielen älteren, privaten Einspeiseverträgen z.B. als 70% Regelung bekannt), wird mit Eingabe des Wertes "Regelpunkt Einspeisegrenze" ein eigenverbrauchsoptimiertes Fahrzeugladen mit PV-Überschussenergie möglich, die sonst abgeregelt werden würde (Nutzung der PV-Peaks).'),o("br",null,null,-1),t(' Wird in einem "Ladeprofil" die Option "Einspeisegrenze beachten" eingeschaltet, so wird der Regelpunkt auf diesen Wert verschoben und die Ladung startet erst, wenn der hinterlegte Wert "Regelpunkt Einspeisegrenze" überschritten wird.'),o("br",null,null,-1),t(" Zur optimalen Eigenverbrauchssteuerung sollte der Wert einige hundert Watt UNTER der im Wechselrichter hinterlegten EVU-Einspeiseleistungsgrenze liegen, damit openWB die Ladung freigibt, BEVOR der Wechselrichter begrenzt wird. ")])),_:1},8,["model-value"])]))]),_:1}),i(b,{title:"Phasenumschaltung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(l(),u("div",U,[i(m,{subtype:"info"},{default:a(()=>e[31]||(e[31]=[t(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),u("div",R,[i(c,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":e[8]||(e[8]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",r))},{help:a(()=>e[32]||(e[32]=[t(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "PV-Laden" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um den verfügbaren Überschuss in die Fahrzeuge zu laden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen einer und mehreren Phasen (sog. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),i(b,{title:"Speicher-Beachtung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(l(),u("div",P,[i(m,{subtype:"info"},{default:a(()=>e[33]||(e[33]=[t(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),u("div",F,[i(c,{modelValue:s.batMode,"onUpdate:modelValue":e[9]||(e[9]=r=>s.batMode=r),title:"Laden mit Überschuss",buttons:[{buttonValue:"ev_mode"},{buttonValue:"bat_mode"},{buttonValue:"min_soc_bat_mode"}]},{"label-ev_mode":a(()=>[i(h,{"fixed-width":"",icon:["fas","car-side"]}),e[34]||(e[34]=t(" Fahrzeuge "))]),"label-bat_mode":a(()=>[i(h,{"fixed-width":"",icon:["fas","fa-car-battery"]}),e[35]||(e[35]=t(" Speicher "))]),"label-min_soc_bat_mode":a(()=>[i(h,{"fixed-width":"",icon:["fas","fa-battery-half"]}),e[36]||(e[36]=t(" Mindest-SoC des Speichers "))]),help:a(()=>[e[43]||(e[43]=o("p",null,' Sofern ein Hausstromspeicher (im Folgenden "Speicher" genannt) im Energiesystem verbaut ist, kann dieser beim Fahrzeugladen mit berücksichtigt werden. Dies erfolgt passiv über die Berücksichtigung der Speicherleistungswerte und des Speicher-SoC. Eine aktive Speichersteuerung durch openWB ist aktuell mangels Speicherschnittstelle nicht möglich. ',-1)),o("p",null,[e[37]||(e[37]=t(' Bei Auswahl " ')),i(h,{"fixed-width":"",icon:["fas","car-side"]}),e[38]||(e[38]=t(' Fahrzeuge" wird der gesamte Überschuss in das EV geladen. Ist die maximale Ladeleistung der Fahrzeuge erreicht und es wird eingespeist, wird dieser Überschuss in den Speicher geladen. '))]),o("p",null,[e[39]||(e[39]=t(' Bei Auswahl " ')),i(h,{"fixed-width":"",icon:["fas","fa-car-battery"]}),e[40]||(e[40]=t(' Speicher" wird der gesamte Überschuss in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss unter Beachtung der Einschaltschwelle in die Fahrzeuge geladen. '))]),o("p",null,[e[41]||(e[41]=t(' Bei Auswahl " ')),i(h,{"fixed-width":"",icon:["fas","fa-battery-half"]}),e[42]||(e[42]=t(' Mindest-SoC des Speichers" wird der Überschuss bis zum Mindest-SoC in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss in die Fahrzeuge geladen. Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen. '))])]),_:1},8,["modelValue"]),s.batMode==="min_soc_bat_mode"?(l(),u("div",D,[i(w,{title:"Mindest-SoC des Speichers",min:0,max:100,step:1,unit:"%",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/min_bat_soc"],"onUpdate:modelValue":e[10]||(e[10]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/min_bat_soc",r))},null,8,["model-value"]),i(_,null,{default:a(()=>e[44]||(e[44]=[t(" Speicher-SoC unterhalb Mindest-SoC ")])),_:1}),i(c,{title:"Ladeleistung für Speicher reservieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"],"onUpdate:modelValue":e[11]||(e[11]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve_active",r))},{help:a(()=>e[45]||(e[45]=[t(" ACHTUNG: Der hier eingestellte Wert darf die maximale Ladeleistung des Speichers nicht überschreiten."),o("br",null,null,-1),t(" Wird der Mindest-SoC des Speichers nicht erreicht, wird der Speicher mit der hier eingestellten Leistung geladen. Mit dem verbleibenden Überschuss werden die Fahrzeuge geladen. ")])),_:1},8,["model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]?(l(),v(d,{key:0,title:"Reserve Ladeleistung",min:.1,step:.1,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve"]/1e3,"onUpdate:modelValue":e[12]||(e[12]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve",r*1e3))},null,8,["model-value"])):f("",!0),i(_,null,{default:a(()=>e[46]||(e[46]=[t(" Speicher-SoC oberhalb Mindest-SoC ")])),_:1}),i(c,{title:"Entladung des Speichers erlauben",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"],"onUpdate:modelValue":e[13]||(e[13]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge_active",r))},{help:a(()=>e[47]||(e[47]=[t(" Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen und der Speicher mit der hier eingestellten Leistung in die Fahrzeuge entladen. Die Entladeleistung des Speichers wird dem Überschuss zum Erreichen der Einschaltschwelle hinzugerechnet. ")])),_:1},8,["model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]?(l(),v(d,{key:1,title:"Erlaubte Entladeleistung",min:.1,step:.1,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge"]/1e3,"onUpdate:modelValue":e[14]||(e[14]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge",r*1e3))},null,8,["model-value"])):f("",!0)])):f("",!0)]))]),_:1}),i(W,{"form-name":"pvChargeConfigForm",onSave:e[15]||(e[15]=r=>n.$emit("save")),onReset:e[16]||(e[16]=r=>n.$emit("reset")),onDefaults:e[17]||(e[17]=r=>n.$emit("defaults"))})])])}const j=E(q,[["render",N],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{j as default}; diff --git a/web/settings/assets/PVChargeConfig-c750b618.js b/web/settings/assets/PVChargeConfig-c750b618.js deleted file mode 100644 index 90a9e6bd04..0000000000 --- a/web/settings/assets/PVChargeConfig-c750b618.js +++ /dev/null @@ -1 +0,0 @@ -import{C as S}from"./index-cc8f65ba.js";import{l as B,V,a3 as z,a4 as k,F as y}from"./vendor-fortawesome-433470db.js";import{_ as E,u as g,l,m as u,x as o,G as i,E as a,y as t,F as C,z as v,B as f}from"./vendor-ea36120f.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";B.add(V,z,k);const q={name:"OpenwbPVChargeConfigView",components:{FontAwesomeIcon:y},mixins:[S],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/pv_charging/control_range","openWB/general/chargemode_config/pv_charging/feed_in_yield","openWB/general/chargemode_config/pv_charging/switch_on_threshold","openWB/general/chargemode_config/pv_charging/switch_on_delay","openWB/general/chargemode_config/pv_charging/switch_off_threshold","openWB/general/chargemode_config/pv_charging/switch_off_delay","openWB/general/chargemode_config/pv_charging/phases_to_use","openWB/general/chargemode_config/pv_charging/bat_mode","openWB/general/chargemode_config/pv_charging/bat_power_reserve","openWB/general/chargemode_config/pv_charging/bat_power_reserve_active","openWB/general/chargemode_config/pv_charging/bat_power_discharge","openWB/general/chargemode_config/pv_charging/bat_power_discharge_active","openWB/general/chargemode_config/pv_charging/min_bat_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const n="openWB/general/chargemode_config/pv_charging/control_range";let e=this.$store.state.mqtt[n];var p="individual";return typeof e<"u"&&(e[0]===-230&&e[1]===0?p="export":e[0]===0&&e[1]===230?p="import":e[0]===-115&&e[1]===115?p="balanced":p="individual"),p},set(n){const e="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=n,n){case"export":this.updateState(e,[-230,0]);break;case"import":this.updateState(e,[0,230]);break;case"balanced":this.updateState(e,[-115,115]);break}}},chargingSwitchRange:{get(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]+this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]}},batMode:{get(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]},set(n){this.updateState("openWB/general/chargemode_config/pv_charging/bat_mode",n)}}},watch:{controlMode(n){this.calculatedControlMode=n}}},M={class:"pvChargeConfig"},L={name:"pvChargeConfigForm"},A={key:0},$={key:1},U={key:0},R={key:1},P={key:0},F={key:1},D={key:0};function N(n,e,p,I,x,s){const m=g("openwb-base-alert"),c=g("openwb-base-button-group-input"),d=g("openwb-base-number-input"),b=g("openwb-base-card"),h=g("font-awesome-icon"),w=g("openwb-base-range-input"),_=g("openwb-base-heading"),W=g("openwb-base-submit-buttons");return l(),u("div",M,[o("form",L,[i(b,{title:"Regelparameter"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(l(),u("div",A,[i(m,{subtype:"info"},{default:a(()=>e[18]||(e[18]=[t(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),u("div",$,[i(c,{modelValue:s.controlMode,"onUpdate:modelValue":e[0]||(e[0]=r=>s.controlMode=r),title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"balanced",text:"Ausgewogen"},{buttonValue:"individual",text:"Individuell"}]},{help:a(()=>e[19]||(e[19]=[t(" Die Ladeleistung kann nicht mit absoluter Genauigkeit eingestellt werden, sodass am EVU-Punkt nicht auf exakt 0W geregelt werden kann. Der Regelmodus legt fest, ob diese Differenz am EVU-Punkt (ca. 200-300W) zu geringem Netzbezug oder geringer Netzeinspeisung führen soll."),o("br",null,null,-1),t(" Bei Speichervorrang erzeugt die Regelung bei Bedarf unabhängig vom eingestellten Regelmodus Einspeisung, damit der Speicher seine Ladeleistung erhöht."),o("br",null,null,-1),t(" Achtung: bei unlogischen Einstellungen kann die Regelung gestört werden! Im Zweifel bitte unsere vordefinierten Modi verwenden. ")])),_:1},8,["modelValue"]),i(d,{disabled:s.controlMode!=="individual",readonly:s.controlMode!=="individual",title:"Minimum",step:.005,unit:"kW",required:"","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":e[1]||(e[1]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",r*1e3,"0"))},{help:a(()=>e[20]||(e[20]=[t(" Untere Grenze des Regelbereichs. ")])),_:1},8,["disabled","readonly","model-value"]),i(d,{disabled:s.controlMode!=="individual",readonly:s.controlMode!=="individual",title:"Maximum",step:.005,unit:"kW",required:"","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":e[2]||(e[2]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",r*1e3,"1"))},{help:a(()=>e[21]||(e[21]=[t(" Obere Grenze des Regelbereichs. ")])),_:1},8,["disabled","readonly","model-value"]),e[28]||(e[28]=o("hr",null,null,-1)),i(m,{subtype:s.chargingSwitchRange<1400?"danger":"info"},{default:a(()=>[t(" Die Differenzleistung zw. Ein- und Abschaltschwelle sollte mind. 1,4 kW (230V x 6A) betragen. (Konfiguriert: "+C((s.chargingSwitchRange/1e3).toLocaleString(void 0))+" kW) ",1)]),_:1},8,["subtype"]),i(d,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":e[3]||(e[3]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",r*1e3))},{help:a(()=>e[22]||(e[22]=[t(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet."),o("br",null,null,-1),t(" Dieser Wert wird pro Phase genutzt und ist daher immer für eine Phase anzugeben. ")])),_:1},8,["model-value"]),i(d,{title:"Einschaltverzögerung",min:0,step:1,unit:"s",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":e[4]||(e[4]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",r))},{help:a(()=>e[23]||(e[23]=[t(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),o("br",null,null,-1),t(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")])),_:1},8,["model-value"]),e[29]||(e[29]=o("hr",null,null,-1)),i(m,{subtype:n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3>0?"danger":"info"},{default:a(()=>e[24]||(e[24]=[t(" Ist ein Speicher im System vorhanden, kann eine Abschaltschwelle größer Null zur Speicherentladung führen. (Siehe Fragezeichentext) ")])),_:1},8,["subtype"]),i(d,{title:"Abschaltschwelle",step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":e[5]||(e[5]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",r*1e3))},{help:a(()=>e[25]||(e[25]=[t(" Übersteigt der Netzbezug die Abschaltschwelle, wird die Ladung beendet. Eine Abschaltschaltschwelle, die Netzbezug erlaubt, führt in einem System ohne steuerbaren Speicher zur Entladung des Speichers. Der Speicher wird dann auch über den eingestellten Mindest-SoC hinaus entladen (siehe Speicherbeachtung unten). ")])),_:1},8,["model-value"]),i(d,{title:"Abschaltverzögerung",min:0,step:1,unit:"s",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":e[6]||(e[6]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",r))},{help:a(()=>e[26]||(e[26]=[t(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),o("br",null,null,-1),t(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird die Ladung sofort beendet, wenn die Abschaltschwelle unterschritten wird. ")])),_:1},8,["model-value"]),e[30]||(e[30]=o("hr",null,null,-1)),i(d,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":e[7]||(e[7]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",r*1e3))},{help:a(()=>e[27]||(e[27]=[t(" Ein Wert größer 0kW bewirkt, dass weniger PV-Leistung zum Laden benutzt wird."),o("br",null,null,-1),t(" Die Nutzung dieser Option ergibt nur Sinn, wenn ein Wechselrichter mit separatem Smart-Meter am EVU-Punkt verbaut ist (nicht der originale Zähler des Versorgers!), welches eine dynamische Begrenzung der Einspeiseleistung am EVU-Punkt durch den PV-Wechselrichter bietet (bitte bei ev. Problemen immer vorab prüfen lassen)."),o("br",null,null,-1),t(' Ist eine Einspeiseleistungsreduzierung verbaut (in vielen älteren, privaten Einspeiseverträgen z.B. als 70% Regelung bekannt), wird mit Eingabe des Wertes "Regelpunkt Einspeisegrenze" ein eigenverbrauchsoptimiertes Fahrzeugladen mit PV-Überschussenergie möglich, die sonst abgeregelt werden würde (Nutzung der PV-Peaks).'),o("br",null,null,-1),t(' Wird in einem "Ladeprofil" die Option "Einspeisegrenze beachten" eingeschaltet, so wird der Regelpunkt auf diesen Wert verschoben und die Ladung startet erst, wenn der hinterlegte Wert "Regelpunkt Einspeisegrenze" überschritten wird.'),o("br",null,null,-1),t(" Zur optimalen Eigenverbrauchssteuerung sollte der Wert einige hundert Watt UNTER der im Wechselrichter hinterlegten EVU-Einspeiseleistungsgrenze liegen, damit openWB die Ladung freigibt, BEVOR der Wechselrichter begrenzt wird. ")])),_:1},8,["model-value"])]))]),_:1}),i(b,{title:"Phasenumschaltung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(l(),u("div",U,[i(m,{subtype:"info"},{default:a(()=>e[31]||(e[31]=[t(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),u("div",R,[i(c,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":e[8]||(e[8]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",r))},{help:a(()=>e[32]||(e[32]=[t(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "PV-Laden" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um den verfügbaren Überschuss in die Fahrzeuge zu laden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen einer und mehreren Phasen (sog. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),i(b,{title:"Speicher-Beachtung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(l(),u("div",P,[i(m,{subtype:"info"},{default:a(()=>e[33]||(e[33]=[t(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),u("div",F,[i(c,{modelValue:s.batMode,"onUpdate:modelValue":e[9]||(e[9]=r=>s.batMode=r),title:"Laden mit Überschuss",buttons:[{buttonValue:"ev_mode"},{buttonValue:"bat_mode"},{buttonValue:"min_soc_bat_mode"}]},{"label-ev_mode":a(()=>[i(h,{"fixed-width":"",icon:["fas","car-side"]}),e[34]||(e[34]=t(" Fahrzeuge "))]),"label-bat_mode":a(()=>[i(h,{"fixed-width":"",icon:["fas","fa-car-battery"]}),e[35]||(e[35]=t(" Speicher "))]),"label-min_soc_bat_mode":a(()=>[i(h,{"fixed-width":"",icon:["fas","fa-battery-half"]}),e[36]||(e[36]=t(" Mindest-SoC des Speichers "))]),help:a(()=>[e[43]||(e[43]=o("p",null,' Sofern ein Hausstromspeicher (im Folgenden "Speicher" genannt) im Energiesystem verbaut ist, kann dieser beim Fahrzeugladen mit berücksichtigt werden. Dies erfolgt passiv über die Berücksichtigung der Speicherleistungswerte und des Speicher-SoC. Eine aktive Speichersteuerung durch openWB ist aktuell mangels Speicherschnittstelle nicht möglich. ',-1)),o("p",null,[e[37]||(e[37]=t(' Bei Auswahl " ')),i(h,{"fixed-width":"",icon:["fas","car-side"]}),e[38]||(e[38]=t(' Fahrzeuge" wird der gesamte Überschuss in das EV geladen. Ist die maximale Ladeleistung der Fahrzeuge erreicht und es wird eingespeist, wird dieser Überschuss in den Speicher geladen. '))]),o("p",null,[e[39]||(e[39]=t(' Bei Auswahl " ')),i(h,{"fixed-width":"",icon:["fas","fa-car-battery"]}),e[40]||(e[40]=t(' Speicher" wird der gesamte Überschuss in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss unter Beachtung der Einschaltschwelle in die Fahrzeuge geladen. '))]),o("p",null,[e[41]||(e[41]=t(' Bei Auswahl " ')),i(h,{"fixed-width":"",icon:["fas","fa-battery-half"]}),e[42]||(e[42]=t(' Mindest-SoC des Speichers" wird der Überschuss bis zum Mindest-SoC in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss in die Fahrzeuge geladen. Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen. '))])]),_:1},8,["modelValue"]),s.batMode==="min_soc_bat_mode"?(l(),u("div",D,[i(w,{title:"Mindest-SoC des Speichers",min:0,max:100,step:1,unit:"%",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/min_bat_soc"],"onUpdate:modelValue":e[10]||(e[10]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/min_bat_soc",r))},null,8,["model-value"]),i(_,null,{default:a(()=>e[44]||(e[44]=[t(" Speicher-SoC unterhalb Mindest-SoC ")])),_:1}),i(c,{title:"Ladeleistung für Speicher reservieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"],"onUpdate:modelValue":e[11]||(e[11]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve_active",r))},{help:a(()=>e[45]||(e[45]=[t(" ACHTUNG: Der hier eingestellte Wert darf die maximale Ladeleistung des Speichers nicht überschreiten."),o("br",null,null,-1),t(" Wird der Mindest-SoC des Speichers nicht erreicht, wird der Speicher mit der hier eingestellten Leistung geladen. Mit dem verbleibenden Überschuss werden die Fahrzeuge geladen. ")])),_:1},8,["model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]?(l(),v(d,{key:0,title:"Reserve Ladeleistung",min:.1,step:.1,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve"]/1e3,"onUpdate:modelValue":e[12]||(e[12]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve",r*1e3))},null,8,["model-value"])):f("",!0),i(_,null,{default:a(()=>e[46]||(e[46]=[t(" Speicher-SoC oberhalb Mindest-SoC ")])),_:1}),i(c,{title:"Entladung des Speichers erlauben",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"],"onUpdate:modelValue":e[13]||(e[13]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge_active",r))},{help:a(()=>e[47]||(e[47]=[t(" Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen und der Speicher mit der hier eingestellten Leistung in die Fahrzeuge entladen. Die Entladeleistung des Speichers wird dem Überschuss zum Erreichen der Einschaltschwelle hinzugerechnet. ")])),_:1},8,["model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]?(l(),v(d,{key:1,title:"Erlaubte Entladeleistung",min:.1,step:.1,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge"]/1e3,"onUpdate:modelValue":e[14]||(e[14]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge",r*1e3))},null,8,["model-value"])):f("",!0)])):f("",!0)]))]),_:1}),i(W,{"form-name":"pvChargeConfigForm",onSave:e[15]||(e[15]=r=>n.$emit("save")),onReset:e[16]||(e[16]=r=>n.$emit("reset")),onDefaults:e[17]||(e[17]=r=>n.$emit("defaults"))})])])}const j=E(q,[["render",N],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{j as default}; diff --git a/web/settings/assets/ScheduledChargeConfig-85a95906.js b/web/settings/assets/ScheduledChargeConfig-9a450d65.js similarity index 90% rename from web/settings/assets/ScheduledChargeConfig-85a95906.js rename to web/settings/assets/ScheduledChargeConfig-9a450d65.js index 3beb7303ab..81e65f6403 100644 --- a/web/settings/assets/ScheduledChargeConfig-85a95906.js +++ b/web/settings/assets/ScheduledChargeConfig-9a450d65.js @@ -1 +1 @@ -import{C as p}from"./index-cc8f65ba.js";import{_ as h,u as s,l as i,m as u,x as b,G as o,E as a,y as r}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";const c={name:"OpenwbScheduledChargeConfigView",mixins:[p],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use","openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"]}}},_={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1};function k(t,e,C,V,B,$){const l=s("openwb-base-alert"),d=s("openwb-base-button-group-input"),g=s("openwb-base-card"),m=s("openwb-base-submit-buttons");return i(),u("div",_,[b("form",f,[o(g,{title:"Phasenumschaltung"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),u("div",v,[o(l,{subtype:"info"},{default:a(()=>e[5]||(e[5]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),u("div",w,[o(d,{title:"Anzahl Phasen Zielladen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use",n))},{help:a(()=>e[6]||(e[6]=[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (sog. 1p3p). ')])),_:1},8,["model-value"]),o(d,{title:"Anzahl Phasen bei PV-Überschuss",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv",n))},{help:a(()=>e[7]||(e[7]=[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" bei Laden mit PV-Überschuss mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (sog. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),o(m,{"form-name":"scheduledChargeConfigForm",onSave:e[2]||(e[2]=n=>t.$emit("save")),onReset:e[3]||(e[3]=n=>t.$emit("reset")),onDefaults:e[4]||(e[4]=n=>t.$emit("defaults"))})])])}const P=h(c,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{P as default}; +import{C as p}from"./index-b236cee5.js";import{_ as h,u as s,l as i,m as u,A as b,G as o,E as a,B as r}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";const c={name:"OpenwbScheduledChargeConfigView",mixins:[p],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use","openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"]}}},_={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1};function k(t,e,C,V,B,$){const l=s("openwb-base-alert"),d=s("openwb-base-button-group-input"),g=s("openwb-base-card"),m=s("openwb-base-submit-buttons");return i(),u("div",_,[b("form",f,[o(g,{title:"Phasenumschaltung"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),u("div",v,[o(l,{subtype:"info"},{default:a(()=>e[5]||(e[5]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),u("div",w,[o(d,{title:"Anzahl Phasen Zielladen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use",n))},{help:a(()=>e[6]||(e[6]=[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (sog. 1p3p). ')])),_:1},8,["model-value"]),o(d,{title:"Anzahl Phasen bei PV-Überschuss",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv",n))},{help:a(()=>e[7]||(e[7]=[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" bei Laden mit PV-Überschuss mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (sog. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),o(m,{"form-name":"scheduledChargeConfigForm",onSave:e[2]||(e[2]=n=>t.$emit("save")),onReset:e[3]||(e[3]=n=>t.$emit("reset")),onDefaults:e[4]||(e[4]=n=>t.$emit("defaults"))})])])}const P=h(c,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{P as default}; diff --git a/web/settings/assets/Status-255f6f61.css b/web/settings/assets/Status-255f6f61.css new file mode 100644 index 0000000000..ac031957b3 --- /dev/null +++ b/web/settings/assets/Status-255f6f61.css @@ -0,0 +1 @@ +.io-state[data-v-356761d0]{white-space:nowrap;flex-grow:0;flex-basis:7em}.openwb-chart[data-v-f4769d2f]{min-height:250px}.status[data-v-051028a3]{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:0 1em;gap:0 1em}.status .card[data-v-051028a3]{align-self:start}@media (max-width: 991px){.status[data-v-051028a3]{display:grid;grid-template-columns:repeat(1,1fr);grid-gap:10px;gap:10px}} diff --git a/web/settings/assets/Status-3484f650.js b/web/settings/assets/Status-3484f650.js deleted file mode 100644 index 52aa9c9010..0000000000 --- a/web/settings/assets/Status-3484f650.js +++ /dev/null @@ -1 +0,0 @@ -import{C as y}from"./index-cc8f65ba.js";import{l as T,J as q,K as S,c as P,F as w,L as A,M as D,N as G,O as H,P as F,Q as Z,R as K,S as J,T as U,U as I,V as L,W as Q,X,Y}from"./vendor-fortawesome-433470db.js";import{_ as v,u as i,l as d,z as g,D as j,E as r,x as e,m as f,G as n,y as u,F as a,B as x,p as $,q as ee,N as B,M as N}from"./vendor-ea36120f.js";import{C as te,p as se,a as oe,L as ae,b as re,P as ie,c as ne,T as ce,i as de,d as le,e as pe}from"./vendor-chartjs-1398beb1.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./vendor-luxon-8ddd27a0.js";T.add(q,S,P);const me={name:"StatusCard",components:{FontAwesomeIcon:w},props:{subtype:{type:String,required:!0},state:{type:Number,required:!1,default:0},stateMessage:{type:String,required:!1,default:void 0},componentId:{type:Number,required:!1,default:void 0}},computed:{stateClass(){switch(this.state){case 0:return"success";case 1:return"warning";case 2:return"danger";default:return"dark"}},stateIcon(){switch(this.state){case 0:return["fas","check-circle"];case 1:return["fas","exclamation-triangle"];case 2:return["fas","times-circle"];default:return["fas","check-circle"]}}}},ue={class:"text-right"},ge={class:"container"},he={class:"row justify-content-end"},be={key:0,class:"col px-0"},_e={style:{"white-space":"pre-wrap"}},fe={key:1,class:"col col-auto pr-0"},ve={class:"text-right"};function ye(s,o,c,h,b,t){const p=i("font-awesome-icon"),l=i("openwb-base-alert"),m=i("openwb-base-card");return d(),g(m,{subtype:c.subtype,collapsible:!0,collapsed:!0,class:"pb-0"},j({header:r(()=>[$(s.$slots,"header-left")]),actions:r(()=>[e("div",ue,[$(s.$slots,"header-right")]),n(p,{class:ee([c.state===0?`text-${c.subtype}`:"","ml-1"]),"fixed-width":"",icon:t.stateIcon},null,8,["class","icon"])]),default:r(()=>[$(s.$slots,"default")]),_:2},[c.componentId!==void 0||c.stateMessage?{name:"footer",fn:r(()=>[e("div",ge,[e("div",he,[c.stateMessage?(d(),f("div",be,[n(l,{subtype:t.stateClass},{default:r(()=>[n(p,{"fixed-width":"",icon:t.stateIcon},null,8,["icon"]),o[0]||(o[0]=u(" Modulmeldung: ")),e("span",_e,a(c.stateMessage),1)]),_:1},8,["subtype"])])):x("",!0),c.componentId!==void 0?(d(),f("div",fe,[e("div",ve,"ID: "+a(c.componentId),1)])):x("",!0)])])]),key:"0"}:void 0]),1032,["subtype"])}const W=v(me,[["render",ye],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/StatusCard.vue"]]);T.add(A);const Te={name:"ChargePointSumCard",components:{StatusCard:W,FontAwesomeIcon:w},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported"]}},computed:{baseTopic:{get(){return"openWB/chargepoint"}}}},we={class:"text-right"},xe={class:"row"},We={class:"col text-right text-monospace"},ke={class:"row"},Ce={class:"col-4 text-right text-monospace"},Be={class:"col-4 text-right text-monospace"},Ne={class:"row"},$e={class:"col-4 text-right text-monospace"},qe={class:"col-4 text-right text-monospace"};function Se(s,o,c,h,b,t){const p=i("font-awesome-icon"),l=i("openwb-base-card"),m=i("status-card");return d(),g(m,{subtype:"primary"},{"header-left":r(()=>[n(p,{"fixed-width":"",icon:["fas","charging-station"]}),o[0]||(o[0]=u(" Alle Ladepunkte "))]),"header-right":r(()=>[e("span",we,a(s.formatNumberTopic(t.baseTopic+"/get/power",3,3,.001))+" kW ",1)]),default:r(()=>[n(l,{subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[o[1]||(o[1]=e("div",{class:"row py-2"},[e("div",{class:"col font-weight-bold"},"Ladevorgang"),e("div",{class:"col text-right"},"Leistung")],-1)),e("div",xe,[e("div",We,a(s.formatNumberTopic(t.baseTopic+"/get/power",3,3,.001)),1)])]),_:1}),n(l,{subtype:"white","body-bg":"white",class:"py-1 mb-2",title:"Zählerstände"},{default:r(()=>[o[4]||(o[4]=e("div",{class:"row justify-content-end"},[e("div",{class:"col-4 text-right"},"Geladen"),e("div",{class:"col-4 text-right"},"Entladen")],-1)),e("div",ke,[o[2]||(o[2]=e("div",{class:"col text-right"},"Heute",-1)),e("div",Ce,a(s.formatNumberTopic(t.baseTopic+"/get/daily_imported",3,3,.001)+" kWh"),1),e("div",Be,a(s.formatNumberTopic(t.baseTopic+"/get/daily_exported",3,3,.001)+" kWh"),1)]),e("div",Ne,[o[3]||(o[3]=e("div",{class:"col text-right"},"Gesamt",-1)),e("div",$e,a(s.formatNumberTopic(t.baseTopic+"/get/imported",3,3,.001)+" kWh"),1),e("div",qe,a(s.formatNumberTopic(t.baseTopic+"/get/exported",3,3,.001)+" kWh"),1)])]),_:1})]),_:1})}const Pe=v(Te,[["render",Se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointSumCard.vue"]]);T.add(A,D,G,H,F,Z,K,J);const Ae={name:"ChargePointCard",components:{StatusCard:W,FontAwesomeIcon:w},mixins:[y],props:{installedChargePointKey:{type:String,required:!0},installedChargePoint:{type:Object,required:!0}},data(){return{mqttTopicsToSubscribe:[`openWB/chargepoint/${this.installedChargePoint.id}/get/+`,`openWB/chargepoint/${this.installedChargePoint.id}/get/connected_vehicle/info`,`openWB/chargepoint/${this.installedChargePoint.id}/set/+`,`openWB/internal_chargepoint/${this.installedChargePoint.id}/data/phases_to_use`]}},computed:{chargePointIndex:{get(){return this.installedChargePoint.id}},baseTopic:{get(){return"openWB/chargepoint/"+this.chargePointIndex}},chargingStatus:{get(){let s=this.$store.state.mqtt[this.baseTopic+"/get/plug_state"],o=this.$store.state.mqtt[this.baseTopic+"/get/charge_state"];return s==1&&o==1?{icon:["fas","plug-circle-bolt"],text:"Fahrzeug angesteckt, Ladevorgang aktiv"}:s==1?{icon:["fas","plug-circle-check"],text:"Fahrzeug angesteckt, kein Ladevorgang aktiv"}:{icon:["fas","plug-circle-minus"],text:"Kein Fahrzeug angesteckt"}}}}},Ie={class:"row py-2"},Le={class:"col text-right"},je={style:{"white-space":"pre-wrap"}},Oe={class:"row"},ze={class:"col text-right text-monospace"},Ee={class:"col text-right text-monospace"},Re={class:"row"},Ve={key:0,class:"col text-right text-monospace"},Me={key:1,class:"col text-right text-monospace"},De={class:"col text-right text-monospace"},Ge={class:"row"},He={class:"col-4 text-right text-monospace"},Fe={class:"col-4 text-right text-monospace"},Ze={class:"row"},Ke={class:"col-4 text-right text-monospace"},Je={class:"col-4 text-right text-monospace"},Ue={class:"row"},Qe={class:"col text-right text-monospace"},Xe={class:"col text-right text-monospace"},Ye={class:"col text-right text-monospace"},et={class:"row"},tt={class:"col text-right text-monospace"},st={class:"col text-right text-monospace"},ot={class:"col text-right text-monospace"},at={class:"row"},rt={class:"col text-right text-monospace"},it={class:"col text-right text-monospace"},nt={class:"col text-right text-monospace"},ct={class:"row"},dt={class:"col text-right text-monospace"},lt={class:"col text-right text-monospace"},pt={class:"col text-right text-monospace"},mt={class:"row"},ut={class:"col text-center text-monospace"};function gt(s,o,c,h,b,t){const p=i("font-awesome-icon"),l=i("openwb-base-alert"),m=i("openwb-base-card"),k=i("status-card");return d(),g(k,{subtype:"primary","component-id":t.chargePointIndex,state:s.$store.state.mqtt[t.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[t.baseTopic+"/get/fault_str"]},{"header-left":r(()=>[n(p,{"fixed-width":"",icon:["fas","charging-station"]}),u(" "+a(c.installedChargePoint.name),1)]),"header-right":r(()=>[u(a(s.formatNumberTopic(t.baseTopic+"/get/power",3,3,.001))+" kW",1)]),default:r(()=>[n(m,{subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[e("div",Ie,[o[0]||(o[0]=e("div",{class:"col col-auto font-weight-bold"},"Status",-1)),e("div",Le,[n(p,{"fixed-width":"",icon:t.chargingStatus.icon,title:t.chargingStatus.text},null,8,["icon","title"]),u(" "+a(t.chargingStatus.text),1)])]),n(l,{subtype:"info"},{default:r(()=>[o[1]||(o[1]=u(" Statusmeldung: ")),e("span",je,a(s.$store.state.mqtt[t.baseTopic+"/get/state_str"]),1)]),_:1}),e("div",null," max. Ladeleistung: "+a((s.max_power=s.formatNumberTopic(t.baseTopic+"/get/max_evse_current",0))=="-"?s.max_power:Math.floor(s.max_power*3*230/1e3))+" kW ",1)]),_:1}),n(m,{subtype:"white","body-bg":"white",class:"py-1 mb-2",title:"Ladevorgang"},{default:r(()=>[o[2]||(o[2]=e("div",{class:"row"},[e("div",{class:"col text-right"},"Ladestrom Vorgabe"),e("div",{class:"col text-right"},"Leistung")],-1)),e("div",Oe,[e("div",ze,a(s.formatNumberTopic(t.baseTopic+"/set/current",2))+" A",1),e("div",Ee,a(s.formatNumberTopic(t.baseTopic+"/get/power",3,3,.001))+" kW ",1)]),o[3]||(o[3]=e("div",{class:"row"},[e("div",{class:"col text-right"},"Phasen Vorgabe"),e("div",{class:"col text-right"},"Phasen Aktuell")],-1)),e("div",Re,[s.$store.state.mqtt["openWB/general/extern"]===!0?(d(),f("div",Ve,a(s.formatNumberTopic("openWB/internal_chargepoint/"+t.chargePointIndex+"/data/phases_to_use")),1)):(d(),f("div",Me,a(s.formatNumberTopic(t.baseTopic+"/set/phases_to_use")),1)),e("div",De,a(s.formatNumberTopic(t.baseTopic+"/get/phases_in_use")),1)])]),_:1}),n(m,{subtype:"white","body-bg":"white",class:"py-1 mb-2",title:"Zählerstände"},{default:r(()=>[o[6]||(o[6]=e("div",{class:"row justify-content-end"},[e("div",{class:"col-4 text-right"},"Geladen"),e("div",{class:"col-4 text-right"},"Entladen")],-1)),e("div",Ge,[o[4]||(o[4]=e("div",{class:"col text-right"},"Heute",-1)),e("div",He,a(s.formatNumberTopic(t.baseTopic+"/get/daily_imported",3,3,.001))+" kWh ",1),e("div",Fe,a(s.formatNumberTopic(t.baseTopic+"/get/daily_exported",3,3,.001))+" kWh ",1)]),e("div",Ze,[o[5]||(o[5]=e("div",{class:"col text-right"},"Gesamt",-1)),e("div",Ke,a(s.formatNumberTopic(t.baseTopic+"/get/imported",3,3,.001))+" kWh ",1),e("div",Je,a(s.formatNumberTopic(t.baseTopic+"/get/exported",3,3,.001))+" kWh ",1)])]),_:1}),n(m,{subtype:"white","body-bg":"white",class:"py-1 mb-2",title:"Werte pro Phase"},{default:r(()=>[e("div",Ue,[o[7]||(o[7]=e("div",{class:"col-md-4 pr-1 text-center text-md-right"},"Spannung [V]",-1)),e("div",Qe,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/voltages",1).split(" / ")[0]),1),e("div",Xe,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/voltages",1).split(" / ")[1]),1),e("div",Ye,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/voltages",1).split(" / ")[2]),1)]),e("div",et,[o[8]||(o[8]=e("div",{class:"col-md-4 pr-1 text-center text-md-right"},"Strom [A]",-1)),e("div",tt,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/currents",2).split(" / ")[0]),1),e("div",st,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/currents",2).split(" / ")[1]),1),e("div",ot,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/currents",2).split(" / ")[2]),1)]),e("div",at,[o[9]||(o[9]=e("div",{class:"col-md-4 pr-1 text-center text-md-right"},"Wirkleistung [kW]",-1)),e("div",rt,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/powers",3,3,.001).split(" / ")[0]),1),e("div",it,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/powers",3,3,.001).split(" / ")[1]),1),e("div",nt,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/powers",3,3,.001).split(" / ")[2]),1)]),e("div",ct,[o[10]||(o[10]=e("div",{class:"col-md-4 pr-1 text-center text-md-right"},"Leistungsfaktor",-1)),e("div",dt,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/power_factors",2).split(" / ")[0]),1),e("div",lt,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/power_factors",2).split(" / ")[1]),1),e("div",pt,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/power_factors",2).split(" / ")[2]),1)]),e("div",mt,[o[11]||(o[11]=e("div",{class:"col-md-4 pr-1 text-center text-md-right"},"Netzfrequenz",-1)),e("div",ut,a(s.formatNumberTopic(t.baseTopic+"/get/frequency",3))+" Hz ",1)])]),_:1})]),_:1},8,["component-id","state","state-message"])}const ht=v(Ae,[["render",gt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointCard.vue"]]);T.add(U);const bt={name:"CounterCard",components:{StatusCard:W,FontAwesomeIcon:w},mixins:[y],props:{counter:{type:Object,required:!0}},data(){return{mqttTopicsToSubscribe:[`openWB/counter/${this.counter.id}/get/+`]}},computed:{baseTopic:{get(){return"openWB/counter/"+this.counter.id}}}},_t={class:"row"},ft={class:"col text-right text-monospace pl-0"},vt={class:"col text-right text-monospace pl-0"},yt={class:"row"},Tt={class:"col text-right text-monospace pl-0"},wt={class:"col text-right text-monospace pl-0"},xt={class:"row"},Wt={class:"col"},kt={class:"row"},Ct={class:"col text-right text-monospace pl-0"},Bt={class:"col text-right text-monospace pl-0"},Nt={class:"col text-right text-monospace pl-0"},$t={class:"row"},qt={class:"col"},St={class:"row"},Pt={class:"col text-right text-monospace pl-0"},At={class:"col text-right text-monospace pl-0"},It={class:"col text-right text-monospace pl-0"},Lt={class:"row"},jt={class:"col"},Ot={class:"row"},zt={class:"col text-right text-monospace pl-0"},Et={class:"col text-right text-monospace pl-0"},Rt={class:"col text-right text-monospace pl-0"},Vt={class:"row"},Mt={class:"col"},Dt={class:"row"},Gt={class:"col text-right text-monospace pl-0"},Ht={class:"col text-right text-monospace pl-0"},Ft={class:"col text-right text-monospace pl-0"};function Zt(s,o,c,h,b,t){const p=i("font-awesome-icon"),l=i("openwb-base-card"),m=i("status-card");return d(),g(m,{subtype:"danger","component-id":c.counter.id,state:s.$store.state.mqtt[t.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[t.baseTopic+"/get/fault_str"]},{"header-left":r(()=>[n(p,{"fixed-width":"",icon:["fas","gauge-high"]}),u(" "+a(c.counter.name),1)]),"header-right":r(()=>[u(a(s.formatNumberTopic(t.baseTopic+"/get/power",3,3,.001))+" kW",1)]),default:r(()=>[n(l,{title:"Aktuelle Werte",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[o[0]||(o[0]=e("div",{class:"row"},[e("div",{class:"col-6 text-right"},"Leistung"),e("div",{class:"col-6 text-right"},"Netzfrequenz")],-1)),e("div",_t,[e("div",ft,a(s.formatNumberTopic(t.baseTopic+"/get/power",3,3,.001)+" kW"),1),e("div",vt,a(s.formatNumberTopic(t.baseTopic+"/get/frequency",3)+" Hz"),1)])]),_:1}),n(l,{title:"Zählerstände",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[o[1]||(o[1]=e("div",{class:"row"},[e("div",{class:"col-6 text-right"},"Export"),e("div",{class:"col-6 text-right"},"Import")],-1)),e("div",yt,[e("div",Tt,a(s.formatNumberTopic(t.baseTopic+"/get/exported",3,3,.001)+" kWh"),1),e("div",wt,a(s.formatNumberTopic(t.baseTopic+"/get/imported",3,3,.001)+" kWh"),1)])]),_:1}),n(l,{title:"Werte pro Phase",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[e("div",xt,[o[2]||(o[2]=e("div",{class:"col-md-4 pr-0 text-center text-md-right"},"Spannung [V]",-1)),e("div",Wt,[e("div",kt,[e("div",Ct,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/voltages",1).split(" / ")[0]),1),e("div",Bt,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/voltages",1).split(" / ")[1]),1),e("div",Nt,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/voltages",1).split(" / ")[2]),1)])])]),e("div",$t,[o[3]||(o[3]=e("div",{class:"col-md-4 pr-0 text-center text-md-right"},"Strom [A]",-1)),e("div",qt,[e("div",St,[e("div",Pt,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/currents",2).split(" / ")[0]),1),e("div",At,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/currents",2).split(" / ")[1]),1),e("div",It,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/currents",2).split(" / ")[2]),1)])])]),e("div",Lt,[o[4]||(o[4]=e("div",{class:"col-md-4 pr-0 text-center text-md-right"},"Wirkleistung [kW]",-1)),e("div",jt,[e("div",Ot,[e("div",zt,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/powers",3,3,.001).split(" / ")[0]),1),e("div",Et,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/powers",3,3,.001).split(" / ")[1]),1),e("div",Rt,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/powers",3,3,.001).split(" / ")[2]),1)])])]),e("div",Vt,[o[5]||(o[5]=e("div",{class:"col-md-4 pr-0 text-center text-md-right"},"Leistungsfaktor",-1)),e("div",Mt,[e("div",Dt,[e("div",Gt,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/power_factors",2).split(" / ")[0]),1),e("div",Ht,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/power_factors",2).split(" / ")[1]),1),e("div",Ft,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/power_factors",2).split(" / ")[2]),1)])])])]),_:1})]),_:1},8,["component-id","state","state-message"])}const Kt=v(bt,[["render",Zt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/CounterCard.vue"]]);T.add(I);const Jt={name:"InverterSumCard",components:{StatusCard:W,FontAwesomeIcon:w},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/pv/get/+"]}},computed:{baseTopic:{get(){return"openWB/pv"}}}},Ut={class:"row"},Qt={class:"col text-right text-monospace"},Xt={class:"col text-right text-monospace"},Yt={class:"row"},es={class:"col text-right text-monospace"},ts={class:"col text-right text-monospace"},ss={class:"col text-right text-monospace"};function os(s,o,c,h,b,t){const p=i("font-awesome-icon"),l=i("openwb-base-card"),m=i("status-card");return d(),g(m,{subtype:"success",state:s.$store.state.mqtt[t.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[t.baseTopic+"/get/fault_str"]},{"header-left":r(()=>[n(p,{"fixed-width":"",icon:["fas","solar-panel"]}),o[0]||(o[0]=u(" Alle Wechselrichter "))]),"header-right":r(()=>[u(a(s.formatNumberTopic(t.baseTopic+"/get/power",3,3,.001))+" kW",1)]),default:r(()=>[n(l,{title:"Aktuelle Werte",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[o[1]||(o[1]=e("div",{class:"row"},[e("div",{class:"col text-right"},"Leistung"),e("div",{class:"col text-right"},"Zählerstand")],-1)),e("div",Ut,[e("div",Qt,a(s.formatNumberTopic(t.baseTopic+"/get/power",3,3,.001))+" kW ",1),e("div",Xt,a(s.formatNumberTopic(t.baseTopic+"/get/exported",3,3,.001))+" kWh ",1)])]),_:1}),n(l,{title:"Erträge",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[o[2]||(o[2]=e("div",{class:"row"},[e("div",{class:"col text-right"},"Heute"),e("div",{class:"col text-right"},"Monat"),e("div",{class:"col text-right"},"Jahr")],-1)),e("div",Yt,[e("div",es,a(s.formatNumberTopic(t.baseTopic+"/get/daily_exported",3,3,.001))+" kWh ",1),e("div",ts,a(s.formatNumberTopic(t.baseTopic+"/get/monthly_exported",1,1,.001))+" kWh ",1),e("div",ss,a(s.formatNumberTopic(t.baseTopic+"/get/yearly_exported",0,0,.001))+" kWh ",1)])]),_:1})]),_:1},8,["state","state-message"])}const as=v(Jt,[["render",os],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterSumCard.vue"]]);T.add(I);const rs={name:"InverterCard",components:{StatusCard:W,FontAwesomeIcon:w},mixins:[y],props:{inverter:{type:Object,required:!0}},data(){return{mqttTopicsToSubscribe:[`openWB/pv/${this.inverter.id}/get/+`]}},computed:{baseTopic:{get(){return"openWB/pv/"+this.inverter.id}}}},is={class:"row"},ns={class:"col text-right text-monospace"},cs={class:"col text-right text-monospace"},ds={class:"row"},ls={class:"col text-right text-monospace"},ps={class:"col text-right text-monospace"},ms={class:"col text-right text-monospace"};function us(s,o,c,h,b,t){const p=i("font-awesome-icon"),l=i("openwb-base-card"),m=i("status-card");return d(),g(m,{subtype:"success","component-id":c.inverter.id,state:s.$store.state.mqtt[t.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[t.baseTopic+"/get/fault_str"]},{"header-left":r(()=>[n(p,{"fixed-width":"",icon:["fas","solar-panel"]}),u(" "+a(c.inverter.name),1)]),"header-right":r(()=>[u(a(s.formatNumberTopic(t.baseTopic+"/get/power",3,3,.001))+" kW",1)]),default:r(()=>[n(l,{title:"Aktuelle Werte",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[o[0]||(o[0]=e("div",{class:"row"},[e("div",{class:"col text-right"},"Leistung"),e("div",{class:"col text-right"},"Zählerstand")],-1)),e("div",is,[e("div",ns,a(s.formatNumberTopic(t.baseTopic+"/get/power",3,3,.001))+" kW ",1),e("div",cs,a(s.formatNumberTopic(t.baseTopic+"/get/exported",3,3,.001))+" kWh ",1)])]),_:1}),n(l,{title:"Erträge",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[o[1]||(o[1]=e("div",{class:"row"},[e("div",{class:"col text-right"},"Heute"),e("div",{class:"col text-right"},"Monat"),e("div",{class:"col text-right"},"Jahr")],-1)),e("div",ds,[e("div",ls,a(s.formatNumberTopic(t.baseTopic+"/get/daily_exported",3,3,.001))+" kWh ",1),e("div",ps,a(s.formatNumberTopic(t.baseTopic+"/get/monthly_exported",1,1,.001))+" kWh ",1),e("div",ms,a(s.formatNumberTopic(t.baseTopic+"/get/yearly_exported",0,0,.001))+" kWh ",1)])]),_:1})]),_:1},8,["component-id","state","state-message"])}const gs=v(rs,[["render",us],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterCard.vue"]]);T.add(L);const hs={name:"BatterySumCard",components:{StatusCard:W,FontAwesomeIcon:w},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/bat/get/+"]}},computed:{baseTopic:{get(){return"openWB/bat"}}}},bs={class:"row"},_s={class:"col text-right text-monospace pl-0"},fs={class:"col text-right text-monospace pl-0"},vs={class:"row"},ys={class:"col text-right text-monospace"},Ts={class:"col text-right text-monospace"},ws={class:"row"},xs={class:"col text-right text-monospace"},Ws={class:"col text-right text-monospace"};function ks(s,o,c,h,b,t){const p=i("font-awesome-icon"),l=i("openwb-base-card"),m=i("status-card");return d(),g(m,{subtype:"warning",state:s.$store.state.mqtt[t.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[t.baseTopic+"/get/fault_str"]},{"header-left":r(()=>[n(p,{"fixed-width":"",icon:["fas","car-battery"]}),o[0]||(o[0]=u(" Alle Speicher "))]),"header-right":r(()=>[u(a(s.formatNumberTopic(t.baseTopic+"/get/power",1,1,.001))+" kW / "+a(s.$store.state.mqtt[t.baseTopic+"/get/soc"])+" % ",1)]),default:r(()=>[n(l,{title:"Aktuelle Werte",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[o[1]||(o[1]=e("div",{class:"row"},[e("div",{class:"col-6 text-right"},"Leistung"),e("div",{class:"col-6 text-right"},"Ladestand")],-1)),e("div",bs,[e("div",_s,a(s.formatNumberTopic(t.baseTopic+"/get/power",3,3,.001))+" kW ",1),e("div",fs,a(s.$store.state.mqtt[t.baseTopic+"/get/soc"])+" %",1)])]),_:1}),n(l,{title:"Zählerstände",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[o[4]||(o[4]=e("div",{class:"row"},[e("div",{class:"col"}),e("div",{class:"col text-right"},"Geladen"),e("div",{class:"col text-right"},"Entladen")],-1)),e("div",vs,[o[2]||(o[2]=e("div",{class:"col text-right"},"Heute",-1)),e("div",ys,a(s.formatNumberTopic(t.baseTopic+"/get/daily_imported",3,3,.001))+" kWh ",1),e("div",Ts,a(s.formatNumberTopic(t.baseTopic+"/get/daily_exported",3,3,.001))+" kWh ",1)]),e("div",ws,[o[3]||(o[3]=e("div",{class:"col text-right"},"Gesamt",-1)),e("div",xs,a(s.formatNumberTopic(t.baseTopic+"/get/imported",3,3,.001))+" kWh ",1),e("div",Ws,a(s.formatNumberTopic(t.baseTopic+"/get/exported",3,3,.001))+" kWh ",1)])]),_:1})]),_:1},8,["state","state-message"])}const Cs=v(hs,[["render",ks],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatterySumCard.vue"]]);T.add(L);const Bs={name:"BatteryCard",components:{StatusCard:W,FontAwesomeIcon:w},mixins:[y],props:{battery:{type:Object,required:!0}},data(){return{mqttTopicsToSubscribe:[`openWB/bat/${this.battery.id}/get/+`]}},computed:{baseTopic:{get(){return"openWB/bat/"+this.battery.id}}}},Ns={class:"row"},$s={class:"col text-right text-monospace pl-0"},qs={class:"col text-right text-monospace pl-0"},Ss={class:"row"},Ps={class:"col text-right text-monospace"},As={class:"col text-right text-monospace"},Is={class:"row"},Ls={class:"col text-right text-monospace"},js={class:"col text-right text-monospace"};function Os(s,o,c,h,b,t){const p=i("font-awesome-icon"),l=i("openwb-base-card"),m=i("status-card");return d(),g(m,{subtype:"warning","component-id":c.battery.id,state:s.$store.state.mqtt[t.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[t.baseTopic+"/get/fault_str"]},{"header-left":r(()=>[n(p,{"fixed-width":"",icon:["fas","car-battery"]}),u(" "+a(c.battery.name),1)]),"header-right":r(()=>[u(a(s.formatNumberTopic(t.baseTopic+"/get/power",1,1,.001))+" kW / "+a(s.$store.state.mqtt[t.baseTopic+"/get/soc"])+" % ",1)]),default:r(()=>[n(l,{title:"Aktuelle Werte",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[o[0]||(o[0]=e("div",{class:"row"},[e("div",{class:"col-6 text-right"},"Leistung"),e("div",{class:"col-6 text-right"},"Ladestand")],-1)),e("div",Ns,[e("div",$s,a(s.formatNumberTopic(t.baseTopic+"/get/power",3,3,.001))+" kW ",1),e("div",qs,a(s.$store.state.mqtt[t.baseTopic+"/get/soc"])+" %",1)])]),_:1}),n(l,{title:"Zählerstände",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[o[3]||(o[3]=e("div",{class:"row"},[e("div",{class:"col"}),e("div",{class:"col text-right"},"Geladen"),e("div",{class:"col text-right"},"Entladen")],-1)),e("div",Ss,[o[1]||(o[1]=e("div",{class:"col text-right"},"Heute",-1)),e("div",Ps,a(s.formatNumberTopic(t.baseTopic+"/get/daily_imported",3,3,.001))+" kWh ",1),e("div",As,a(s.formatNumberTopic(t.baseTopic+"/get/daily_exported",3,3,.001))+" kWh ",1)]),e("div",Is,[o[2]||(o[2]=e("div",{class:"col text-right"},"Gesamt",-1)),e("div",Ls,a(s.formatNumberTopic(t.baseTopic+"/get/imported",3,3,.001))+" kWh ",1),e("div",js,a(s.formatNumberTopic(t.baseTopic+"/get/exported",3,3,.001))+" kWh ",1)])]),_:1})]),_:1},8,["component-id","state","state-message"])}const zs=v(Bs,[["render",Os],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatteryCard.vue"]]);T.add(q,S,P,Q);const Es={name:"RippleControlReceiverCard",components:{FontAwesomeIcon:w},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/general/ripple_control_receiver/get/fault_state","openWB/general/ripple_control_receiver/get/fault_str","openWB/general/ripple_control_receiver/get/override_value","openWB/general/ripple_control_receiver/module"]}},computed:{baseTopic:{get(){return"openWB/general/ripple_control_receiver"}}}},Rs={class:"row"},Vs={key:0,class:"col"},Ms={key:1,class:"col"},Ds={style:{"white-space":"pre-wrap"}};function Gs(s,o,c,h,b,t){const p=i("font-awesome-icon"),l=i("openwb-base-card"),m=i("openwb-base-alert");return s.$store.state.mqtt[t.baseTopic+"/module"]&&s.$store.state.mqtt[t.baseTopic+"/module"].type?(d(),g(l,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0,class:"pb-0"},{header:r(()=>[n(p,{icon:["fas","tower-broadcast"]}),o[0]||(o[0]=u(" Steuerbare Verbrauchseinrichtung (RSE) "))]),footer:r(()=>[n(m,{subtype:s.getFaultStateSubtype(t.baseTopic)},{default:r(()=>[n(p,{"fixed-width":"",icon:s.stateIcon},null,8,["icon"]),o[2]||(o[2]=u(" Modulmeldung: ")),e("span",Ds,a(s.$store.state.mqtt[t.baseTopic+"/get/fault_str"]),1)]),_:1},8,["subtype"])]),default:r(()=>[n(l,{title:"Aktuelle Werte",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[e("div",Rs,[o[1]||(o[1]=e("div",{class:"col"},"Status",-1)),s.$store.state.mqtt[t.baseTopic+"/get/override_value"]==0?(d(),f("div",Vs," Laden gesperrt ")):(d(),f("div",Ms," Laden erlaubt ("+a(s.$store.state.mqtt[t.baseTopic+"/get/override_value"])+" %) ",1))])]),_:1})]),_:1})):x("",!0)}const Hs=v(Es,[["render",Gs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/RippleControlReceiver.vue"]]);T.add(X);const Fs={name:"VehicleCard",components:{StatusCard:W,FontAwesomeIcon:w},mixins:[y],props:{vehicleKey:{type:String,required:!0},vehicleName:{type:String,default:""}},data(){return{mqttTopicsToSubscribe:["openWB/vehicle/+/get/+"]}},computed:{vehicleIndex:{get(){return parseInt(this.vehicleKey.match(/(?:\/)(\d+)(?=\/)/)[1])}},soc:{get(){return this.formatNumberTopic(this.baseTopic+"/get/soc")}},socTimestamp:{get(){return this.$store.state.mqtt[this.baseTopic+"/get/soc_timestamp"]!==void 0?new Date(this.$store.state.mqtt[this.baseTopic+"/get/soc_timestamp"]*1e3).toLocaleString():"-"}},socRange:{get(){return this.$store.state.mqtt[this.baseTopic+"/get/range"]!==void 0?Math.round(this.$store.state.mqtt[this.baseTopic+"/get/range"]):0}},baseTopic:{get(){return"openWB/vehicle/"+this.vehicleIndex}}}},Zs={class:"row"},Ks={class:"col text-right text-monospace"},Js={class:"col text-right text-monospace"},Us={class:"col text-right text-monospace"};function Qs(s,o,c,h,b,t){const p=i("font-awesome-icon"),l=i("openwb-base-card"),m=i("status-card");return d(),g(m,{subtype:"info","component-id":t.vehicleIndex,state:s.$store.state.mqtt[t.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[t.baseTopic+"/get/fault_str"]},j({"header-left":r(()=>[n(p,{"fixed-width":"",icon:["fas","car"]}),u(" "+a(c.vehicleName),1)]),default:r(()=>[n(l,{title:"Fahrzeugdaten",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[o[0]||(o[0]=e("div",{class:"row"},[e("div",{class:"col pr-0 text-right"},"Ladestand"),e("div",{class:"col pr-0 text-right"},"Reichweite"),e("div",{class:"col pr-0 text-right"},"Letzter Zeitstempel")],-1)),e("div",Zs,[e("div",Ks,a(t.soc)+" %",1),e("div",Js,a(t.socRange)+" km",1),e("div",Us,a(t.socTimestamp),1)])]),_:1})]),_:2},[t.soc!="-"?{name:"header-right",fn:r(()=>[u(a(t.soc)+" % ",1)]),key:"0"}:void 0]),1032,["component-id","state","state-message"])}const Xs=v(Fs,[["render",Qs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/VehicleCard.vue"]]);T.add(Y);te.register(se,oe,ae,re,ie,ne,ce,de,le);const Ys={name:"ElectricityTariffCard",components:{StatusCard:W,FontAwesomeIcon:w,ChartjsLine:pe},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/optional/et/provider","openWB/optional/et/get/fault_state","openWB/optional/et/get/fault_str","openWB/optional/et/get/prices"],chartDatasets:{datasets:[{label:"Stromtarif",unit:"ct/kWh",type:"line",stepped:!0,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:void 0,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:"price"}}]},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0},legend:{display:!1}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"hour",text:"Zeit",maxTicksLimit:24},display:!0,title:{display:!0,text:"Uhrzeit"},ticks:{font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",title:{font:{size:12},display:!0,text:"Preis [ct/kWh]"},grid:{},ticks:{font:{size:12},stepSize:.01,maxTicksLimit:11}}}}}},computed:{electricityTariffConfigured(){const s=this.$store.state.mqtt["openWB/optional/et/provider"];return s!==void 0?s.type!==null:!1},chartDataRead(){return this.chartDataObject.datasets[0].data!=null},chartDataObject(){if(this.$store.state.mqtt["openWB/optional/et/get/prices"]){var s=this.$store.state.mqtt["openWB/optional/et/get/prices"],o=[];for(const[b,t]of Object.entries(s))o.push({timestamp:b*1e3,price:t*1e5});const h=o.slice(-1)[0];o.push({timestamp:h.timestamp+(60*60-1)*1e3,price:h.price})}const c=this.chartDatasets;return c.datasets[0].data=o,c},currentPrice(){return this.chartDataObject.datasets[0].data===void 0||this.chartDataObject.datasets[0].data.length===0?this.formatNumber(0,2):this.formatNumber(this.chartDataObject.datasets[0].data[0].price||0,2)},baseTopic:{get(){return"openWB/optional/et"}}}},eo={class:"openwb-chart"};function to(s,o,c,h,b,t){const p=i("font-awesome-icon"),l=i("chartjs-line"),m=i("openwb-base-card"),k=i("status-card");return t.electricityTariffConfigured?(d(),g(k,{key:0,subtype:"secondary",state:s.$store.state.mqtt[t.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[t.baseTopic+"/get/fault_str"]},{"header-left":r(()=>[n(p,{"fixed-width":"",icon:["fas","ranking-star"]}),o[0]||(o[0]=u(" Variabler Stromtarif "))]),"header-right":r(()=>[u(a(t.currentPrice)+" ct/kWh",1)]),default:r(()=>[n(m,{title:"Anbieter: "+s.$store.state.mqtt[t.baseTopic+"/provider"].name,subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[e("div",eo,[t.chartDataRead?(d(),g(l,{key:0,ref:"myChart",data:t.chartDataObject,options:b.chartOptions},null,8,["data","options"])):x("",!0)])]),_:1},8,["title"])]),_:1},8,["state","state-message"])):x("",!0)}const so=v(Ys,[["render",to],["__scopeId","data-v-f4769d2f"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ElectricityTariffCard.vue"]]);const oo={name:"OpenwbStatusView",components:{ChargePointSumCard:Pe,ChargePointCard:ht,CounterCard:Kt,InverterSumCard:as,InverterCard:gs,BatterySumCard:Cs,BatteryCard:zs,RippleControlReceiverCard:Hs,VehicleCard:Xs,ElectricityTariffCard:so},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/device/+/component/+/config","openWB/vehicle/+/name","openWB/chargepoint/+/config"]}},computed:{installedChargePoints:{get(){let s=this.getWildcardTopics("openWB/chargepoint/+/config"),o={};for(const[c,h]of Object.entries(s))(h.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(o[c]=h);return o}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(s,o){return Object.keys(s).filter(c=>s[c].type.includes(o)).reduce((c,h)=>({...c,[h]:s[h]}),{})}}},ao={class:"status"};function ro(s,o,c,h,b,t){const p=i("charge-point-sum-card"),l=i("charge-point-card"),m=i("counter-card"),k=i("inverter-sum-card"),O=i("inverter-card"),z=i("battery-sum-card"),E=i("battery-card"),R=i("vehicle-card"),V=i("electricity-tariff-card"),M=i("ripple-control-receiver-card");return d(),f("div",ao,[t.numChargePointsInstalled>1&&s.$store.state.mqtt["openWB/general/extern"]===!1?(d(),g(p,{key:0})):x("",!0),(d(!0),f(B,null,N(t.installedChargePoints,(_,C)=>(d(),g(l,{key:C,"installed-charge-point":_,"installed-charge-point-key":C},null,8,["installed-charge-point","installed-charge-point-key"]))),128)),(d(!0),f(B,null,N(t.counterConfigs,_=>(d(),g(m,{key:_.id,counter:_},null,8,["counter"]))),128)),t.numInvertersInstalled>1&&s.$store.state.mqtt["openWB/general/extern"]===!1?(d(),g(k,{key:1})):x("",!0),(d(!0),f(B,null,N(t.inverterConfigs,_=>(d(),g(O,{key:_.id,inverter:_},null,8,["inverter"]))),128)),t.numBatteriesInstalled>1&&s.$store.state.mqtt["openWB/general/extern"]===!1?(d(),g(z,{key:2})):x("",!0),(d(!0),f(B,null,N(t.batteryConfigs,_=>(d(),g(E,{key:_.id,battery:_},null,8,["battery"]))),128)),(d(!0),f(B,null,N(t.vehicleNames,(_,C)=>(d(),g(R,{key:C,"vehicle-key":C,"vehicle-name":_},null,8,["vehicle-key","vehicle-name"]))),128)),s.$store.state.mqtt["openWB/general/extern"]===!1?(d(),g(V,{key:3})):x("",!0),n(M)])}const bo=v(oo,[["render",ro],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{bo as default}; diff --git a/web/settings/assets/Status-9ecf39ed.css b/web/settings/assets/Status-9ecf39ed.css deleted file mode 100644 index 3cd11b65aa..0000000000 --- a/web/settings/assets/Status-9ecf39ed.css +++ /dev/null @@ -1 +0,0 @@ -.openwb-chart[data-v-f4769d2f]{min-height:250px}.status[data-v-051028a3]{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:0 1em;gap:0 1em}.status .card[data-v-051028a3]{align-self:start}@media (max-width: 991px){.status[data-v-051028a3]{display:grid;grid-template-columns:repeat(1,1fr);grid-gap:10px;gap:10px}} diff --git a/web/settings/assets/Status-ae50cd10.js b/web/settings/assets/Status-ae50cd10.js new file mode 100644 index 0000000000..ac2275a28e --- /dev/null +++ b/web/settings/assets/Status-ae50cd10.js @@ -0,0 +1 @@ +import{C as x}from"./index-b236cee5.js";import{l as W,N as S,O as P,c as I,F as k,P as A,Q as G,R as H,S as R,T as Z,U as F,V as K,W as J,X as Q,Y as O,Z as L,_ as U,m as X,n as Y,o as tt,p as et,$ as st,a0 as at}from"./vendor-fortawesome-9d7cfdfb.js";import{_ as w,u as n,l as r,x as m,D,E as i,A as t,m as _,G as d,B as g,F as o,z as T,p as q,q as ot,M as C,N as B}from"./vendor-ad7c30fd.js";import{C as it,p as rt,a as nt,L as ct,b as dt,P as lt,c as pt,T as ut,i as mt,d as gt,e as ht}from"./vendor-chartjs-6a6474b3.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./vendor-luxon-8ddd27a0.js";W.add(S,P,I);const _t={name:"StatusCard",components:{FontAwesomeIcon:k},props:{subtype:{type:String,required:!0},state:{type:Number,required:!1,default:0},stateMessage:{type:String,required:!1,default:void 0},componentId:{type:Number,required:!1,default:void 0}},computed:{stateClass(){switch(this.state){case 0:return"success";case 1:return"warning";case 2:return"danger";default:return"dark"}},stateIcon(){switch(this.state){case 0:return["fas","check-circle"];case 1:return["fas","exclamation-triangle"];case 2:return["fas","times-circle"];default:return["fas","check-circle"]}}}},bt={class:"text-right"},ft={class:"container"},vt={class:"row justify-content-end"},yt={key:0,class:"col px-0"},Tt={style:{"white-space":"pre-wrap"}},wt={key:1,class:"col col-auto pr-0"},xt={class:"text-right"};function Wt(s,a,c,h,v,e){const p=n("font-awesome-icon"),l=n("openwb-base-alert"),u=n("openwb-base-card");return r(),m(u,{subtype:c.subtype,collapsible:!0,collapsed:!0,class:"pb-0"},D({header:i(()=>[q(s.$slots,"header-left")]),actions:i(()=>[t("div",bt,[q(s.$slots,"header-right")]),d(p,{class:ot([c.state===0?`text-${c.subtype}`:"","ml-1"]),"fixed-width":"",icon:e.stateIcon},null,8,["class","icon"])]),default:i(()=>[q(s.$slots,"default")]),_:2},[c.componentId!==void 0||c.stateMessage?{name:"footer",fn:i(()=>[t("div",ft,[t("div",vt,[c.stateMessage?(r(),_("div",yt,[d(l,{subtype:e.stateClass},{default:i(()=>[d(p,{"fixed-width":"",icon:e.stateIcon},null,8,["icon"]),a[0]||(a[0]=g(" Modulmeldung: ")),t("span",Tt,o(c.stateMessage),1)]),_:1},8,["subtype"])])):T("",!0),c.componentId!==void 0?(r(),_("div",wt,[t("div",xt,"ID: "+o(c.componentId),1)])):T("",!0)])])]),key:"0"}:void 0]),1032,["subtype"])}const $=w(_t,[["render",Wt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/StatusCard.vue"]]);W.add(A);const kt={name:"ChargePointSumCard",components:{StatusCard:$,FontAwesomeIcon:k},mixins:[x],data(){return{mqttTopicsToSubscribe:["openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported"]}},computed:{baseTopic:{get(){return"openWB/chargepoint"}}}},Ct={class:"text-right"},Bt={class:"row"},$t={class:"col text-right text-monospace"},Nt={class:"row"},qt={class:"col-4 text-right text-monospace"},St={class:"col-4 text-right text-monospace"},Pt={class:"row"},It={class:"col-4 text-right text-monospace"},At={class:"col-4 text-right text-monospace"};function Ot(s,a,c,h,v,e){const p=n("font-awesome-icon"),l=n("openwb-base-card"),u=n("status-card");return r(),m(u,{subtype:"primary"},{"header-left":i(()=>[d(p,{"fixed-width":"",icon:["fas","charging-station"]}),a[0]||(a[0]=g(" Alle Ladepunkte "))]),"header-right":i(()=>[t("span",Ct,o(s.formatNumberTopic(e.baseTopic+"/get/power",3,3,.001))+" kW ",1)]),default:i(()=>[d(l,{subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[a[1]||(a[1]=t("div",{class:"row py-2"},[t("div",{class:"col font-weight-bold"},"Ladevorgang"),t("div",{class:"col text-right"},"Leistung")],-1)),t("div",Bt,[t("div",$t,o(s.formatNumberTopic(e.baseTopic+"/get/power",3,3,.001)),1)])]),_:1}),d(l,{subtype:"white","body-bg":"white",class:"py-1 mb-2",title:"Zählerstände"},{default:i(()=>[a[4]||(a[4]=t("div",{class:"row justify-content-end"},[t("div",{class:"col-4 text-right"},"Geladen"),t("div",{class:"col-4 text-right"},"Entladen")],-1)),t("div",Nt,[a[2]||(a[2]=t("div",{class:"col text-right"},"Heute",-1)),t("div",qt,o(s.formatNumberTopic(e.baseTopic+"/get/daily_imported",3,3,.001)+" kWh"),1),t("div",St,o(s.formatNumberTopic(e.baseTopic+"/get/daily_exported",3,3,.001)+" kWh"),1)]),t("div",Pt,[a[3]||(a[3]=t("div",{class:"col text-right"},"Gesamt",-1)),t("div",It,o(s.formatNumberTopic(e.baseTopic+"/get/imported",3,3,.001)+" kWh"),1),t("div",At,o(s.formatNumberTopic(e.baseTopic+"/get/exported",3,3,.001)+" kWh"),1)])]),_:1})]),_:1})}const Lt=w(kt,[["render",Ot],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointSumCard.vue"]]);W.add(A,G,H,R,Z,F,K,J);const Dt={name:"ChargePointCard",components:{StatusCard:$,FontAwesomeIcon:k},mixins:[x],props:{installedChargePointKey:{type:String,required:!0},installedChargePoint:{type:Object,required:!0}},data(){return{mqttTopicsToSubscribe:[`openWB/chargepoint/${this.installedChargePoint.id}/get/+`,`openWB/chargepoint/${this.installedChargePoint.id}/get/connected_vehicle/info`,`openWB/chargepoint/${this.installedChargePoint.id}/set/+`,`openWB/internal_chargepoint/${this.installedChargePoint.id}/data/phases_to_use`]}},computed:{chargePointIndex:{get(){return this.installedChargePoint.id}},baseTopic:{get(){return"openWB/chargepoint/"+this.chargePointIndex}},chargingStatus:{get(){let s=this.$store.state.mqtt[this.baseTopic+"/get/plug_state"],a=this.$store.state.mqtt[this.baseTopic+"/get/charge_state"];return s==1&&a==1?{icon:["fas","plug-circle-bolt"],text:"Fahrzeug angesteckt, Ladevorgang aktiv"}:s==1?{icon:["fas","plug-circle-check"],text:"Fahrzeug angesteckt, kein Ladevorgang aktiv"}:{icon:["fas","plug-circle-minus"],text:"Kein Fahrzeug angesteckt"}}}}},jt={class:"row py-2"},zt={class:"col text-right"},Et={style:{"white-space":"pre-wrap"}},Mt={class:"row"},Vt={class:"col text-right text-monospace"},Gt={class:"col text-right text-monospace"},Ht={class:"row"},Rt={key:0,class:"col text-right text-monospace"},Zt={key:1,class:"col text-right text-monospace"},Ft={class:"col text-right text-monospace"},Kt={class:"row"},Jt={class:"col-4 text-right text-monospace"},Qt={class:"col-4 text-right text-monospace"},Ut={class:"row"},Xt={class:"col-4 text-right text-monospace"},Yt={class:"col-4 text-right text-monospace"},te={class:"row"},ee={class:"col text-right text-monospace"},se={class:"col text-right text-monospace"},ae={class:"col text-right text-monospace"},oe={class:"row"},ie={class:"col text-right text-monospace"},re={class:"col text-right text-monospace"},ne={class:"col text-right text-monospace"},ce={class:"row"},de={class:"col text-right text-monospace"},le={class:"col text-right text-monospace"},pe={class:"col text-right text-monospace"},ue={class:"row"},me={class:"col text-right text-monospace"},ge={class:"col text-right text-monospace"},he={class:"col text-right text-monospace"},_e={class:"row"},be={class:"col text-center text-monospace"};function fe(s,a,c,h,v,e){const p=n("font-awesome-icon"),l=n("openwb-base-alert"),u=n("openwb-base-card"),b=n("status-card");return r(),m(b,{subtype:"primary","component-id":e.chargePointIndex,state:s.$store.state.mqtt[e.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[e.baseTopic+"/get/fault_str"]},{"header-left":i(()=>[d(p,{"fixed-width":"",icon:["fas","charging-station"]}),g(" "+o(c.installedChargePoint.name),1)]),"header-right":i(()=>[g(o(s.formatNumberTopic(e.baseTopic+"/get/power",3,3,.001))+" kW",1)]),default:i(()=>[d(u,{subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[t("div",jt,[a[0]||(a[0]=t("div",{class:"col col-auto font-weight-bold"},"Status",-1)),t("div",zt,[d(p,{"fixed-width":"",icon:e.chargingStatus.icon,title:e.chargingStatus.text},null,8,["icon","title"]),g(" "+o(e.chargingStatus.text),1)])]),d(l,{subtype:"info"},{default:i(()=>[a[1]||(a[1]=g(" Statusmeldung: ")),t("span",Et,o(s.$store.state.mqtt[e.baseTopic+"/get/state_str"]),1)]),_:1}),t("div",null," max. Ladeleistung: "+o((s.max_power=s.formatNumberTopic(e.baseTopic+"/get/max_evse_current",0))=="-"?s.max_power:Math.floor(s.max_power*3*230/1e3))+" kW ",1)]),_:1}),d(u,{subtype:"white","body-bg":"white",class:"py-1 mb-2",title:"Ladevorgang"},{default:i(()=>[a[2]||(a[2]=t("div",{class:"row"},[t("div",{class:"col text-right"},"Ladestrom Vorgabe"),t("div",{class:"col text-right"},"Leistung")],-1)),t("div",Mt,[t("div",Vt,o(s.formatNumberTopic(e.baseTopic+"/set/current",2))+" A",1),t("div",Gt,o(s.formatNumberTopic(e.baseTopic+"/get/power",3,3,.001))+" kW ",1)]),a[3]||(a[3]=t("div",{class:"row"},[t("div",{class:"col text-right"},"Phasen Vorgabe"),t("div",{class:"col text-right"},"Phasen Aktuell")],-1)),t("div",Ht,[s.$store.state.mqtt["openWB/general/extern"]===!0?(r(),_("div",Rt,o(s.formatNumberTopic("openWB/internal_chargepoint/"+e.chargePointIndex+"/data/phases_to_use")),1)):(r(),_("div",Zt,o(s.formatNumberTopic(e.baseTopic+"/set/phases_to_use")),1)),t("div",Ft,o(s.formatNumberTopic(e.baseTopic+"/get/phases_in_use")),1)])]),_:1}),d(u,{subtype:"white","body-bg":"white",class:"py-1 mb-2",title:"Zählerstände"},{default:i(()=>[a[6]||(a[6]=t("div",{class:"row justify-content-end"},[t("div",{class:"col-4 text-right"},"Geladen"),t("div",{class:"col-4 text-right"},"Entladen")],-1)),t("div",Kt,[a[4]||(a[4]=t("div",{class:"col text-right"},"Heute",-1)),t("div",Jt,o(s.formatNumberTopic(e.baseTopic+"/get/daily_imported",3,3,.001))+" kWh ",1),t("div",Qt,o(s.formatNumberTopic(e.baseTopic+"/get/daily_exported",3,3,.001))+" kWh ",1)]),t("div",Ut,[a[5]||(a[5]=t("div",{class:"col text-right"},"Gesamt",-1)),t("div",Xt,o(s.formatNumberTopic(e.baseTopic+"/get/imported",3,3,.001))+" kWh ",1),t("div",Yt,o(s.formatNumberTopic(e.baseTopic+"/get/exported",3,3,.001))+" kWh ",1)])]),_:1}),d(u,{subtype:"white","body-bg":"white",class:"py-1 mb-2",title:"Werte pro Phase"},{default:i(()=>[t("div",te,[a[7]||(a[7]=t("div",{class:"col-md-4 pr-1 text-center text-md-right"},"Spannung [V]",-1)),t("div",ee,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/voltages",1).split(" / ")[0]),1),t("div",se,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/voltages",1).split(" / ")[1]),1),t("div",ae,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/voltages",1).split(" / ")[2]),1)]),t("div",oe,[a[8]||(a[8]=t("div",{class:"col-md-4 pr-1 text-center text-md-right"},"Strom [A]",-1)),t("div",ie,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/currents",2).split(" / ")[0]),1),t("div",re,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/currents",2).split(" / ")[1]),1),t("div",ne,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/currents",2).split(" / ")[2]),1)]),t("div",ce,[a[9]||(a[9]=t("div",{class:"col-md-4 pr-1 text-center text-md-right"},"Wirkleistung [kW]",-1)),t("div",de,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/powers",3,3,.001).split(" / ")[0]),1),t("div",le,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/powers",3,3,.001).split(" / ")[1]),1),t("div",pe,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/powers",3,3,.001).split(" / ")[2]),1)]),t("div",ue,[a[10]||(a[10]=t("div",{class:"col-md-4 pr-1 text-center text-md-right"},"Leistungsfaktor",-1)),t("div",me,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/power_factors",2).split(" / ")[0]),1),t("div",ge,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/power_factors",2).split(" / ")[1]),1),t("div",he,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/power_factors",2).split(" / ")[2]),1)]),t("div",_e,[a[11]||(a[11]=t("div",{class:"col-md-4 pr-1 text-center text-md-right"},"Netzfrequenz",-1)),t("div",be,o(s.formatNumberTopic(e.baseTopic+"/get/frequency",3))+" Hz ",1)])]),_:1})]),_:1},8,["component-id","state","state-message"])}const ve=w(Dt,[["render",fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointCard.vue"]]);W.add(Q);const ye={name:"CounterCard",components:{StatusCard:$,FontAwesomeIcon:k},mixins:[x],props:{counter:{type:Object,required:!0}},data(){return{mqttTopicsToSubscribe:[`openWB/counter/${this.counter.id}/get/+`]}},computed:{baseTopic:{get(){return"openWB/counter/"+this.counter.id}}}},Te={class:"row"},we={class:"col text-right text-monospace pl-0"},xe={class:"col text-right text-monospace pl-0"},We={class:"row"},ke={class:"col text-right text-monospace pl-0"},Ce={class:"col text-right text-monospace pl-0"},Be={class:"row"},$e={class:"col"},Ne={class:"row"},qe={class:"col text-right text-monospace pl-0"},Se={class:"col text-right text-monospace pl-0"},Pe={class:"col text-right text-monospace pl-0"},Ie={class:"row"},Ae={class:"col"},Oe={class:"row"},Le={class:"col text-right text-monospace pl-0"},De={class:"col text-right text-monospace pl-0"},je={class:"col text-right text-monospace pl-0"},ze={class:"row"},Ee={class:"col"},Me={class:"row"},Ve={class:"col text-right text-monospace pl-0"},Ge={class:"col text-right text-monospace pl-0"},He={class:"col text-right text-monospace pl-0"},Re={class:"row"},Ze={class:"col"},Fe={class:"row"},Ke={class:"col text-right text-monospace pl-0"},Je={class:"col text-right text-monospace pl-0"},Qe={class:"col text-right text-monospace pl-0"};function Ue(s,a,c,h,v,e){const p=n("font-awesome-icon"),l=n("openwb-base-card"),u=n("status-card");return r(),m(u,{subtype:"danger","component-id":c.counter.id,state:s.$store.state.mqtt[e.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[e.baseTopic+"/get/fault_str"]},{"header-left":i(()=>[d(p,{"fixed-width":"",icon:["fas","gauge-high"]}),g(" "+o(c.counter.name),1)]),"header-right":i(()=>[g(o(s.formatNumberTopic(e.baseTopic+"/get/power",3,3,.001))+" kW",1)]),default:i(()=>[d(l,{title:"Aktuelle Werte",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[a[0]||(a[0]=t("div",{class:"row"},[t("div",{class:"col-6 text-right"},"Leistung"),t("div",{class:"col-6 text-right"},"Netzfrequenz")],-1)),t("div",Te,[t("div",we,o(s.formatNumberTopic(e.baseTopic+"/get/power",3,3,.001)+" kW"),1),t("div",xe,o(s.formatNumberTopic(e.baseTopic+"/get/frequency",3)+" Hz"),1)])]),_:1}),d(l,{title:"Zählerstände",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[a[1]||(a[1]=t("div",{class:"row"},[t("div",{class:"col-6 text-right"},"Export"),t("div",{class:"col-6 text-right"},"Import")],-1)),t("div",We,[t("div",ke,o(s.formatNumberTopic(e.baseTopic+"/get/exported",3,3,.001)+" kWh"),1),t("div",Ce,o(s.formatNumberTopic(e.baseTopic+"/get/imported",3,3,.001)+" kWh"),1)])]),_:1}),d(l,{title:"Werte pro Phase",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[t("div",Be,[a[2]||(a[2]=t("div",{class:"col-md-4 pr-0 text-center text-md-right"},"Spannung [V]",-1)),t("div",$e,[t("div",Ne,[t("div",qe,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/voltages",1).split(" / ")[0]),1),t("div",Se,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/voltages",1).split(" / ")[1]),1),t("div",Pe,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/voltages",1).split(" / ")[2]),1)])])]),t("div",Ie,[a[3]||(a[3]=t("div",{class:"col-md-4 pr-0 text-center text-md-right"},"Strom [A]",-1)),t("div",Ae,[t("div",Oe,[t("div",Le,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/currents",2).split(" / ")[0]),1),t("div",De,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/currents",2).split(" / ")[1]),1),t("div",je,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/currents",2).split(" / ")[2]),1)])])]),t("div",ze,[a[4]||(a[4]=t("div",{class:"col-md-4 pr-0 text-center text-md-right"},"Wirkleistung [kW]",-1)),t("div",Ee,[t("div",Me,[t("div",Ve,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/powers",3,3,.001).split(" / ")[0]),1),t("div",Ge,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/powers",3,3,.001).split(" / ")[1]),1),t("div",He,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/powers",3,3,.001).split(" / ")[2]),1)])])]),t("div",Re,[a[5]||(a[5]=t("div",{class:"col-md-4 pr-0 text-center text-md-right"},"Leistungsfaktor",-1)),t("div",Ze,[t("div",Fe,[t("div",Ke,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/power_factors",2).split(" / ")[0]),1),t("div",Je,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/power_factors",2).split(" / ")[1]),1),t("div",Qe,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/power_factors",2).split(" / ")[2]),1)])])])]),_:1})]),_:1},8,["component-id","state","state-message"])}const Xe=w(ye,[["render",Ue],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/CounterCard.vue"]]);W.add(O);const Ye={name:"InverterSumCard",components:{StatusCard:$,FontAwesomeIcon:k},mixins:[x],data(){return{mqttTopicsToSubscribe:["openWB/pv/get/+"]}},computed:{baseTopic:{get(){return"openWB/pv"}}}},ts={class:"row"},es={class:"col text-right text-monospace"},ss={class:"col text-right text-monospace"},as={class:"row"},os={class:"col text-right text-monospace"},is={class:"col text-right text-monospace"},rs={class:"col text-right text-monospace"};function ns(s,a,c,h,v,e){const p=n("font-awesome-icon"),l=n("openwb-base-card"),u=n("status-card");return r(),m(u,{subtype:"success",state:s.$store.state.mqtt[e.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[e.baseTopic+"/get/fault_str"]},{"header-left":i(()=>[d(p,{"fixed-width":"",icon:["fas","solar-panel"]}),a[0]||(a[0]=g(" Alle Wechselrichter "))]),"header-right":i(()=>[g(o(s.formatNumberTopic(e.baseTopic+"/get/power",3,3,.001))+" kW",1)]),default:i(()=>[d(l,{title:"Aktuelle Werte",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[a[1]||(a[1]=t("div",{class:"row"},[t("div",{class:"col text-right"},"Leistung"),t("div",{class:"col text-right"},"Zählerstand")],-1)),t("div",ts,[t("div",es,o(s.formatNumberTopic(e.baseTopic+"/get/power",3,3,.001))+" kW ",1),t("div",ss,o(s.formatNumberTopic(e.baseTopic+"/get/exported",3,3,.001))+" kWh ",1)])]),_:1}),d(l,{title:"Erträge",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[a[2]||(a[2]=t("div",{class:"row"},[t("div",{class:"col text-right"},"Heute"),t("div",{class:"col text-right"},"Monat"),t("div",{class:"col text-right"},"Jahr")],-1)),t("div",as,[t("div",os,o(s.formatNumberTopic(e.baseTopic+"/get/daily_exported",3,3,.001))+" kWh ",1),t("div",is,o(s.formatNumberTopic(e.baseTopic+"/get/monthly_exported",1,1,.001))+" kWh ",1),t("div",rs,o(s.formatNumberTopic(e.baseTopic+"/get/yearly_exported",0,0,.001))+" kWh ",1)])]),_:1})]),_:1},8,["state","state-message"])}const cs=w(Ye,[["render",ns],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterSumCard.vue"]]);W.add(O);const ds={name:"InverterCard",components:{StatusCard:$,FontAwesomeIcon:k},mixins:[x],props:{inverter:{type:Object,required:!0}},data(){return{mqttTopicsToSubscribe:[`openWB/pv/${this.inverter.id}/get/+`]}},computed:{baseTopic:{get(){return"openWB/pv/"+this.inverter.id}}}},ls={class:"row"},ps={class:"col text-right text-monospace"},us={class:"col text-right text-monospace"},ms={class:"row"},gs={class:"col text-right text-monospace"},hs={class:"col text-right text-monospace"},_s={class:"col text-right text-monospace"};function bs(s,a,c,h,v,e){const p=n("font-awesome-icon"),l=n("openwb-base-card"),u=n("status-card");return r(),m(u,{subtype:"success","component-id":c.inverter.id,state:s.$store.state.mqtt[e.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[e.baseTopic+"/get/fault_str"]},{"header-left":i(()=>[d(p,{"fixed-width":"",icon:["fas","solar-panel"]}),g(" "+o(c.inverter.name),1)]),"header-right":i(()=>[g(o(s.formatNumberTopic(e.baseTopic+"/get/power",3,3,.001))+" kW",1)]),default:i(()=>[d(l,{title:"Aktuelle Werte",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[a[0]||(a[0]=t("div",{class:"row"},[t("div",{class:"col text-right"},"Leistung"),t("div",{class:"col text-right"},"Zählerstand")],-1)),t("div",ls,[t("div",ps,o(s.formatNumberTopic(e.baseTopic+"/get/power",3,3,.001))+" kW ",1),t("div",us,o(s.formatNumberTopic(e.baseTopic+"/get/exported",3,3,.001))+" kWh ",1)])]),_:1}),d(l,{title:"Erträge",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[a[1]||(a[1]=t("div",{class:"row"},[t("div",{class:"col text-right"},"Heute"),t("div",{class:"col text-right"},"Monat"),t("div",{class:"col text-right"},"Jahr")],-1)),t("div",ms,[t("div",gs,o(s.formatNumberTopic(e.baseTopic+"/get/daily_exported",3,3,.001))+" kWh ",1),t("div",hs,o(s.formatNumberTopic(e.baseTopic+"/get/monthly_exported",1,1,.001))+" kWh ",1),t("div",_s,o(s.formatNumberTopic(e.baseTopic+"/get/yearly_exported",0,0,.001))+" kWh ",1)])]),_:1})]),_:1},8,["component-id","state","state-message"])}const fs=w(ds,[["render",bs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterCard.vue"]]);W.add(L);const vs={name:"BatterySumCard",components:{StatusCard:$,FontAwesomeIcon:k},mixins:[x],data(){return{mqttTopicsToSubscribe:["openWB/bat/get/+"]}},computed:{baseTopic:{get(){return"openWB/bat"}}}},ys={class:"row"},Ts={class:"col text-right text-monospace pl-0"},ws={class:"col text-right text-monospace pl-0"},xs={class:"row"},Ws={class:"col text-right text-monospace"},ks={class:"col text-right text-monospace"},Cs={class:"row"},Bs={class:"col text-right text-monospace"},$s={class:"col text-right text-monospace"};function Ns(s,a,c,h,v,e){const p=n("font-awesome-icon"),l=n("openwb-base-card"),u=n("status-card");return r(),m(u,{subtype:"warning",state:s.$store.state.mqtt[e.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[e.baseTopic+"/get/fault_str"]},{"header-left":i(()=>[d(p,{"fixed-width":"",icon:["fas","car-battery"]}),a[0]||(a[0]=g(" Alle Speicher "))]),"header-right":i(()=>[g(o(s.formatNumberTopic(e.baseTopic+"/get/power",1,1,.001))+" kW / "+o(s.$store.state.mqtt[e.baseTopic+"/get/soc"])+" % ",1)]),default:i(()=>[d(l,{title:"Aktuelle Werte",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[a[1]||(a[1]=t("div",{class:"row"},[t("div",{class:"col-6 text-right"},"Leistung"),t("div",{class:"col-6 text-right"},"Ladestand")],-1)),t("div",ys,[t("div",Ts,o(s.formatNumberTopic(e.baseTopic+"/get/power",3,3,.001))+" kW ",1),t("div",ws,o(s.$store.state.mqtt[e.baseTopic+"/get/soc"])+" %",1)])]),_:1}),d(l,{title:"Zählerstände",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[a[4]||(a[4]=t("div",{class:"row"},[t("div",{class:"col"}),t("div",{class:"col text-right"},"Geladen"),t("div",{class:"col text-right"},"Entladen")],-1)),t("div",xs,[a[2]||(a[2]=t("div",{class:"col text-right"},"Heute",-1)),t("div",Ws,o(s.formatNumberTopic(e.baseTopic+"/get/daily_imported",3,3,.001))+" kWh ",1),t("div",ks,o(s.formatNumberTopic(e.baseTopic+"/get/daily_exported",3,3,.001))+" kWh ",1)]),t("div",Cs,[a[3]||(a[3]=t("div",{class:"col text-right"},"Gesamt",-1)),t("div",Bs,o(s.formatNumberTopic(e.baseTopic+"/get/imported",3,3,.001))+" kWh ",1),t("div",$s,o(s.formatNumberTopic(e.baseTopic+"/get/exported",3,3,.001))+" kWh ",1)])]),_:1})]),_:1},8,["state","state-message"])}const qs=w(vs,[["render",Ns],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatterySumCard.vue"]]);W.add(L);const Ss={name:"BatteryCard",components:{StatusCard:$,FontAwesomeIcon:k},mixins:[x],props:{battery:{type:Object,required:!0}},data(){return{mqttTopicsToSubscribe:[`openWB/bat/${this.battery.id}/get/+`]}},computed:{baseTopic:{get(){return"openWB/bat/"+this.battery.id}}}},Ps={class:"row"},Is={class:"col text-right text-monospace pl-0"},As={class:"col text-right text-monospace pl-0"},Os={class:"row"},Ls={class:"col text-right text-monospace"},Ds={class:"col text-right text-monospace"},js={class:"row"},zs={class:"col text-right text-monospace"},Es={class:"col text-right text-monospace"};function Ms(s,a,c,h,v,e){const p=n("font-awesome-icon"),l=n("openwb-base-card"),u=n("status-card");return r(),m(u,{subtype:"warning","component-id":c.battery.id,state:s.$store.state.mqtt[e.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[e.baseTopic+"/get/fault_str"]},{"header-left":i(()=>[d(p,{"fixed-width":"",icon:["fas","car-battery"]}),g(" "+o(c.battery.name),1)]),"header-right":i(()=>[g(o(s.formatNumberTopic(e.baseTopic+"/get/power",1,1,.001))+" kW / "+o(s.$store.state.mqtt[e.baseTopic+"/get/soc"])+" % ",1)]),default:i(()=>[d(l,{title:"Aktuelle Werte",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[a[0]||(a[0]=t("div",{class:"row"},[t("div",{class:"col-6 text-right"},"Leistung"),t("div",{class:"col-6 text-right"},"Ladestand")],-1)),t("div",Ps,[t("div",Is,o(s.formatNumberTopic(e.baseTopic+"/get/power",3,3,.001))+" kW ",1),t("div",As,o(s.$store.state.mqtt[e.baseTopic+"/get/soc"])+" %",1)])]),_:1}),d(l,{title:"Zählerstände",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[a[3]||(a[3]=t("div",{class:"row"},[t("div",{class:"col"}),t("div",{class:"col text-right"},"Geladen"),t("div",{class:"col text-right"},"Entladen")],-1)),t("div",Os,[a[1]||(a[1]=t("div",{class:"col text-right"},"Heute",-1)),t("div",Ls,o(s.formatNumberTopic(e.baseTopic+"/get/daily_imported",3,3,.001))+" kWh ",1),t("div",Ds,o(s.formatNumberTopic(e.baseTopic+"/get/daily_exported",3,3,.001))+" kWh ",1)]),t("div",js,[a[2]||(a[2]=t("div",{class:"col text-right"},"Gesamt",-1)),t("div",zs,o(s.formatNumberTopic(e.baseTopic+"/get/imported",3,3,.001))+" kWh ",1),t("div",Es,o(s.formatNumberTopic(e.baseTopic+"/get/exported",3,3,.001))+" kWh ",1)])]),_:1})]),_:1},8,["component-id","state","state-message"])}const Vs=w(Ss,[["render",Ms],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatteryCard.vue"]]);W.add(S,P,I,U,X,Y,tt,et);const Gs={name:"IoDeviceCard",components:{FontAwesomeIcon:k},mixins:[x],props:{ioDevice:{type:Object,required:!0}},data(){return{mqttTopicsToSubscribe:[`openWB/io/states/${this.ioDevice.id}/get/+`],state:{true:{icon:["fas","square"],title:"Geschlossen"},false:{icon:["far","square"],title:"Offen"}}}},computed:{baseTopic:{get(){return`openWB/io/states/${this.ioDevice.id}`}},faultState(){return this.$store.state.mqtt[`${this.baseTopic}/get/fault_state`]},faultStr(){return this.$store.state.mqtt[`${this.baseTopic}/get/fault_str`]},hasDigitalInputs(){return Object.keys(this.$store.state.mqtt[`${this.baseTopic}/get/digital_input`]||{}).length>0},hasDigitalOutputs(){return Object.keys(this.$store.state.mqtt[`${this.baseTopic}/get/digital_output`]||{}).length>0},hasAnalogInputs(){return Object.keys(this.$store.state.mqtt[`${this.baseTopic}/get/analog_input`]||{}).length>0},hasAnalogOutputs(){return Object.keys(this.$store.state.mqtt[`${this.baseTopic}/get/analog_output`]||{}).length>0},digitalInputStates(){return this.$store.state.mqtt[`${this.baseTopic}/get/digital_input`]},digitalOutputStates(){return this.$store.state.mqtt[`${this.baseTopic}/get/digital_output`]},analogInputStates(){return this.$store.state.mqtt[`${this.baseTopic}/get/analog_input`]},analogOutputStates(){return this.$store.state.mqtt[`${this.baseTopic}/get/analog_output`]}},methods:{getIcon(s){return this.state[s].icon},getTitle(s){return this.state[s].title}}},Hs={class:"row"},Rs={class:"row"},Zs={class:"row"},Fs={class:"row"},Ks={class:"container"},Js={class:"row"},Qs={class:"col px-0"},Us={style:{"white-space":"pre-wrap"}},Xs={class:"col col-auto pr-0"},Ys={class:"text-right"};function ta(s,a,c,h,v,e){const p=n("font-awesome-icon"),l=n("openwb-base-card"),u=n("openwb-base-alert");return r(),m(l,{subtype:"secondary",collapsible:!0,collapsed:!0,class:"pb-0"},{header:i(()=>[d(p,{"fixed-width":"",icon:["fas","tower-broadcast"]}),g(" "+o(c.ioDevice.name),1)]),footer:i(()=>[t("div",Ks,[t("div",Js,[t("div",Qs,[d(u,{subtype:s.getFaultStateSubtype(e.baseTopic)},{default:i(()=>[d(p,{"fixed-width":"",icon:s.stateIcon},null,8,["icon"]),a[0]||(a[0]=g(" Modulmeldung: ")),t("span",Us,o(s.$store.state.mqtt[e.baseTopic+"/get/fault_str"]),1)]),_:1},8,["subtype"])]),t("div",Xs,[t("div",Ys,"ID: "+o(c.ioDevice.id),1)])])])]),default:i(()=>[e.hasDigitalInputs?(r(),m(l,{key:0,title:"Digitale Eingänge",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[t("div",Hs,[(r(!0),_(B,null,C(e.digitalInputStates,(b,y)=>(r(),_("div",{key:y,class:"col io-state"},[g(o(y)+": ",1),d(p,{title:e.getTitle(b),icon:e.getIcon(b),class:"fa-fw"},null,8,["title","icon"])]))),128))])]),_:1})):T("",!0),e.hasDigitalOutputs?(r(),m(l,{key:1,title:"Digitale Ausgänge",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[t("div",Rs,[(r(!0),_(B,null,C(e.digitalOutputStates,(b,y)=>(r(),_("div",{key:y,class:"col io-state"},[g(o(y)+": ",1),d(p,{title:e.getTitle(b),icon:e.getIcon(b),class:"fa-fw"},null,8,["title","icon"])]))),128))])]),_:1})):T("",!0),e.hasAnalogInputs?(r(),m(l,{key:2,title:"Analoge Eingänge",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[t("div",Zs,[(r(!0),_(B,null,C(e.analogInputStates,(b,y)=>(r(),_("div",{key:y,class:"col io-state"},o(y)+": "+o(b),1))),128))])]),_:1})):T("",!0),e.hasAnalogOutputs?(r(),m(l,{key:3,title:"Analoge Ausgänge",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[t("div",Fs,[(r(!0),_(B,null,C(e.analogOutputStates,(b,y)=>(r(),_("div",{key:y,class:"col io-state"},o(y)+": "+o(b),1))),128))])]),_:1})):T("",!0)]),_:1})}const ea=w(Gs,[["render",ta],["__scopeId","data-v-356761d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/IoDeviceCard.vue"]]);W.add(st);const sa={name:"VehicleCard",components:{StatusCard:$,FontAwesomeIcon:k},mixins:[x],props:{vehicleKey:{type:String,required:!0},vehicleName:{type:String,default:""}},data(){return{mqttTopicsToSubscribe:["openWB/vehicle/+/get/+"]}},computed:{vehicleIndex:{get(){return parseInt(this.vehicleKey.match(/(?:\/)(\d+)(?=\/)/)[1])}},soc:{get(){return this.formatNumberTopic(this.baseTopic+"/get/soc")}},socTimestamp:{get(){return this.$store.state.mqtt[this.baseTopic+"/get/soc_timestamp"]!==void 0?new Date(this.$store.state.mqtt[this.baseTopic+"/get/soc_timestamp"]*1e3).toLocaleString():"-"}},socRange:{get(){return this.$store.state.mqtt[this.baseTopic+"/get/range"]!==void 0?Math.round(this.$store.state.mqtt[this.baseTopic+"/get/range"]):0}},baseTopic:{get(){return"openWB/vehicle/"+this.vehicleIndex}}}},aa={class:"row"},oa={class:"col text-right text-monospace"},ia={class:"col text-right text-monospace"},ra={class:"col text-right text-monospace"};function na(s,a,c,h,v,e){const p=n("font-awesome-icon"),l=n("openwb-base-card"),u=n("status-card");return r(),m(u,{subtype:"info","component-id":e.vehicleIndex,state:s.$store.state.mqtt[e.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[e.baseTopic+"/get/fault_str"]},D({"header-left":i(()=>[d(p,{"fixed-width":"",icon:["fas","car"]}),g(" "+o(c.vehicleName),1)]),default:i(()=>[d(l,{title:"Fahrzeugdaten",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[a[0]||(a[0]=t("div",{class:"row"},[t("div",{class:"col pr-0 text-right"},"Ladestand"),t("div",{class:"col pr-0 text-right"},"Reichweite"),t("div",{class:"col pr-0 text-right"},"Letzter Zeitstempel")],-1)),t("div",aa,[t("div",oa,o(e.soc)+" %",1),t("div",ia,o(e.socRange)+" km",1),t("div",ra,o(e.socTimestamp),1)])]),_:1})]),_:2},[e.soc!="-"?{name:"header-right",fn:i(()=>[g(o(e.soc)+" % ",1)]),key:"0"}:void 0]),1032,["component-id","state","state-message"])}const ca=w(sa,[["render",na],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/VehicleCard.vue"]]);W.add(at);it.register(rt,nt,ct,dt,lt,pt,ut,mt,gt);const da={name:"ElectricityTariffCard",components:{StatusCard:$,FontAwesomeIcon:k,ChartjsLine:ht},mixins:[x],data(){return{mqttTopicsToSubscribe:["openWB/optional/et/provider","openWB/optional/et/get/fault_state","openWB/optional/et/get/fault_str","openWB/optional/et/get/prices"],chartDatasets:{datasets:[{label:"Stromtarif",unit:"ct/kWh",type:"line",stepped:!0,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:void 0,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:"price"}}]},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0},legend:{display:!1}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"hour",text:"Zeit",maxTicksLimit:24},display:!0,title:{display:!0,text:"Uhrzeit"},ticks:{font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",title:{font:{size:12},display:!0,text:"Preis [ct/kWh]"},grid:{},ticks:{font:{size:12},stepSize:.01,maxTicksLimit:11}}}}}},computed:{electricityTariffConfigured(){const s=this.$store.state.mqtt["openWB/optional/et/provider"];return s!==void 0?s.type!==null:!1},chartDataRead(){return this.chartDataObject.datasets[0].data!=null},chartDataObject(){if(this.$store.state.mqtt["openWB/optional/et/get/prices"]){var s=this.$store.state.mqtt["openWB/optional/et/get/prices"],a=[];for(const[v,e]of Object.entries(s))a.push({timestamp:v*1e3,price:e*1e5});const h=a.slice(-1)[0];a.push({timestamp:h.timestamp+(60*60-1)*1e3,price:h.price})}const c=this.chartDatasets;return c.datasets[0].data=a,c},currentPrice(){return this.chartDataObject.datasets[0].data===void 0||this.chartDataObject.datasets[0].data.length===0?this.formatNumber(0,2):this.formatNumber(this.chartDataObject.datasets[0].data[0].price||0,2)},baseTopic:{get(){return"openWB/optional/et"}}}},la={class:"openwb-chart"};function pa(s,a,c,h,v,e){const p=n("font-awesome-icon"),l=n("chartjs-line"),u=n("openwb-base-card"),b=n("status-card");return e.electricityTariffConfigured?(r(),m(b,{key:0,subtype:"secondary",state:s.$store.state.mqtt[e.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[e.baseTopic+"/get/fault_str"]},{"header-left":i(()=>[d(p,{"fixed-width":"",icon:["fas","ranking-star"]}),a[0]||(a[0]=g(" Variabler Stromtarif "))]),"header-right":i(()=>[g(o(e.currentPrice)+" ct/kWh",1)]),default:i(()=>[d(u,{title:"Anbieter: "+s.$store.state.mqtt[e.baseTopic+"/provider"].name,subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[t("div",la,[e.chartDataRead?(r(),m(l,{key:0,ref:"myChart",data:e.chartDataObject,options:v.chartOptions},null,8,["data","options"])):T("",!0)])]),_:1},8,["title"])]),_:1},8,["state","state-message"])):T("",!0)}const ua=w(da,[["render",pa],["__scopeId","data-v-f4769d2f"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ElectricityTariffCard.vue"]]);const ma={name:"OpenwbStatusView",components:{ChargePointSumCard:Lt,ChargePointCard:ve,CounterCard:Xe,InverterSumCard:cs,InverterCard:fs,BatterySumCard:qs,BatteryCard:Vs,IoDeviceCard:ea,VehicleCard:ca,ElectricityTariffCard:ua},mixins:[x],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/device/+/component/+/config","openWB/system/io/+/config","openWB/vehicle/+/name","openWB/chargepoint/+/config"]}},computed:{installedChargePoints:{get(){let s=this.getWildcardTopics("openWB/chargepoint/+/config"),a={};for(const[c,h]of Object.entries(s))(h.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[c]=h);return a}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},ioDeviceConfigs:{get(){return this.getWildcardTopics("openWB/system/io/+/config")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(s,a){return Object.keys(s).filter(c=>s[c].type.includes(a)).reduce((c,h)=>({...c,[h]:s[h]}),{})}}},ga={class:"status"};function ha(s,a,c,h,v,e){const p=n("charge-point-sum-card"),l=n("charge-point-card"),u=n("counter-card"),b=n("inverter-sum-card"),y=n("inverter-card"),j=n("battery-sum-card"),z=n("battery-card"),E=n("vehicle-card"),M=n("io-device-card"),V=n("electricity-tariff-card");return r(),_("div",ga,[e.numChargePointsInstalled>1&&s.$store.state.mqtt["openWB/general/extern"]===!1?(r(),m(p,{key:0})):T("",!0),(r(!0),_(B,null,C(e.installedChargePoints,(f,N)=>(r(),m(l,{key:N,"installed-charge-point":f,"installed-charge-point-key":N},null,8,["installed-charge-point","installed-charge-point-key"]))),128)),(r(!0),_(B,null,C(e.counterConfigs,f=>(r(),m(u,{key:f.id,counter:f},null,8,["counter"]))),128)),e.numInvertersInstalled>1&&s.$store.state.mqtt["openWB/general/extern"]===!1?(r(),m(b,{key:1})):T("",!0),(r(!0),_(B,null,C(e.inverterConfigs,f=>(r(),m(y,{key:f.id,inverter:f},null,8,["inverter"]))),128)),e.numBatteriesInstalled>1&&s.$store.state.mqtt["openWB/general/extern"]===!1?(r(),m(j,{key:2})):T("",!0),(r(!0),_(B,null,C(e.batteryConfigs,f=>(r(),m(z,{key:f.id,battery:f},null,8,["battery"]))),128)),(r(!0),_(B,null,C(e.vehicleNames,(f,N)=>(r(),m(E,{key:N,"vehicle-key":N,"vehicle-name":f},null,8,["vehicle-key","vehicle-name"]))),128)),(r(!0),_(B,null,C(e.ioDeviceConfigs,f=>(r(),m(M,{key:f.id,"io-device":f},null,8,["io-device"]))),128)),s.$store.state.mqtt["openWB/general/extern"]===!1?(r(),m(V,{key:3})):T("",!0)])}const ka=w(ma,[["render",ha],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{ka as default}; diff --git a/web/settings/assets/Support-aeee7674.js b/web/settings/assets/Support-cb0a82f9.js similarity index 89% rename from web/settings/assets/Support-aeee7674.js rename to web/settings/assets/Support-cb0a82f9.js index bd6965c8d6..439a464771 100644 --- a/web/settings/assets/Support-aeee7674.js +++ b/web/settings/assets/Support-cb0a82f9.js @@ -1,3 +1,3 @@ -import{l as D,g as V,F as W}from"./vendor-fortawesome-433470db.js";import{C as z}from"./index-cc8f65ba.js";import{_ as A,u,l as f,m as c,x as r,z as k,E as s,G as o,D as C,B as w,y as n,q as F}from"./vendor-ea36120f.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";D.add(V);const x={name:"OpenwbSupportView",components:{FontAwesomeIcon:W},mixins:[z],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/serial_number","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/vehicle/+/name","openWB/vehicle/+/info"],email:void 0,components:void 0,vehicles:void 0,message:void 0,enableSendDebugButton:!0}},computed:{debugData(){return{email:this.email,serialNumber:this.$store.state.mqtt["openWB/system/serial_number"],installedComponents:this.installedComponents,vehicles:this.vehicleInfo,message:this.message}},installedComponents(){var b,m;if(this.components!==void 0)return this.components;let i="";const e=this.getWildcardTopics("openWB/system/device/+/component/+/config");for(const t of Object.values(e)){const a=t.id,d=((b=t.info)==null?void 0:b.manufacturer)||"N/A",p=((m=t.info)==null?void 0:m.model)||"N/A";i+=`(${a}) Hersteller: ${d}, Modell: ${p} +import{l as D,g as V,F as W}from"./vendor-fortawesome-9d7cfdfb.js";import{C as A}from"./index-b236cee5.js";import{_ as z,u,l as f,m as c,A as r,x as k,E as s,G as o,D as C,z as w,B as n,q as F}from"./vendor-ad7c30fd.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";D.add(V);const x={name:"OpenwbSupportView",components:{FontAwesomeIcon:W},mixins:[A],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/serial_number","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/vehicle/+/name","openWB/vehicle/+/info"],email:void 0,components:void 0,vehicles:void 0,message:void 0,enableSendDebugButton:!0}},computed:{debugData(){return{email:this.email,serialNumber:this.$store.state.mqtt["openWB/system/serial_number"],installedComponents:this.installedComponents,vehicles:this.vehicleInfo,message:this.message}},installedComponents(){var b,m;if(this.components!==void 0)return this.components;let i="";const e=this.getWildcardTopics("openWB/system/device/+/component/+/config");for(const t of Object.values(e)){const a=t.id,d=((b=t.info)==null?void 0:b.manufacturer)||"N/A",p=((m=t.info)==null?void 0:m.model)||"N/A";i+=`(${a}) Hersteller: ${d}, Modell: ${p} `}return i.trim()},vehicleInfo(){if(this.vehicles!==void 0)return this.vehicles;let i="";const e=this.getWildcardTopics("openWB/vehicle/+/info");for(const[b,m]of Object.entries(e)){const t=parseInt(b.split("/")[2]);if(t!==0){const a=m.manufacturer||"N/A",d=m.model||"N/A";i+=`(${t}) Hersteller: ${a}, Modell: ${d} -`}}return i.trim()}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.debugData}),this.enableSendDebugButton=!1;else{console.warn("form invalid");return}}}},_={class:"support"},q={name:"supportForm"},I={key:1},N={key:0},T={class:"row justify-content-center"};function M(i,e,b,m,t,a){const d=u("router-link"),p=u("openwb-base-alert"),v=u("FontAwesomeIcon"),h=u("openwb-base-text-input"),g=u("openwb-base-textarea"),y=u("openwb-base-click-button"),B=u("openwb-base-card"),S=u("font-awesome-icon");return f(),c("div",_,[r("form",q,[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(f(),k(p,{key:0,subtype:"danger"},{default:s(()=>[e[6]||(e[6]=n(" Du musst der ")),o(d,{to:"/System/LegalSettings"},{default:s(()=>e[5]||(e[5]=[n(" Datenschutzerklärung ")])),_:1}),e[7]||(e[7]=n(" zustimmen, um einen Systembericht senden zu können. "))]),_:1})):(f(),c("div",I,[o(p,{subtype:"success"},{default:s(()=>[e[9]||(e[9]=n(" Du hast der ")),o(d,{to:"/System/LegalSettings"},{default:s(()=>e[8]||(e[8]=[n(" Datenschutzerklärung ")])),_:1}),e[10]||(e[10]=n(" zugestimmt und kannst Systemberichte senden. "))]),_:1}),o(B,{title:"Systembericht"},C({default:s(()=>[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(f(),c("div",N,[o(p,{subtype:"info"},{default:s(()=>[r("ul",null,[r("li",null,[e[11]||(e[11]=n(" Lies bitte den Hilfetext, der durch Klick auf das ")),o(v,{icon:["far","question-circle"]}),e[12]||(e[12]=n(" angezeigt wird. Nimm das Wiki zur Hilfe. "))]),e[13]||(e[13]=r("li",null,'Vergewissere Dich , dass mindestens die aktuelle "Release" Version installiert ist.',-1)),e[14]||(e[14]=r("li",null," Stelle beim Absenden des Berichtes die Fehlerkonditionen her. Lädt ein Fahrzeug nicht, sollte es angeschlossen und nicht voll geladen sein. Ist PV laden betroffen, sollte die Sonne auch scheinen. Der Systembericht muss dann versendet werden, wenn der Fehler aktuell vorliegt. ",-1)),e[15]||(e[15]=r("li",null," Stelle sicher, dass der Lademodus gewählt ist und im Falle von nicht ladenden ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1)),e[16]||(e[16]=r("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Du erhältst ca. 15 bis 30 Minuten nach Versand des Systemberichtes von uns automatisch eine E-Mail mit der Ticketnummer unter der die Anfrage bei uns registriert wurde. Wir melden uns bei Dir. Bitte kontrolliere daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhältst Du trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes vermutlich fehlgeschlagen. ",-1))])]),_:1}),o(h,{modelValue:t.email,"onUpdate:modelValue":e[0]||(e[0]=l=>t.email=l),title:"E-Mail",required:"",subtype:"email"},{help:s(()=>e[17]||(e[17]=[n(" Deine E-Mail-Adresse, an die der Support Dir antwortet. ")])),_:1},8,["modelValue"]),o(h,{title:"openWB Seriennummer",required:"","model-value":i.$store.state.mqtt["openWB/system/serial_number"],"onUpdate:modelValue":e[1]||(e[1]=l=>i.updateState("openWB/system/serial_number",l))},{help:s(()=>e[18]||(e[18]=[n(" Die Seriennummer der openWB findest Du außen am, bei älteren Installationen innen im Gehäuse. Du kannst uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden!"),r("br",null,null,-1),n(" Bei einer gekauften openWB wird die Seriennummer automatisch ermittelt. ")])),_:1},8,["model-value"]),o(g,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500","model-value":a.installedComponents,"onUpdate:modelValue":e[2]||(e[2]=l=>t.components=l)},{help:s(()=>[e[20]||(e[20]=n(" Gib hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind.")),e[21]||(e[21]=r("br",null,null,-1)),o(d,{to:"/HardwareInstallation"},{default:s(()=>e[19]||(e[19]=[n(" Die Angaben können auch direkt in der Konfiguration der Komponenten dauerhaft gespeichert werden. ")])),_:1})]),_:1},8,["model-value"]),o(g,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500","model-value":a.vehicleInfo,"onUpdate:modelValue":e[3]||(e[3]=l=>t.vehicles=l)},{help:s(()=>[e[23]||(e[23]=n(" Gib hier an, welche Fahrzeuge geladen (Hersteller, Modell, Baujahr).")),e[24]||(e[24]=r("br",null,null,-1)),o(d,{to:"/VehicleConfiguration"},{default:s(()=>e[22]||(e[22]=[n(" Die Angaben können auch direkt in der Konfiguration der Fahrzeuge dauerhaft gespeichert werden. ")])),_:1})]),_:1},8,["model-value"]),o(g,{modelValue:t.message,"onUpdate:modelValue":e[4]||(e[4]=l=>t.message=l),title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500"},null,8,["modelValue"])])):w("",!0)]),_:2},[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:s(()=>[r("div",T,[o(y,{class:F(["col-4",t.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!t.enableSendDebugButton,onButtonClicked:a.sendDebugMessage},{default:s(()=>e[25]||(e[25]=[n(" Absenden ")])),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),t.enableSendDebugButton?w("",!0):(f(),k(p,{key:0,subtype:"success"},{default:s(()=>[e[26]||(e[26]=n(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Du kannst diese Seite jetzt verlassen. ")),o(S,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const $=A(x,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{$ as default}; +`}}return i.trim()}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.debugData}),this.enableSendDebugButton=!1;else{console.warn("form invalid");return}}}},_={class:"support"},q={name:"supportForm"},I={key:1},N={key:0},T={class:"row justify-content-center"};function M(i,e,b,m,t,a){const d=u("router-link"),p=u("openwb-base-alert"),v=u("FontAwesomeIcon"),h=u("openwb-base-text-input"),g=u("openwb-base-textarea"),B=u("openwb-base-click-button"),y=u("openwb-base-card"),S=u("font-awesome-icon");return f(),c("div",_,[r("form",q,[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(f(),k(p,{key:0,subtype:"danger"},{default:s(()=>[e[6]||(e[6]=n(" Du musst der ")),o(d,{to:"/System/LegalSettings"},{default:s(()=>e[5]||(e[5]=[n(" Datenschutzerklärung ")])),_:1}),e[7]||(e[7]=n(" zustimmen, um einen Systembericht senden zu können. "))]),_:1})):(f(),c("div",I,[o(p,{subtype:"success"},{default:s(()=>[e[9]||(e[9]=n(" Du hast der ")),o(d,{to:"/System/LegalSettings"},{default:s(()=>e[8]||(e[8]=[n(" Datenschutzerklärung ")])),_:1}),e[10]||(e[10]=n(" zugestimmt und kannst Systemberichte senden. "))]),_:1}),o(y,{title:"Systembericht"},C({default:s(()=>[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(f(),c("div",N,[o(p,{subtype:"info"},{default:s(()=>[r("ul",null,[r("li",null,[e[11]||(e[11]=n(" Lies bitte den Hilfetext, der durch Klick auf das ")),o(v,{icon:["far","question-circle"]}),e[12]||(e[12]=n(" angezeigt wird. Nimm das Wiki zur Hilfe. "))]),e[13]||(e[13]=r("li",null,'Vergewissere Dich , dass mindestens die aktuelle "Release" Version installiert ist.',-1)),e[14]||(e[14]=r("li",null," Stelle beim Absenden des Berichtes die Fehlerkonditionen her. Lädt ein Fahrzeug nicht, sollte es angeschlossen und nicht voll geladen sein. Ist PV laden betroffen, sollte die Sonne auch scheinen. Der Systembericht muss dann versendet werden, wenn der Fehler aktuell vorliegt. ",-1)),e[15]||(e[15]=r("li",null," Stelle sicher, dass der Lademodus gewählt ist und im Falle von nicht ladenden ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1)),e[16]||(e[16]=r("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Du erhältst ca. 15 bis 30 Minuten nach Versand des Systemberichtes von uns automatisch eine E-Mail mit der Ticketnummer unter der die Anfrage bei uns registriert wurde. Wir melden uns bei Dir. Bitte kontrolliere daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhältst Du trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes vermutlich fehlgeschlagen. ",-1))])]),_:1}),o(h,{modelValue:t.email,"onUpdate:modelValue":e[0]||(e[0]=l=>t.email=l),title:"E-Mail",required:"",subtype:"email"},{help:s(()=>e[17]||(e[17]=[n(" Deine E-Mail-Adresse, an die der Support Dir antwortet. ")])),_:1},8,["modelValue"]),o(h,{title:"openWB Seriennummer",required:"","model-value":i.$store.state.mqtt["openWB/system/serial_number"],"onUpdate:modelValue":e[1]||(e[1]=l=>i.updateState("openWB/system/serial_number",l))},{help:s(()=>e[18]||(e[18]=[n(" Die Seriennummer der openWB findest Du außen am, bei älteren Installationen innen im Gehäuse. Du kannst uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden!"),r("br",null,null,-1),n(" Bei einer gekauften openWB wird die Seriennummer automatisch ermittelt. ")])),_:1},8,["model-value"]),o(g,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500","model-value":a.installedComponents,"onUpdate:modelValue":e[2]||(e[2]=l=>t.components=l)},{help:s(()=>[e[20]||(e[20]=n(" Gib hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind.")),e[21]||(e[21]=r("br",null,null,-1)),o(d,{to:"/HardwareInstallation"},{default:s(()=>e[19]||(e[19]=[n(" Die Angaben können auch direkt in der Konfiguration der Komponenten dauerhaft gespeichert werden. ")])),_:1})]),_:1},8,["model-value"]),o(g,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500","model-value":a.vehicleInfo,"onUpdate:modelValue":e[3]||(e[3]=l=>t.vehicles=l)},{help:s(()=>[e[23]||(e[23]=n(" Gib hier an, welche Fahrzeuge geladen (Hersteller, Modell, Baujahr).")),e[24]||(e[24]=r("br",null,null,-1)),o(d,{to:"/VehicleConfiguration"},{default:s(()=>e[22]||(e[22]=[n(" Die Angaben können auch direkt in der Konfiguration der Fahrzeuge dauerhaft gespeichert werden. ")])),_:1})]),_:1},8,["model-value"]),o(g,{modelValue:t.message,"onUpdate:modelValue":e[4]||(e[4]=l=>t.message=l),title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500"},null,8,["modelValue"])])):w("",!0)]),_:2},[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:s(()=>[r("div",T,[o(B,{class:F(["col-4",t.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!t.enableSendDebugButton,onButtonClicked:a.sendDebugMessage},{default:s(()=>e[25]||(e[25]=[n(" Absenden ")])),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),t.enableSendDebugButton?w("",!0):(f(),k(p,{key:0,subtype:"success"},{default:s(()=>[e[26]||(e[26]=n(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Du kannst diese Seite jetzt verlassen. ")),o(S,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const $=z(x,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{$ as default}; diff --git a/web/settings/assets/System-20e6cb5e.js b/web/settings/assets/System-20e6cb5e.js deleted file mode 100644 index aabd2a4b3a..0000000000 --- a/web/settings/assets/System-20e6cb5e.js +++ /dev/null @@ -1 +0,0 @@ -import{l as W,ai as q,p as A,a9 as C,_ as S,aj as $,F as U}from"./vendor-fortawesome-433470db.js";import{C as z}from"./index-cc8f65ba.js";import{_ as E,u as b,l as c,m as w,z as B,E as o,B as y,G as s,x as l,y as i,q as _,N as F,M as j,F as T}from"./vendor-ea36120f.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";W.add(q,A,C,S,$);const x={name:"OpenwbSystemView",components:{FontAwesomeIcon:U},mixins:[z],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/system/optionBackup","openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch","openWB/system/version","openWB/system/serial_number","openWB/system/ip_address","openWB/system/mac_address"],warningAcknowledged:!1,selectedTag:"*HEAD*"}},computed:{updateAvailable(){return this.$store.state.mqtt["openWB/system/current_branch_commit"]&&this.$store.state.mqtt["openWB/system/current_branch_commit"]!=this.$store.state.mqtt["openWB/system/current_commit"]},releaseChangeValid(){return this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]&&"tags"in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]]&&this.selectedTag in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getBranchGroups(){const t="Release",e="Beta",u="master",v=[t,e],p=(a,d)=>a.value==d.value?0:a.value==t?-1:d.value==t?1:a.value==e?-1:d.value==e?1:a.value==u?-1:d.value==u||a.value>d.value?1:a.value[e[15]||(e[15]=l("h2",null,"Achtung!",-1)),e[16]||(e[16]=l("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),s(f,{modelValue:p.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>p.warningAcknowledged=n),title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"])]),_:1})),p.warningAcknowledged||u.installAssistantActive?(c(),w("div",L,[s(d,{title:"System Information",subtype:"info",collapsible:!0,collapsed:!0},{default:o(()=>[s(a,{modelValue:t.$store.state.mqtt["openWB/system/serial_number"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.$store.state.mqtt["openWB/system/serial_number"]=n),title:"Seriennummer",readonly:""},null,8,["modelValue"]),s(a,{modelValue:t.$store.state.mqtt["openWB/system/ip_address"],"onUpdate:modelValue":e[2]||(e[2]=n=>t.$store.state.mqtt["openWB/system/ip_address"]=n),title:"IP-Adresse",readonly:""},null,8,["modelValue"]),s(a,{modelValue:t.$store.state.mqtt["openWB/system/mac_address"],"onUpdate:modelValue":e[3]||(e[3]=n=>t.$store.state.mqtt["openWB/system/mac_address"]=n),title:"MAC-Adresse",readonly:""},null,8,["modelValue"])]),_:1}),l("form",N,[s(d,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{footer:o(()=>[l("div",R,[l("div",Z,[s(h,{class:"btn-info",onButtonClicked:e[8]||(e[8]=n=>r.sendSystemCommand("systemFetchVersions"))},{default:o(()=>[e[19]||(e[19]=i(" Informationen aktualisieren ")),s(g,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),l("div",O,[s(h,{class:_(r.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!r.updateAvailable,onButtonClicked:e[9]||(e[9]=n=>r.systemUpdate())},{default:o(()=>[e[20]||(e[20]=i(" Update ")),s(g,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[s(a,{modelValue:t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[4]||(e[4]=n=>t.$store.state.mqtt["openWB/system/current_branch"]=n),title:"Entwicklungszweig",readonly:""},null,8,["modelValue"]),s(a,{modelValue:t.$store.state.mqtt["openWB/system/version"],"onUpdate:modelValue":e[5]||(e[5]=n=>t.$store.state.mqtt["openWB/system/version"]=n),title:"Bezeichnung",readonly:""},null,8,["modelValue"]),s(a,{modelValue:t.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[6]||(e[6]=n=>t.$store.state.mqtt["openWB/system/current_commit"]=n),title:"installierte Version",readonly:"",class:_(r.updateAvailable?"text-danger":"text-success")},null,8,["modelValue","class"]),s(a,{modelValue:t.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[7]||(e[7]=n=>t.$store.state.mqtt["openWB/system/current_branch_commit"]=n),title:"aktuellste Version",readonly:""},null,8,["modelValue"]),r.updateAvailable?(c(),B(d,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:o(()=>[l("ul",I,[(c(!0),w(F,null,j(t.$store.state.mqtt["openWB/system/current_missing_commits"],(n,V)=>(c(),w("li",{key:V},T(n),1))),128))])]),_:1})):y("",!0),s(m,{subtype:"danger"},{default:o(()=>e[17]||(e[17]=[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")])),_:1}),t.$store.state.mqtt["openWB/system/current_branch"]!="Release"?(c(),B(m,{key:1,subtype:"danger"},{default:o(()=>e[18]||(e[18]=[i(' Du bist nicht auf dem für den normalen Gebrauch empfohlenen Entwicklungszweig "Release". Wir empfehlen, auf diesen Zweig zu wechseln, sobald dort eine neue Version verfügbar ist.'),l("br",null,null,-1),i(" Bevor ein Update angestoßen wird, sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren. ")])),_:1})):y("",!0)]),_:1},8,["collapsed"])]),u.installAssistantActive?y("",!0):(c(),w("form",P,[s(d,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:o(()=>[l("div",G,[l("div",M,[s(h,{class:"btn-warning",onButtonClicked:e[10]||(e[10]=n=>r.sendSystemCommand("systemReboot"))},{default:o(()=>[e[22]||(e[22]=i(" Neustart ")),s(g,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),l("div",H,[s(h,{class:"btn-danger",onButtonClicked:e[11]||(e[11]=n=>r.sendSystemCommand("systemShutdown"))},{default:o(()=>[e[23]||(e[23]=i(" Ausschalten ")),s(g,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:o(()=>[s(m,{subtype:"danger"},{default:o(()=>e[21]||(e[21]=[i(" Wenn die Ladestation ausgeschaltet wird, muss sie komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")])),_:1})]),_:1})])),u.installAssistantActive?y("",!0):(c(),w("form",J,[s(d,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:o(()=>[l("div",K,[l("div",Q,[s(h,{class:_(r.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!r.releaseChangeValid,onButtonClicked:e[14]||(e[14]=n=>r.switchBranch())},{default:o(()=>[s(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),e[26]||(e[26]=i(" Branch und Tag wechseln ")),s(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[s(m,{subtype:"danger"},{default:o(()=>e[24]||(e[24]=[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")])),_:1}),s(m,{subtype:"warning"},{default:o(()=>e[25]||(e[25]=[i(" Bevor auf einen neuen Entwicklungszweig gewechselt wird sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren."),l("br",null,null,-1),i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),l("br",null,null,-1),i(' Der "Beta" Zweig beinhaltet Vorabversionen, bei denen die Entwicklung soweit abgeschlossen ist. Die enthaltenen Anpassungen wurden rudimentär getestet, können aber durchaus noch Fehler enthalten.'),l("br",null,null,-1),i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),l("br",null,null,-1),i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')])),_:1}),s(k,{title:"Entwicklungszweig",groups:r.getBranchGroups(),"model-value":t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[12]||(e[12]=n=>t.updateState("openWB/system/current_branch",n))},null,8,["groups","model-value"]),s(k,{modelValue:p.selectedTag,"onUpdate:modelValue":e[13]||(e[13]=n=>p.selectedTag=n),title:"Tag",options:r.getBranchTagOptions()},null,8,["modelValue","options"])]),_:1})]))])):y("",!0)])}const le=E(x,[["render",X],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{le as default}; diff --git a/web/settings/assets/System-71b2e67e.js b/web/settings/assets/System-71b2e67e.js new file mode 100644 index 0000000000..2d8340af5b --- /dev/null +++ b/web/settings/assets/System-71b2e67e.js @@ -0,0 +1 @@ +import{l as W,am as q,t as A,ad as C,a2 as S,an as $,F as U}from"./vendor-fortawesome-9d7cfdfb.js";import{C as z}from"./index-b236cee5.js";import{_ as E,u as b,l as c,m as w,x as B,E as o,z as y,G as s,A as l,B as i,q as _,N as F,M as j,F as T}from"./vendor-ad7c30fd.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";W.add(q,A,C,S,$);const x={name:"OpenwbSystemView",components:{FontAwesomeIcon:U},mixins:[z],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/system/optionBackup","openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch","openWB/system/version","openWB/system/serial_number","openWB/system/ip_address","openWB/system/mac_address"],warningAcknowledged:!1,selectedTag:"*HEAD*"}},computed:{updateAvailable(){return this.$store.state.mqtt["openWB/system/current_branch_commit"]&&this.$store.state.mqtt["openWB/system/current_branch_commit"]!=this.$store.state.mqtt["openWB/system/current_commit"]},releaseChangeValid(){return this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]&&"tags"in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]]&&this.selectedTag in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getBranchGroups(){const t="Release",e="Beta",u="master",v=[t,e],p=(a,d)=>a.value==d.value?0:a.value==t?-1:d.value==t?1:a.value==e?-1:d.value==e?1:a.value==u?-1:d.value==u||a.value>d.value?1:a.value[e[15]||(e[15]=l("h2",null,"Achtung!",-1)),e[16]||(e[16]=l("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),s(f,{modelValue:p.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>p.warningAcknowledged=n),title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"])]),_:1})),p.warningAcknowledged||u.installAssistantActive?(c(),w("div",L,[s(d,{title:"System Information",subtype:"info",collapsible:!0,collapsed:!0},{default:o(()=>[s(a,{modelValue:t.$store.state.mqtt["openWB/system/serial_number"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.$store.state.mqtt["openWB/system/serial_number"]=n),title:"Seriennummer",readonly:""},null,8,["modelValue"]),s(a,{modelValue:t.$store.state.mqtt["openWB/system/ip_address"],"onUpdate:modelValue":e[2]||(e[2]=n=>t.$store.state.mqtt["openWB/system/ip_address"]=n),title:"IP-Adresse",readonly:""},null,8,["modelValue"]),s(a,{modelValue:t.$store.state.mqtt["openWB/system/mac_address"],"onUpdate:modelValue":e[3]||(e[3]=n=>t.$store.state.mqtt["openWB/system/mac_address"]=n),title:"MAC-Adresse",readonly:""},null,8,["modelValue"])]),_:1}),l("form",N,[s(d,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{footer:o(()=>[l("div",R,[l("div",Z,[s(h,{class:"btn-info",onButtonClicked:e[8]||(e[8]=n=>r.sendSystemCommand("systemFetchVersions"))},{default:o(()=>[e[19]||(e[19]=i(" Informationen aktualisieren ")),s(g,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),l("div",O,[s(h,{class:_(r.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!r.updateAvailable,onButtonClicked:e[9]||(e[9]=n=>r.systemUpdate())},{default:o(()=>[e[20]||(e[20]=i(" Update ")),s(g,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[s(a,{modelValue:t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[4]||(e[4]=n=>t.$store.state.mqtt["openWB/system/current_branch"]=n),title:"Entwicklungszweig",readonly:""},null,8,["modelValue"]),s(a,{modelValue:t.$store.state.mqtt["openWB/system/version"],"onUpdate:modelValue":e[5]||(e[5]=n=>t.$store.state.mqtt["openWB/system/version"]=n),title:"Bezeichnung",readonly:""},null,8,["modelValue"]),s(a,{modelValue:t.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[6]||(e[6]=n=>t.$store.state.mqtt["openWB/system/current_commit"]=n),title:"installierte Version",readonly:"",class:_(r.updateAvailable?"text-danger":"text-success")},null,8,["modelValue","class"]),s(a,{modelValue:t.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[7]||(e[7]=n=>t.$store.state.mqtt["openWB/system/current_branch_commit"]=n),title:"aktuellste Version",readonly:""},null,8,["modelValue"]),r.updateAvailable?(c(),B(d,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:o(()=>[l("ul",I,[(c(!0),w(F,null,j(t.$store.state.mqtt["openWB/system/current_missing_commits"],(n,V)=>(c(),w("li",{key:V},T(n),1))),128))])]),_:1})):y("",!0),s(m,{subtype:"danger"},{default:o(()=>e[17]||(e[17]=[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")])),_:1}),t.$store.state.mqtt["openWB/system/current_branch"]!="Release"?(c(),B(m,{key:1,subtype:"danger"},{default:o(()=>e[18]||(e[18]=[i(' Du bist nicht auf dem für den normalen Gebrauch empfohlenen Entwicklungszweig "Release". Wir empfehlen, auf diesen Zweig zu wechseln, sobald dort eine neue Version verfügbar ist.'),l("br",null,null,-1),i(" Bevor ein Update angestoßen wird, sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren. ")])),_:1})):y("",!0)]),_:1},8,["collapsed"])]),u.installAssistantActive?y("",!0):(c(),w("form",P,[s(d,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:o(()=>[l("div",G,[l("div",M,[s(h,{class:"btn-warning",onButtonClicked:e[10]||(e[10]=n=>r.sendSystemCommand("systemReboot"))},{default:o(()=>[e[22]||(e[22]=i(" Neustart ")),s(g,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),l("div",H,[s(h,{class:"btn-danger",onButtonClicked:e[11]||(e[11]=n=>r.sendSystemCommand("systemShutdown"))},{default:o(()=>[e[23]||(e[23]=i(" Ausschalten ")),s(g,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:o(()=>[s(m,{subtype:"danger"},{default:o(()=>e[21]||(e[21]=[i(" Wenn die Ladestation ausgeschaltet wird, muss sie komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")])),_:1})]),_:1})])),u.installAssistantActive?y("",!0):(c(),w("form",J,[s(d,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:o(()=>[l("div",K,[l("div",Q,[s(h,{class:_(r.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!r.releaseChangeValid,onButtonClicked:e[14]||(e[14]=n=>r.switchBranch())},{default:o(()=>[s(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),e[26]||(e[26]=i(" Branch und Tag wechseln ")),s(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[s(m,{subtype:"danger"},{default:o(()=>e[24]||(e[24]=[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")])),_:1}),s(m,{subtype:"warning"},{default:o(()=>e[25]||(e[25]=[i(" Bevor auf einen neuen Entwicklungszweig gewechselt wird sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren."),l("br",null,null,-1),i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),l("br",null,null,-1),i(' Der "Beta" Zweig beinhaltet Vorabversionen, bei denen die Entwicklung soweit abgeschlossen ist. Die enthaltenen Anpassungen wurden rudimentär getestet, können aber durchaus noch Fehler enthalten.'),l("br",null,null,-1),i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),l("br",null,null,-1),i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')])),_:1}),s(k,{title:"Entwicklungszweig",groups:r.getBranchGroups(),"model-value":t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[12]||(e[12]=n=>t.updateState("openWB/system/current_branch",n))},null,8,["groups","model-value"]),s(k,{modelValue:p.selectedTag,"onUpdate:modelValue":e[13]||(e[13]=n=>p.selectedTag=n),title:"Tag",options:r.getBranchTagOptions()},null,8,["modelValue","options"])]),_:1})]))])):y("",!0)])}const le=E(x,[["render",X],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{le as default}; diff --git a/web/settings/assets/TestingStore-96106450.js b/web/settings/assets/TestingStore-96106450.js deleted file mode 100644 index 6c9a017854..0000000000 --- a/web/settings/assets/TestingStore-96106450.js +++ /dev/null @@ -1 +0,0 @@ -import{C as k}from"./index-cc8f65ba.js";import{S as B}from"./OpenwbSortableList-bde71f66.js";import{_ as O,u as s,l as T,m as z,x as u,G as o,E as n,y as a,F as g}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";const N={name:"OpenwbTestingStoreView",components:{SortableList:B},mixins:[k],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:[]}}},Z={class:"testingStore"},G={name:"testingStoreForm"};function L(t,e,D,j,A,J){const d=s("OpenwbBaseHeading"),S=s("OpenwbBaseSettingElement"),w=s("openwb-base-button-input"),b=s("openwb-base-button-group-input"),i=s("openwb-base-card"),p=s("openwb-base-text-input"),m=s("openwb-base-number-input"),x=s("openwb-base-textarea"),v=s("openwb-base-range-input"),f=s("openwb-base-select-input"),$=s("openwb-base-checkbox-input"),V=s("openwb-base-array-input"),E=s("openwb-base-heading"),r=s("openwb-base-alert"),U=s("sortable-list"),y=s("openwb-base-submit-buttons");return T(),z("div",Z,[u("form",G,[o(i,{title:"Elemente mit BaseSettingElement"},{default:n(()=>[o(d,null,{default:n(()=>e[28]||(e[28]=[a(" Basiselement ")])),_:1}),o(S,null,{help:n(()=>e[29]||(e[29]=[a(" Basis-Element für alle weiteren Elemente. Das ist ein "),u("a",{href:"test"},"Link",-1),a(". ")])),_:1}),o(d,null,{default:n(()=>e[30]||(e[30]=[a(" Abgeleitete Elemente ")])),_:1}),o(w,{title:"Button Input","button-text":"Klick mich",subtype:"info"},{help:n(()=>e[31]||(e[31]=[a(" Einfacher Click-Button für Aktionen. ")])),_:1}),o(b,{title:"Button Group Input",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":t.$store.state.examples.buttonGroup1,"onUpdate:modelValue":e[0]||(e[0]=l=>t.updateState("buttonGroup1",l))},{help:n(()=>e[32]||(e[32]=[a(" Button-Group Element zur Auswahl weniger Optionen. Bei vielen Optionen besser ein Dropdown verwenden. "),u("a",{href:"test"},"Link",-1),a(". ")])),_:1},8,["model-value"])]),_:1}),o(i,{title:"Einfache Eingabefelder"},{default:n(()=>[o(p,{title:"1. Text","model-value":t.$store.state.examples.text1,"onUpdate:modelValue":e[1]||(e[1]=l=>t.updateState("text1",l))},{help:n(()=>e[33]||(e[33]=[a(" Einfacher Text ")])),_:1},8,["model-value"]),o(p,{title:"2. Text (E-Mail)",subtype:"email","model-value":t.$store.state.examples.text2,"onUpdate:modelValue":e[2]||(e[2]=l=>t.updateState("text2",l))},{help:n(()=>e[34]||(e[34]=[a(" Eingabefeld für E-Mailadressen ")])),_:1},8,["model-value"]),o(p,{title:"3. Text (Host)",subtype:"host","model-value":t.$store.state.examples.text3,"onUpdate:modelValue":e[3]||(e[3]=l=>t.updateState("text3",l))},{help:n(()=>e[35]||(e[35]=[a(" Eingabefeld für Hosts (IP oder Namen) ")])),_:1},8,["model-value"]),o(p,{title:"4. Text (URL)",subtype:"url","model-value":t.$store.state.examples.text4,"onUpdate:modelValue":e[4]||(e[4]=l=>t.updateState("text4",l))},{help:n(()=>e[36]||(e[36]=[a(" Eingabefeld für URLs ")])),_:1},8,["model-value"]),o(p,{title:"5. Text (User)",subtype:"user","model-value":t.$store.state.examples.text5,"onUpdate:modelValue":e[5]||(e[5]=l=>t.updateState("text5",l))},{help:n(()=>e[37]||(e[37]=[a(" Eingabefeld für Benutzernamen ")])),_:1},8,["model-value"]),o(p,{title:"6. Text (Time)",subtype:"time","model-value":t.$store.state.examples.text6,"onUpdate:modelValue":e[6]||(e[6]=l=>t.updateState("text6",l))},{help:n(()=>e[38]||(e[38]=[a(" Eingabefeld für Zeiten ")])),_:1},8,["model-value"]),o(p,{title:"7. Text (Date)",subtype:"date","model-value":t.$store.state.examples.text7,"onUpdate:modelValue":e[7]||(e[7]=l=>t.updateState("text7",l))},{help:n(()=>e[39]||(e[39]=[a(" Eingabefeld für ein Datum ")])),_:1},8,["model-value"]),e[45]||(e[45]=u("hr",null,null,-1)),o(m,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":t.$store.state.examples.number1,"onUpdate:modelValue":e[8]||(e[8]=l=>t.updateState("number1",l))},{help:n(()=>e[40]||(e[40]=[a(" Zahl mit Einheit ")])),_:1},8,["model-value"]),o(m,{title:"2. Zahl",min:10,max:32,step:2,"model-value":t.$store.state.examples.number2,"onUpdate:modelValue":e[9]||(e[9]=l=>t.updateState("number2",l))},{help:n(()=>e[41]||(e[41]=[a(" Eingabefeld für Zahlen ohne Einheit ")])),_:1},8,["model-value"]),o(m,{title:"3. Zahl",min:-30,max:30,step:.01,precision:2,unit:"ct/kWh","model-value":t.$store.state.examples.number3*1e5,"onUpdate:modelValue":e[10]||(e[10]=l=>t.updateState("number3",parseFloat((l/1e5).toFixed(7))))},{help:n(()=>e[42]||(e[42]=[a(" Eingabefeld für Zahlen mit Einheit und Nachkommastellen"),u("br",null,null,-1),a(' Zusätzlich zum optionalen Parameter "step" sollte immer auch "precision" gesetzt sein, um unvermeidbare Darstellungsfehler zu vermeiden.'),u("br",null,null,-1),a(" Wenn der dargestellte Wert eine andere Genauigkeit/Einheit als der Wert im Backend hat (z.B. €/Wh <-> ct/kWh), dann ist bei der Umrechnung darauf zu achten, dass es nicht erneut zu Ungenauigkeiten bei Dezimalzahlen kommt. ")])),_:1},8,["model-value"]),o(p,{title:"1. Passwort",subtype:"password","model-value":t.$store.state.examples.password1,"onUpdate:modelValue":e[11]||(e[11]=l=>t.updateState("password1",l))},{help:n(()=>e[43]||(e[43]=[a(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")])),_:1},8,["model-value"]),e[46]||(e[46]=u("hr",null,null,-1)),o(x,{title:"1. Textarea",maxlength:"50","model-value":t.$store.state.examples.textarea1,"onUpdate:modelValue":e[12]||(e[12]=l=>t.updateState("textarea1",l))},{help:n(()=>e[44]||(e[44]=[a(" Textarea mit maximaler Länge von 50 Zeichen. ")])),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:n(()=>[o(v,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":t.$store.state.examples.range1,"onUpdate:modelValue":e[13]||(e[13]=l=>t.updateState("range1",l))},{help:n(()=>e[47]||(e[47]=[a(" Range ohne spezielle Labels ")])),_:1},8,["model-value"]),o(v,{title:"2. Range",min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":t.$store.state.examples.range2,"onUpdate:modelValue":e[14]||(e[14]=l=>t.updateState("range2",l))},{help:n(()=>e[48]||(e[48]=[a(" Range mit speziellen Labels ")])),_:1},8,["model-value"]),e[53]||(e[53]=u("hr",null,null,-1)),o(f,{title:"1. Select","not-selected":"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":t.$store.state.examples.select1,"onUpdate:modelValue":e[15]||(e[15]=l=>t.updateState("select1",l))},{help:n(()=>e[49]||(e[49]=[a(" Select mit einfachen Optionen ")])),_:1},8,["model-value"]),o(f,{title:"2. Select",groups:[{label:"Gruppe 1 (Number)",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}]},{label:"Gruppe 2 (String)",options:[{value:"three",text:"Drei"},{value:"four",text:"Vier"}]}],"not-selected":"Bitte auswählen","add-button":!0,"model-value":t.$store.state.examples.select2,"onUpdate:modelValue":e[16]||(e[16]=l=>t.updateState("select2",l)),"onInput:add":e[17]||(e[17]=l=>t.alert("add button pressed"))},{help:n(()=>e[50]||(e[50]=[a(" Select mit Gruppen und Add-Button. ")])),_:1},8,["model-value"]),e[54]||(e[54]=u("hr",null,null,-1)),o(b,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":t.$store.state.examples.buttonGroup1,"onUpdate:modelValue":e[18]||(e[18]=l=>t.updateState("buttonGroup1",l))},{help:n(()=>e[51]||(e[51]=[a(" Hilfetext ")])),_:1},8,["model-value"]),e[55]||(e[55]=u("hr",null,null,-1)),o($,{title:"1. Checkbox","model-value":t.$store.state.examples.checkbox1,"onUpdate:modelValue":e[19]||(e[19]=l=>t.updateState("checkbox1",l))},{help:n(()=>e[52]||(e[52]=[a(" Hilfetext ")])),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:n(()=>[o(p,{title:"JSON 1",subtype:"json","model-value":t.$store.state.examples.json1,"onUpdate:modelValue":e[20]||(e[20]=l=>t.updateState("json1",l))},{help:n(()=>e[56]||(e[56]=[a(" JSON Objekt ")])),_:1},8,["model-value"]),o(p,{title:"JSON 1 Text","model-value":t.$store.state.examples.json1.text,"onUpdate:modelValue":e[21]||(e[21]=l=>t.updateState("json1",l,"text"))},{help:n(()=>e[57]||(e[57]=[a(" Text im JSON Objekt ")])),_:1},8,["model-value"]),o(m,{title:"JSON 1 Zahl","model-value":t.$store.state.examples.json1.number,"onUpdate:modelValue":e[22]||(e[22]=l=>t.updateState("json1",l,"number"))},{help:n(()=>e[58]||(e[58]=[a(" Zahl im JSON Objekt ")])),_:1},8,["model-value"]),o(V,{title:"Tag Array","model-value":t.$store.state.examples.tags,"onUpdate:modelValue":e[23]||(e[23]=l=>t.updateState("tags",l))},{help:n(()=>[u("pre",null,g(JSON.stringify(t.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:n(()=>e[59]||(e[59]=[u("span",{style:{"text-decoration":"underline","font-style":"italic"}},[a(" Styled "),u("span",{style:{"font-weight":"initial"}},"Header"),a(" Slot ")],-1)])),default:n(()=>[o(E,null,{help:n(()=>e[60]||(e[60]=[a(" Es sind auch Hilfetexte im #help Slot möglich. "),u("a",{href:"test"},"Link",-1)])),default:n(()=>[e[61]||(e[61]=a(" Das ist eine Überschrift "))]),_:1}),o(r,null,{default:n(()=>e[62]||(e[62]=[a(" Meldung ohne speziellen Subtype. ")])),_:1}),o(r,{subtype:"info"},{default:n(()=>e[63]||(e[63]=[a(" Infomeldung ")])),_:1}),o(r,{subtype:"warning"},{default:n(()=>e[64]||(e[64]=[a(" Warnmeldung ")])),_:1}),o(r,{subtype:"danger"},{default:n(()=>e[65]||(e[65]=[a(" Fehlermeldung ")])),_:1})]),_:1}),o(i,{title:"Listen"},{default:n(()=>[o(U,{modelValue:t.$store.state.examples.hierarchy1,"onUpdate:modelValue":e[24]||(e[24]=l=>t.$store.state.examples.hierarchy1=l),title:"Liste 1",labels:t.$store.state.examples.hierarchy1Labels},{help:n(()=>[u("pre",null,g(JSON.stringify(t.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o(y,{"form-name":"testingStoreForm",onSave:e[25]||(e[25]=l=>t.$emit("save")),onReset:e[26]||(e[26]=l=>t.$emit("reset")),onDefaults:e[27]||(e[27]=l=>t.$emit("defaults"))})])])}const K=O(N,[["render",L],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{K as default}; diff --git a/web/settings/assets/TestingStore-e8ef24a7.js b/web/settings/assets/TestingStore-e8ef24a7.js new file mode 100644 index 0000000000..1e2e9bd43c --- /dev/null +++ b/web/settings/assets/TestingStore-e8ef24a7.js @@ -0,0 +1 @@ +import{C as k}from"./index-b236cee5.js";import{S as B}from"./OpenwbSortableList-13147a4b.js";import{_ as T,u,l as O,m as z,A as s,G as o,E as n,B as a,F as S}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";const Z={name:"OpenwbTestingStoreView",components:{SortableList:B},mixins:[k],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:[]}}},N={class:"testingStore"},G={name:"testingStoreForm"};function L(t,e,D,j,A,J){const b=u("OpenwbBaseHeading"),w=u("OpenwbBaseSettingElement"),x=u("openwb-base-button-input"),v=u("openwb-base-button-group-input"),i=u("openwb-base-card"),p=u("openwb-base-text-input"),m=u("openwb-base-number-input"),$=u("openwb-base-textarea"),f=u("openwb-base-range-input"),r=u("openwb-base-select-input"),g=u("openwb-base-heading"),E=u("openwb-base-checkbox-input"),V=u("openwb-base-array-input"),d=u("openwb-base-alert"),y=u("sortable-list"),U=u("openwb-base-submit-buttons");return O(),z("div",N,[s("form",G,[o(i,{title:"Elemente mit BaseSettingElement"},{default:n(()=>[o(b,null,{default:n(()=>e[29]||(e[29]=[a(" Basiselement ")])),_:1}),o(w,null,{title:n(()=>e[30]||(e[30]=[s("span",{style:{"font-style":"italic"}},[a(" Styled "),s("span",{style:{"font-weight":"bold"}},"Title"),a(" Slot ")],-1)])),help:n(()=>e[31]||(e[31]=[a(" Basis-Element für alle weiteren Elemente. Das ist ein "),s("a",{href:"test"},"Link",-1),a(". ")])),_:1}),o(b,null,{default:n(()=>e[32]||(e[32]=[a(" Abgeleitete Elemente ")])),_:1}),o(x,{title:"Button Input","button-text":"Klick mich",subtype:"info"},{help:n(()=>e[33]||(e[33]=[a(" Einfacher Click-Button für Aktionen. ")])),_:1}),o(v,{title:"Button Group Input",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":t.$store.state.examples.buttonGroup1,"onUpdate:modelValue":e[0]||(e[0]=l=>t.updateState("buttonGroup1",l))},{help:n(()=>e[34]||(e[34]=[a(" Button-Group Element zur Auswahl weniger Optionen. Bei vielen Optionen besser ein Dropdown verwenden. "),s("a",{href:"test"},"Link",-1),a(". ")])),_:1},8,["model-value"])]),_:1}),o(i,{title:"Einfache Eingabefelder"},{default:n(()=>[o(p,{title:"1. Text","model-value":t.$store.state.examples.text1,"onUpdate:modelValue":e[1]||(e[1]=l=>t.updateState("text1",l))},{help:n(()=>e[35]||(e[35]=[a(" Einfacher Text ")])),_:1},8,["model-value"]),o(p,{title:"2. Text (E-Mail)",subtype:"email","model-value":t.$store.state.examples.text2,"onUpdate:modelValue":e[2]||(e[2]=l=>t.updateState("text2",l))},{help:n(()=>e[36]||(e[36]=[a(" Eingabefeld für E-Mailadressen ")])),_:1},8,["model-value"]),o(p,{title:"3. Text (Host)",subtype:"host","model-value":t.$store.state.examples.text3,"onUpdate:modelValue":e[3]||(e[3]=l=>t.updateState("text3",l))},{help:n(()=>e[37]||(e[37]=[a(" Eingabefeld für Hosts (IP oder Namen) ")])),_:1},8,["model-value"]),o(p,{title:"4. Text (URL)",subtype:"url","model-value":t.$store.state.examples.text4,"onUpdate:modelValue":e[4]||(e[4]=l=>t.updateState("text4",l))},{help:n(()=>e[38]||(e[38]=[a(" Eingabefeld für URLs ")])),_:1},8,["model-value"]),o(p,{title:"5. Text (User)",subtype:"user","model-value":t.$store.state.examples.text5,"onUpdate:modelValue":e[5]||(e[5]=l=>t.updateState("text5",l))},{help:n(()=>e[39]||(e[39]=[a(" Eingabefeld für Benutzernamen ")])),_:1},8,["model-value"]),o(p,{title:"6. Text (Time)",subtype:"time","model-value":t.$store.state.examples.text6,"onUpdate:modelValue":e[6]||(e[6]=l=>t.updateState("text6",l))},{help:n(()=>e[40]||(e[40]=[a(" Eingabefeld für Zeiten ")])),_:1},8,["model-value"]),o(p,{title:"7. Text (Date)",subtype:"date","model-value":t.$store.state.examples.text7,"onUpdate:modelValue":e[7]||(e[7]=l=>t.updateState("text7",l))},{help:n(()=>e[41]||(e[41]=[a(" Eingabefeld für ein Datum ")])),_:1},8,["model-value"]),e[47]||(e[47]=s("hr",null,null,-1)),o(m,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":t.$store.state.examples.number1,"onUpdate:modelValue":e[8]||(e[8]=l=>t.updateState("number1",l))},{help:n(()=>e[42]||(e[42]=[a(" Zahl mit Einheit ")])),_:1},8,["model-value"]),o(m,{title:"2. Zahl",min:10,max:32,step:2,"model-value":t.$store.state.examples.number2,"onUpdate:modelValue":e[9]||(e[9]=l=>t.updateState("number2",l))},{help:n(()=>e[43]||(e[43]=[a(" Eingabefeld für Zahlen ohne Einheit ")])),_:1},8,["model-value"]),o(m,{title:"3. Zahl",min:-30,max:30,step:.01,precision:2,unit:"ct/kWh","model-value":t.$store.state.examples.number3*1e5,"onUpdate:modelValue":e[10]||(e[10]=l=>t.updateState("number3",parseFloat((l/1e5).toFixed(7))))},{help:n(()=>e[44]||(e[44]=[a(" Eingabefeld für Zahlen mit Einheit und Nachkommastellen"),s("br",null,null,-1),a(' Zusätzlich zum optionalen Parameter "step" sollte immer auch "precision" gesetzt sein, um unvermeidbare Darstellungsfehler zu vermeiden.'),s("br",null,null,-1),a(" Wenn der dargestellte Wert eine andere Genauigkeit/Einheit als der Wert im Backend hat (z.B. €/Wh <-> ct/kWh), dann ist bei der Umrechnung darauf zu achten, dass es nicht erneut zu Ungenauigkeiten bei Dezimalzahlen kommt. ")])),_:1},8,["model-value"]),o(p,{title:"1. Passwort",subtype:"password","model-value":t.$store.state.examples.password1,"onUpdate:modelValue":e[11]||(e[11]=l=>t.updateState("password1",l))},{help:n(()=>e[45]||(e[45]=[a(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")])),_:1},8,["model-value"]),e[48]||(e[48]=s("hr",null,null,-1)),o($,{title:"1. Textarea",maxlength:"50","model-value":t.$store.state.examples.textarea1,"onUpdate:modelValue":e[12]||(e[12]=l=>t.updateState("textarea1",l))},{help:n(()=>e[46]||(e[46]=[a(" Textarea mit maximaler Länge von 50 Zeichen. ")])),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:n(()=>[o(f,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":t.$store.state.examples.range1,"onUpdate:modelValue":e[13]||(e[13]=l=>t.updateState("range1",l))},{help:n(()=>e[49]||(e[49]=[a(" Range ohne spezielle Labels ")])),_:1},8,["model-value"]),o(f,{title:"2. Range",min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":t.$store.state.examples.range2,"onUpdate:modelValue":e[14]||(e[14]=l=>t.updateState("range2",l))},{help:n(()=>e[50]||(e[50]=[a(" Range mit speziellen Labels ")])),_:1},8,["model-value"]),e[56]||(e[56]=s("hr",null,null,-1)),o(r,{title:"1. Select","not-selected":"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":t.$store.state.examples.select1,"onUpdate:modelValue":e[15]||(e[15]=l=>t.updateState("select1",l))},{help:n(()=>e[51]||(e[51]=[a(" Select mit einfachen Optionen ")])),_:1},8,["model-value"]),o(r,{title:"2. Select",groups:[{label:"Gruppe 1 (Number)",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}]},{label:"Gruppe 2 (String)",options:[{value:"three",text:"Drei"},{value:"four",text:"Vier"}]}],"not-selected":"Bitte auswählen","add-button":!0,"model-value":t.$store.state.examples.select2,"onUpdate:modelValue":e[16]||(e[16]=l=>t.updateState("select2",l)),"onInput:add":e[17]||(e[17]=l=>t.alert("add button pressed"))},{help:n(()=>e[52]||(e[52]=[a(" Select mit Gruppen und Add-Button. ")])),_:1},8,["model-value"]),e[57]||(e[57]=s("hr",null,null,-1)),o(v,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":t.$store.state.examples.buttonGroup1,"onUpdate:modelValue":e[18]||(e[18]=l=>t.updateState("buttonGroup1",l))},{help:n(()=>e[53]||(e[53]=[a(" Hilfetext ")])),_:1},8,["model-value"]),o(g,null,{default:n(()=>[e[54]||(e[54]=a(" Select Element ohne Label: ")),o(r,{class:"mb-1","not-selected":"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":t.$store.state.examples.select1,"onUpdate:modelValue":e[19]||(e[19]=l=>t.updateState("select1",l))},null,8,["model-value"])]),_:1}),e[58]||(e[58]=s("hr",null,null,-1)),o(E,{title:"1. Checkbox","model-value":t.$store.state.examples.checkbox1,"onUpdate:modelValue":e[20]||(e[20]=l=>t.updateState("checkbox1",l))},{help:n(()=>e[55]||(e[55]=[a(" Hilfetext ")])),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:n(()=>[o(p,{title:"JSON 1",subtype:"json","model-value":t.$store.state.examples.json1,"onUpdate:modelValue":e[21]||(e[21]=l=>t.updateState("json1",l))},{help:n(()=>e[59]||(e[59]=[a(" JSON Objekt ")])),_:1},8,["model-value"]),o(p,{title:"JSON 1 Text","model-value":t.$store.state.examples.json1.text,"onUpdate:modelValue":e[22]||(e[22]=l=>t.updateState("json1",l,"text"))},{help:n(()=>e[60]||(e[60]=[a(" Text im JSON Objekt ")])),_:1},8,["model-value"]),o(m,{title:"JSON 1 Zahl","model-value":t.$store.state.examples.json1.number,"onUpdate:modelValue":e[23]||(e[23]=l=>t.updateState("json1",l,"number"))},{help:n(()=>e[61]||(e[61]=[a(" Zahl im JSON Objekt ")])),_:1},8,["model-value"]),o(V,{title:"Tag Array","model-value":t.$store.state.examples.tags,"onUpdate:modelValue":e[24]||(e[24]=l=>t.updateState("tags",l))},{help:n(()=>[s("pre",null,S(JSON.stringify(t.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:n(()=>e[62]||(e[62]=[s("span",{style:{"text-decoration":"underline","font-style":"italic"}},[a(" Styled "),s("span",{style:{"font-weight":"initial"}},"Header"),a(" Slot ")],-1)])),default:n(()=>[o(g,null,{help:n(()=>e[63]||(e[63]=[a(" Es sind auch Hilfetexte im #help Slot möglich. "),s("a",{href:"test"},"Link",-1)])),default:n(()=>[e[64]||(e[64]=a(" Das ist eine Überschrift "))]),_:1}),o(d,null,{default:n(()=>e[65]||(e[65]=[a(" Meldung ohne speziellen Subtype. ")])),_:1}),o(d,{subtype:"info"},{default:n(()=>e[66]||(e[66]=[a(" Infomeldung ")])),_:1}),o(d,{subtype:"warning"},{default:n(()=>e[67]||(e[67]=[a(" Warnmeldung ")])),_:1}),o(d,{subtype:"danger"},{default:n(()=>e[68]||(e[68]=[a(" Fehlermeldung ")])),_:1})]),_:1}),o(i,{title:"Listen"},{default:n(()=>[o(y,{modelValue:t.$store.state.examples.hierarchy1,"onUpdate:modelValue":e[25]||(e[25]=l=>t.$store.state.examples.hierarchy1=l),title:"Liste 1",labels:t.$store.state.examples.hierarchy1Labels},{help:n(()=>[s("pre",null,S(JSON.stringify(t.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o(U,{"form-name":"testingStoreForm",onSave:e[26]||(e[26]=l=>t.$emit("save")),onReset:e[27]||(e[27]=l=>t.$emit("reset")),onDefaults:e[28]||(e[28]=l=>t.$emit("defaults"))})])])}const K=T(Z,[["render",L],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{K as default}; diff --git a/web/settings/assets/TimeChargeConfig-d3210f64.js b/web/settings/assets/TimeChargeConfig-1a5d2dde.js similarity index 84% rename from web/settings/assets/TimeChargeConfig-d3210f64.js rename to web/settings/assets/TimeChargeConfig-1a5d2dde.js index 46858facb4..843fdb361b 100644 --- a/web/settings/assets/TimeChargeConfig-d3210f64.js +++ b/web/settings/assets/TimeChargeConfig-1a5d2dde.js @@ -1 +1 @@ -import{C as l}from"./index-cc8f65ba.js";import{_ as b,u as o,l as i,m as a,x as _,G as s,E as r,y as m}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";const f={name:"OpenwbTimeChargeConfigView",mixins:[l],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},h={class:"timeChargeConfig"},c={name:"timeChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const u=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return i(),a("div",h,[_("form",c,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),a("div",v,[s(u,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),a("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/time_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/time_charging/phases_to_use",n))},{help:r(()=>e[5]||(e[5]=[m(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zeitladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (sog. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),s(d,{"form-name":"timeChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const q=b(f,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{q as default}; +import{C as l}from"./index-b236cee5.js";import{_ as b,u as o,l as i,m as a,A as _,G as s,E as r,B as m}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";const f={name:"OpenwbTimeChargeConfigView",mixins:[l],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},h={class:"timeChargeConfig"},c={name:"timeChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const u=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return i(),a("div",h,[_("form",c,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),a("div",v,[s(u,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),a("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/time_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/time_charging/phases_to_use",n))},{help:r(()=>e[5]||(e[5]=[m(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zeitladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (sog. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),s(d,{"form-name":"timeChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const q=b(f,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{q as default}; diff --git a/web/settings/assets/VehicleConfig-a49bda81.js b/web/settings/assets/VehicleConfig-e49e5ddc.js similarity index 85% rename from web/settings/assets/VehicleConfig-a49bda81.js rename to web/settings/assets/VehicleConfig-e49e5ddc.js index 8500bd1458..303fa2e1c5 100644 --- a/web/settings/assets/VehicleConfig-a49bda81.js +++ b/web/settings/assets/VehicleConfig-e49e5ddc.js @@ -1 +1 @@ -import{l as $,d as H,a6 as j,A as J,af as G,ag as X,z as Q,V as Y,N as K,X as ee,ah as te,M as ne,F as ae,H as le}from"./vendor-fortawesome-433470db.js";import{_ as k,C as ie}from"./index-cc8f65ba.js";import{_ as oe}from"./dynamic-import-helper-be004503.js";import{_ as M,u as V,l as d,m as g,z as p,E as l,y as i,F as C,G as a,x as h,a1 as re,a2 as de,N as P,B as m,M as E,D as F,q as x,A as N}from"./vendor-ea36120f.js";const ue={props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},se=M(ue,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/VehicleConfigMixin.vue"]]),me={name:"VehicleConfigFallback",mixins:[se]},ge={class:"vehicle-fallback"},he={key:1};function ce(t,e,b,B,f,s){const W=V("openwb-base-alert"),v=V("openwb-base-textarea");return d(),g("div",ge,[Object.keys(t.vehicle.configuration).length==0?(d(),p(W,{key:0,subtype:"info"},{default:l(()=>[i(' Der Fahrzeug-Typ "'+C(t.vehicle.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(d(),g("div",he,[a(W,{subtype:"warning"},{default:l(()=>[i(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+C(t.vehicle.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(v,{title:"Konfiguration",subtype:"json","model-value":t.vehicle.configuration,"onUpdate:modelValue":e[0]||(e[0]=T=>t.updateConfiguration(T,"configuration"))},{help:l(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),a(W,{subtype:"info"},{default:l(()=>[h("pre",null,C(JSON.stringify(t.vehicle.configuration,void 0,2)),1)]),_:1})]))])}const pe=M(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),be={name:"OpenwbVehicleProxy",props:{vehicleId:{type:Number,required:!0},vehicle:{type:Object,required:!0}},emits:["update:configuration"],methods:{getVehicleComponent(){return console.debug(`loading vehicle: ${this.vehicle.type}`),re({loader:()=>oe(Object.assign({"./aiways/vehicle.vue":()=>k(()=>import("./vehicle-1c25409c.js"),["assets/vehicle-1c25409c.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./bmwbc/vehicle.vue":()=>k(()=>import("./vehicle-2da6d3ec.js"),["assets/vehicle-2da6d3ec.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./evcc/vehicle.vue":()=>k(()=>import("./vehicle-0f1f6912.js"),["assets/vehicle-0f1f6912.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./evnotify/vehicle.vue":()=>k(()=>import("./vehicle-da54a31e.js"),["assets/vehicle-da54a31e.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./http/vehicle.vue":()=>k(()=>import("./vehicle-0951b87d.js"),["assets/vehicle-0951b87d.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./json/vehicle.vue":()=>k(()=>import("./vehicle-9fdd28f6.js"),["assets/vehicle-9fdd28f6.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kia/vehicle.vue":()=>k(()=>import("./vehicle-561e20d5.js"),["assets/vehicle-561e20d5.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./manual/vehicle.vue":()=>k(()=>import("./vehicle-47f7fadf.js"),["assets/vehicle-47f7fadf.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mercedeseq/vehicle.vue":()=>k(()=>import("./vehicle-837ef917.js"),["assets/vehicle-837ef917.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mqtt/vehicle.vue":()=>k(()=>import("./vehicle-47a5b0e6.js"),["assets/vehicle-47a5b0e6.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./ovms/vehicle.vue":()=>k(()=>import("./vehicle-56b45282.js"),["assets/vehicle-56b45282.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./psa/vehicle.vue":()=>k(()=>import("./vehicle-9a78a8ba.js"),["assets/vehicle-9a78a8ba.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./psacc/vehicle.vue":()=>k(()=>import("./vehicle-f595aaa1.js"),["assets/vehicle-f595aaa1.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./renault/vehicle.vue":()=>k(()=>import("./vehicle-b464d124.js"),["assets/vehicle-b464d124.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./skodaconnect/vehicle.vue":()=>k(()=>import("./vehicle-28d453ca.js"),["assets/vehicle-28d453ca.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smarthello/vehicle.vue":()=>k(()=>import("./vehicle-5d229e55.js"),["assets/vehicle-5d229e55.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/vehicle.vue":()=>k(()=>import("./vehicle-1fd068b4.js"),["assets/vehicle-1fd068b4.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-axios-1f03ee31.js","assets/index-cc8f65ba.js","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tronity/vehicle.vue":()=>k(()=>import("./vehicle-74dc0824.js"),["assets/vehicle-74dc0824.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./vwid/vehicle.vue":()=>k(()=>import("./vehicle-5cb1a571.js"),["assets/vehicle-5cb1a571.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.vehicle.type}/vehicle.vue`),errorComponent:pe})},updateConfiguration(t){this.$emit("update:configuration",t)}}};function ve(t,e,b,B,f,s){const W=V("openwb-base-heading");return d(),g(P,null,[a(W,null,{default:l(()=>[i(' Einstellungen für SoC-Modul "'+C(b.vehicle.name)+'" ',1)]),_:1}),(d(),p(de(s.getVehicleComponent()),{"vehicle-id":b.vehicleId,vehicle:b.vehicle,"onUpdate:configuration":e[0]||(e[0]=v=>s.updateConfiguration(v))},null,40,["vehicle-id","vehicle"]))],64)}const fe=M(be,[["render",ve],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);$.add(H,j,J,G,X,Q,Y,K,ee,te,ne);const _e={name:"OpenwbVehicleConfigView",components:{FontAwesomeIcon:ae,FontAwesomeLayers:le,OpenwbVehicleProxy:fe},mixins:[ie],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/et/provider","openWB/optional/rfid/active","openWB/vehicle/template/ev_template/+","openWB/vehicle/template/charge_template/+","openWB/vehicle/template/charge_template/+/chargemode/scheduled_charging/plans/+","openWB/vehicle/template/charge_template/+/time_charging/plans/+","openWB/vehicle/+/name","openWB/vehicle/+/info","openWB/vehicle/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/general_config","openWB/vehicle/+/soc_module/config"],showVehicleModal:!1,modalVehicleIndex:void 0,showEvTemplateModal:!1,modalEvTemplateIndex:void 0,showChargeTemplateModal:!1,modalChargeTemplateIndex:void 0,showChargeTemplateSchedulePlanModal:!1,modalChargeTemplateSchedulePlanIndex:void 0,showChargeTemplateTimeChargingPlanModal:!1,modalChargeTemplateTimeChargingPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let t=[];return Object.keys(this.evTemplates).forEach(e=>{let b=parseInt(e.match(/([0-9]+)$/g)[0]),B=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+b].name;t.push({value:b,text:B})}),t}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let t=[];return Object.keys(this.chargeTemplates).forEach(e=>{let b=parseInt(e.match(/([0-9]+)$/g)[0]),B=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+b].name;t.push({value:b,text:B})}),t}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(t){let e=t.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(t){let e=t.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/+")},addVehicle(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(t,e){e.stopPropagation(),this.modalVehicleIndex=t,this.showVehicleModal=!0},removeVehicle(t,e){this.showVehicleModal=!1,e=="confirm"&&this.$emit("sendCommand",{command:"removeVehicle",data:{id:t}})},getVehicleName(t){return this.$store.state.mqtt["openWB/vehicle/"+t+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+t+"/name"]:"Fahrzeug "+t},getSocDefaultConfiguration(t){const e=this.socModuleList.find(b=>b.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for soc type!",t),{})},updateSelectedSocModule(t,e){this.updateState("openWB/vehicle/"+t+"/soc_module/config",e,"type"),this.updateState("openWB/vehicle/"+t+"/soc_module/config",this.getSocDefaultConfiguration(e))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},addEvTemplate(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(t,e){e.stopPropagation(),this.modalEvTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(t,e){this.showEvTemplateModal=!1,e=="confirm"&&this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:t}})},getEvTemplateName(t){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+t]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+t].name:"Fahrzeug-Profil "+t},addChargeTemplate(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(t){return parseInt(t.match(/([^/]+)$/)[0])},removeChargeTemplateModal(t,e){e.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(t),this.showChargeTemplateModal=!0},removeChargeTemplate(t,e){this.showChargeTemplateModal=!1,e=="confirm"&&this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:t}})},getChargeTemplateName(t){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t].name:"Lade-Profil "+t},getChargeTemplateSchedulePlanName(t,e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/chargemode/scheduled_charging/plans/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/chargemode/scheduled_charging/plans/"+e].name:"Zielladen Zeitplan "+t+"/"+e},addChargeTemplateSchedulePlan(t,e){e.stopPropagation();let b=parseInt(t.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:b}})},removeChargeTemplateSchedulePlanModal(t,e,b){b.stopPropagation(),this.modalChargeTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(t,e,b){this.showChargeTemplateSchedulePlanModal=!1,b=="confirm"&&this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:t,plan:e}})},getChargeTemplateTimeChargingPlanName(t,e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/time_charging/plans/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/time_charging/plans/"+e].name:"Zeitladen Zeitplan "+t+"/"+e},addChargeTemplateTimeChargingPlan(t,e){e.stopPropagation();let b=parseInt(t.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:b}})},removeChargeTemplateTimeChargingPlanModal(t,e,b){b.stopPropagation(),this.modalChargeTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(t,e,b){this.showChargeTemplateTimeChargingPlanModal=!1,b=="confirm"&&this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:t,plan:e}})}}},we={class:"vehicleConfig"},ke={name:"vehicleConfigForm"},Ve={key:0},Ce={key:1},Se={key:2},ze=["innerHTML"],Ue={key:3},Te={key:0},We={key:1},Le={key:0},Pe={key:1},Ae={key:0},ye={key:0},Ee={key:3},Be={key:0},Fe={key:1},Me={key:0},qe={key:0},De={key:0},Ze=["onClick"],xe={key:0},Ne={key:1},Oe={key:2},Ie={key:3},Re={key:4},$e={key:5},He={key:4},je=["onClick"],Je={key:0},Ge={key:1},Xe={key:2},Qe={key:3},Ye={key:4},Ke={key:5};function et(t,e,b,B,f,s){const W=V("openwb-base-modal-dialog"),v=V("font-awesome-icon"),T=V("openwb-base-avatar"),y=V("openwb-base-alert"),z=V("openwb-base-text-input"),q=V("openwb-base-select-input"),O=V("openwb-base-array-input"),_=V("openwb-base-button-group-input"),L=V("openwb-base-heading"),w=V("openwb-base-number-input"),I=V("openwb-vehicle-proxy"),A=V("openwb-base-card"),Z=V("font-awesome-layers"),S=V("openwb-base-range-input"),R=V("openwb-base-submit-buttons");return d(),g(P,null,[a(W,{show:f.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=o=>s.removeVehicle(f.modalVehicleIndex,o))},{default:l(()=>[i(' Wollen Sie das Fahrzeug "'+C(s.getVehicleName(f.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[1]||(e[1]=o=>s.removeEvTemplate(f.modalEvTemplateIndex,o))},{default:l(()=>[i(' Wollen Sie das Fahrzeug-Profil "'+C(s.getEvTemplateName(f.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[2]||(e[2]=o=>s.removeChargeTemplate(f.modalChargeTemplateIndex,o))},{default:l(()=>[i(' Wollen Sie das Lade-Profil "'+C(s.getChargeTemplateName(f.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[3]||(e[3]=o=>s.removeChargeTemplateSchedulePlan(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex,o))},{default:l(()=>[i(' Wollen Sie den Zielladen Zeitplan "'+C(s.getChargeTemplateSchedulePlanName(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[4]||(e[4]=o=>s.removeChargeTemplateTimeChargingPlan(f.modalChargeTemplateIndex,f.modalChargeTemplateTimeChargingPlanIndex,o))},{default:l(()=>[i(' Wollen Sie den Zeitladen Zeitplan "'+C(s.getChargeTemplateTimeChargingPlanName(f.modalChargeTemplateIndex,f.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),h("div",we,[h("form",ke,[a(A,{subtype:"info",collapsible:!0,collapsed:t.$route.params.section!="vehicle"},{header:l(()=>[a(v,{"fixed-width":"",icon:["fas","car"]}),e[8]||(e[8]=i(" Fahrzeuge "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:s.addVehicle},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Ve,[a(y,{subtype:"info"},{default:l(()=>e[9]||(e[9]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",Ce,[(d(!0),g(P,null,E(s.vehicleIndexes,o=>(d(),p(A,{key:o,title:s.getVehicleName(o),collapsible:!0,collapsed:!(t.$route.params.section=="vehicle"&&parseInt(t.$route.params.section_index)==o),subtype:"info"},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/name"],disabled:o===0,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/name",r)},F({_:2},[o===0?{name:"help",fn:l(()=>[e[10]||(e[10]=i(" Das Standard-Fahrzeug kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),o!==0?(d(),p(z,{key:0,title:"Fahrzeughersteller ","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/info"].manufacturer,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/info",r,"manufacturer")},{help:l(()=>[...e[11]||(e[11]=[i(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),o!==0?(d(),p(z,{key:1,title:"Fahrzeugmodell","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/info"].model,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/info",r,"model")},{help:l(()=>[...e[12]||(e[12]=[i(" Optional: zusätzliche Information für den Systembericht."),h("br",null,null,-1),i(" Nach Möglichkeit auch Angabe des Baujahres, da es durchaus beim Verhalten des Fahrzeugs Unterschiede geben kann. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(y,{subtype:"info"},{default:l(()=>[...e[13]||(e[13]=[i(" Ein anderes Fahrzeug-Profil wird erst NACH dem Abstecken übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")])]),_:1}),a(q,{title:"Fahrzeug-Profil",options:s.evTemplateList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/ev_template"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/ev_template",r)},null,8,["options","model-value","onUpdate:modelValue"]),a(q,{title:"Lade-Profil",options:s.chargeTemplateList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/charge_template"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/charge_template",r)},null,8,["options","model-value","onUpdate:modelValue"]),e[24]||(e[24]=h("hr",null,null,-1)),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!b.installAssistantActive?(d(),g("div",Se,[a(O,{title:"Zugeordnete ID-Tags","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/tag_id"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/tag_id",r)},null,8,["model-value","onUpdate:modelValue"]),a(y,{subtype:"info"},{default:l(()=>[e[14]||(e[14]=i(" Die hier eingetragenen ID-Tags dienen ausschließlich der Fahrzeugzuordnung.")),e[15]||(e[15]=h("br",null,null,-1)),h("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,ze)]),_:1}),e[16]||(e[16]=h("hr",null,null,-1))])):m("",!0),a(q,{class:"mb-2",title:"SoC-Modul des Fahrzeugs",options:s.socModuleList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"].type,"onUpdate:modelValue":r=>s.updateSelectedSocModule(o,r)},{help:l(()=>[...e[17]||(e[17]=[i(" Mit einem SoC-Modul kann der Ladestand des Fahrzeugs ermittelt und geregelt werden. Z.B. lassen sich unabhängig vom Fahrzeug bestimmte SoC-Werte einstellen, um den Fahrzeugakku zu schonen. Aktuell werden die SoC-Werte mittels der App-Zugangsdaten aus dem Herstellerserver des Fahrzeuges ausgelesen. Zukünftig soll auch eine direkte SoC-Auslesung aus dem Fahrzeug möglich werden (openWB Pro)."),h("br",null,null,-1),i(" Die SoC-Abfrage erfolgt automatisch beim Anstecken des Fahrzeuges und zusätzlich über einstellbare Abfrageintervalle während des Ladens und Nichtladens. Die Abfrage kann auch manuell durch Klick auf den Reload-Pfeil auf der Hauptseite ausgelöst werden."),h("br",null,null,-1),i(" Wenn eine Abfrage fehlschlägt, wird noch drei weitere Male im Abstand von 5 Minuten versucht, den SoC abzufragen. Wenn dies nicht erfolgreich ist, wird der SoC auf 0% gesetzt um zu vermeiden, dass ein Auto beim SoC-basierten Laden nicht geladen wird. Die Abfrage erfolgt dann wieder in den oben genannten Intervallen."),h("br",null,null,-1),i(" Da aktuell die SoC-Abfragen über Onlineserver der Fahrzeughersteller laufen, ist infolge möglicher Umstellungen/Wartungen keine 100%-ig sichere SoC-Abfrage garantiert. Auch kann es zu SoC-Abweichungen infolge von zeitlicher Verzögerungen kommen. Hilfestellung erfolgt primär im openWB-Forum. ")])]),_:2},1032,["options","model-value","onUpdate:modelValue"]),t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"].type?(d(),g("div",Ue,[a(_,{title:"SoC direkt aus Fahrzeug auslesen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].use_soc_from_cp,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r,"use_soc_from_cp")},{help:l(()=>[...e[18]||(e[18]=[i(" Wenn Ladepunkt und Fahrzeug das direkte Auslesen des SoCs über das Ladekabel unterstützen, wird der SoC nach dem Anstecken aus dem Fahrzeug ausgelesen und während der Ladung berechnet. Das direkte Auslesen des SoC aus dem Fahrzeug ist aktuell nur mit einer openWB Pro möglich. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(L,null,{help:l(()=>[...e[19]||(e[19]=[i(" Einige Hersteller begrenzen die möglichen Abfragen. Sobald ein gewisses Limit in einem Zeitraum überschritten wird, werden weitere Anfragen blockiert. Die Zeitintervalle sollten daher nicht zu klein gewählt werden. ")])]),default:l(()=>[e[20]||(e[20]=i(" Aktualisierung der Fahrzeugdaten "))]),_:1}),a(w,{title:"Während der Ladung",unit:"Min.",min:1,required:"","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_interval_charging/60,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r*60,"request_interval_charging")},{help:l(()=>[...e[21]||(e[21]=[i(" Der Ladestand des Fahrzeugs (SoC) wird bei einem laufenden Ladevorgang in dem hier eingestellten Intervall in Minuten abgefragt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Ohne laufende Ladung",unit:"Min.",min:1,required:"","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_interval_not_charging/60,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r*60,"request_interval_not_charging")},{help:l(()=>[...e[22]||(e[22]=[i(" Der Ladestand des Fahrzeugs (SoC) wird in dem hier eingestellten Intervall in Minuten abgefragt, falls kein Ladevorgang aktiv ist. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Nur aktualisieren wenn angesteckt",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_only_plugged,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r,"request_only_plugged")},{help:l(()=>[...e[23]||(e[23]=[i(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(I,{"vehicle-id":o,vehicle:t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"],"onUpdate:configuration":r=>s.updateConfiguration("openWB/vehicle/"+o+"/soc_module/config",r)},null,8,["vehicle-id","vehicle","onUpdate:configuration"])])):m("",!0)]),_:2},[o!==0?{name:"actions",fn:l(r=>[r.collapsed?m("",!0):(d(),p(T,{key:0,class:"bg-danger clickable",onClick:n=>s.removeVehicleModal(o,n)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),e[81]||(e[81]=h("hr",{class:"border-secondary"},null,-1)),a(L,null,{default:l(()=>e[25]||(e[25]=[i("Profile")])),_:1}),a(A,{collapsible:!0,collapsed:!0},{header:l(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:l(()=>[a(v,{"fixed-width":"",icon:["far","file"]}),a(v,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),e[26]||(e[26]=i(" Fahrzeug-Profile "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:s.addEvTemplate},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Te,[a(y,{subtype:"info"},{default:l(()=>e[27]||(e[27]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",We,[a(y,{subtype:"info"},{default:l(()=>e[28]||(e[28]=[i(" Ein anderes Fahrzeug-Profil wird erst "),h("span",{class:"text-uppercase font-weight-bold"}," nach dem Abstecken ",-1),i(" übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")])),_:1}),(d(!0),g(P,null,E(s.evTemplates,(o,r)=>(d(),p(A,{key:r,title:o.name?o.name:r,collapsible:!0,collapsed:!0},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":o.name,disabled:r.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(r,n,"name")},F({_:2},[r.endsWith("/0")?{name:"help",fn:l(()=>[e[29]||(e[29]=i(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),a(L,null,{default:l(()=>[...e[30]||(e[30]=[i(" Angaben zur Batterie ")])]),_:1}),a(w,{title:"Kapazität der Batterie",unit:"kWh",min:1,step:1,required:"","model-value":o.battery_capacity/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"battery_capacity")},{help:l(()=>[...e[31]||(e[31]=[i(" Angabe der Netto-Kapazität der Fahrzeugbatterie. Dient zur Berechnung des manuellen SoC und der geladenen Reichweite. Die Netto-Kapazität unterscheidet sich meist von den Angaben der Fahrzeughersteller. So besitzt ein Tesla Model S 90 z. B. nur ca. 83kWh und nicht die durch die Typenbezeichnung suggerierten 90kWh. Andere Hersteller begrenzen die nutzbare Kapazität absichtlich, um eine höhere Lebensdauer der Akkus zu erreichen. Gängig sind eine Drosselung auf 90% der angegebenen Brutto-Kapazität. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),g("div",Le,[a(w,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",min:1,max:100,required:"","model-value":o.efficiency,"onUpdate:modelValue":n=>t.updateState(r,n,"efficiency")},{help:l(()=>[...e[32]||(e[32]=[i(" Durch Verluste in der Ladeelektronik (z. B. Umwandlung Wechselspannung in Gleichspannung) gelangt nicht die komplette Energie, welche durch den Zähler in der Wallbox gemessen wird, in den Akku des Fahrzeugs. Der anzugebende Wert liegt bei gängigen Fahrzeugen im Bereich 90-95%. Eine Ausnahme stellt der Zoe dar, dessen Chameleon-Lader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),h("br",null,null,-1),i(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),h("br",null,null,-1),i(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),h("br",null,null,-1),i(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),h("br",null,null,-1)])]),_:2},1032,["model-value","onUpdate:modelValue"])])),a(w,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:1,step:.1,required:"","model-value":o.average_consump/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),g("div",Pe,[a(L,null,{default:l(()=>[...e[33]||(e[33]=[i(" Angaben zur Ladeleistung (DC) ")])]),_:1}),a(w,{title:"Mindestleistung",min:0,unit:"kW","model-value":t.ac_current2dc_power(o.dc_min_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"dc_min_current")},null,8,["model-value","onUpdate:modelValue"]),a(w,{title:"Maximalleistung",unit:"kW","model-value":t.ac_current2dc_power(o.dc_max_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])])):m("",!0),a(L,null,{default:l(()=>[e[34]||(e[34]=i(" Angaben zum Ladestrom ")),s.dcChargingEnabled===!0?(d(),g("span",Ae," (AC) ")):m("",!0)]),_:1}),a(S,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":o.min_current,"onUpdate:modelValue":n=>t.updateState(r,n,"min_current")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":o.max_current_single_phase,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":o.max_current_multi_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),a(w,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":o.nominal_difference,"onUpdate:modelValue":n=>t.updateState(r,n,"nominal_difference")},{help:l(()=>[...e[35]||(e[35]=[i(" In manchen Lademodi, z.B. bei der automatischen Phasenumschaltung, wird geprüft, ob das Fahrzeug mit der vorgegebenen Stromstärke lädt. Manche Fahrzeuge laden nicht exakt mit der vorgegebenen Stromstärke. Die erlaubte Abweichung kann hier eingestellt werden. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(L,null,{default:l(()=>[e[36]||(e[36]=i(" Angaben zur Handhabung von Phasen ")),s.dcChargingEnabled===!0?(d(),g("span",ye," (AC) ")):m("",!0)]),_:1}),a(_,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":o.max_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"max_phases")},{help:l(()=>[...e[37]||(e[37]=[i(" Anzahl der Phasen, die der Fahrzeuglader (s.g. OBC - OnboardCharger) bereitstellt. Plugin-Hybride haben meist nur eine Phase, reine E-Autos meist 2 bis 3 Phasen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"CP-Unterbrechung",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.control_pilot_interruption,"onUpdate:modelValue":n=>t.updateState(r,n,"control_pilot_interruption")},{help:l(()=>[...e[38]||(e[38]=[i(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o.control_pilot_interruption?(d(),p(w,{key:2,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":o.control_pilot_interruption_duration,"onUpdate:modelValue":n=>t.updateState(r,n,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.prevent_phase_switch,"onUpdate:modelValue":n=>t.updateState(r,n,"prevent_phase_switch")},{help:l(()=>[...e[39]||(e[39]=[i(' Erläuterung zu 1p3p siehe "Ladeeinstellungen" ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Ladung aktiv halten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.prevent_charge_stop,"onUpdate:modelValue":n=>t.updateState(r,n,"prevent_charge_stop")},{help:l(()=>[...e[40]||(e[40]=[i(" Der Ladevorgang wird in den Lademodi PV- und Zielladen nach Ladebeginn nicht unterbrochen, selbst wenn nicht mehr genug Überschuss vorhanden ist. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach einer Ladungsunterbrechung keine Ladung mehr starten. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,required:"","model-value":o.phase_switch_pause,"onUpdate:modelValue":n=>t.updateState(r,n,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),g("div",Ee,[a(w,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,required:"","model-value":o.keep_charge_active_duration,"onUpdate:modelValue":n=>t.updateState(r,n,"keep_charge_active_duration")},{help:l(()=>[...e[41]||(e[41]=[i(" Manche Fahrzeuge benötigen nach der Umschaltung einige Zeit, bis sie mit der vorgegebenen Phasenzahl laden. In dieser Zeit wird keine neue Phasenumschaltung angestoßen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]))]),_:2},[r.endsWith("/0")?void 0:{name:"actions",fn:l(n=>[t.$store.state.mqtt["openWB/general/extern"]===!1&&!n.collapsed?(d(),p(T,{key:0,class:"bg-danger clickable",onClick:c=>s.removeEvTemplateModal(r,c)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),a(A,{collapsible:!0,collapsed:t.$route.params.section!="charge_template"},{header:l(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:l(()=>[a(v,{"fixed-width":"",icon:["far","file"]}),a(v,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),e[42]||(e[42]=i(" Lade-Profile "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:s.addChargeTemplate},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Be,[a(y,{subtype:"info"},{default:l(()=>e[43]||(e[43]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",Fe,[(d(!0),g(P,null,E(s.chargeTemplates,(o,r)=>(d(),p(A,{key:r,title:o.name?o.name:r,collapsible:!0,collapsed:!(t.$route.params.section=="charge_template"&&parseInt(t.$route.params.section_index)==s.getChargeTemplateIndex(r))},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":o.name,disabled:r.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(r,n,"name")},F({_:2},[r.endsWith("/0")?{name:"help",fn:l(()=>[e[44]||(e[44]=i(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),a(L,null,{default:l(()=>[...e[45]||(e[45]=[i(" Allgemeine Optionen ")])]),_:1}),a(_,{title:"Aktiver Lademodus",buttons:[{buttonValue:"instant_charging",text:"Sofortladen",class:"btn-outline-danger"},{buttonValue:"pv_charging",text:"PV",class:"btn-outline-success"},{buttonValue:"scheduled_charging",text:"Zielladen",class:"btn-outline-primary"},{buttonValue:"standby",text:"Standby",class:"btn-outline-secondary"},{buttonValue:"stop",text:"Stop",class:"btn-outline-dark"}],"model-value":o.chargemode.selected,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.selected")},{help:l(()=>[...e[46]||(e[46]=[i(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),h("br",null,null,-1),i(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),h("br",null,null,-1),h("ol",null,[h("li",null,"Zielladen (Sofortladen) mit Priorität"),h("li",null,"Zielladen (Sofortladen)"),h("li",null,"Zeitladen mit Priorität"),h("li",null,"Zeitladen"),h("li",null,"Sofortladen mit Priorität"),h("li",null,"Sofortladen"),h("li",null,"PV (Min-Anteil) mit Priorität"),h("li",null,"PV (Min-Anteil)"),h("li",null,"Zielladen (PV) mit Priorität"),h("li",null,"Zielladen (PV)"),h("li",null,"PV (PV-Anteil) mit Priorität"),h("li",null,"PV (PV-Anteil)")],-1)])]),_:2},1032,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),g("div",Me,[a(_,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.prio,"onUpdate:modelValue":n=>t.updateState(r,n,"prio")},{help:l(()=>[...e[47]||(e[47]=[i(" Die Ladefreigabe mit dem jeweils eingestellten Mindeststrom erfolgt für alle Fahrzeuge, soweit die verfügbare Leistung ausreicht. Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, wird auch für Fahrzeuge ohne Priorität mehr Leistung freigegeben. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitladen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.time_charging.active,"onUpdate:modelValue":n=>t.updateState(r,n,"time_charging.active")},{help:l(()=>[...e[48]||(e[48]=[i(' Der Lademodus Zeitladen kann parallel zu einem der anderen Lademodi aktiviert werden. Die Auswahl des Lademodus, der in der Regelung genutzt wird, erfolgt anhand der Übersicht in der Hilfe bei "Aktiver Lademodus". Wenn kein Zeitplan aktiv ist oder das Limit des Zeitplans erreicht wurde, wird der Lademodus verwendet, der bei "Aktiver Lademodus" ausgewählt ist. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Standard nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.load_default,"onUpdate:modelValue":n=>t.updateState(r,n,"load_default")},{help:l(()=>[...e[49]||(e[49]=[i(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Fahrzeug zurückgesetzt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Strompreisbasiert Laden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.et.active,"onUpdate:modelValue":n=>t.updateState(r,n,"et.active")},null,8,["model-value","onUpdate:modelValue"]),o.et.active==!0?(d(),g("div",qe,[!t.$store.state.mqtt["openWB/optional/et/provider"]||!t.$store.state.mqtt["openWB/optional/et/provider"].type?(d(),g("div",De,[a(y,{subtype:"danger"},{default:l(()=>[...e[50]||(e[50]=[i(" Bitte in den übergreifenden Ladeeinstellungen einen Strompreis-Anbieter konfigurieren. ")])]),_:1})])):m("",!0),a(w,{title:"Preisgrenze für Zeit- & Sofortladen",min:"-80",max:"80",step:"0.01",precision:2,unit:"ct/kWh","model-value":o.et.max_price*1e5,"onUpdate:modelValue":n=>t.updateState(r,parseFloat((n/1e5).toFixed(7)),"et.max_price")},{help:l(()=>[...e[51]||(e[51]=[i(" Für Zielladen werden die günstigsten Stunden ermittelt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])])):m("",!0),e[52]||(e[52]=h("hr",null,null,-1))])),a(L,null,{default:l(()=>[...e[53]||(e[53]=[i("Sofortladen")])]),_:1}),a(S,{title:"Soll-Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":o.chargemode.instant_charging.current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:1,title:"Soll-Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.instant_charging.dc_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.instant_charging.dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":o.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.limit.selected")},{help:l(()=>[...e[54]||(e[54]=[i(" Sofortladen kann ohne Fahrzeug-SoC-Begrenzung (Aus), mit Begrenzung des Fahrzeug-SoC (SoC) bei konfiguriertem SoC-Auslesemodul oder mittels Vorgabe eine gewünschten Energiemenge in kWh (Energie) genutzt werden. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"SoC-Limit für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":o.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.limit.soc")},{help:l(()=>[...e[55]||(e[55]=[i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Energie-Limit",unit:"kWh",min:1,step:1,"model-value":o.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"chargemode.instant_charging.limit.amount")},{help:l(()=>[...e[56]||(e[56]=[i(" Die geladene Energiemenge wird beim Wechsel des Lademodus oder nach dem Anstecken, wenn Sofortladen schon ausgewählt ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[79]||(e[79]=h("hr",null,null,-1)),a(L,null,{default:l(()=>[...e[57]||(e[57]=[i("PV-Laden")])]),_:1}),a(S,{title:"Minimaler Dauerstrom"+(s.dcChargingEnabled?" (AC)":""),min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":o.chargemode.pv_charging.min_current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_current")},{help:l(()=>[...e[58]||(e[58]=[i(' Hier kann eine Stromstärke eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Stromwert empfohlen wird. Diese Einstellung entspricht weitestgehend dem Lademodus "Min+PV" der Version 1.x. ')])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:2,title:"Minimale Dauerleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.pv_charging.dc_min_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.pv_charging.dc_min_current")},{help:l(()=>[...e[59]||(e[59]=[i(" Hier kann eine Leistung eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Leistungswert empfohlen wird. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(S,{title:"SoC-Limit für das Fahrzeug",min:0,max:20,step:1,unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":o.chargemode.pv_charging.max_soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.max_soc")},{help:l(()=>[...e[60]||(e[60]=[i(' Bei der Einstellung "100%" wird die Ladung sofort mit Erreichen der 100% beendet. Dadurch erfolgt KEIN Balancing der Batteriezellen. Ist dies gewünscht (sollte ab und an durchgeführt werden), muss hier "Aus" gewählt werden (Schieberegler ganz nach rechts stellen), um die Ladung MIT Balancing bis zur Beendigung durch das Fahrzeug weiterlaufen zu lassen.'),h("br",null,null,-1),i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Mindest-SoC für das Fahrzeug",min:0,max:19,step:1,unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":o.chargemode.pv_charging.min_soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_soc")},{help:l(()=>[...e[61]||(e[61]=[i(' Liegt der Fahrzeug-Ladestand (SoC) unter dem hier eingestellten Wert, dann wird bis zum Erreichen dieses Wertes mit dem eingestellten "Mindest-SoC-Strom" geladen. Dies dient der Sicherstellung eines "Mindest-SoC" - z.B. für eine immer abzudeckende Fahrzeugreichweite - auch wenn kein oder zu wenig Überschuss verfügbar ist (=> Laden mit anteilig Netzstrom). Nach dem Erreichen des "Mindest-SoC" wird bei verfügbarem Überschuss geladen.'),h("br",null,null,-1),i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Mindest-SoC-Strom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":o.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_soc_current")},{help:l(()=>[...e[62]||(e[62]=[i(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit dem hier festgelegten "Mindest-SoC-Strom" initiiert (ggf. mit anteilig Netzbezug). ')])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:3,title:"Mindest-SoC-Leistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.pv_charging.dc_min_soc_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.pv_charging.dc_min_soc_current")},{help:l(()=>[...e[63]||(e[63]=[i(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit der hier festgelegten "Mindest-SoC-Leistung" initiiert (ggf. mit anteilig Netzbezug). ')])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.feed_in_limit")},{help:l(()=>[...e[64]||(e[64]=[i(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[80]||(e[80]=h("hr",null,null,-1)),a(L,null,{actions:l(()=>[a(T,{class:"bg-success clickable",onClick:n=>s.addChargeTemplateSchedulePlan(r,n)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:l(()=>[...e[65]||(e[65]=[i(' Im Lademodus "Zielladen" wird der Ladestrom so angepasst, dass das Fahrzeug zum angegebenen Zeitpunkt den eingestellten SoC bzw. die einzuladende Energiemenge erreicht. Anhand des vorgegebenen Ladestroms wird der Zeitpunkt berechnet, an dem die Ladung spätestens starten muss.'),h("br",null,null,-1),i(' Ist der berechnete Zeitpunkt des Ladestarts noch nicht erreicht, wird mit Überschuss geladen. Auch nach Erreichen des Ziel-SoCs wird mit Überschuss geladen, solange bis das "SoC-Limit für das Fahrzeug" erreicht wird.'),h("br",null,null,-1),i(" Kann der Ziel-SoC bzw. die Energiemenge NICHT erreicht werden, z.B. weil das Auto zu spät angesteckt wurde oder das Lastmanagement eingegriffen hat, wird bis 20 Minuten nach dem angegebenen Termin mit der Maximalstromstärke geladen. Danach wird der Termin verworfen und mit Überschuss geladen. ")])]),default:l(()=>[e[66]||(e[66]=i(" Zielladen "))]),_:2},1024),(d(!0),g(P,null,E(s.getChargeTemplateScheduledChargingPlans(r),(n,c)=>(d(),p(A,{key:c,title:n.name,collapsible:!0,collapsed:!0},{actions:l(u=>[u.collapsed==!0?(d(),g("span",{key:0,class:x(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:N(U=>t.updateState(c,!n.active,"active"),["stop"])},[n.limit.selected=="soc"?(d(),g("span",xe,[a(v,{"fixed-width":"",icon:["fas","car-battery"]}),i(" "+C(n.limit.soc_scheduled)+"% ",1)])):m("",!0),n.limit.selected=="amount"?(d(),g("span",Ne,[a(v,{"fixed-width":"",icon:["fas","bolt"]}),i(" "+C(n.limit.amount/1e3)+"kWh ",1)])):m("",!0),a(v,{"fixed-width":"",icon:["fas","clock"]}),i(" "+C(n.time)+" ",1),n.frequency.selected=="once"?(d(),g("span",Oe,[a(v,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+C(t.formatDate(n.frequency.once)),1)])):m("",!0),n.frequency.selected=="daily"?(d(),g("span",Ie,[a(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),n.frequency.selected=="weekly"?(d(),g("span",Re,[a(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,Ze)):m("",!0),u.collapsed==!1?(d(),p(T,{key:1,class:"bg-danger clickable",onClick:U=>s.removeChargeTemplateSchedulePlanModal(r,c,U)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:l(()=>[a(z,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":u=>t.updateState(c,u,"name")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitpunkt aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":u=>t.updateState(c,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(z,{title:"Ziel-Uhrzeit",subtype:"time","model-value":n.time,"onUpdate:modelValue":u=>t.updateState(c,u,"time")},{help:l(()=>[...e[67]||(e[67]=[i(" Hier ist die gewünschte Uhrzeit einzustellen, zu welcher das Fahrzeug den gewünschten SoC bzw. die zu ladende Energiemenge BEREITS ERREICHT haben soll. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":n.current,"onUpdate:modelValue":u=>t.updateState(c,u,"current")},{help:l(()=>[...e[68]||(e[68]=[i(" Mit dieser Stromstärke wird der Zeitpunkt berechnet, wann die Ladung mit Netzbezug gestartet werden muss. Wird der Ziel-SoC nicht zum angegebenen Termin erreicht, weil z.B. das Auto erst später angesteckt wurde, wird auch mit einer höheren Stromstärke geladen. Um etwas Puffer zu haben, empfiehlt es sich, etwas weniger als die Maximalstromstärke des Fahrzeugs zu wählen. ")])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(n.dc_current),"onUpdate:modelValue":u=>t.updateState(c,t.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Ziel",buttons:[{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":n.limit.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.selected")},{help:l(()=>[...e[69]||(e[69]=[i(" Bestimmt die Art der Grenze für den Ladevorgang. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),n.limit.selected=="soc"?(d(),p(S,{key:1,title:"Fahrzeug-SoC zum Zielzeitpunkt",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc_scheduled,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc_scheduled")},{help:l(()=>[...e[70]||(e[70]=[i(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll (Ziel-SoC). ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n.limit.selected=="soc"?(d(),p(S,{key:2,title:"Fahrzeug-SoC mit Überschuss",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc_limit,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc_limit")},{help:l(()=>[...e[71]||(e[71]=[i(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. Sobald das SoC-Limit erreicht wurde, findet keine Ladung mehr mit Überschuss statt! ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n.limit.selected=="amount"?(d(),p(w,{key:3,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":n.limit.amount/1e3,"onUpdate:modelValue":u=>t.updateState(c,u*1e3,"limit.amount")},{help:l(()=>[...e[72]||(e[72]=[i(" Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zielladen schon ausgewählt ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(d(),p(z,{key:4,title:"Datum",subtype:"date","model-value":n.frequency.once,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n.frequency.selected=="weekly"?(d(),g("div",$e,[(d(!0),g(P,null,E(t.weekdays,(u,U)=>(d(),p(_,{key:U,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[U],"onUpdate:modelValue":D=>t.updateState(c,D,"frequency.weekly."+U)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128)),b.installAssistantActive?m("",!0):(d(),g("div",He,[e[75]||(e[75]=h("hr",null,null,-1)),a(L,null,{actions:l(()=>[a(T,{class:"bg-success clickable",onClick:n=>s.addChargeTemplateTimeChargingPlan(r,n)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:l(()=>[...e[73]||(e[73]=[i(" Mit einem Zeitplan kann ein klar abgegrenzter Zeitbereich zum Fahrzeugladen definiert werden. Dies wird häufig genutzt, um einem Fahrzeug kurz vor der Abfahrt Strom anzubieten, damit dessen Vorklimatisierung nicht aus dem Fahrzeugakku, sondern aus der openWB bezogen wird (Enteisung, Vorwärmung, Abkühlung). Nicht von der Vorklimatisierung benötigter Strom erhöht dabei den Fahrzeug-SoC. Um das Stromnetz am Morgen nicht unnötig zu strapazieren, sollte eine moderate Stromvorgabe und ein beschränkter Zeitbereich vorgegeben werden (z.B. max. 10A; 30min - in Übereinstimmung mit den Fahrzeug-App-Vorklimatisierungsvorgaben). ")])]),default:l(()=>[e[74]||(e[74]=i(" Laden nach Zeitplan "))]),_:2},1024)])),(d(!0),g(P,null,E(s.getChargeTemplateTimeChargingPlans(r),(n,c)=>(d(),p(A,{key:c,title:n.name,collapsible:!0,collapsed:!0},{actions:l(u=>[u.collapsed==!0?(d(),g("span",{key:0,class:x(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:N(U=>t.updateState(c,!n.active,"active"),["stop"])},[n.limit.selected=="soc"?(d(),g("span",Je,[a(v,{"fixed-width":"",icon:["fas","car-battery"]}),i(" "+C(n.limit.soc)+"% ",1)])):m("",!0),n.limit.selected=="amount"?(d(),g("span",Ge,[a(v,{"fixed-width":"",icon:["fas","bolt"]}),i(" "+C(n.limit.amount/1e3)+"kWh ",1)])):m("",!0),a(v,{"fixed-width":"",icon:["fas","clock"]}),i(" "+C(n.time[0])+" - "+C(n.time[1])+" ",1),n.frequency.selected=="once"?(d(),g("span",Xe,[a(v,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+C(t.formatDate(n.frequency.once[0])==t.formatDate(n.frequency.once[1])?t.formatDate(n.frequency.once[0]):t.formatDate(n.frequency.once[0])+" - "+t.formatDate(n.frequency.once[1])),1)])):m("",!0),n.frequency.selected=="daily"?(d(),g("span",Qe,[a(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),n.frequency.selected=="weekly"?(d(),g("span",Ye,[a(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,je)):m("",!0),u.collapsed==!1?(d(),p(T,{key:1,class:"bg-danger clickable",onClick:U=>s.removeChargeTemplateTimeChargingPlanModal(r,c,U)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:l(()=>[a(z,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":u=>t.updateState(c,u,"name")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":u=>t.updateState(c,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":n.current,"onUpdate:modelValue":u=>t.updateState(c,u,"current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(n.dc_current),"onUpdate:modelValue":u=>t.updateState(c,t.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":n.limit.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.selected")},{help:l(()=>[...e[76]||(e[76]=[i(" Bestimmt die Art der Grenze für den Ladevorgang. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),n.limit.selected=="soc"?(d(),p(S,{key:1,title:"Ziel-SoC für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc")},{help:l(()=>[...e[77]||(e[77]=[i(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n.limit.selected=="amount"?(d(),p(w,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":n.limit.amount/1e3,"onUpdate:modelValue":u=>t.updateState(c,u*1e3,"limit.amount")},{help:l(()=>[...e[78]||(e[78]=[i(" Maximal zu ladende Energie innerhalb des Zeitfensters. Eignet sich immer dann wenn kein SoC zur Verfügung steht. Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zeitladen schon aktiv ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(z,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":n.time[0],"onUpdate:modelValue":u=>t.updateState(c,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(z,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":n.time[1],"onUpdate:modelValue":u=>t.updateState(c,u,"time.1")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(d(),p(z,{key:3,title:"Gültig ab",subtype:"date","model-value":n.frequency.once[0],"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n.frequency.selected=="once"?(d(),p(z,{key:4,title:"Gültig bis",subtype:"date",min:n.frequency.once[0],"model-value":n.frequency.once[1],"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):m("",!0),n.frequency.selected=="weekly"?(d(),g("div",Ke,[(d(!0),g(P,null,E(t.weekdays,(u,U)=>(d(),p(_,{key:U,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[U],"onUpdate:modelValue":D=>t.updateState(c,D,"frequency.weekly."+U)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128))]),_:2},[r.endsWith("/0")?void 0:{name:"actions",fn:l(n=>[n.collapsed?m("",!0):(d(),p(T,{key:0,class:"bg-danger clickable",onClick:c=>s.removeChargeTemplateModal(r,c)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),a(R,{"form-name":"vehicleConfigForm",onSave:e[5]||(e[5]=o=>t.$emit("save")),onReset:e[6]||(e[6]=o=>t.$emit("reset")),onDefaults:e[7]||(e[7]=o=>t.$emit("defaults"))})])])],64)}const tt=M(_e,[["render",et],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]),ot=Object.freeze(Object.defineProperty({__proto__:null,default:tt},Symbol.toStringTag,{value:"Module"}));export{se as V,tt as a,ot as b}; +import{l as $,d as H,a9 as j,E as J,aj as G,ak as Q,D as X,Z as Y,R as K,$ as ee,al as te,Q as ne,F as ae,L as le}from"./vendor-fortawesome-9d7cfdfb.js";import{_ as k,C as ie}from"./index-b236cee5.js";import{_ as oe}from"./dynamic-import-helper-be004503.js";import{_ as M,u as V,l as d,m as g,x as p,E as l,B as i,F as C,G as a,A as h,a1 as re,a2 as de,N as P,z as m,M as y,D as F,q as x,y as N}from"./vendor-ad7c30fd.js";const ue={props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},se=M(ue,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/VehicleConfigMixin.vue"]]),me={name:"VehicleConfigFallback",mixins:[se]},ge={class:"vehicle-fallback"},he={key:1};function ce(t,e,b,B,f,s){const W=V("openwb-base-alert"),v=V("openwb-base-textarea");return d(),g("div",ge,[Object.keys(t.vehicle.configuration).length==0?(d(),p(W,{key:0,subtype:"info"},{default:l(()=>[i(' Der Fahrzeug-Typ "'+C(t.vehicle.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(d(),g("div",he,[a(W,{subtype:"warning"},{default:l(()=>[i(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+C(t.vehicle.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(v,{title:"Konfiguration",subtype:"json","model-value":t.vehicle.configuration,"onUpdate:modelValue":e[0]||(e[0]=T=>t.updateConfiguration(T,"configuration"))},{help:l(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),a(W,{subtype:"info"},{default:l(()=>[h("pre",null,C(JSON.stringify(t.vehicle.configuration,void 0,2)),1)]),_:1})]))])}const pe=M(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),be={name:"OpenwbVehicleProxy",props:{vehicleId:{type:Number,required:!0},vehicle:{type:Object,required:!0}},emits:["update:configuration"],methods:{getVehicleComponent(){return console.debug(`loading vehicle: ${this.vehicle.type}`),re({loader:()=>oe(Object.assign({"./aiways/vehicle.vue":()=>k(()=>import("./vehicle-711a16c0.js"),["assets/vehicle-711a16c0.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./bmwbc/vehicle.vue":()=>k(()=>import("./vehicle-048a17cd.js"),["assets/vehicle-048a17cd.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./evcc/vehicle.vue":()=>k(()=>import("./vehicle-0cab1a3e.js"),["assets/vehicle-0cab1a3e.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./evnotify/vehicle.vue":()=>k(()=>import("./vehicle-2530ac78.js"),["assets/vehicle-2530ac78.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./http/vehicle.vue":()=>k(()=>import("./vehicle-9213f7f9.js"),["assets/vehicle-9213f7f9.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./json/vehicle.vue":()=>k(()=>import("./vehicle-6006f37f.js"),["assets/vehicle-6006f37f.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kia/vehicle.vue":()=>k(()=>import("./vehicle-e12b30b1.js"),["assets/vehicle-e12b30b1.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./manual/vehicle.vue":()=>k(()=>import("./vehicle-3f811862.js"),["assets/vehicle-3f811862.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mercedeseq/vehicle.vue":()=>k(()=>import("./vehicle-dfe6b66d.js"),["assets/vehicle-dfe6b66d.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mqtt/vehicle.vue":()=>k(()=>import("./vehicle-5227ffda.js"),["assets/vehicle-5227ffda.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./ovms/vehicle.vue":()=>k(()=>import("./vehicle-d18e5ce2.js"),["assets/vehicle-d18e5ce2.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./psa/vehicle.vue":()=>k(()=>import("./vehicle-14a72276.js"),["assets/vehicle-14a72276.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./psacc/vehicle.vue":()=>k(()=>import("./vehicle-94956e80.js"),["assets/vehicle-94956e80.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./renault/vehicle.vue":()=>k(()=>import("./vehicle-b63b1879.js"),["assets/vehicle-b63b1879.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./skodaconnect/vehicle.vue":()=>k(()=>import("./vehicle-d5f5aff5.js"),["assets/vehicle-d5f5aff5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smarthello/vehicle.vue":()=>k(()=>import("./vehicle-c305e7fc.js"),["assets/vehicle-c305e7fc.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/vehicle.vue":()=>k(()=>import("./vehicle-18edee3a.js"),["assets/vehicle-18edee3a.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-axios-8313efad.js","assets/index-b236cee5.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tronity/vehicle.vue":()=>k(()=>import("./vehicle-7ee8a745.js"),["assets/vehicle-7ee8a745.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./vwid/vehicle.vue":()=>k(()=>import("./vehicle-865f01e8.js"),["assets/vehicle-865f01e8.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.vehicle.type}/vehicle.vue`),errorComponent:pe})},updateConfiguration(t){this.$emit("update:configuration",t)}}};function ve(t,e,b,B,f,s){const W=V("openwb-base-heading");return d(),g(P,null,[a(W,null,{default:l(()=>[i(' Einstellungen für SoC-Modul "'+C(b.vehicle.name)+'" ',1)]),_:1}),(d(),p(de(s.getVehicleComponent()),{"vehicle-id":b.vehicleId,vehicle:b.vehicle,"onUpdate:configuration":e[0]||(e[0]=v=>s.updateConfiguration(v))},null,40,["vehicle-id","vehicle"]))],64)}const fe=M(be,[["render",ve],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);$.add(H,j,J,G,Q,X,Y,K,ee,te,ne);const _e={name:"OpenwbVehicleConfigView",components:{FontAwesomeIcon:ae,FontAwesomeLayers:le,OpenwbVehicleProxy:fe},mixins:[ie],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/et/provider","openWB/optional/rfid/active","openWB/vehicle/template/ev_template/+","openWB/vehicle/template/charge_template/+","openWB/vehicle/template/charge_template/+/chargemode/scheduled_charging/plans/+","openWB/vehicle/template/charge_template/+/time_charging/plans/+","openWB/vehicle/+/name","openWB/vehicle/+/info","openWB/vehicle/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/general_config","openWB/vehicle/+/soc_module/config"],showVehicleModal:!1,modalVehicleIndex:void 0,showEvTemplateModal:!1,modalEvTemplateIndex:void 0,showChargeTemplateModal:!1,modalChargeTemplateIndex:void 0,showChargeTemplateSchedulePlanModal:!1,modalChargeTemplateSchedulePlanIndex:void 0,showChargeTemplateTimeChargingPlanModal:!1,modalChargeTemplateTimeChargingPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let t=[];return Object.keys(this.evTemplates).forEach(e=>{let b=parseInt(e.match(/([0-9]+)$/g)[0]),B=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+b].name;t.push({value:b,text:B})}),t}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let t=[];return Object.keys(this.chargeTemplates).forEach(e=>{let b=parseInt(e.match(/([0-9]+)$/g)[0]),B=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+b].name;t.push({value:b,text:B})}),t}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(t){let e=t.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(t){let e=t.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/+")},addVehicle(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(t,e){e.stopPropagation(),this.modalVehicleIndex=t,this.showVehicleModal=!0},removeVehicle(t,e){this.showVehicleModal=!1,e=="confirm"&&this.$emit("sendCommand",{command:"removeVehicle",data:{id:t}})},getVehicleName(t){return this.$store.state.mqtt["openWB/vehicle/"+t+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+t+"/name"]:"Fahrzeug "+t},getSocDefaultConfiguration(t){const e=this.socModuleList.find(b=>b.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for soc type!",t),{})},updateSelectedSocModule(t,e){this.updateState("openWB/vehicle/"+t+"/soc_module/config",e,"type"),this.updateState("openWB/vehicle/"+t+"/soc_module/config",this.getSocDefaultConfiguration(e))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},addEvTemplate(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(t,e){e.stopPropagation(),this.modalEvTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(t,e){this.showEvTemplateModal=!1,e=="confirm"&&this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:t}})},getEvTemplateName(t){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+t]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+t].name:"Fahrzeug-Profil "+t},addChargeTemplate(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(t){return parseInt(t.match(/([^/]+)$/)[0])},removeChargeTemplateModal(t,e){e.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(t),this.showChargeTemplateModal=!0},removeChargeTemplate(t,e){this.showChargeTemplateModal=!1,e=="confirm"&&this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:t}})},getChargeTemplateName(t){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t].name:"Lade-Profil "+t},getChargeTemplateSchedulePlanName(t,e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/chargemode/scheduled_charging/plans/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/chargemode/scheduled_charging/plans/"+e].name:"Zielladen Zeitplan "+t+"/"+e},addChargeTemplateSchedulePlan(t,e){e.stopPropagation();let b=parseInt(t.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:b}})},removeChargeTemplateSchedulePlanModal(t,e,b){b.stopPropagation(),this.modalChargeTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(t,e,b){this.showChargeTemplateSchedulePlanModal=!1,b=="confirm"&&this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:t,plan:e}})},getChargeTemplateTimeChargingPlanName(t,e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/time_charging/plans/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/time_charging/plans/"+e].name:"Zeitladen Zeitplan "+t+"/"+e},addChargeTemplateTimeChargingPlan(t,e){e.stopPropagation();let b=parseInt(t.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:b}})},removeChargeTemplateTimeChargingPlanModal(t,e,b){b.stopPropagation(),this.modalChargeTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(t,e,b){this.showChargeTemplateTimeChargingPlanModal=!1,b=="confirm"&&this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:t,plan:e}})}}},we={class:"vehicleConfig"},ke={name:"vehicleConfigForm"},Ve={key:0},Ce={key:1},Se={key:2},ze=["innerHTML"],Ue={key:3},Te={key:0},We={key:1},Le={key:0},Pe={key:1},Ae={key:0},Ee={key:0},ye={key:3},Be={key:0},Fe={key:1},Me={key:0},qe={key:0},De={key:0},Ze=["onClick"],xe={key:0},Ne={key:1},Oe={key:2},Ie={key:3},Re={key:4},$e={key:5},He={key:4},je=["onClick"],Je={key:0},Ge={key:1},Qe={key:2},Xe={key:3},Ye={key:4},Ke={key:5};function et(t,e,b,B,f,s){const W=V("openwb-base-modal-dialog"),v=V("font-awesome-icon"),T=V("openwb-base-avatar"),E=V("openwb-base-alert"),z=V("openwb-base-text-input"),q=V("openwb-base-select-input"),O=V("openwb-base-array-input"),_=V("openwb-base-button-group-input"),L=V("openwb-base-heading"),w=V("openwb-base-number-input"),I=V("openwb-vehicle-proxy"),A=V("openwb-base-card"),Z=V("font-awesome-layers"),S=V("openwb-base-range-input"),R=V("openwb-base-submit-buttons");return d(),g(P,null,[a(W,{show:f.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=o=>s.removeVehicle(f.modalVehicleIndex,o))},{default:l(()=>[i(' Wollen Sie das Fahrzeug "'+C(s.getVehicleName(f.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[1]||(e[1]=o=>s.removeEvTemplate(f.modalEvTemplateIndex,o))},{default:l(()=>[i(' Wollen Sie das Fahrzeug-Profil "'+C(s.getEvTemplateName(f.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[2]||(e[2]=o=>s.removeChargeTemplate(f.modalChargeTemplateIndex,o))},{default:l(()=>[i(' Wollen Sie das Lade-Profil "'+C(s.getChargeTemplateName(f.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[3]||(e[3]=o=>s.removeChargeTemplateSchedulePlan(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex,o))},{default:l(()=>[i(' Wollen Sie den Zielladen Zeitplan "'+C(s.getChargeTemplateSchedulePlanName(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[4]||(e[4]=o=>s.removeChargeTemplateTimeChargingPlan(f.modalChargeTemplateIndex,f.modalChargeTemplateTimeChargingPlanIndex,o))},{default:l(()=>[i(' Wollen Sie den Zeitladen Zeitplan "'+C(s.getChargeTemplateTimeChargingPlanName(f.modalChargeTemplateIndex,f.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),h("div",we,[h("form",ke,[a(A,{subtype:"info",collapsible:!0,collapsed:t.$route.params.section!="vehicle"},{header:l(()=>[a(v,{"fixed-width":"",icon:["fas","car"]}),e[8]||(e[8]=i(" Fahrzeuge "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:s.addVehicle},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Ve,[a(E,{subtype:"info"},{default:l(()=>e[9]||(e[9]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",Ce,[(d(!0),g(P,null,y(s.vehicleIndexes,o=>(d(),p(A,{key:o,title:s.getVehicleName(o),collapsible:!0,collapsed:!(t.$route.params.section=="vehicle"&&parseInt(t.$route.params.section_index)==o),subtype:"info"},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/name"],disabled:o===0,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/name",r)},F({_:2},[o===0?{name:"help",fn:l(()=>[e[10]||(e[10]=i(" Das Standard-Fahrzeug kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),o!==0?(d(),p(z,{key:0,title:"Fahrzeughersteller ","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/info"].manufacturer,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/info",r,"manufacturer")},{help:l(()=>[...e[11]||(e[11]=[i(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),o!==0?(d(),p(z,{key:1,title:"Fahrzeugmodell","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/info"].model,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/info",r,"model")},{help:l(()=>[...e[12]||(e[12]=[i(" Optional: zusätzliche Information für den Systembericht."),h("br",null,null,-1),i(" Nach Möglichkeit auch Angabe des Baujahres, da es durchaus beim Verhalten des Fahrzeugs Unterschiede geben kann. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(E,{subtype:"info"},{default:l(()=>[...e[13]||(e[13]=[i(" Ein anderes Fahrzeug-Profil wird erst NACH dem Abstecken übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")])]),_:1}),a(q,{title:"Fahrzeug-Profil",options:s.evTemplateList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/ev_template"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/ev_template",r)},null,8,["options","model-value","onUpdate:modelValue"]),a(q,{title:"Lade-Profil",options:s.chargeTemplateList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/charge_template"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/charge_template",r)},null,8,["options","model-value","onUpdate:modelValue"]),e[24]||(e[24]=h("hr",null,null,-1)),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!b.installAssistantActive?(d(),g("div",Se,[a(O,{title:"Zugeordnete ID-Tags","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/tag_id"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/tag_id",r)},null,8,["model-value","onUpdate:modelValue"]),a(E,{subtype:"info"},{default:l(()=>[e[14]||(e[14]=i(" Die hier eingetragenen ID-Tags dienen ausschließlich der Fahrzeugzuordnung.")),e[15]||(e[15]=h("br",null,null,-1)),h("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,ze)]),_:1}),e[16]||(e[16]=h("hr",null,null,-1))])):m("",!0),a(q,{class:"mb-2",title:"SoC-Modul des Fahrzeugs",options:s.socModuleList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"].type,"onUpdate:modelValue":r=>s.updateSelectedSocModule(o,r)},{help:l(()=>[...e[17]||(e[17]=[i(" Mit einem SoC-Modul kann der Ladestand des Fahrzeugs ermittelt und geregelt werden. Z.B. lassen sich unabhängig vom Fahrzeug bestimmte SoC-Werte einstellen, um den Fahrzeugakku zu schonen. Aktuell werden die SoC-Werte mittels der App-Zugangsdaten aus dem Herstellerserver des Fahrzeuges ausgelesen. Zukünftig soll auch eine direkte SoC-Auslesung aus dem Fahrzeug möglich werden (openWB Pro)."),h("br",null,null,-1),i(" Die SoC-Abfrage erfolgt automatisch beim Anstecken des Fahrzeuges und zusätzlich über einstellbare Abfrageintervalle während des Ladens und Nichtladens. Die Abfrage kann auch manuell durch Klick auf den Reload-Pfeil auf der Hauptseite ausgelöst werden."),h("br",null,null,-1),i(" Wenn eine Abfrage fehlschlägt, wird noch drei weitere Male im Abstand von 5 Minuten versucht, den SoC abzufragen. Wenn dies nicht erfolgreich ist, wird der SoC auf 0% gesetzt um zu vermeiden, dass ein Auto beim SoC-basierten Laden nicht geladen wird. Die Abfrage erfolgt dann wieder in den oben genannten Intervallen."),h("br",null,null,-1),i(" Da aktuell die SoC-Abfragen über Onlineserver der Fahrzeughersteller laufen, ist infolge möglicher Umstellungen/Wartungen keine 100%-ig sichere SoC-Abfrage garantiert. Auch kann es zu SoC-Abweichungen infolge von zeitlicher Verzögerungen kommen. Hilfestellung erfolgt primär im openWB-Forum. ")])]),_:2},1032,["options","model-value","onUpdate:modelValue"]),t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"].type?(d(),g("div",Ue,[a(_,{title:"SoC direkt aus Fahrzeug auslesen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].use_soc_from_cp,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r,"use_soc_from_cp")},{help:l(()=>[...e[18]||(e[18]=[i(" Wenn Ladepunkt und Fahrzeug das direkte Auslesen des SoCs über das Ladekabel unterstützen, wird der SoC nach dem Anstecken aus dem Fahrzeug ausgelesen und während der Ladung berechnet. Das direkte Auslesen des SoC aus dem Fahrzeug ist aktuell nur mit einer openWB Pro möglich. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(L,null,{help:l(()=>[...e[19]||(e[19]=[i(" Einige Hersteller begrenzen die möglichen Abfragen. Sobald ein gewisses Limit in einem Zeitraum überschritten wird, werden weitere Anfragen blockiert. Die Zeitintervalle sollten daher nicht zu klein gewählt werden. ")])]),default:l(()=>[e[20]||(e[20]=i(" Aktualisierung der Fahrzeugdaten "))]),_:1}),a(w,{title:"Während der Ladung",unit:"Min.",min:1,required:"","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_interval_charging/60,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r*60,"request_interval_charging")},{help:l(()=>[...e[21]||(e[21]=[i(" Der Ladestand des Fahrzeugs (SoC) wird bei einem laufenden Ladevorgang in dem hier eingestellten Intervall in Minuten abgefragt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Ohne laufende Ladung",unit:"Min.",min:1,required:"","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_interval_not_charging/60,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r*60,"request_interval_not_charging")},{help:l(()=>[...e[22]||(e[22]=[i(" Der Ladestand des Fahrzeugs (SoC) wird in dem hier eingestellten Intervall in Minuten abgefragt, falls kein Ladevorgang aktiv ist. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Nur aktualisieren wenn angesteckt",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_only_plugged,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r,"request_only_plugged")},{help:l(()=>[...e[23]||(e[23]=[i(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(I,{"vehicle-id":o,vehicle:t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"],"onUpdate:configuration":r=>s.updateConfiguration("openWB/vehicle/"+o+"/soc_module/config",r)},null,8,["vehicle-id","vehicle","onUpdate:configuration"])])):m("",!0)]),_:2},[o!==0?{name:"actions",fn:l(r=>[r.collapsed?m("",!0):(d(),p(T,{key:0,class:"bg-danger clickable",onClick:n=>s.removeVehicleModal(o,n)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),e[81]||(e[81]=h("hr",{class:"border-secondary"},null,-1)),a(L,null,{default:l(()=>e[25]||(e[25]=[i("Profile")])),_:1}),a(A,{collapsible:!0,collapsed:!0},{header:l(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:l(()=>[a(v,{"fixed-width":"",icon:["far","file"]}),a(v,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),e[26]||(e[26]=i(" Fahrzeug-Profile "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:s.addEvTemplate},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Te,[a(E,{subtype:"info"},{default:l(()=>e[27]||(e[27]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",We,[a(E,{subtype:"info"},{default:l(()=>e[28]||(e[28]=[i(" Ein anderes Fahrzeug-Profil wird erst "),h("span",{class:"text-uppercase font-weight-bold"}," nach dem Abstecken ",-1),i(" übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")])),_:1}),(d(!0),g(P,null,y(s.evTemplates,(o,r)=>(d(),p(A,{key:r,title:o.name?o.name:r,collapsible:!0,collapsed:!0},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":o.name,disabled:r.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(r,n,"name")},F({_:2},[r.endsWith("/0")?{name:"help",fn:l(()=>[e[29]||(e[29]=i(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),a(L,null,{default:l(()=>[...e[30]||(e[30]=[i(" Angaben zur Batterie ")])]),_:1}),a(w,{title:"Kapazität der Batterie",unit:"kWh",min:1,step:1,required:"","model-value":o.battery_capacity/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"battery_capacity")},{help:l(()=>[...e[31]||(e[31]=[i(" Angabe der Netto-Kapazität der Fahrzeugbatterie. Dient zur Berechnung des manuellen SoC und der geladenen Reichweite. Die Netto-Kapazität unterscheidet sich meist von den Angaben der Fahrzeughersteller. So besitzt ein Tesla Model S 90 z. B. nur ca. 83kWh und nicht die durch die Typenbezeichnung suggerierten 90kWh. Andere Hersteller begrenzen die nutzbare Kapazität absichtlich, um eine höhere Lebensdauer der Akkus zu erreichen. Gängig sind eine Drosselung auf 90% der angegebenen Brutto-Kapazität. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),g("div",Le,[a(w,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",min:1,max:100,required:"","model-value":o.efficiency,"onUpdate:modelValue":n=>t.updateState(r,n,"efficiency")},{help:l(()=>[...e[32]||(e[32]=[i(" Durch Verluste in der Ladeelektronik (z. B. Umwandlung Wechselspannung in Gleichspannung) gelangt nicht die komplette Energie, welche durch den Zähler in der Wallbox gemessen wird, in den Akku des Fahrzeugs. Der anzugebende Wert liegt bei gängigen Fahrzeugen im Bereich 90-95%. Eine Ausnahme stellt der Zoe dar, dessen Chameleon-Lader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),h("br",null,null,-1),i(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),h("br",null,null,-1),i(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),h("br",null,null,-1),i(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),h("br",null,null,-1)])]),_:2},1032,["model-value","onUpdate:modelValue"])])),a(w,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:1,step:.1,required:"","model-value":o.average_consump/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),g("div",Pe,[a(L,null,{default:l(()=>[...e[33]||(e[33]=[i(" Angaben zur Ladeleistung (DC) ")])]),_:1}),a(w,{title:"Mindestleistung",min:0,unit:"kW","model-value":t.ac_current2dc_power(o.dc_min_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"dc_min_current")},null,8,["model-value","onUpdate:modelValue"]),a(w,{title:"Maximalleistung",unit:"kW","model-value":t.ac_current2dc_power(o.dc_max_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])])):m("",!0),a(L,null,{default:l(()=>[e[34]||(e[34]=i(" Angaben zum Ladestrom ")),s.dcChargingEnabled===!0?(d(),g("span",Ae," (AC) ")):m("",!0)]),_:1}),a(S,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":o.min_current,"onUpdate:modelValue":n=>t.updateState(r,n,"min_current")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":o.max_current_single_phase,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":o.max_current_multi_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),a(w,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":o.nominal_difference,"onUpdate:modelValue":n=>t.updateState(r,n,"nominal_difference")},{help:l(()=>[...e[35]||(e[35]=[i(" In manchen Lademodi, z.B. bei der automatischen Phasenumschaltung, wird geprüft, ob das Fahrzeug mit der vorgegebenen Stromstärke lädt. Manche Fahrzeuge laden nicht exakt mit der vorgegebenen Stromstärke. Die erlaubte Abweichung kann hier eingestellt werden. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(L,null,{default:l(()=>[e[36]||(e[36]=i(" Angaben zur Handhabung von Phasen ")),s.dcChargingEnabled===!0?(d(),g("span",Ee," (AC) ")):m("",!0)]),_:1}),a(_,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":o.max_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"max_phases")},{help:l(()=>[...e[37]||(e[37]=[i(" Anzahl der Phasen, die der Fahrzeuglader (s.g. OBC - OnboardCharger) bereitstellt. Plugin-Hybride haben meist nur eine Phase, reine E-Autos meist 2 bis 3 Phasen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"CP-Unterbrechung",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.control_pilot_interruption,"onUpdate:modelValue":n=>t.updateState(r,n,"control_pilot_interruption")},{help:l(()=>[...e[38]||(e[38]=[i(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o.control_pilot_interruption?(d(),p(w,{key:2,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":o.control_pilot_interruption_duration,"onUpdate:modelValue":n=>t.updateState(r,n,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.prevent_phase_switch,"onUpdate:modelValue":n=>t.updateState(r,n,"prevent_phase_switch")},{help:l(()=>[...e[39]||(e[39]=[i(' Erläuterung zu 1p3p siehe "Ladeeinstellungen" ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Ladung aktiv halten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.prevent_charge_stop,"onUpdate:modelValue":n=>t.updateState(r,n,"prevent_charge_stop")},{help:l(()=>[...e[40]||(e[40]=[i(" Der Ladevorgang wird in den Lademodi PV- und Zielladen nach Ladebeginn nicht unterbrochen, selbst wenn nicht mehr genug Überschuss vorhanden ist. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach einer Ladungsunterbrechung keine Ladung mehr starten. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,required:"","model-value":o.phase_switch_pause,"onUpdate:modelValue":n=>t.updateState(r,n,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),g("div",ye,[a(w,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,required:"","model-value":o.keep_charge_active_duration,"onUpdate:modelValue":n=>t.updateState(r,n,"keep_charge_active_duration")},{help:l(()=>[...e[41]||(e[41]=[i(" Manche Fahrzeuge benötigen nach der Umschaltung einige Zeit, bis sie mit der vorgegebenen Phasenzahl laden. In dieser Zeit wird keine neue Phasenumschaltung angestoßen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]))]),_:2},[r.endsWith("/0")?void 0:{name:"actions",fn:l(n=>[t.$store.state.mqtt["openWB/general/extern"]===!1&&!n.collapsed?(d(),p(T,{key:0,class:"bg-danger clickable",onClick:c=>s.removeEvTemplateModal(r,c)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),a(A,{collapsible:!0,collapsed:t.$route.params.section!="charge_template"},{header:l(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:l(()=>[a(v,{"fixed-width":"",icon:["far","file"]}),a(v,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),e[42]||(e[42]=i(" Lade-Profile "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:s.addChargeTemplate},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Be,[a(E,{subtype:"info"},{default:l(()=>e[43]||(e[43]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",Fe,[(d(!0),g(P,null,y(s.chargeTemplates,(o,r)=>(d(),p(A,{key:r,title:o.name?o.name:r,collapsible:!0,collapsed:!(t.$route.params.section=="charge_template"&&parseInt(t.$route.params.section_index)==s.getChargeTemplateIndex(r))},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":o.name,disabled:r.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(r,n,"name")},F({_:2},[r.endsWith("/0")?{name:"help",fn:l(()=>[e[44]||(e[44]=i(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),a(L,null,{default:l(()=>[...e[45]||(e[45]=[i(" Allgemeine Optionen ")])]),_:1}),a(_,{title:"Aktiver Lademodus",buttons:[{buttonValue:"instant_charging",text:"Sofortladen",class:"btn-outline-danger"},{buttonValue:"pv_charging",text:"PV",class:"btn-outline-success"},{buttonValue:"scheduled_charging",text:"Zielladen",class:"btn-outline-primary"},{buttonValue:"standby",text:"Standby",class:"btn-outline-secondary"},{buttonValue:"stop",text:"Stop",class:"btn-outline-dark"}],"model-value":o.chargemode.selected,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.selected")},{help:l(()=>[...e[46]||(e[46]=[i(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),h("br",null,null,-1),i(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),h("br",null,null,-1),h("ol",null,[h("li",null,"Zielladen (Sofortladen) mit Priorität"),h("li",null,"Zielladen (Sofortladen)"),h("li",null,"Zeitladen mit Priorität"),h("li",null,"Zeitladen"),h("li",null,"Sofortladen mit Priorität"),h("li",null,"Sofortladen"),h("li",null,"PV (Min-Anteil) mit Priorität"),h("li",null,"PV (Min-Anteil)"),h("li",null,"Zielladen (PV) mit Priorität"),h("li",null,"Zielladen (PV)"),h("li",null,"PV (PV-Anteil) mit Priorität"),h("li",null,"PV (PV-Anteil)")],-1)])]),_:2},1032,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),g("div",Me,[a(_,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.prio,"onUpdate:modelValue":n=>t.updateState(r,n,"prio")},{help:l(()=>[...e[47]||(e[47]=[i(" Die Ladefreigabe mit dem jeweils eingestellten Mindeststrom erfolgt für alle Fahrzeuge, soweit die verfügbare Leistung ausreicht. Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, wird auch für Fahrzeuge ohne Priorität mehr Leistung freigegeben. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitladen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.time_charging.active,"onUpdate:modelValue":n=>t.updateState(r,n,"time_charging.active")},{help:l(()=>[...e[48]||(e[48]=[i(' Der Lademodus Zeitladen kann parallel zu einem der anderen Lademodi aktiviert werden. Die Auswahl des Lademodus, der in der Regelung genutzt wird, erfolgt anhand der Übersicht in der Hilfe bei "Aktiver Lademodus". Wenn kein Zeitplan aktiv ist oder das Limit des Zeitplans erreicht wurde, wird der Lademodus verwendet, der bei "Aktiver Lademodus" ausgewählt ist. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Standard nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.load_default,"onUpdate:modelValue":n=>t.updateState(r,n,"load_default")},{help:l(()=>[...e[49]||(e[49]=[i(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Fahrzeug zurückgesetzt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Strompreisbasiert Laden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.et.active,"onUpdate:modelValue":n=>t.updateState(r,n,"et.active")},null,8,["model-value","onUpdate:modelValue"]),o.et.active==!0?(d(),g("div",qe,[!t.$store.state.mqtt["openWB/optional/et/provider"]||!t.$store.state.mqtt["openWB/optional/et/provider"].type?(d(),g("div",De,[a(E,{subtype:"danger"},{default:l(()=>[...e[50]||(e[50]=[i(" Bitte in den übergreifenden Ladeeinstellungen einen Strompreis-Anbieter konfigurieren. ")])]),_:1})])):m("",!0),a(w,{title:"Preisgrenze für Zeit- & Sofortladen",min:"-80",max:"80",step:"0.01",precision:2,unit:"ct/kWh","model-value":o.et.max_price*1e5,"onUpdate:modelValue":n=>t.updateState(r,parseFloat((n/1e5).toFixed(7)),"et.max_price")},{help:l(()=>[...e[51]||(e[51]=[i(" Für Zielladen werden die günstigsten Stunden ermittelt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])])):m("",!0),e[52]||(e[52]=h("hr",null,null,-1))])),a(L,null,{default:l(()=>[...e[53]||(e[53]=[i("Sofortladen")])]),_:1}),a(S,{title:"Soll-Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":o.chargemode.instant_charging.current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:1,title:"Soll-Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.instant_charging.dc_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.instant_charging.dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":o.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.limit.selected")},{help:l(()=>[...e[54]||(e[54]=[i(" Sofortladen kann ohne Fahrzeug-SoC-Begrenzung (Aus), mit Begrenzung des Fahrzeug-SoC (SoC) bei konfiguriertem SoC-Auslesemodul oder mittels Vorgabe eine gewünschten Energiemenge in kWh (Energie) genutzt werden. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"SoC-Limit für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":o.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.limit.soc")},{help:l(()=>[...e[55]||(e[55]=[i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Energie-Limit",unit:"kWh",min:1,step:1,"model-value":o.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"chargemode.instant_charging.limit.amount")},{help:l(()=>[...e[56]||(e[56]=[i(" Die geladene Energiemenge wird beim Wechsel des Lademodus oder nach dem Anstecken, wenn Sofortladen schon ausgewählt ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[79]||(e[79]=h("hr",null,null,-1)),a(L,null,{default:l(()=>[...e[57]||(e[57]=[i("PV-Laden")])]),_:1}),a(S,{title:"Minimaler Dauerstrom"+(s.dcChargingEnabled?" (AC)":""),min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":o.chargemode.pv_charging.min_current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_current")},{help:l(()=>[...e[58]||(e[58]=[i(' Hier kann eine Stromstärke eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Stromwert empfohlen wird. Diese Einstellung entspricht weitestgehend dem Lademodus "Min+PV" der Version 1.x. ')])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:2,title:"Minimale Dauerleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.pv_charging.dc_min_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.pv_charging.dc_min_current")},{help:l(()=>[...e[59]||(e[59]=[i(" Hier kann eine Leistung eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Leistungswert empfohlen wird. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(S,{title:"SoC-Limit für das Fahrzeug",min:0,max:20,step:1,unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":o.chargemode.pv_charging.max_soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.max_soc")},{help:l(()=>[...e[60]||(e[60]=[i(' Bei der Einstellung "100%" wird die Ladung sofort mit Erreichen der 100% beendet. Dadurch erfolgt KEIN Balancing der Batteriezellen. Ist dies gewünscht (sollte ab und an durchgeführt werden), muss hier "Aus" gewählt werden (Schieberegler ganz nach rechts stellen), um die Ladung MIT Balancing bis zur Beendigung durch das Fahrzeug weiterlaufen zu lassen.'),h("br",null,null,-1),i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Mindest-SoC für das Fahrzeug",min:0,max:19,step:1,unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":o.chargemode.pv_charging.min_soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_soc")},{help:l(()=>[...e[61]||(e[61]=[i(' Liegt der Fahrzeug-Ladestand (SoC) unter dem hier eingestellten Wert, dann wird bis zum Erreichen dieses Wertes mit dem eingestellten "Mindest-SoC-Strom" geladen. Dies dient der Sicherstellung eines "Mindest-SoC" - z.B. für eine immer abzudeckende Fahrzeugreichweite - auch wenn kein oder zu wenig Überschuss verfügbar ist (=> Laden mit anteilig Netzstrom). Nach dem Erreichen des "Mindest-SoC" wird bei verfügbarem Überschuss geladen.'),h("br",null,null,-1),i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Mindest-SoC-Strom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":o.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_soc_current")},{help:l(()=>[...e[62]||(e[62]=[i(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit dem hier festgelegten "Mindest-SoC-Strom" initiiert (ggf. mit anteilig Netzbezug). ')])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:3,title:"Mindest-SoC-Leistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.pv_charging.dc_min_soc_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.pv_charging.dc_min_soc_current")},{help:l(()=>[...e[63]||(e[63]=[i(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit der hier festgelegten "Mindest-SoC-Leistung" initiiert (ggf. mit anteilig Netzbezug). ')])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.feed_in_limit")},{help:l(()=>[...e[64]||(e[64]=[i(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[80]||(e[80]=h("hr",null,null,-1)),a(L,null,{actions:l(()=>[a(T,{class:"bg-success clickable",onClick:n=>s.addChargeTemplateSchedulePlan(r,n)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:l(()=>[...e[65]||(e[65]=[i(' Im Lademodus "Zielladen" wird der Ladestrom so angepasst, dass das Fahrzeug zum angegebenen Zeitpunkt den eingestellten SoC bzw. die einzuladende Energiemenge erreicht. Anhand des vorgegebenen Ladestroms wird der Zeitpunkt berechnet, an dem die Ladung spätestens starten muss.'),h("br",null,null,-1),i(' Ist der berechnete Zeitpunkt des Ladestarts noch nicht erreicht, wird mit Überschuss geladen. Auch nach Erreichen des Ziel-SoCs wird mit Überschuss geladen, solange bis das "SoC-Limit für das Fahrzeug" erreicht wird.'),h("br",null,null,-1),i(" Kann der Ziel-SoC bzw. die Energiemenge NICHT erreicht werden, z.B. weil das Auto zu spät angesteckt wurde oder das Lastmanagement eingegriffen hat, wird bis 20 Minuten nach dem angegebenen Termin mit der Maximalstromstärke geladen. Danach wird der Termin verworfen und mit Überschuss geladen. ")])]),default:l(()=>[e[66]||(e[66]=i(" Zielladen "))]),_:2},1024),(d(!0),g(P,null,y(s.getChargeTemplateScheduledChargingPlans(r),(n,c)=>(d(),p(A,{key:c,title:n.name,collapsible:!0,collapsed:!0},{actions:l(u=>[u.collapsed==!0?(d(),g("span",{key:0,class:x(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:N(U=>t.updateState(c,!n.active,"active"),["stop"])},[n.limit.selected=="soc"?(d(),g("span",xe,[a(v,{"fixed-width":"",icon:["fas","car-battery"]}),i(" "+C(n.limit.soc_scheduled)+"% ",1)])):m("",!0),n.limit.selected=="amount"?(d(),g("span",Ne,[a(v,{"fixed-width":"",icon:["fas","bolt"]}),i(" "+C(n.limit.amount/1e3)+"kWh ",1)])):m("",!0),a(v,{"fixed-width":"",icon:["fas","clock"]}),i(" "+C(n.time)+" ",1),n.frequency.selected=="once"?(d(),g("span",Oe,[a(v,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+C(t.formatDate(n.frequency.once)),1)])):m("",!0),n.frequency.selected=="daily"?(d(),g("span",Ie,[a(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),n.frequency.selected=="weekly"?(d(),g("span",Re,[a(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,Ze)):m("",!0),u.collapsed==!1?(d(),p(T,{key:1,class:"bg-danger clickable",onClick:U=>s.removeChargeTemplateSchedulePlanModal(r,c,U)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:l(()=>[a(z,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":u=>t.updateState(c,u,"name")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitpunkt aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":u=>t.updateState(c,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(z,{title:"Ziel-Uhrzeit",subtype:"time","model-value":n.time,"onUpdate:modelValue":u=>t.updateState(c,u,"time")},{help:l(()=>[...e[67]||(e[67]=[i(" Hier ist die gewünschte Uhrzeit einzustellen, zu welcher das Fahrzeug den gewünschten SoC bzw. die zu ladende Energiemenge BEREITS ERREICHT haben soll. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":n.current,"onUpdate:modelValue":u=>t.updateState(c,u,"current")},{help:l(()=>[...e[68]||(e[68]=[i(" Mit dieser Stromstärke wird der Zeitpunkt berechnet, wann die Ladung mit Netzbezug gestartet werden muss. Wird der Ziel-SoC nicht zum angegebenen Termin erreicht, weil z.B. das Auto erst später angesteckt wurde, wird auch mit einer höheren Stromstärke geladen. Um etwas Puffer zu haben, empfiehlt es sich, etwas weniger als die Maximalstromstärke des Fahrzeugs zu wählen. ")])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(n.dc_current),"onUpdate:modelValue":u=>t.updateState(c,t.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Ziel",buttons:[{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":n.limit.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.selected")},{help:l(()=>[...e[69]||(e[69]=[i(" Bestimmt die Art der Grenze für den Ladevorgang. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),n.limit.selected=="soc"?(d(),p(S,{key:1,title:"Fahrzeug-SoC zum Zielzeitpunkt",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc_scheduled,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc_scheduled")},{help:l(()=>[...e[70]||(e[70]=[i(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll (Ziel-SoC). ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n.limit.selected=="soc"?(d(),p(S,{key:2,title:"Fahrzeug-SoC mit Überschuss",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc_limit,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc_limit")},{help:l(()=>[...e[71]||(e[71]=[i(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. Sobald das SoC-Limit erreicht wurde, findet keine Ladung mehr mit Überschuss statt! ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n.limit.selected=="amount"?(d(),p(w,{key:3,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":n.limit.amount/1e3,"onUpdate:modelValue":u=>t.updateState(c,u*1e3,"limit.amount")},{help:l(()=>[...e[72]||(e[72]=[i(" Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zielladen schon ausgewählt ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(d(),p(z,{key:4,title:"Datum",subtype:"date","model-value":n.frequency.once,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n.frequency.selected=="weekly"?(d(),g("div",$e,[(d(!0),g(P,null,y(t.weekdays,(u,U)=>(d(),p(_,{key:U,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[U],"onUpdate:modelValue":D=>t.updateState(c,D,"frequency.weekly."+U)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128)),b.installAssistantActive?m("",!0):(d(),g("div",He,[e[75]||(e[75]=h("hr",null,null,-1)),a(L,null,{actions:l(()=>[a(T,{class:"bg-success clickable",onClick:n=>s.addChargeTemplateTimeChargingPlan(r,n)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:l(()=>[...e[73]||(e[73]=[i(" Mit einem Zeitplan kann ein klar abgegrenzter Zeitbereich zum Fahrzeugladen definiert werden. Dies wird häufig genutzt, um einem Fahrzeug kurz vor der Abfahrt Strom anzubieten, damit dessen Vorklimatisierung nicht aus dem Fahrzeugakku, sondern aus der openWB bezogen wird (Enteisung, Vorwärmung, Abkühlung). Nicht von der Vorklimatisierung benötigter Strom erhöht dabei den Fahrzeug-SoC. Um das Stromnetz am Morgen nicht unnötig zu strapazieren, sollte eine moderate Stromvorgabe und ein beschränkter Zeitbereich vorgegeben werden (z.B. max. 10A; 30min - in Übereinstimmung mit den Fahrzeug-App-Vorklimatisierungsvorgaben). ")])]),default:l(()=>[e[74]||(e[74]=i(" Laden nach Zeitplan "))]),_:2},1024)])),(d(!0),g(P,null,y(s.getChargeTemplateTimeChargingPlans(r),(n,c)=>(d(),p(A,{key:c,title:n.name,collapsible:!0,collapsed:!0},{actions:l(u=>[u.collapsed==!0?(d(),g("span",{key:0,class:x(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:N(U=>t.updateState(c,!n.active,"active"),["stop"])},[n.limit.selected=="soc"?(d(),g("span",Je,[a(v,{"fixed-width":"",icon:["fas","car-battery"]}),i(" "+C(n.limit.soc)+"% ",1)])):m("",!0),n.limit.selected=="amount"?(d(),g("span",Ge,[a(v,{"fixed-width":"",icon:["fas","bolt"]}),i(" "+C(n.limit.amount/1e3)+"kWh ",1)])):m("",!0),a(v,{"fixed-width":"",icon:["fas","clock"]}),i(" "+C(n.time[0])+" - "+C(n.time[1])+" ",1),n.frequency.selected=="once"?(d(),g("span",Qe,[a(v,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+C(t.formatDate(n.frequency.once[0])==t.formatDate(n.frequency.once[1])?t.formatDate(n.frequency.once[0]):t.formatDate(n.frequency.once[0])+" - "+t.formatDate(n.frequency.once[1])),1)])):m("",!0),n.frequency.selected=="daily"?(d(),g("span",Xe,[a(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),n.frequency.selected=="weekly"?(d(),g("span",Ye,[a(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,je)):m("",!0),u.collapsed==!1?(d(),p(T,{key:1,class:"bg-danger clickable",onClick:U=>s.removeChargeTemplateTimeChargingPlanModal(r,c,U)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:l(()=>[a(z,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":u=>t.updateState(c,u,"name")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":u=>t.updateState(c,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":n.current,"onUpdate:modelValue":u=>t.updateState(c,u,"current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(n.dc_current),"onUpdate:modelValue":u=>t.updateState(c,t.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":n.limit.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.selected")},{help:l(()=>[...e[76]||(e[76]=[i(" Bestimmt die Art der Grenze für den Ladevorgang. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),n.limit.selected=="soc"?(d(),p(S,{key:1,title:"Ziel-SoC für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc")},{help:l(()=>[...e[77]||(e[77]=[i(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n.limit.selected=="amount"?(d(),p(w,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":n.limit.amount/1e3,"onUpdate:modelValue":u=>t.updateState(c,u*1e3,"limit.amount")},{help:l(()=>[...e[78]||(e[78]=[i(" Maximal zu ladende Energie innerhalb des Zeitfensters. Eignet sich immer dann wenn kein SoC zur Verfügung steht. Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zeitladen schon aktiv ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(z,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":n.time[0],"onUpdate:modelValue":u=>t.updateState(c,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(z,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":n.time[1],"onUpdate:modelValue":u=>t.updateState(c,u,"time.1")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(d(),p(z,{key:3,title:"Gültig ab",subtype:"date","model-value":n.frequency.once[0],"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n.frequency.selected=="once"?(d(),p(z,{key:4,title:"Gültig bis",subtype:"date",min:n.frequency.once[0],"model-value":n.frequency.once[1],"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):m("",!0),n.frequency.selected=="weekly"?(d(),g("div",Ke,[(d(!0),g(P,null,y(t.weekdays,(u,U)=>(d(),p(_,{key:U,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[U],"onUpdate:modelValue":D=>t.updateState(c,D,"frequency.weekly."+U)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128))]),_:2},[r.endsWith("/0")?void 0:{name:"actions",fn:l(n=>[n.collapsed?m("",!0):(d(),p(T,{key:0,class:"bg-danger clickable",onClick:c=>s.removeChargeTemplateModal(r,c)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),a(R,{"form-name":"vehicleConfigForm",onSave:e[5]||(e[5]=o=>t.$emit("save")),onReset:e[6]||(e[6]=o=>t.$emit("reset")),onDefaults:e[7]||(e[7]=o=>t.$emit("defaults"))})])])],64)}const tt=M(_e,[["render",et],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]),ot=Object.freeze(Object.defineProperty({__proto__:null,default:tt},Symbol.toStringTag,{value:"Module"}));export{se as V,tt as a,ot as b}; diff --git a/web/settings/assets/backup_cloud-c3181aad.js b/web/settings/assets/backup_cloud-36fc78b8.js similarity index 81% rename from web/settings/assets/backup_cloud-c3181aad.js rename to web/settings/assets/backup_cloud-36fc78b8.js index 912d6e851d..d1bfbf5d89 100644 --- a/web/settings/assets/backup_cloud-c3181aad.js +++ b/web/settings/assets/backup_cloud-36fc78b8.js @@ -1 +1 @@ -import{B as r}from"./DataManagement-f14600c5.js";import{_ as i,u as s,l as p,m as d,G as t,E as m,y as a,x as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"BackupCloudSamba",mixins:[r]},f={class:"backup-cloud-samba"};function g(o,e,v,C,c,k){const u=s("openwb-base-text-input");return p(),d("div",f,[t(u,{title:"Server",subtype:"host",required:"","model-value":o.backupCloud.configuration.smb_server,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.smb_server"))},null,8,["model-value"]),t(u,{title:"Freigabe",required:"","model-value":o.backupCloud.configuration.smb_share,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.smb_share"))},null,8,["model-value"]),t(u,{title:"Unterordner (optional)","model-value":o.backupCloud.configuration.smb_path,pattern:'(^\\/$)|(^([^\\\\:"\\|*?<>]+\\/)+$)',required:"","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.smb_path"))},{help:m(()=>e[5]||(e[5]=[a(" Jeder Unterordner muss mit / enden."),l("br",null,null,-1),a(' Die Zeichen \\:"|*?<> sind verboten!'),l("br",null,null,-1),a(" Beispiel 1: openwb/ "),l("br",null,null,-1),a(" Beispiel 2: openwb/lp2/ ")])),_:1},8,["model-value"]),t(u,{title:"Benutzer",subtype:"user","model-value":o.backupCloud.configuration.smb_user,"onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.smb_user"))},null,8,["model-value"]),t(u,{title:"Kennwort",subtype:"password","model-value":o.backupCloud.configuration.smb_password,"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateConfiguration(n,"configuration.smb_password"))},null,8,["model-value"])])}const E=i(b,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/samba/backup_cloud.vue"]]);export{E as default}; +import{B as r}from"./DataManagement-714df651.js";import{_ as i,u as s,l as p,m as d,G as t,E as m,B as a,A as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"BackupCloudSamba",mixins:[r]},f={class:"backup-cloud-samba"};function g(o,e,v,C,c,k){const u=s("openwb-base-text-input");return p(),d("div",f,[t(u,{title:"Server",subtype:"host",required:"","model-value":o.backupCloud.configuration.smb_server,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.smb_server"))},null,8,["model-value"]),t(u,{title:"Freigabe",required:"","model-value":o.backupCloud.configuration.smb_share,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.smb_share"))},null,8,["model-value"]),t(u,{title:"Unterordner (optional)","model-value":o.backupCloud.configuration.smb_path,pattern:'(^\\/$)|(^([^\\\\:"\\|*?<>]+\\/)+$)',required:"","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.smb_path"))},{help:m(()=>e[5]||(e[5]=[a(" Jeder Unterordner muss mit / enden."),l("br",null,null,-1),a(' Die Zeichen \\:"|*?<> sind verboten!'),l("br",null,null,-1),a(" Beispiel 1: openwb/ "),l("br",null,null,-1),a(" Beispiel 2: openwb/lp2/ ")])),_:1},8,["model-value"]),t(u,{title:"Benutzer",subtype:"user","model-value":o.backupCloud.configuration.smb_user,"onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.smb_user"))},null,8,["model-value"]),t(u,{title:"Kennwort",subtype:"password","model-value":o.backupCloud.configuration.smb_password,"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateConfiguration(n,"configuration.smb_password"))},null,8,["model-value"])])}const E=i(b,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/samba/backup_cloud.vue"]]);export{E as default}; diff --git a/web/settings/assets/backup_cloud-30cf5664.js b/web/settings/assets/backup_cloud-42fd7d1e.js similarity index 70% rename from web/settings/assets/backup_cloud-30cf5664.js rename to web/settings/assets/backup_cloud-42fd7d1e.js index c23bd4af45..240c6878e8 100644 --- a/web/settings/assets/backup_cloud-30cf5664.js +++ b/web/settings/assets/backup_cloud-42fd7d1e.js @@ -1 +1 @@ -import{B as s}from"./DataManagement-f14600c5.js";import{_ as a,u as r,l as i,m as l,G as u,E as d,y as p}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"BackupCloudNextCloud",mixins:[s]},c={class:"backup-cloud-next-cloud"};function f(o,e,b,k,C,g){const n=r("openwb-base-text-input");return i(),l("div",c,[u(n,{title:"Cloud-URL",subtype:"host",required:"","model-value":o.backupCloud.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},{help:d(()=>e[3]||(e[3]=[p(" Die Cloud-URL wird in der Form 'https://nextcloud-url' und Benutzername im Eingabefeld oder mit Zugangstoken erwartet. Die URL kann je nach NextCloud Installation so 'https://nextcloud-url/s/user_token' oder so 'https://nextcloud-url/index.php/s/user_token' aussehen. ")])),_:1},8,["model-value"]),u(n,{title:"Benutzername",subtype:"user","model-value":o.backupCloud.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),u(n,{title:"Passwort",subtype:"password","model-value":o.backupCloud.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const $=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nextcloud/backup_cloud.vue"]]);export{$ as default}; +import{B as s}from"./DataManagement-714df651.js";import{_ as a,u as r,l as i,m as l,G as u,E as d,B as p}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"BackupCloudNextCloud",mixins:[s]},c={class:"backup-cloud-next-cloud"};function f(o,e,b,k,C,g){const n=r("openwb-base-text-input");return i(),l("div",c,[u(n,{title:"Cloud-URL",subtype:"host",required:"","model-value":o.backupCloud.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},{help:d(()=>e[3]||(e[3]=[p(" Die Cloud-URL wird in der Form 'https://nextcloud-url' und Benutzername im Eingabefeld oder mit Zugangstoken erwartet. Die URL kann je nach NextCloud Installation so 'https://nextcloud-url/s/user_token' oder so 'https://nextcloud-url/index.php/s/user_token' aussehen. ")])),_:1},8,["model-value"]),u(n,{title:"Benutzername",subtype:"user","model-value":o.backupCloud.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),u(n,{title:"Passwort",subtype:"password","model-value":o.backupCloud.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const h=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nextcloud/backup_cloud.vue"]]);export{h as default}; diff --git a/web/settings/assets/backup_cloud-b39f2e48.js b/web/settings/assets/backup_cloud-b4673e75.js similarity index 64% rename from web/settings/assets/backup_cloud-b39f2e48.js rename to web/settings/assets/backup_cloud-b4673e75.js index 3942fb9204..9220a928e2 100644 --- a/web/settings/assets/backup_cloud-b39f2e48.js +++ b/web/settings/assets/backup_cloud-b4673e75.js @@ -1 +1 @@ -import{B as r}from"./DataManagement-f14600c5.js";import{_ as p,u,l as i,m as l,G as d,E as c,y as o,x as n}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"BackupCloudNfs",mixins:[r]},f={class:"backup-cloud-nfs"};function _(t,e,b,k,v,x){const a=u("openwb-base-text-input");return i(),l("div",f,[d(a,{title:"Pfad zum NFS Share",pattern:"^([^/: ]+):(\\/[^/: ]+)+$",required:"","model-value":t.backupCloud.configuration.nfs_share,"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.nfs_share"))},{help:c(()=>e[1]||(e[1]=[o(" 1. IP basierter Pfad: 1.2.3.4:/pfad/zum/nfs-share"),n("br",null,null,-1),o(" 2. Host (FQDN) basierter Pfad: backupserver.domain.net:/pfad/zum/nfs-share"),n("br",null,null,-1),o(" Bitte entgegen der Syntax das Protokoll nicht davor schreiben. Falsch wäre, “nfs://” davor zu setzen. ")])),_:1},8,["model-value"])])}const V=p(m,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nfs/backup_cloud.vue"]]);export{V as default}; +import{B as r}from"./DataManagement-714df651.js";import{_ as p,u,l as i,m as l,G as d,E as c,B as o,A as n}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"BackupCloudNfs",mixins:[r]},f={class:"backup-cloud-nfs"};function _(t,e,b,k,v,B){const a=u("openwb-base-text-input");return i(),l("div",f,[d(a,{title:"Pfad zum NFS Share",pattern:"^([^/: ]+):(\\/[^/: ]+)+$",required:"","model-value":t.backupCloud.configuration.nfs_share,"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.nfs_share"))},{help:c(()=>e[1]||(e[1]=[o(" 1. IP basierter Pfad: 1.2.3.4:/pfad/zum/nfs-share"),n("br",null,null,-1),o(" 2. Host (FQDN) basierter Pfad: backupserver.domain.net:/pfad/zum/nfs-share"),n("br",null,null,-1),o(" Bitte entgegen der Syntax das Protokoll nicht davor schreiben. Falsch wäre, “nfs://” davor zu setzen. ")])),_:1},8,["model-value"])])}const V=p(m,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nfs/backup_cloud.vue"]]);export{V as default}; diff --git a/web/settings/assets/backup_cloud-30fea215.js b/web/settings/assets/backup_cloud-cbe0285e.js similarity index 89% rename from web/settings/assets/backup_cloud-30fea215.js rename to web/settings/assets/backup_cloud-cbe0285e.js index f8eee9e8ce..d067950798 100644 --- a/web/settings/assets/backup_cloud-30fea215.js +++ b/web/settings/assets/backup_cloud-cbe0285e.js @@ -1 +1 @@ -import{B as c}from"./DataManagement-f14600c5.js";import{_ as m,u as a,l as b,m as f,G as t,E as r,y as n,x as i}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const g={name:"BackupCloudOneDrive",mixins:[c]},v={class:"backup-cloud-one-drive"};function k(o,e,h,w,B,C){const d=a("openwb-base-alert"),u=a("openwb-base-text-input"),p=a("openwb-base-heading"),l=a("openwb-base-button-input");return b(),f("div",v,[t(d,{subtype:"info"},{default:r(()=>e[3]||(e[3]=[n(" Zum Abruf der Zugangsberechtigung bitte die Konfiguration speichern, dann die Schritte 1-4 durchführen und danach die Konfiguration erneut speichern. "),i("br",null,null,-1),n(" Auth Code und URL werden nur einmal benötigt werden nach erfolgreicher Autorisierung wieder gelöscht. ")])),_:1}),t(u,{title:"Backupverzeichnis in OneDrive",subtype:"text",required:"",pattern:"^/(.*/)*","model-value":o.backupCloud.configuration.backuppath,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.backuppath"))},{help:r(()=>e[4]||(e[4]=[n(" In diesem Verzeichnis werden die Backupdateien erstellt. Bitte den Pfad mit / beenden. "),i("br",null,null,-1),n(" Beispiel: /openWB/Backup/ ")])),_:1},8,["model-value"]),t(u,{title:"Anmeldedaten auf openWB gespeichert",readonly:"","model-value":o.backupCloud.configuration.persistent_tokencache?"Ja":"Nein"},null,8,["model-value"]),t(p,null,{default:r(()=>e[5]||(e[5]=[n(" Zugang zu OneDrive für diese openWB autorisieren ")])),_:1}),t(l,{title:"1. Anmeldeanforderung erstellen","button-text":"Autorisierungs-Code anfordern",subtype:"success",onButtonClicked:e[1]||(e[1]=s=>o.sendSystemCommand("requestMSALAuthCode",{}))},{help:r(()=>e[6]||(e[6]=[n(" Es werden Zugangstokens für OneDrive angefordert. Diese werden nur lokal auf dieser openWB gespeichert. Genutzt wird Device Flow mit public application."),i("br",null,null,-1),n(" Weitere Infos:"),i("br",null,null,-1),i("a",{href:"https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code",target:"_blank",rel:"noopener noreferrer"},"https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code",-1),i("a",{href:"https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications",target:"_blank",rel:"noopener noreferrer"},"https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications",-1)])),_:1}),t(u,{title:"2. Diesen Code kopieren",subtype:"text",readonly:"","model-value":o.backupCloud.configuration.authcode},null,8,["model-value"]),t(u,{title:"3. Anmelde-URL aufrufen",subtype:"url",readonly:"","model-value":o.backupCloud.configuration.authurl},{help:r(()=>e[7]||(e[7]=[n(" Diese URL im Browser öffnen und den Code eingeben. Dies erzeugt die notwendigen Zugangsberechtigung für diese openWB. ")])),_:1},8,["model-value"]),t(l,{title:"4. Token abrufen und speichern","button-text":"Autorisierungs-Token abrufen",subtype:"success",onButtonClicked:e[2]||(e[2]=s=>o.sendSystemCommand("retrieveMSALTokens",{}))},{help:r(()=>e[8]||(e[8]=[n(" Zugangstoken wird abgerufen und gespeichert, damit das Backup durchgeführt werden kann. Zugangstoken werden nur lokal auf dieser openWB gespeichert. ")])),_:1})])}const L=m(g,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/onedrive/backup_cloud.vue"]]);export{L as default}; +import{B as c}from"./DataManagement-714df651.js";import{_ as m,u as a,l as b,m as f,G as t,E as r,B as n,A as i}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const g={name:"BackupCloudOneDrive",mixins:[c]},v={class:"backup-cloud-one-drive"};function k(o,e,h,w,B,C){const d=a("openwb-base-alert"),u=a("openwb-base-text-input"),p=a("openwb-base-heading"),l=a("openwb-base-button-input");return b(),f("div",v,[t(d,{subtype:"info"},{default:r(()=>e[3]||(e[3]=[n(" Zum Abruf der Zugangsberechtigung bitte die Konfiguration speichern, dann die Schritte 1-4 durchführen und danach die Konfiguration erneut speichern. "),i("br",null,null,-1),n(" Auth Code und URL werden nur einmal benötigt werden nach erfolgreicher Autorisierung wieder gelöscht. ")])),_:1}),t(u,{title:"Backupverzeichnis in OneDrive",subtype:"text",required:"",pattern:"^/(.*/)*","model-value":o.backupCloud.configuration.backuppath,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.backuppath"))},{help:r(()=>e[4]||(e[4]=[n(" In diesem Verzeichnis werden die Backupdateien erstellt. Bitte den Pfad mit / beenden. "),i("br",null,null,-1),n(" Beispiel: /openWB/Backup/ ")])),_:1},8,["model-value"]),t(u,{title:"Anmeldedaten auf openWB gespeichert",readonly:"","model-value":o.backupCloud.configuration.persistent_tokencache?"Ja":"Nein"},null,8,["model-value"]),t(p,null,{default:r(()=>e[5]||(e[5]=[n(" Zugang zu OneDrive für diese openWB autorisieren ")])),_:1}),t(l,{title:"1. Anmeldeanforderung erstellen","button-text":"Autorisierungs-Code anfordern",subtype:"success",onButtonClicked:e[1]||(e[1]=s=>o.sendSystemCommand("requestMSALAuthCode",{}))},{help:r(()=>e[6]||(e[6]=[n(" Es werden Zugangstokens für OneDrive angefordert. Diese werden nur lokal auf dieser openWB gespeichert. Genutzt wird Device Flow mit public application."),i("br",null,null,-1),n(" Weitere Infos:"),i("br",null,null,-1),i("a",{href:"https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code",target:"_blank",rel:"noopener noreferrer"},"https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code",-1),i("a",{href:"https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications",target:"_blank",rel:"noopener noreferrer"},"https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications",-1)])),_:1}),t(u,{title:"2. Diesen Code kopieren",subtype:"text",readonly:"","model-value":o.backupCloud.configuration.authcode},null,8,["model-value"]),t(u,{title:"3. Anmelde-URL aufrufen",subtype:"url",readonly:"","model-value":o.backupCloud.configuration.authurl},{help:r(()=>e[7]||(e[7]=[n(" Diese URL im Browser öffnen und den Code eingeben. Dies erzeugt die notwendigen Zugangsberechtigung für diese openWB. ")])),_:1},8,["model-value"]),t(l,{title:"4. Token abrufen und speichern","button-text":"Autorisierungs-Token abrufen",subtype:"success",onButtonClicked:e[2]||(e[2]=s=>o.sendSystemCommand("retrieveMSALTokens",{}))},{help:r(()=>e[8]||(e[8]=[n(" Zugangstoken wird abgerufen und gespeichert, damit das Backup durchgeführt werden kann. Zugangstoken werden nur lokal auf dieser openWB gespeichert. ")])),_:1})])}const L=m(g,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/onedrive/backup_cloud.vue"]]);export{L as default}; diff --git a/web/settings/assets/bat-5d86d2d0.js b/web/settings/assets/bat-00ee042f.js similarity index 84% rename from web/settings/assets/bat-5d86d2d0.js rename to web/settings/assets/bat-00ee042f.js index e1d4c0080a..fde31cdb23 100644 --- a/web/settings/assets/bat-5d86d2d0.js +++ b/web/settings/assets/bat-00ee042f.js @@ -1 +1 @@ -import{C as u}from"./HardwareInstallation-3a644290.js";import{_ as m,u as s,l as p,m as g,G as r,E as i,y as n,x as o}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceHttpBat",mixins:[u]},b={class:"device-http-bat"};function f(t,e,v,w,c,k){const d=s("openwb-base-heading"),l=s("openwb-base-text-input");return p(),g("div",b,[r(d,null,{default:i(()=>e[4]||(e[4]=[n(" Einstellungen für Http Batteriespeicher ")])),_:1}),r(l,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=a=>t.updateConfiguration(a,"configuration.power_path"))},{help:i(()=>e[5]||(e[5]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")])),_:1},8,["model-value"]),r(l,{title:"Pfad für Ladestand",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.soc_path,"onUpdate:modelValue":e[1]||(e[1]=a=>t.updateConfiguration(a,"configuration.soc_path"))},{help:i(()=>e[6]||(e[6]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen Ladestand (SoC) in Prozent darstellt. ")])),_:1},8,["model-value"]),r(l,{title:"Pfad für Zählerstand laden",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.imported_path,"onUpdate:modelValue":e[2]||(e[2]=a=>t.updateConfiguration(a,"configuration.imported_path"))},{help:i(()=>e[7]||(e[7]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt. ")])),_:1},8,["model-value"]),r(l,{title:"Pfad für Zählerstand entladen",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.exported_path,"onUpdate:modelValue":e[3]||(e[3]=a=>t.updateConfiguration(a,"configuration.exported_path"))},{help:i(()=>e[8]||(e[8]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),o("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"])])}const A=m(h,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/bat.vue"]]);export{A as default}; +import{C as u}from"./HardwareInstallation-727b5962.js";import{_ as m,u as s,l as p,m as g,G as r,E as i,B as n,A as o}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceHttpBat",mixins:[u]},b={class:"device-http-bat"};function f(t,e,v,w,c,k){const d=s("openwb-base-heading"),l=s("openwb-base-text-input");return p(),g("div",b,[r(d,null,{default:i(()=>e[4]||(e[4]=[n(" Einstellungen für Http Batteriespeicher ")])),_:1}),r(l,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=a=>t.updateConfiguration(a,"configuration.power_path"))},{help:i(()=>e[5]||(e[5]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")])),_:1},8,["model-value"]),r(l,{title:"Pfad für Ladestand",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.soc_path,"onUpdate:modelValue":e[1]||(e[1]=a=>t.updateConfiguration(a,"configuration.soc_path"))},{help:i(()=>e[6]||(e[6]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen Ladestand (SoC) in Prozent darstellt. ")])),_:1},8,["model-value"]),r(l,{title:"Pfad für Zählerstand laden",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.imported_path,"onUpdate:modelValue":e[2]||(e[2]=a=>t.updateConfiguration(a,"configuration.imported_path"))},{help:i(()=>e[7]||(e[7]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt. ")])),_:1},8,["model-value"]),r(l,{title:"Pfad für Zählerstand entladen",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.exported_path,"onUpdate:modelValue":e[3]||(e[3]=a=>t.updateConfiguration(a,"configuration.exported_path"))},{help:i(()=>e[8]||(e[8]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),o("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"])])}const U=m(h,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/bat.vue"]]);export{U as default}; diff --git a/web/settings/assets/bat-ba97b9ec.js b/web/settings/assets/bat-09618e87.js similarity index 64% rename from web/settings/assets/bat-ba97b9ec.js rename to web/settings/assets/bat-09618e87.js index 148d9b340b..9efa71cca1 100644 --- a/web/settings/assets/bat-ba97b9ec.js +++ b/web/settings/assets/bat-09618e87.js @@ -1 +1 @@ -import{C as s}from"./HardwareInstallation-3a644290.js";import{_ as m,u as t,l as p,m as u,G as n,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceHuaweiSmartLoggerBat",mixins:[s]},c={class:"device-huawei-smart-logger-bat"};function b(o,e,g,f,w,v){const i=t("openwb-base-heading"),a=t("openwb-base-number-input");return p(),u("div",c,[n(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Huawei SmartLogger Batteriespeicher ")])),_:1}),n(a,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const H=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/bat.vue"]]);export{H as default}; +import{C as s}from"./HardwareInstallation-727b5962.js";import{_ as m,u as t,l as p,m as u,G as n,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceHuaweiSmartLoggerBat",mixins:[s]},c={class:"device-huawei-smart-logger-bat"};function b(o,e,g,f,w,v){const i=t("openwb-base-heading"),a=t("openwb-base-number-input");return p(),u("div",c,[n(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Huawei SmartLogger Batteriespeicher ")])),_:1}),n(a,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const H=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/bat.vue"]]);export{H as default}; diff --git a/web/settings/assets/bat-845b945a.js b/web/settings/assets/bat-161a0b3f.js similarity index 63% rename from web/settings/assets/bat-845b945a.js rename to web/settings/assets/bat-161a0b3f.js index a1a1765445..4abd15edd5 100644 --- a/web/settings/assets/bat-845b945a.js +++ b/web/settings/assets/bat-161a0b3f.js @@ -1 +1 @@ -import{C as r}from"./HardwareInstallation-3a644290.js";import{_ as p,u as n,l as m,m as u,G as t,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssBat",mixins:[r]},c={class:"device-fox_ess-bat"};function b(o,e,f,x,v,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für FoxEss Batteriespeicher ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const F=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/bat.vue"]]);export{F as default}; +import{C as r}from"./HardwareInstallation-727b5962.js";import{_ as p,u as n,l as m,m as u,G as t,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssBat",mixins:[r]},c={class:"device-fox_ess-bat"};function b(o,e,f,x,v,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für FoxEss Batteriespeicher ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const F=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/bat.vue"]]);export{F as default}; diff --git a/web/settings/assets/bat-c05ee012.js b/web/settings/assets/bat-177cd510.js similarity index 63% rename from web/settings/assets/bat-c05ee012.js rename to web/settings/assets/bat-177cd510.js index c675af9b17..c2089edd1d 100644 --- a/web/settings/assets/bat-c05ee012.js +++ b/web/settings/assets/bat-177cd510.js @@ -1 +1 @@ -import{C as a}from"./HardwareInstallation-3a644290.js";import{_ as p,u as t,l as m,m as u,G as n,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceStuderBat",mixins:[a]},_={class:"device-studer-bat"};function b(o,e,f,v,g,w){const i=t("openwb-base-heading"),s=t("openwb-base-number-input");return m(),u("div",_,[n(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Studer Batteriespeicher ")])),_:1}),n(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const M=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/bat.vue"]]);export{M as default}; +import{C as a}from"./HardwareInstallation-727b5962.js";import{_ as p,u as t,l as m,m as u,G as n,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceStuderBat",mixins:[a]},_={class:"device-studer-bat"};function b(o,e,f,v,g,w){const i=t("openwb-base-heading"),s=t("openwb-base-number-input");return m(),u("div",_,[n(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Studer Batteriespeicher ")])),_:1}),n(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const M=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/bat.vue"]]);export{M as default}; diff --git a/web/settings/assets/bat-d47d1fd1.js b/web/settings/assets/bat-386b6a71.js similarity index 64% rename from web/settings/assets/bat-d47d1fd1.js rename to web/settings/assets/bat-386b6a71.js index 9f8d911b63..2724333620 100644 --- a/web/settings/assets/bat-d47d1fd1.js +++ b/web/settings/assets/bat-386b6a71.js @@ -1 +1 @@ -import{C as r}from"./HardwareInstallation-3a644290.js";import{_ as p,u as o,l as m,m as u,G as t,E as l,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceFemsBat",mixins:[r]},f={class:"device-fems-bat"};function _(n,e,b,v,g,C){const i=o("openwb-base-heading"),s=o("openwb-base-number-input");return m(),u("div",f,[t(i,null,{default:l(()=>e[1]||(e[1]=[c(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control Batteriespeicher ")])),_:1}),t(s,{title:"Anzahl der verbauten Speicher",required:"",min:1,max:2,"model-value":n.component.configuration.num,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.num"))},null,8,["model-value"])])}const S=p(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/bat.vue"]]);export{S as default}; +import{C as r}from"./HardwareInstallation-727b5962.js";import{_ as p,u as o,l as m,m as u,G as t,E as l,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceFemsBat",mixins:[r]},f={class:"device-fems-bat"};function _(n,e,b,v,g,C){const i=o("openwb-base-heading"),s=o("openwb-base-number-input");return m(),u("div",f,[t(i,null,{default:l(()=>e[1]||(e[1]=[c(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control Batteriespeicher ")])),_:1}),t(s,{title:"Anzahl der verbauten Speicher",required:"",min:1,max:2,"model-value":n.component.configuration.num,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.num"))},null,8,["model-value"])])}const S=p(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/bat.vue"]]);export{S as default}; diff --git a/web/settings/assets/bat-6ae70208.js b/web/settings/assets/bat-41f81d7c.js similarity index 64% rename from web/settings/assets/bat-6ae70208.js rename to web/settings/assets/bat-41f81d7c.js index 9801711104..9feb974a3e 100644 --- a/web/settings/assets/bat-6ae70208.js +++ b/web/settings/assets/bat-41f81d7c.js @@ -1 +1 @@ -import{C as s}from"./HardwareInstallation-3a644290.js";import{_ as p,u as n,l as m,m as d,G as t,E as l,y as u}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolaredgeBat",mixins:[s]},_={class:"device-solaredge-bat"};function b(o,e,f,g,v,w){const i=n("openwb-base-heading"),a=n("openwb-base-number-input");return m(),d("div",_,[t(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für SolarEdge Batteriespeicher ")])),_:1}),t(a,{title:"SolarEdge-Geräte-ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const D=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/bat.vue"]]);export{D as default}; +import{C as s}from"./HardwareInstallation-727b5962.js";import{_ as p,u as n,l as m,m as d,G as t,E as l,B as u}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolaredgeBat",mixins:[s]},_={class:"device-solaredge-bat"};function b(o,e,f,g,v,w){const i=n("openwb-base-heading"),a=n("openwb-base-number-input");return m(),d("div",_,[t(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für SolarEdge Batteriespeicher ")])),_:1}),t(a,{title:"SolarEdge-Geräte-ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const D=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/bat.vue"]]);export{D as default}; diff --git a/web/settings/assets/bat-5bcb481a.js b/web/settings/assets/bat-46ed5214.js similarity index 83% rename from web/settings/assets/bat-5bcb481a.js rename to web/settings/assets/bat-46ed5214.js index 7209785ba0..49f27abf3c 100644 --- a/web/settings/assets/bat-5bcb481a.js +++ b/web/settings/assets/bat-46ed5214.js @@ -1 +1 @@ -import{C as m}from"./HardwareInstallation-3a644290.js";import{_ as a,u as p,l as b,m as g,G as l,E as i,y as t,x as n,F as r}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceMqttBat",mixins:[m]},k={class:"device-mqtt-bat"};function B(o,e,z,x,w,W){const u=p("openwb-base-heading"),s=p("openwb-base-copy-to-clipboard"),d=p("openwb-base-alert");return b(),g("div",k,[l(u,null,{default:i(()=>e[0]||(e[0]=[t(" Einstellungen für MQTT Batteriespeicher ")])),_:1}),l(d,{subtype:"info"},{default:i(()=>[e[26]||(e[26]=t(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: ")),n("ul",null,[n("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/bat/"+r(o.component.id)+"/get/power ",1)]),_:1}),e[1]||(e[1]=n("br",null,null,-1)),e[2]||(e[2]=t(" Speicherleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Ladung, negativ Entladung")),e[3]||(e[3]=n("br",null,null,-1)),e[4]||(e[4]=t(" Beispiel: ")),e[5]||(e[5]=n("span",{class:"text-info"},"-123",-1))]),n("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/bat/"+r(o.component.id)+"/get/imported ",1)]),_:1}),e[6]||(e[6]=n("br",null,null,-1)),e[7]||(e[7]=t(" Geladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),e[8]||(e[8]=n("br",null,null,-1)),e[9]||(e[9]=t(" Beispiel: ")),e[10]||(e[10]=n("span",{class:"text-info"},"123.45",-1))]),n("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/bat/"+r(o.component.id)+"/get/exported ",1)]),_:1}),e[11]||(e[11]=n("br",null,null,-1)),e[12]||(e[12]=t(" Entladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),e[13]||(e[13]=n("br",null,null,-1)),e[14]||(e[14]=t(" Beispiel: ")),e[15]||(e[15]=n("span",{class:"text-info"},"123.45",-1))]),n("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/bat/"+r(o.component.id)+"/get/soc ",1)]),_:1}),e[16]||(e[16]=n("br",null,null,-1)),e[17]||(e[17]=t(" Ladestand des Speichers, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, gültige Werte 0 bis 100")),e[18]||(e[18]=n("br",null,null,-1)),e[19]||(e[19]=t(" Beispiel: ")),e[20]||(e[20]=n("span",{class:"text-info"},"95",-1))])]),e[27]||(e[27]=t(" Optional: Wenn der Speicher dies unterstützt, kann folgendes Topic abonniert werden, um die Entladeleistung im Speicher zu setzen. Der Modus, um die Speicher-Entladung ins Fahrzeug zu steuern, kann in den übergreifenden Ladeeinstellungen gesetzt werden. ")),n("ul",null,[n("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/bat/"+r(o.component.id)+"/set/power_limit ",1)]),_:1}),e[21]||(e[21]=n("br",null,null,-1)),e[22]||(e[22]=t(" Entladeleistung in Watt (Float), die im Speicher gesetzt werden muss.")),e[23]||(e[23]=n("br",null,null,-1)),e[24]||(e[24]=t(" Beispiel: ")),e[25]||(e[25]=n("span",{class:"text-info"},"123.0",-1))])])]),_:1})])}const I=a(f,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/bat.vue"]]);export{I as default}; +import{C as m}from"./HardwareInstallation-727b5962.js";import{_ as a,u as p,l as b,m as g,G as l,E as i,B as t,A as n,F as r}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceMqttBat",mixins:[m]},B={class:"device-mqtt-bat"};function k(o,e,z,w,x,W){const u=p("openwb-base-heading"),s=p("openwb-base-copy-to-clipboard"),d=p("openwb-base-alert");return b(),g("div",B,[l(u,null,{default:i(()=>e[0]||(e[0]=[t(" Einstellungen für MQTT Batteriespeicher ")])),_:1}),l(d,{subtype:"info"},{default:i(()=>[e[26]||(e[26]=t(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: ")),n("ul",null,[n("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/bat/"+r(o.component.id)+"/get/power ",1)]),_:1}),e[1]||(e[1]=n("br",null,null,-1)),e[2]||(e[2]=t(" Speicherleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Ladung, negativ Entladung")),e[3]||(e[3]=n("br",null,null,-1)),e[4]||(e[4]=t(" Beispiel: ")),e[5]||(e[5]=n("span",{class:"text-info"},"-123",-1))]),n("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/bat/"+r(o.component.id)+"/get/imported ",1)]),_:1}),e[6]||(e[6]=n("br",null,null,-1)),e[7]||(e[7]=t(" Geladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),e[8]||(e[8]=n("br",null,null,-1)),e[9]||(e[9]=t(" Beispiel: ")),e[10]||(e[10]=n("span",{class:"text-info"},"123.45",-1))]),n("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/bat/"+r(o.component.id)+"/get/exported ",1)]),_:1}),e[11]||(e[11]=n("br",null,null,-1)),e[12]||(e[12]=t(" Entladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),e[13]||(e[13]=n("br",null,null,-1)),e[14]||(e[14]=t(" Beispiel: ")),e[15]||(e[15]=n("span",{class:"text-info"},"123.45",-1))]),n("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/bat/"+r(o.component.id)+"/get/soc ",1)]),_:1}),e[16]||(e[16]=n("br",null,null,-1)),e[17]||(e[17]=t(" Ladestand des Speichers, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, gültige Werte 0 bis 100")),e[18]||(e[18]=n("br",null,null,-1)),e[19]||(e[19]=t(" Beispiel: ")),e[20]||(e[20]=n("span",{class:"text-info"},"95",-1))])]),e[27]||(e[27]=t(" Optional: Wenn der Speicher dies unterstützt, kann folgendes Topic abonniert werden, um die Entladeleistung im Speicher zu setzen. Der Modus, um die Speicher-Entladung ins Fahrzeug zu steuern, kann in den übergreifenden Ladeeinstellungen gesetzt werden. ")),n("ul",null,[n("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/bat/"+r(o.component.id)+"/set/power_limit ",1)]),_:1}),e[21]||(e[21]=n("br",null,null,-1)),e[22]||(e[22]=t(" Entladeleistung in Watt (Float), die im Speicher gesetzt werden muss.")),e[23]||(e[23]=n("br",null,null,-1)),e[24]||(e[24]=t(" Beispiel: ")),e[25]||(e[25]=n("span",{class:"text-info"},"123.0",-1))])])]),_:1})])}const I=a(f,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/bat.vue"]]);export{I as default}; diff --git a/web/settings/assets/bat-a09a1026.js b/web/settings/assets/bat-500fac88.js similarity index 61% rename from web/settings/assets/bat-a09a1026.js rename to web/settings/assets/bat-500fac88.js index 524bf1954a..bb648458ce 100644 --- a/web/settings/assets/bat-a09a1026.js +++ b/web/settings/assets/bat-500fac88.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as r,u as o,l,m,G as n,E as u,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbBatkitBat",mixins:[p]},_={class:"device-openwb-batkit-bat"};function b(t,e,f,v,w,g){const i=o("openwb-base-heading"),s=o("openwb-base-select-input");return l(),m("div",_,[n(i,null,{default:u(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Batteriespeicher ")])),_:1}),n(s,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=a=>t.updateConfiguration(a,"configuration.version"))},null,8,["model-value"])])}const $=r(d,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_bat_kit/bat.vue"]]);export{$ as default}; +import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as r,u as o,l,m,G as n,E as u,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbBatkitBat",mixins:[p]},_={class:"device-openwb-batkit-bat"};function b(t,e,f,v,w,B){const i=o("openwb-base-heading"),s=o("openwb-base-select-input");return l(),m("div",_,[n(i,null,{default:u(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Batteriespeicher ")])),_:1}),n(s,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=a=>t.updateConfiguration(a,"configuration.version"))},null,8,["model-value"])])}const $=r(d,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_bat_kit/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-434d0404.js b/web/settings/assets/bat-515bb8b9.js similarity index 63% rename from web/settings/assets/bat-434d0404.js rename to web/settings/assets/bat-515bb8b9.js index 5510ffef81..67f649d1d7 100644 --- a/web/settings/assets/bat-434d0404.js +++ b/web/settings/assets/bat-515bb8b9.js @@ -1 +1 @@ -import{C as a}from"./HardwareInstallation-3a644290.js";import{_ as p,u as n,l as m,m as u,G as t,E as d,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceVictronBat",mixins:[a]},_={class:"device-victron-bat"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[c(" Einstellungen für Victron Batteriespeicher ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const M=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/bat.vue"]]);export{M as default}; +import{C as a}from"./HardwareInstallation-727b5962.js";import{_ as p,u as n,l as m,m as u,G as t,E as d,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceVictronBat",mixins:[a]},_={class:"device-victron-bat"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[c(" Einstellungen für Victron Batteriespeicher ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const M=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/bat.vue"]]);export{M as default}; diff --git a/web/settings/assets/bat-13f506c4.js b/web/settings/assets/bat-53f2b2dc.js similarity index 63% rename from web/settings/assets/bat-13f506c4.js rename to web/settings/assets/bat-53f2b2dc.js index f481d79568..36bf4d6de0 100644 --- a/web/settings/assets/bat-13f506c4.js +++ b/web/settings/assets/bat-53f2b2dc.js @@ -1 +1 @@ -import{C as a}from"./HardwareInstallation-3a644290.js";import{_ as p,u as n,l as m,m as u,G as t,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceFroniusBat",mixins:[a]},_={class:"device-fronius-bat"};function f(o,e,b,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Fronius Batteriespeicher ")])),_:1}),t(r,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":o.component.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.meter_id"))},null,8,["model-value"])])}const F=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/bat.vue"]]);export{F as default}; +import{C as a}from"./HardwareInstallation-727b5962.js";import{_ as p,u as n,l as m,m as u,G as t,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceFroniusBat",mixins:[a]},_={class:"device-fronius-bat"};function f(o,e,b,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Fronius Batteriespeicher ")])),_:1}),t(r,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":o.component.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.meter_id"))},null,8,["model-value"])])}const F=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/bat.vue"]]);export{F as default}; diff --git a/web/settings/assets/bat-d9cdd38d.js b/web/settings/assets/bat-575ac984.js similarity index 80% rename from web/settings/assets/bat-d9cdd38d.js rename to web/settings/assets/bat-575ac984.js index dd40013db3..d6e729c26b 100644 --- a/web/settings/assets/bat-d9cdd38d.js +++ b/web/settings/assets/bat-575ac984.js @@ -1 +1 @@ -import{C as d}from"./HardwareInstallation-3a644290.js";import{_ as u,u as l,l as p,m,G as o,E as a,y as r,x as g}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceJsonBat",mixins:[d]},b={class:"device-json-bat"};function w(t,e,v,j,q,_){const s=l("openwb-base-heading"),i=l("openwb-base-text-input");return p(),m("div",b,[o(s,null,{default:a(()=>e[4]||(e[4]=[r(" Einstellungen für JSON Batteriespeicher ")])),_:1}),o(i,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":t.component.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateConfiguration(n,"configuration.jq_power"))},{help:a(()=>e[5]||(e[5]=[r(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),g("br",null,null,-1),r(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt (positiv Ladung, negativ Entladung) darstellt. ")])),_:1},8,["model-value"]),o(i,{title:"Abfrage für Ladestand",subtype:"text",required:"","model-value":t.component.configuration.jq_soc,"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateConfiguration(n,"configuration.jq_soc"))},null,8,["model-value"]),o(i,{title:"Abfrage für Zählerstand Ladung",subtype:"text","model-value":t.component.configuration.jq_imported,"onUpdate:modelValue":e[2]||(e[2]=n=>t.updateConfiguration(n,"configuration.jq_imported"))},{help:a(()=>e[6]||(e[6]=[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"]),o(i,{title:"Abfrage für Zählerstand Entladung",subtype:"text","model-value":t.component.configuration.jq_exported,"onUpdate:modelValue":e[3]||(e[3]=n=>t.updateConfiguration(n,"configuration.jq_exported"))},{help:a(()=>e[7]||(e[7]=[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"])])}const E=u(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/bat.vue"]]);export{E as default}; +import{C as d}from"./HardwareInstallation-727b5962.js";import{_ as u,u as l,l as p,m,G as o,E as a,B as r,A as g}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceJsonBat",mixins:[d]},b={class:"device-json-bat"};function w(t,e,v,j,q,_){const s=l("openwb-base-heading"),i=l("openwb-base-text-input");return p(),m("div",b,[o(s,null,{default:a(()=>e[4]||(e[4]=[r(" Einstellungen für JSON Batteriespeicher ")])),_:1}),o(i,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":t.component.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateConfiguration(n,"configuration.jq_power"))},{help:a(()=>e[5]||(e[5]=[r(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),g("br",null,null,-1),r(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt (positiv Ladung, negativ Entladung) darstellt. ")])),_:1},8,["model-value"]),o(i,{title:"Abfrage für Ladestand",subtype:"text",required:"","model-value":t.component.configuration.jq_soc,"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateConfiguration(n,"configuration.jq_soc"))},null,8,["model-value"]),o(i,{title:"Abfrage für Zählerstand Ladung",subtype:"text","model-value":t.component.configuration.jq_imported,"onUpdate:modelValue":e[2]||(e[2]=n=>t.updateConfiguration(n,"configuration.jq_imported"))},{help:a(()=>e[6]||(e[6]=[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"]),o(i,{title:"Abfrage für Zählerstand Entladung",subtype:"text","model-value":t.component.configuration.jq_exported,"onUpdate:modelValue":e[3]||(e[3]=n=>t.updateConfiguration(n,"configuration.jq_exported"))},{help:a(()=>e[7]||(e[7]=[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"])])}const Z=u(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/bat.vue"]]);export{Z as default}; diff --git a/web/settings/assets/bat-508dda8e.js b/web/settings/assets/bat-7e2bb1f0.js similarity index 67% rename from web/settings/assets/bat-508dda8e.js rename to web/settings/assets/bat-7e2bb1f0.js index afcf9992d4..4a86e28e3c 100644 --- a/web/settings/assets/bat-508dda8e.js +++ b/web/settings/assets/bat-7e2bb1f0.js @@ -1 +1 @@ -import{C as a}from"./HardwareInstallation-3a644290.js";import{_ as r,u as o,l,m as u,G as n,E as m,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitBat",mixins:[a]},_={class:"device-openwb-evukit-bat"};function v(t,e,b,f,w,g){const i=o("openwb-base-heading"),s=o("openwb-base-select-input");return l(),u("div",_,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Batteriespeicher ")])),_:1}),n(s,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.version"))},null,8,["model-value"])])}const $=r(d,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/bat.vue"]]);export{$ as default}; +import{C as a}from"./HardwareInstallation-727b5962.js";import{_ as r,u as o,l,m as u,G as n,E as m,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitBat",mixins:[a]},_={class:"device-openwb-evukit-bat"};function v(t,e,b,f,w,g){const i=o("openwb-base-heading"),s=o("openwb-base-select-input");return l(),u("div",_,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Batteriespeicher ")])),_:1}),n(s,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.version"))},null,8,["model-value"])])}const $=r(d,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-1c531740.js b/web/settings/assets/bat-8276d217.js similarity index 64% rename from web/settings/assets/bat-1c531740.js rename to web/settings/assets/bat-8276d217.js index 6b17f89104..61157d971a 100644 --- a/web/settings/assets/bat-1c531740.js +++ b/web/settings/assets/bat-8276d217.js @@ -1 +1 @@ -import{C as r}from"./HardwareInstallation-3a644290.js";import{_ as p,u as o,l as m,m as u,G as t,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSunnyIslandBat",mixins:[r]},c={class:"device-sunnyisland-bat"};function b(n,e,f,v,g,w){const s=o("openwb-base-heading"),i=o("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Sunny Island Batteriespeicher ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const k=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_island/bat.vue"]]);export{k as default}; +import{C as r}from"./HardwareInstallation-727b5962.js";import{_ as p,u as o,l as m,m as u,G as t,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSunnyIslandBat",mixins:[r]},c={class:"device-sunnyisland-bat"};function b(n,e,f,v,g,w){const s=o("openwb-base-heading"),i=o("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Sunny Island Batteriespeicher ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const k=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_island/bat.vue"]]);export{k as default}; diff --git a/web/settings/assets/bat-655f55cd.js b/web/settings/assets/bat-8ecd087b.js similarity index 59% rename from web/settings/assets/bat-655f55cd.js rename to web/settings/assets/bat-8ecd087b.js index 1a508d0927..d4b9c81030 100644 --- a/web/settings/assets/bat-655f55cd.js +++ b/web/settings/assets/bat-8ecd087b.js @@ -1 +1 @@ -import{C as r}from"./HardwareInstallation-3a644290.js";import{_ as m,u as t,l as p,m as l,G as n,E as u,y as d}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolarmaxBat",mixins:[r]},b={class:"device-solarmax-bat"};function _(o,e,f,x,v,g){const a=t("openwb-base-alert"),s=t("openwb-base-number-input");return p(),l("div",b,[n(a,{subtype:"info"},{default:u(()=>e[1]||(e[1]=[d(" Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher sind Teil eines Hybridsystems. Daher muss auch eine Komponente Wechselrichter angelegt werden. ")])),_:1}),n(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.modbus_id"))},null,8,["model-value"])])}const T=m(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/bat.vue"]]);export{T as default}; +import{C as r}from"./HardwareInstallation-727b5962.js";import{_ as m,u as t,l as p,m as l,G as n,E as u,B as d}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolarmaxBat",mixins:[r]},b={class:"device-solarmax-bat"};function _(o,e,f,x,v,g){const a=t("openwb-base-alert"),s=t("openwb-base-number-input");return p(),l("div",b,[n(a,{subtype:"info"},{default:u(()=>e[1]||(e[1]=[d(" Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher sind Teil eines Hybridsystems. Daher muss auch eine Komponente Wechselrichter angelegt werden. ")])),_:1}),n(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.modbus_id"))},null,8,["model-value"])])}const $=m(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-e36a210d.js b/web/settings/assets/bat-8eeb809e.js similarity index 62% rename from web/settings/assets/bat-e36a210d.js rename to web/settings/assets/bat-8eeb809e.js index e74c34bea1..28b4dfe262 100644 --- a/web/settings/assets/bat-e36a210d.js +++ b/web/settings/assets/bat-8eeb809e.js @@ -1 +1 @@ -import{C as r}from"./HardwareInstallation-3a644290.js";import{_ as p,u as n,l as m,m as d,G as t,E as u,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDeyeBat",mixins:[r]},_={class:"device-deye-bat"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),d("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[l(" Einstellungen für Deye Batteriespeicher ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const k=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/bat.vue"]]);export{k as default}; +import{C as r}from"./HardwareInstallation-727b5962.js";import{_ as p,u as n,l as m,m as d,G as t,E as u,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDeyeBat",mixins:[r]},_={class:"device-deye-bat"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),d("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[l(" Einstellungen für Deye Batteriespeicher ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const k=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/bat.vue"]]);export{k as default}; diff --git a/web/settings/assets/bat-47aea623.js b/web/settings/assets/bat-96814af1.js similarity index 58% rename from web/settings/assets/bat-47aea623.js rename to web/settings/assets/bat-96814af1.js index 70c9a662fa..878a8f04a5 100644 --- a/web/settings/assets/bat-47aea623.js +++ b/web/settings/assets/bat-96814af1.js @@ -1 +1 @@ -import{C as r}from"./HardwareInstallation-3a644290.js";import{_ as p,u as n,l as m,m as u,G as t,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSunnyBoyBat",mixins:[r]},b={class:"device-sunnyboy-bat"};function c(o,e,f,v,y,g){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),u("div",b,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für SMA Sunny Boy/Tripower Batteriespeicher ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const h=p(_,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/bat.vue"]]);export{h as default}; +import{C as r}from"./HardwareInstallation-727b5962.js";import{_ as p,u as n,l as m,m as u,G as t,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSunnyBoyBat",mixins:[r]},b={class:"device-sunnyboy-bat"};function c(o,e,f,v,g,y){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),u("div",b,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für SMA Sunny Boy/Tripower Batteriespeicher ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const h=p(_,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/bat.vue"]]);export{h as default}; diff --git a/web/settings/assets/bat-b459c554.js b/web/settings/assets/bat-b04f324c.js similarity index 68% rename from web/settings/assets/bat-b459c554.js rename to web/settings/assets/bat-b04f324c.js index 325ace8832..ab2c6293de 100644 --- a/web/settings/assets/bat-b459c554.js +++ b/web/settings/assets/bat-b04f324c.js @@ -1 +1 @@ -import{C as m}from"./HardwareInstallation-3a644290.js";import{_ as l,u as t,l as d,m as c,G as i,E as a,y as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceMTecBat",mixins:[m]},_={class:"device-mtec-bat"};function f(o,e,v,g,w,C){const p=t("openwb-base-heading"),r=t("openwb-base-select-input"),u=t("openwb-base-number-input");return d(),c("div",_,[i(p,null,{default:a(()=>e[2]||(e[2]=[s(" Einstellungen für M-Tec Batteriespeicher ")])),_:1}),i(r,{title:"Generation","not-selected":"Bitte auswählen",options:[{value:2,text:"Gen 2"},{value:3,text:"Gen 3"}],"model-value":o.component.configuration.generation,required:"","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.generation"))},null,8,["model-value"]),i(u,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},{help:a(()=>e[3]||(e[3]=[s(" Die Standard-Modbus-ID von M-Tec ist 247 ")])),_:1},8,["model-value"])])}const k=l(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/bat.vue"]]);export{k as default}; +import{C as m}from"./HardwareInstallation-727b5962.js";import{_ as l,u as t,l as d,m as c,G as i,E as a,B as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceMTecBat",mixins:[m]},_={class:"device-mtec-bat"};function f(o,e,v,g,w,B){const p=t("openwb-base-heading"),r=t("openwb-base-select-input"),u=t("openwb-base-number-input");return d(),c("div",_,[i(p,null,{default:a(()=>e[2]||(e[2]=[s(" Einstellungen für M-Tec Batteriespeicher ")])),_:1}),i(r,{title:"Generation","not-selected":"Bitte auswählen",options:[{value:2,text:"Gen 2"},{value:3,text:"Gen 3"}],"model-value":o.component.configuration.generation,required:"","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.generation"))},null,8,["model-value"]),i(u,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},{help:a(()=>e[3]||(e[3]=[s(" Die Standard-Modbus-ID von M-Tec ist 247 ")])),_:1},8,["model-value"])])}const k=l(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/bat.vue"]]);export{k as default}; diff --git a/web/settings/assets/bat-5d80d1b1.js b/web/settings/assets/bat-b0b74fda.js similarity index 63% rename from web/settings/assets/bat-5d80d1b1.js rename to web/settings/assets/bat-b0b74fda.js index bf8a1e7da8..1611be2de4 100644 --- a/web/settings/assets/bat-5d80d1b1.js +++ b/web/settings/assets/bat-b0b74fda.js @@ -1 +1 @@ -import{C as r}from"./HardwareInstallation-3a644290.js";import{_ as p,u as n,l as m,m as l,G as t,E as u,y as d}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisBat",mixins:[r]},_={class:"device-solis-bat"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),l("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[d(" Einstellungen für Solis Batteriespeicher ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const M=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/bat.vue"]]);export{M as default}; +import{C as r}from"./HardwareInstallation-727b5962.js";import{_ as p,u as n,l as m,m as l,G as t,E as u,B as d}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisBat",mixins:[r]},_={class:"device-solis-bat"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),l("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[d(" Einstellungen für Solis Batteriespeicher ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const M=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/bat.vue"]]);export{M as default}; diff --git a/web/settings/assets/bat-8885d269.js b/web/settings/assets/bat-b13c576b.js similarity index 72% rename from web/settings/assets/bat-8885d269.js rename to web/settings/assets/bat-b13c576b.js index c291c02b75..c6fbed4fd4 100644 --- a/web/settings/assets/bat-8885d269.js +++ b/web/settings/assets/bat-b13c576b.js @@ -1 +1 @@ -import{C as l}from"./HardwareInstallation-3a644290.js";import{_ as r,u as t,l as u,m,G as i,E as d,y as b}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceOpenwbFlexBat",mixins:[l]},f={class:"device-openwb-flex-bat"};function _(o,e,v,w,g,x){const a=t("openwb-base-heading"),p=t("openwb-base-select-input"),s=t("openwb-base-number-input");return u(),m("div",f,[i(a,null,{default:d(()=>e[2]||(e[2]=[b(" Einstellungen für openWB-Flex Batteriespeicher ")])),_:1}),i(p,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":o.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(s,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":o.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const k=r(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/bat.vue"]]);export{k as default}; +import{C as l}from"./HardwareInstallation-727b5962.js";import{_ as r,u as t,l as u,m,G as i,E as d,B as b}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceOpenwbFlexBat",mixins:[l]},f={class:"device-openwb-flex-bat"};function _(o,e,v,w,g,x){const a=t("openwb-base-heading"),p=t("openwb-base-select-input"),s=t("openwb-base-number-input");return u(),m("div",f,[i(a,null,{default:d(()=>e[2]||(e[2]=[b(" Einstellungen für openWB-Flex Batteriespeicher ")])),_:1}),i(p,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":o.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(s,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":o.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const k=r(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/bat.vue"]]);export{k as default}; diff --git a/web/settings/assets/bat-09e11c39.js b/web/settings/assets/bat-e525273f.js similarity index 60% rename from web/settings/assets/bat-09e11c39.js rename to web/settings/assets/bat-e525273f.js index 988bb975c7..654116e55d 100644 --- a/web/settings/assets/bat-09e11c39.js +++ b/web/settings/assets/bat-e525273f.js @@ -1 +1 @@ -import{C as m}from"./HardwareInstallation-3a644290.js";import{_ as d,u as n,l as u,m as l,G as t,E as i,y as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSigenergyBat",mixins:[m]},b={class:"device-sigenergy-bat"};function _(o,e,c,f,v,y){const r=n("openwb-base-heading"),a=n("openwb-base-number-input");return u(),l("div",b,[t(r,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für Sigenergy Batteriespeicher ")])),_:1}),t(a,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[s(" Die Standard-Modbus-ID von Sigenergy ist 247 ")])),_:1},8,["model-value"])])}const V=d(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/bat.vue"]]);export{V as default}; +import{C as m}from"./HardwareInstallation-727b5962.js";import{_ as d,u as n,l as u,m as l,G as t,E as i,B as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSigenergyBat",mixins:[m]},b={class:"device-sigenergy-bat"};function _(o,e,c,f,v,w){const r=n("openwb-base-heading"),a=n("openwb-base-number-input");return u(),l("div",b,[t(r,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für Sigenergy Batteriespeicher ")])),_:1}),t(a,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[s(" Die Standard-Modbus-ID von Sigenergy ist 247 ")])),_:1},8,["model-value"])])}const V=d(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/bat.vue"]]);export{V as default}; diff --git a/web/settings/assets/bat_smart_energy-8db62ce9.js b/web/settings/assets/bat_smart_energy-99926987.js similarity index 59% rename from web/settings/assets/bat_smart_energy-8db62ce9.js rename to web/settings/assets/bat_smart_energy-99926987.js index 14fb6601f1..a2089a8bf2 100644 --- a/web/settings/assets/bat_smart_energy-8db62ce9.js +++ b/web/settings/assets/bat_smart_energy-99926987.js @@ -1 +1 @@ -import{C as a}from"./HardwareInstallation-3a644290.js";import{_ as m,u as o,l as p,m as u,G as t,E as d,y as _}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceSunnyBoyBatSmartEnergy",mixins:[a]},b={class:"device-sunnyboy-bat-smart-energy"};function c(n,e,f,y,g,v){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return p(),u("div",b,[t(s,null,{default:d(()=>e[1]||(e[1]=[_(" Einstellungen für SMA Sunny Boy Smart Energy Batteriespeicher ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.modbus_id"))},null,8,["model-value"])])}const h=m(l,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/bat_smart_energy.vue"]]);export{h as default}; +import{C as a}from"./HardwareInstallation-727b5962.js";import{_ as m,u as o,l as p,m as u,G as t,E as d,B as _}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceSunnyBoyBatSmartEnergy",mixins:[a]},b={class:"device-sunnyboy-bat-smart-energy"};function c(n,e,f,g,y,v){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return p(),u("div",b,[t(s,null,{default:d(()=>e[1]||(e[1]=[_(" Einstellungen für SMA Sunny Boy Smart Energy Batteriespeicher ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.modbus_id"))},null,8,["model-value"])])}const h=m(l,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/bat_smart_energy.vue"]]);export{h as default}; diff --git a/web/settings/assets/chargePoint-776647d8.js b/web/settings/assets/chargePoint-3eb75766.js similarity index 94% rename from web/settings/assets/chargePoint-776647d8.js rename to web/settings/assets/chargePoint-3eb75766.js index 21a3d8e3c2..100f0103ee 100644 --- a/web/settings/assets/chargePoint-776647d8.js +++ b/web/settings/assets/chargePoint-3eb75766.js @@ -1 +1 @@ -import{C as d}from"./ChargePointInstallation-408ee2ed.js";import{_ as g,u,l as a,m,G as e,E as i,y as t,x as l,F as r}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"ChargePointMqtt",mixins:[d]},b={class:"charge-point-mqtt"};function k(o,n,B,v,w,W){const p=u("openwb-base-alert"),s=u("openwb-base-copy-to-clipboard");return a(),m("div",b,[e(p,{subtype:"danger"},{default:i(()=>n[0]||(n[0]=[t(" Dieser Ladepunkt-Typ darf nur in Kombination mit dem Simulator zur Fehleranalyse genutzt werden. Eine andere Verwendung ist laut den Nutzungsbedingungen untersagt. ")])),_:1}),e(p,{subtype:"info"},{default:i(()=>[n[72]||(n[72]=t(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten von speziellen Topics im Broker gelesen bzw. geschrieben werden.")),n[73]||(n[73]=l("br",null,null,-1)),n[74]||(n[74]=t(" Alle Daten werden als gültiges JSON gesendet und auch so erwartet! Zahlen mit Nachkommastellen (Float) verwenden einen Punkt als Dezimaltrenner (internationales Format). ")),l("ol",null,[l("li",null,[n[11]||(n[11]=t(" von openWB gesendete Topics ")),l("ul",null,[l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/chargepoint/"+r(o.chargePoint.id)+"/set/current ",1)]),_:1}),n[1]||(n[1]=l("br",null,null,-1)),n[2]||(n[2]=t(" Sollwert des Ladestroms, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt).")),n[3]||(n[3]=l("br",null,null,-1)),n[4]||(n[4]=t(" Beispiel: ")),n[5]||(n[5]=l("span",{class:"text-info"},"12.34",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/chargepoint/"+r(o.chargePoint.id)+"/set/phases_to_use ",1)]),_:1}),n[6]||(n[6]=l("br",null,null,-1)),n[7]||(n[7]=t(" Sollwert für die Anzahl Phasen als Ganzzahl (Integer). Mögliche Werte: 1 oder 3")),n[8]||(n[8]=l("br",null,null,-1)),n[9]||(n[9]=t(" Beispiel: ")),n[10]||(n[10]=l("span",{class:"text-info"},"1",-1))])])]),l("li",null,[n[37]||(n[37]=t(" von openWB zwingend erwartete Topics ")),l("ul",null,[l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/currents ",1)]),_:1}),n[12]||(n[12]=l("br",null,null,-1)),n[13]||(n[13]=t(" Aktuelle Phasenströme des Ladepunktes, Array mit drei Zahlen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt).")),n[14]||(n[14]=l("br",null,null,-1)),n[15]||(n[15]=t(" Beispiel: ")),n[16]||(n[16]=l("span",{class:"text-info"},"[6.78,6.89,6.94]",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/power ",1)]),_:1}),n[17]||(n[17]=l("br",null,null,-1)),n[18]||(n[18]=t(" Leistung in Watt, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt).")),n[19]||(n[19]=l("br",null,null,-1)),n[20]||(n[20]=t(" Beispiel: ")),n[21]||(n[21]=l("span",{class:"text-info"},"123.45",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/plug_state ",1)]),_:1}),n[22]||(n[22]=l("br",null,null,-1)),n[23]||(n[23]=t(" Zeigt an, ob aktuell ein Fahrzeug angesteckt ist, Wahrheitswert (Bool).")),n[24]||(n[24]=l("br",null,null,-1)),n[25]||(n[25]=t(" Beispiel: ")),n[26]||(n[26]=l("span",{class:"text-info"},"true",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/charge_state ",1)]),_:1}),n[27]||(n[27]=l("br",null,null,-1)),n[28]||(n[28]=t(" Zeigt an, ob ein Ladevorgang aktiv ist, Wahrheitswert (Bool).")),n[29]||(n[29]=l("br",null,null,-1)),n[30]||(n[30]=t(" Beispiel: ")),n[31]||(n[31]=l("span",{class:"text-info"},"true",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/phases_in_use ",1)]),_:1}),n[32]||(n[32]=l("br",null,null,-1)),n[33]||(n[33]=t(" Anzahl der Phasen, mit denen geladen wird, Ganzzahl (Integer). Mögliche Werte: 0 bis 3")),n[34]||(n[34]=l("br",null,null,-1)),n[35]||(n[35]=t(" Beispiel: ")),n[36]||(n[36]=l("span",{class:"text-info"},"3",-1))])])]),l("li",null,[n[71]||(n[71]=t(" optionale Topics ")),l("ul",null,[l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/imported ",1)]),_:1}),n[38]||(n[38]=l("br",null,null,-1)),n[39]||(n[39]=t(" Geladene Energie in Wh, mit Nachkommastellen (Float), nur positiv")),n[40]||(n[40]=l("br",null,null,-1)),n[41]||(n[41]=t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert.")),n[42]||(n[42]=l("br",null,null,-1)),n[43]||(n[43]=t(" Beispiel: ")),n[44]||(n[44]=l("span",{class:"text-info"},"123.45",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/exported ",1)]),_:1}),n[45]||(n[45]=l("br",null,null,-1)),n[46]||(n[46]=t(" Entladene Energie in Wh, mit Nachkommastellen (Float), nur positiv")),n[47]||(n[47]=l("br",null,null,-1)),n[48]||(n[48]=t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert.")),n[49]||(n[49]=l("br",null,null,-1)),n[50]||(n[50]=t(" Beispiel: ")),n[51]||(n[51]=l("span",{class:"text-info"},"123.45",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/voltages ",1)]),_:1}),n[52]||(n[52]=l("br",null,null,-1)),n[53]||(n[53]=t(" Aktuelle Phasenspannungen des Ladepunktes, Array mit drei Zahlen (Float), nur positiv.")),n[54]||(n[54]=l("br",null,null,-1)),n[55]||(n[55]=t(" Die Spannungen werden nicht verarbeitet, sondern lediglich im Status angezeigt.")),n[56]||(n[56]=l("br",null,null,-1)),n[57]||(n[57]=t(" Beispiel: ")),n[58]||(n[58]=l("span",{class:"text-info"},"[230.12,231.08,232.54]",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/power_factors ",1)]),_:1}),n[59]||(n[59]=l("br",null,null,-1)),n[60]||(n[60]=t(" Aktuelle Leistungsfaktoren des Ladepunktes, Array mit drei Zahlen (Float), Wertebereich von -1 bis 1.")),n[61]||(n[61]=l("br",null,null,-1)),n[62]||(n[62]=t(" Die Leistungsfaktoren werden nicht verarbeitet, sondern lediglich im Status angezeigt.")),n[63]||(n[63]=l("br",null,null,-1)),n[64]||(n[64]=t(" Beispiel: ")),n[65]||(n[65]=l("span",{class:"text-info"},"[-0.87,0.96,1.0]",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/rfid_tag ",1)]),_:1}),n[66]||(n[66]=l("br",null,null,-1)),n[67]||(n[67]=t(" Eine Zeichenfolge, die einen eingelesenen Tag für openWB repräsentiert.")),n[68]||(n[68]=l("br",null,null,-1)),n[69]||(n[69]=t(" Beispiel: ")),n[70]||(n[70]=l("span",{class:"text-info"},'"123654"',-1))])])])])]),_:1})])}const Z=g(f,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/mqtt/chargePoint.vue"]]);export{Z as default}; +import{C as d}from"./ChargePointInstallation-7e51ce35.js";import{_ as g,u,l as a,m,G as e,E as i,B as t,A as l,F as r}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"ChargePointMqtt",mixins:[d]},b={class:"charge-point-mqtt"};function k(o,n,B,v,w,W){const p=u("openwb-base-alert"),s=u("openwb-base-copy-to-clipboard");return a(),m("div",b,[e(p,{subtype:"danger"},{default:i(()=>n[0]||(n[0]=[t(" Dieser Ladepunkt-Typ darf nur in Kombination mit dem Simulator zur Fehleranalyse genutzt werden. Eine andere Verwendung ist laut den Nutzungsbedingungen untersagt. ")])),_:1}),e(p,{subtype:"info"},{default:i(()=>[n[72]||(n[72]=t(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten von speziellen Topics im Broker gelesen bzw. geschrieben werden.")),n[73]||(n[73]=l("br",null,null,-1)),n[74]||(n[74]=t(" Alle Daten werden als gültiges JSON gesendet und auch so erwartet! Zahlen mit Nachkommastellen (Float) verwenden einen Punkt als Dezimaltrenner (internationales Format). ")),l("ol",null,[l("li",null,[n[11]||(n[11]=t(" von openWB gesendete Topics ")),l("ul",null,[l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/chargepoint/"+r(o.chargePoint.id)+"/set/current ",1)]),_:1}),n[1]||(n[1]=l("br",null,null,-1)),n[2]||(n[2]=t(" Sollwert des Ladestroms, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt).")),n[3]||(n[3]=l("br",null,null,-1)),n[4]||(n[4]=t(" Beispiel: ")),n[5]||(n[5]=l("span",{class:"text-info"},"12.34",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/chargepoint/"+r(o.chargePoint.id)+"/set/phases_to_use ",1)]),_:1}),n[6]||(n[6]=l("br",null,null,-1)),n[7]||(n[7]=t(" Sollwert für die Anzahl Phasen als Ganzzahl (Integer). Mögliche Werte: 1 oder 3")),n[8]||(n[8]=l("br",null,null,-1)),n[9]||(n[9]=t(" Beispiel: ")),n[10]||(n[10]=l("span",{class:"text-info"},"1",-1))])])]),l("li",null,[n[37]||(n[37]=t(" von openWB zwingend erwartete Topics ")),l("ul",null,[l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/currents ",1)]),_:1}),n[12]||(n[12]=l("br",null,null,-1)),n[13]||(n[13]=t(" Aktuelle Phasenströme des Ladepunktes, Array mit drei Zahlen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt).")),n[14]||(n[14]=l("br",null,null,-1)),n[15]||(n[15]=t(" Beispiel: ")),n[16]||(n[16]=l("span",{class:"text-info"},"[6.78,6.89,6.94]",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/power ",1)]),_:1}),n[17]||(n[17]=l("br",null,null,-1)),n[18]||(n[18]=t(" Leistung in Watt, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt).")),n[19]||(n[19]=l("br",null,null,-1)),n[20]||(n[20]=t(" Beispiel: ")),n[21]||(n[21]=l("span",{class:"text-info"},"123.45",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/plug_state ",1)]),_:1}),n[22]||(n[22]=l("br",null,null,-1)),n[23]||(n[23]=t(" Zeigt an, ob aktuell ein Fahrzeug angesteckt ist, Wahrheitswert (Bool).")),n[24]||(n[24]=l("br",null,null,-1)),n[25]||(n[25]=t(" Beispiel: ")),n[26]||(n[26]=l("span",{class:"text-info"},"true",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/charge_state ",1)]),_:1}),n[27]||(n[27]=l("br",null,null,-1)),n[28]||(n[28]=t(" Zeigt an, ob ein Ladevorgang aktiv ist, Wahrheitswert (Bool).")),n[29]||(n[29]=l("br",null,null,-1)),n[30]||(n[30]=t(" Beispiel: ")),n[31]||(n[31]=l("span",{class:"text-info"},"true",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/phases_in_use ",1)]),_:1}),n[32]||(n[32]=l("br",null,null,-1)),n[33]||(n[33]=t(" Anzahl der Phasen, mit denen geladen wird, Ganzzahl (Integer). Mögliche Werte: 0 bis 3")),n[34]||(n[34]=l("br",null,null,-1)),n[35]||(n[35]=t(" Beispiel: ")),n[36]||(n[36]=l("span",{class:"text-info"},"3",-1))])])]),l("li",null,[n[71]||(n[71]=t(" optionale Topics ")),l("ul",null,[l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/imported ",1)]),_:1}),n[38]||(n[38]=l("br",null,null,-1)),n[39]||(n[39]=t(" Geladene Energie in Wh, mit Nachkommastellen (Float), nur positiv")),n[40]||(n[40]=l("br",null,null,-1)),n[41]||(n[41]=t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert.")),n[42]||(n[42]=l("br",null,null,-1)),n[43]||(n[43]=t(" Beispiel: ")),n[44]||(n[44]=l("span",{class:"text-info"},"123.45",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/exported ",1)]),_:1}),n[45]||(n[45]=l("br",null,null,-1)),n[46]||(n[46]=t(" Entladene Energie in Wh, mit Nachkommastellen (Float), nur positiv")),n[47]||(n[47]=l("br",null,null,-1)),n[48]||(n[48]=t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert.")),n[49]||(n[49]=l("br",null,null,-1)),n[50]||(n[50]=t(" Beispiel: ")),n[51]||(n[51]=l("span",{class:"text-info"},"123.45",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/voltages ",1)]),_:1}),n[52]||(n[52]=l("br",null,null,-1)),n[53]||(n[53]=t(" Aktuelle Phasenspannungen des Ladepunktes, Array mit drei Zahlen (Float), nur positiv.")),n[54]||(n[54]=l("br",null,null,-1)),n[55]||(n[55]=t(" Die Spannungen werden nicht verarbeitet, sondern lediglich im Status angezeigt.")),n[56]||(n[56]=l("br",null,null,-1)),n[57]||(n[57]=t(" Beispiel: ")),n[58]||(n[58]=l("span",{class:"text-info"},"[230.12,231.08,232.54]",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/power_factors ",1)]),_:1}),n[59]||(n[59]=l("br",null,null,-1)),n[60]||(n[60]=t(" Aktuelle Leistungsfaktoren des Ladepunktes, Array mit drei Zahlen (Float), Wertebereich von -1 bis 1.")),n[61]||(n[61]=l("br",null,null,-1)),n[62]||(n[62]=t(" Die Leistungsfaktoren werden nicht verarbeitet, sondern lediglich im Status angezeigt.")),n[63]||(n[63]=l("br",null,null,-1)),n[64]||(n[64]=t(" Beispiel: ")),n[65]||(n[65]=l("span",{class:"text-info"},"[-0.87,0.96,1.0]",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/rfid_tag ",1)]),_:1}),n[66]||(n[66]=l("br",null,null,-1)),n[67]||(n[67]=t(" Eine Zeichenfolge, die einen eingelesenen Tag für openWB repräsentiert.")),n[68]||(n[68]=l("br",null,null,-1)),n[69]||(n[69]=t(" Beispiel: ")),n[70]||(n[70]=l("span",{class:"text-info"},'"123654"',-1))])])])])]),_:1})])}const Z=g(f,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/mqtt/chargePoint.vue"]]);export{Z as default}; diff --git a/web/settings/assets/chargePoint-542a9664.js b/web/settings/assets/chargePoint-5487f7d8.js similarity index 59% rename from web/settings/assets/chargePoint-542a9664.js rename to web/settings/assets/chargePoint-5487f7d8.js index fd01051cd1..ab8f91e93a 100644 --- a/web/settings/assets/chargePoint-542a9664.js +++ b/web/settings/assets/chargePoint-5487f7d8.js @@ -1 +1 @@ -import{C as r}from"./ChargePointInstallation-408ee2ed.js";import{_ as i,u as p,l as s,m as a,G as m}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"ChargePointOpenwbPro",mixins:[r]},d={class:"charge-point-openwb-pro"};function u(o,e,_,l,f,g){const t=p("openwb-base-text-input");return s(),a("div",d,[m(t,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])])}const k=i(c,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/chargePoint.vue"]]);export{k as default}; +import{C as r}from"./ChargePointInstallation-7e51ce35.js";import{_ as i,u as p,l as s,m as a,G as m}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"ChargePointOpenwbPro",mixins:[r]},d={class:"charge-point-openwb-pro"};function u(o,e,_,l,f,g){const t=p("openwb-base-text-input");return s(),a("div",d,[m(t,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])])}const k=i(c,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/chargePoint.vue"]]);export{k as default}; diff --git a/web/settings/assets/chargePoint-84c8e28d.js b/web/settings/assets/chargePoint-57970a5b.js similarity index 59% rename from web/settings/assets/chargePoint-84c8e28d.js rename to web/settings/assets/chargePoint-57970a5b.js index c5b6042550..69fd6a2611 100644 --- a/web/settings/assets/chargePoint-84c8e28d.js +++ b/web/settings/assets/chargePoint-57970a5b.js @@ -1 +1 @@ -import{C as r}from"./ChargePointInstallation-408ee2ed.js";import{_ as i,u as a,l as p,m as s,G as d}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"ChargePointOpenwbDcAdapter",mixins:[r]},m={class:"charge-point-openwb-dc-adapter"};function u(e,o,_,l,f,g){const t=a("openwb-base-text-input");return p(),s("div",m,[d(t,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.chargePoint.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])])}const k=i(c,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_dc_adapter/chargePoint.vue"]]);export{k as default}; +import{C as r}from"./ChargePointInstallation-7e51ce35.js";import{_ as i,u as a,l as p,m as s,G as d}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"ChargePointOpenwbDcAdapter",mixins:[r]},m={class:"charge-point-openwb-dc-adapter"};function u(e,o,_,l,f,g){const t=a("openwb-base-text-input");return p(),s("div",m,[d(t,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.chargePoint.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])])}const k=i(c,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_dc_adapter/chargePoint.vue"]]);export{k as default}; diff --git a/web/settings/assets/chargePoint-f16b10ce.js b/web/settings/assets/chargePoint-61378497.js similarity index 72% rename from web/settings/assets/chargePoint-f16b10ce.js rename to web/settings/assets/chargePoint-61378497.js index 16b19b1b18..bfbd9c5f7c 100644 --- a/web/settings/assets/chargePoint-f16b10ce.js +++ b/web/settings/assets/chargePoint-61378497.js @@ -1 +1 @@ -import{C as p}from"./ChargePointInstallation-408ee2ed.js";import{_ as s,u as t,l as u,m,G as i,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"ChargePointSatellite",mixins:[p]},c={class:"charge-point-openwb-satellite"};function g(n,e,f,b,h,w){const r=t("openwb-base-text-input"),a=t("openwb-base-number-input");return u(),m("div",c,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":n.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o-1,"configuration.duo_num"))},{help:d(()=>e[2]||(e[2]=[l(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')])),_:1},8,["model-value"])])}const N=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_series2_satellit/chargePoint.vue"]]);export{N as default}; +import{C as p}from"./ChargePointInstallation-7e51ce35.js";import{_ as s,u as t,l as u,m,G as i,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"ChargePointSatellite",mixins:[p]},c={class:"charge-point-openwb-satellite"};function g(n,e,f,b,h,w){const r=t("openwb-base-text-input"),a=t("openwb-base-number-input");return u(),m("div",c,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":n.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o-1,"configuration.duo_num"))},{help:d(()=>e[2]||(e[2]=[l(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')])),_:1},8,["model-value"])])}const N=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_series2_satellit/chargePoint.vue"]]);export{N as default}; diff --git a/web/settings/assets/chargePoint-e230a14a.js b/web/settings/assets/chargePoint-d73403a3.js similarity index 72% rename from web/settings/assets/chargePoint-e230a14a.js rename to web/settings/assets/chargePoint-d73403a3.js index 6a1bf1e57e..e133a1f5b8 100644 --- a/web/settings/assets/chargePoint-e230a14a.js +++ b/web/settings/assets/chargePoint-d73403a3.js @@ -1 +1 @@ -import{C as s}from"./ChargePointInstallation-408ee2ed.js";import{_ as p,u as n,l as u,m,G as i,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const g={name:"ChargePointSmartwb",mixins:[s]},b={class:"charge-point-smartwb"};function c(t,e,f,_,w,v){const r=n("openwb-base-text-input"),a=n("openwb-base-number-input");return u(),m("div",b,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Wartezeit",required:"",min:2,max:10,unit:"s","model-value":t.chargePoint.configuration.timeout,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.timeout"))},{help:d(()=>e[2]||(e[2]=[l(" Zeitangabe in Sekunden, für die auf eine Antwort des Ladepunktes gewartet wird. Wird diese Zeit überschritten, so wird von einer Kommunikationsstörung ausgegangen. ")])),_:1},8,["model-value"])])}const q=p(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/smartwb/chargePoint.vue"]]);export{q as default}; +import{C as s}from"./ChargePointInstallation-7e51ce35.js";import{_ as p,u as n,l as u,m,G as i,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const g={name:"ChargePointSmartwb",mixins:[s]},b={class:"charge-point-smartwb"};function c(t,e,f,_,w,v){const r=n("openwb-base-text-input"),a=n("openwb-base-number-input");return u(),m("div",b,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Wartezeit",required:"",min:2,max:10,unit:"s","model-value":t.chargePoint.configuration.timeout,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.timeout"))},{help:d(()=>e[2]||(e[2]=[l(" Zeitangabe in Sekunden, für die auf eine Antwort des Ladepunktes gewartet wird. Wird diese Zeit überschritten, so wird von einer Kommunikationsstörung ausgegangen. ")])),_:1},8,["model-value"])])}const q=p(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/smartwb/chargePoint.vue"]]);export{q as default}; diff --git a/web/settings/assets/chargePoint-ba464cf4.js b/web/settings/assets/chargePoint-e13a3df6.js similarity index 78% rename from web/settings/assets/chargePoint-ba464cf4.js rename to web/settings/assets/chargePoint-e13a3df6.js index 442109b406..afc7da719c 100644 --- a/web/settings/assets/chargePoint-ba464cf4.js +++ b/web/settings/assets/chargePoint-e13a3df6.js @@ -1 +1 @@ -import{C as u}from"./ChargePointInstallation-408ee2ed.js";import{_ as p,u as t,l as i,m as d,G as m,z as l,E as c,y as g,B as _}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"ChargePointInternalOpenwb",mixins:[u],methods:{updateMode(e){["series","socket","pro_plus"].includes(e)&&this.updateConfiguration(0,"configuration.duo_num"),this.updateConfiguration(e,"configuration.mode")}}},b={class:"charge-point-internal-openwb"};function h(e,o,B,v,w,a){const r=t("openwb-base-select-input"),s=t("openwb-base-number-input");return i(),d("div",b,[m(r,{title:"Bauart","not-selected":"Bitte auswählen",required:"",options:[{value:"series",text:"openWB series1/2 in den Varianten custom, standard & standard+"},{value:"duo",text:"openWB series1/2 Duo"},{value:"socket",text:"openWB series1/2 Buchse"},{value:"pro_plus",text:"openWB Pro+"}],"model-value":e.chargePoint.configuration.mode,"onUpdate:modelValue":o[0]||(o[0]=n=>a.updateMode(n))},null,8,["model-value"]),e.chargePoint.configuration.mode=="duo"?(i(),l(s,{key:0,title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":e.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n-1,"configuration.duo_num"))},{help:c(()=>o[2]||(o[2]=[g(' Bei einer openWB Duo können mit "1" oder "2" die beiden enthaltenen Ladepunkte angesprochen werden. ')])),_:1},8,["model-value"])):_("",!0)])}const q=p(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/internal_openwb/chargePoint.vue"]]);export{q as default}; +import{C as u}from"./ChargePointInstallation-7e51ce35.js";import{_ as p,u as t,l as i,m as d,G as m,x as l,E as c,B as g,z as _}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"ChargePointInternalOpenwb",mixins:[u],methods:{updateMode(e){["series","socket","pro_plus"].includes(e)&&this.updateConfiguration(0,"configuration.duo_num"),this.updateConfiguration(e,"configuration.mode")}}},b={class:"charge-point-internal-openwb"};function h(e,o,B,v,w,a){const r=t("openwb-base-select-input"),s=t("openwb-base-number-input");return i(),d("div",b,[m(r,{title:"Bauart","not-selected":"Bitte auswählen",required:"",options:[{value:"series",text:"openWB series1/2 in den Varianten custom, standard & standard+"},{value:"duo",text:"openWB series1/2 Duo"},{value:"socket",text:"openWB series1/2 Buchse"},{value:"pro_plus",text:"openWB Pro+"}],"model-value":e.chargePoint.configuration.mode,"onUpdate:modelValue":o[0]||(o[0]=n=>a.updateMode(n))},null,8,["model-value"]),e.chargePoint.configuration.mode=="duo"?(i(),l(s,{key:0,title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":e.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n-1,"configuration.duo_num"))},{help:c(()=>o[2]||(o[2]=[g(' Bei einer openWB Duo können mit "1" oder "2" die beiden enthaltenen Ladepunkte angesprochen werden. ')])),_:1},8,["model-value"])):_("",!0)])}const q=p(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/internal_openwb/chargePoint.vue"]]);export{q as default}; diff --git a/web/settings/assets/chargePoint-6c271d6b.js b/web/settings/assets/chargePoint-f1ddcbb4.js similarity index 72% rename from web/settings/assets/chargePoint-6c271d6b.js rename to web/settings/assets/chargePoint-f1ddcbb4.js index b93abebe53..034d1d37ec 100644 --- a/web/settings/assets/chargePoint-6c271d6b.js +++ b/web/settings/assets/chargePoint-f1ddcbb4.js @@ -1 +1 @@ -import{C as p}from"./ChargePointInstallation-408ee2ed.js";import{_ as s,u as t,l as u,m,G as i,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"ChargePointExternalOpenwb",mixins:[p]},c={class:"charge-point-external-openwb"};function g(n,e,b,f,h,w){const r=t("openwb-base-text-input"),a=t("openwb-base-number-input");return u(),m("div",c,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":n.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o-1,"configuration.duo_num"))},{help:d(()=>e[2]||(e[2]=[l(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')])),_:1},8,["model-value"])])}const E=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/external_openwb/chargePoint.vue"]]);export{E as default}; +import{C as p}from"./ChargePointInstallation-7e51ce35.js";import{_ as s,u as t,l as u,m,G as i,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"ChargePointExternalOpenwb",mixins:[p]},c={class:"charge-point-external-openwb"};function g(n,e,b,f,h,w){const r=t("openwb-base-text-input"),a=t("openwb-base-number-input");return u(),m("div",c,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":n.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o-1,"configuration.duo_num"))},{help:d(()=>e[2]||(e[2]=[l(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')])),_:1},8,["model-value"])])}const E=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/external_openwb/chargePoint.vue"]]);export{E as default}; diff --git a/web/settings/assets/commands-b3575711.js b/web/settings/assets/commands-ae4d3051.js similarity index 84% rename from web/settings/assets/commands-b3575711.js rename to web/settings/assets/commands-ae4d3051.js index 74588112c5..e7480a3b93 100644 --- a/web/settings/assets/commands-b3575711.js +++ b/web/settings/assets/commands-ae4d3051.js @@ -1 +1 @@ -import{a as d}from"./ChargePointInstallation-408ee2ed.js";import{_ as u,u as c,l,m as g,G as a,E as r,y as p}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"ChargePointCommandsOpenwbPro",mixins:[d],methods:{async triggerUpdate(){let t=new FormData;t.append("command","update"),t.append("data",'{"ip_address":"'+this.chargePoint.configuration.ip_address+'"}');const n="Die Aktualisierung der openWB Pro wird gestartet...";this.$root.postClientMessage(n,"info"),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/charge_points/openwb_pro/commands.php",t,{timeout:5e3}).then(()=>{const e="Die Aktualisierung der openWB Pro wurde erfolgreich gestartet.";this.$root.postClientMessage(e,"success")}).catch(e=>{var s="Aktualisierung fehlgeschlagen!
";e.response?(console.error(e.response.status,e.response.data),s+=e.response.status+": "+e.response.data):e.request?(console.error(e.request),s+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",e.message),s+="Es ist ein unbekannter Fehler aufgetreten."),this.$root.postClientMessage(s,"danger")})},openSettings(){window.open("http://"+this.chargePoint.configuration.ip_address,"_blank")}}},h={class:"charge-point-commands-openwb-pro"};function f(t,n,e,s,b,o){const i=c("openwb-base-button-input");return l(),g("div",h,[a(i,{title:"Ladepunkt aktualisieren","button-text":"Update anfordern",subtype:"success",disabled:t.chargePoint.configuration.ip_address==null,onButtonClicked:o.triggerUpdate},{help:r(()=>n[0]||(n[0]=[p(" Mit diesem Befehl können Sie die Aktualisierung der openWB Pro anstoßen. Bitte beachten Sie, dass kein Fahrzeug angesteckt ist. ")])),_:1},8,["disabled","onButtonClicked"]),a(i,{title:"Einstellungen öffnen","button-text":"Zu den Einstellungen",subtype:"success",disabled:t.chargePoint.configuration.ip_address==null,onButtonClicked:o.openSettings},{help:r(()=>n[1]||(n[1]=[p(" Mit diesem Befehl können Sie die Einstellungen der openWB Pro in einem neuen Browser-Tab oder -Fenster öffnen. ")])),_:1},8,["disabled","onButtonClicked"])])}const v=u(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/commands.vue"]]);export{v as default}; +import{a as d}from"./ChargePointInstallation-7e51ce35.js";import{_ as u,u as c,l,m as g,G as a,E as r,B as p}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"ChargePointCommandsOpenwbPro",mixins:[d],methods:{async triggerUpdate(){let t=new FormData;t.append("command","update"),t.append("data",'{"ip_address":"'+this.chargePoint.configuration.ip_address+'"}');const n="Die Aktualisierung der openWB Pro wird gestartet...";this.$root.postClientMessage(n,"info"),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/charge_points/openwb_pro/commands.php",t,{timeout:5e3}).then(()=>{const e="Die Aktualisierung der openWB Pro wurde erfolgreich gestartet.";this.$root.postClientMessage(e,"success")}).catch(e=>{var s="Aktualisierung fehlgeschlagen!
";e.response?(console.error(e.response.status,e.response.data),s+=e.response.status+": "+e.response.data):e.request?(console.error(e.request),s+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",e.message),s+="Es ist ein unbekannter Fehler aufgetreten."),this.$root.postClientMessage(s,"danger")})},openSettings(){window.open("http://"+this.chargePoint.configuration.ip_address,"_blank")}}},h={class:"charge-point-commands-openwb-pro"};function f(t,n,e,s,b,o){const i=c("openwb-base-button-input");return l(),g("div",h,[a(i,{title:"Ladepunkt aktualisieren","button-text":"Update anfordern",subtype:"success",disabled:t.chargePoint.configuration.ip_address==null,onButtonClicked:o.triggerUpdate},{help:r(()=>n[0]||(n[0]=[p(" Mit diesem Befehl können Sie die Aktualisierung der openWB Pro anstoßen. Bitte beachten Sie, dass kein Fahrzeug angesteckt ist. ")])),_:1},8,["disabled","onButtonClicked"]),a(i,{title:"Einstellungen öffnen","button-text":"Zu den Einstellungen",subtype:"success",disabled:t.chargePoint.configuration.ip_address==null,onButtonClicked:o.openSettings},{help:r(()=>n[1]||(n[1]=[p(" Mit diesem Befehl können Sie die Einstellungen der openWB Pro in einem neuen Browser-Tab oder -Fenster öffnen. ")])),_:1},8,["disabled","onButtonClicked"])])}const v=u(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/commands.vue"]]);export{v as default}; diff --git a/web/settings/assets/commands-38fd7ea5.js b/web/settings/assets/commands-f10e74ce.js similarity index 86% rename from web/settings/assets/commands-38fd7ea5.js rename to web/settings/assets/commands-f10e74ce.js index a5a40be55b..046663f8e2 100644 --- a/web/settings/assets/commands-38fd7ea5.js +++ b/web/settings/assets/commands-f10e74ce.js @@ -1 +1 @@ -import{a as g}from"./ChargePointInstallation-408ee2ed.js";import{_ as h,u,l as a,m as c,G as d,E as r,y as i,z as _,F as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"ChargePointCommandsInternalOpenwb",mixins:[g],computed:{mode(){switch(this.chargePoint.configuration.mode){case"series":return"openWB series1/2 custom, standard & standard+";case"duo":return"openWB series1/2 Duo";case"socket":return"openWB series1/2 Buchse";case"pro_plus":return"openWB Pro+";default:return this.chargePoint.configuration.mode}}},methods:{async triggerUpdate(){let n=new FormData;n.append("command","update_pro_plus");const t="Die Aktualisierung der openWB Pro+ wird gestartet...";this.$root.postClientMessage(t,"info"),console.debug(location),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/charge_points/internal_openwb/commands.php",n,{timeout:5e3}).then(()=>{const e="Die Aktualisierung der openWB Pro+ wurde erfolgreich gestartet.";this.$root.postClientMessage(e,"success")}).catch(e=>{var s="Aktualisierung fehlgeschlagen!
";e.response?(console.error(e.response.status,e.response.data),s+=e.response.status+": "+e.response.data):e.request?(console.error(e.request),s+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",e.message),s+="Es ist ein unbekannter Fehler aufgetreten."),this.$root.postClientMessage(s,"danger")})},openSettings(){window.open("http://"+location.hostname+":8080","_blank")}}},b={class:"charge-point-commands-internal-openwb"},k={key:0};function B(n,t,e,s,w,o){const p=u("openwb-base-button-input"),m=u("openwb-base-alert");return a(),c("div",b,[n.chargePoint.configuration.mode=="pro_plus"?(a(),c("div",k,[d(p,{title:"Ladepunkt aktualisieren","button-text":"Update anfordern",subtype:"success",onButtonClicked:o.triggerUpdate},{help:r(()=>t[0]||(t[0]=[i(" Hier können Sie die Aktualisierung der openWB Pro anstoßen. Bitte stellen Sie sicher, dass kein Fahrzeug angesteckt ist. ")])),_:1},8,["onButtonClicked"]),d(p,{title:"Einstellungen öffnen","button-text":"Zu den Einstellungen",subtype:"success",onButtonClicked:o.openSettings},{help:r(()=>t[1]||(t[1]=[i(" Mit diesem Befehl können Sie die Einstellungen der openWB Pro in einem neuen Browser-Tab oder -Fenster öffnen. ")])),_:1},8,["onButtonClicked"])])):(a(),_(m,{key:1,subtype:"secondary"},{default:r(()=>[i(' Der Ladepunkt-Typ "'+l(n.chargePoint.type)+'" bietet für die Bauart "'+l(o.mode)+'" keine Befehle an. ',1)]),_:1}))])}const S=h(f,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/internal_openwb/commands.vue"]]);export{S as default}; +import{a as g}from"./ChargePointInstallation-7e51ce35.js";import{_ as h,u,l as a,m as c,G as d,E as r,B as i,x as _,F as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"ChargePointCommandsInternalOpenwb",mixins:[g],computed:{mode(){switch(this.chargePoint.configuration.mode){case"series":return"openWB series1/2 custom, standard & standard+";case"duo":return"openWB series1/2 Duo";case"socket":return"openWB series1/2 Buchse";case"pro_plus":return"openWB Pro+";default:return this.chargePoint.configuration.mode}}},methods:{async triggerUpdate(){let n=new FormData;n.append("command","update_pro_plus");const t="Die Aktualisierung der openWB Pro+ wird gestartet...";this.$root.postClientMessage(t,"info"),console.debug(location),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/charge_points/internal_openwb/commands.php",n,{timeout:5e3}).then(()=>{const e="Die Aktualisierung der openWB Pro+ wurde erfolgreich gestartet.";this.$root.postClientMessage(e,"success")}).catch(e=>{var s="Aktualisierung fehlgeschlagen!
";e.response?(console.error(e.response.status,e.response.data),s+=e.response.status+": "+e.response.data):e.request?(console.error(e.request),s+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",e.message),s+="Es ist ein unbekannter Fehler aufgetreten."),this.$root.postClientMessage(s,"danger")})},openSettings(){window.open("http://"+location.hostname+":8080","_blank")}}},b={class:"charge-point-commands-internal-openwb"},k={key:0};function B(n,t,e,s,w,o){const p=u("openwb-base-button-input"),m=u("openwb-base-alert");return a(),c("div",b,[n.chargePoint.configuration.mode=="pro_plus"?(a(),c("div",k,[d(p,{title:"Ladepunkt aktualisieren","button-text":"Update anfordern",subtype:"success",onButtonClicked:o.triggerUpdate},{help:r(()=>t[0]||(t[0]=[i(" Hier können Sie die Aktualisierung der openWB Pro anstoßen. Bitte stellen Sie sicher, dass kein Fahrzeug angesteckt ist. ")])),_:1},8,["onButtonClicked"]),d(p,{title:"Einstellungen öffnen","button-text":"Zu den Einstellungen",subtype:"success",onButtonClicked:o.openSettings},{help:r(()=>t[1]||(t[1]=[i(" Mit diesem Befehl können Sie die Einstellungen der openWB Pro in einem neuen Browser-Tab oder -Fenster öffnen. ")])),_:1},8,["onButtonClicked"])])):(a(),_(m,{key:1,subtype:"secondary"},{default:r(()=>[i(' Der Ladepunkt-Typ "'+l(n.chargePoint.type)+'" bietet für die Bauart "'+l(o.mode)+'" keine Befehle an. ',1)]),_:1}))])}const S=h(f,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/internal_openwb/commands.vue"]]);export{S as default}; diff --git a/web/settings/assets/consumption_counter-704c01f7.js b/web/settings/assets/consumption_counter-d132c159.js similarity index 75% rename from web/settings/assets/consumption_counter-704c01f7.js rename to web/settings/assets/consumption_counter-d132c159.js index ea8d312a9a..87eb07b36e 100644 --- a/web/settings/assets/consumption_counter-704c01f7.js +++ b/web/settings/assets/consumption_counter-d132c159.js @@ -1 +1 @@ -import{C as d}from"./HardwareInstallation-3a644290.js";import{_ as m,u as o,l as b,m as c,G as t,E as s,y as r}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceOpenwbFlexConsumptionCounter",mixins:[d]},f={class:"device-openwb-flex-consumption-counter"};function g(n,e,w,v,x,B){const l=o("openwb-base-heading"),u=o("openwb-base-alert"),p=o("openwb-base-select-input"),a=o("openwb-base-number-input");return b(),c("div",f,[t(l,null,{default:s(()=>e[2]||(e[2]=[r(" Einstellungen für openWB-Flex Verbrauchszähler ")])),_:1}),t(u,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[r(" Bei saldierenden Zählern (B23) werden die Zählerstände für Einspeisung und Bezug aus dem Zähler ausgelesen. Bei Zählern, die nicht saldierend arbeiten (SDM120, SDM630, SDM72D-M), wird der Zählerstand für den Bezug aus dem Zähler ausgelesen. Eine Messung der Einspeisung ist nicht möglich. ")])),_:1}),t(p,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:"sdm120",text:"SDM120"},{value:"sdm630",text:"SDM630/SDM72D-M"},{value:"b23",text:"B23"}],"model-value":n.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.version"))},null,8,["model-value"]),t(a,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":n.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.id"))},null,8,["model-value"])])}const z=m(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/consumption_counter.vue"]]);export{z as default}; +import{C as d}from"./HardwareInstallation-727b5962.js";import{_ as m,u as o,l as b,m as c,G as t,E as s,B as r}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceOpenwbFlexConsumptionCounter",mixins:[d]},f={class:"device-openwb-flex-consumption-counter"};function g(n,e,w,v,B,x){const l=o("openwb-base-heading"),u=o("openwb-base-alert"),p=o("openwb-base-select-input"),a=o("openwb-base-number-input");return b(),c("div",f,[t(l,null,{default:s(()=>e[2]||(e[2]=[r(" Einstellungen für openWB-Flex Verbrauchszähler ")])),_:1}),t(u,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[r(" Bei saldierenden Zählern (B23) werden die Zählerstände für Einspeisung und Bezug aus dem Zähler ausgelesen. Bei Zählern, die nicht saldierend arbeiten (SDM120, SDM630, SDM72D-M), wird der Zählerstand für den Bezug aus dem Zähler ausgelesen. Eine Messung der Einspeisung ist nicht möglich. ")])),_:1}),t(p,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:"sdm120",text:"SDM120"},{value:"sdm630",text:"SDM630/SDM72D-M"},{value:"b23",text:"B23"}],"model-value":n.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.version"))},null,8,["model-value"]),t(a,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":n.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.id"))},null,8,["model-value"])])}const z=m(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/consumption_counter.vue"]]);export{z as default}; diff --git a/web/settings/assets/counter-01848dd0.js b/web/settings/assets/counter-01848dd0.js new file mode 100644 index 0000000000..71413d3d60 --- /dev/null +++ b/web/settings/assets/counter-01848dd0.js @@ -0,0 +1 @@ +import{C as o}from"./HardwareInstallation-727b5962.js";import{_ as n,u as i,l as s,m as a,G as r,E as p,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceJanitzaBat",mixins:[o]},u={class:"device-janitza-counter"};function _(d,e,f,l,v,b){const t=i("openwb-base-alert");return s(),a("div",u,[r(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(' ModbusTCP muss im Janitza auf Port 502 aktiv und die ID auf "1" eingestellt sein. ')])),_:1})])}const D=n(m,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/janitza/counter.vue"]]);export{D as default}; diff --git a/web/settings/assets/counter-3492fd19.js b/web/settings/assets/counter-021c90c7.js similarity index 71% rename from web/settings/assets/counter-3492fd19.js rename to web/settings/assets/counter-021c90c7.js index 3d6f504708..9225d01824 100644 --- a/web/settings/assets/counter-3492fd19.js +++ b/web/settings/assets/counter-021c90c7.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as l,u as t,l as m,m as d,G as o,E as i,y as r}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceVirtualCounter",mixins:[p]},_={class:"device-virtual-counter"};function f(n,e,b,g,v,h){const s=t("openwb-base-heading"),a=t("openwb-base-number-input");return m(),d("div",_,[o(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für virtuelle Zähler ")])),_:1}),o(a,{title:"Zusätzlicher Verbrauch",min:0,step:.05,unit:"kW",required:"","model-value":n.component.configuration.external_consumption/1e3,"onUpdate:modelValue":e[0]||(e[0]=u=>n.updateConfiguration(u*1e3,"configuration.external_consumption"))},{help:i(()=>e[2]||(e[2]=[r(" Die hier angegebene Leistung wird pauschal zu dem Leistungen der hinter dem Zähler liegenden Komponenten addiert. Damit lässt sich z. B. eine Reserve für nicht erfasste Verbraucher einstellen. ")])),_:1},8,["model-value"])])}const E=l(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/virtual/counter.vue"]]);export{E as default}; +import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as l,u as t,l as m,m as d,G as o,E as i,B as r}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceVirtualCounter",mixins:[p]},_={class:"device-virtual-counter"};function f(n,e,b,g,v,h){const s=t("openwb-base-heading"),a=t("openwb-base-number-input");return m(),d("div",_,[o(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für virtuelle Zähler ")])),_:1}),o(a,{title:"Zusätzlicher Verbrauch",min:0,step:.05,unit:"kW",required:"","model-value":n.component.configuration.external_consumption/1e3,"onUpdate:modelValue":e[0]||(e[0]=u=>n.updateConfiguration(u*1e3,"configuration.external_consumption"))},{help:i(()=>e[2]||(e[2]=[r(" Die hier angegebene Leistung wird pauschal zu dem Leistungen der hinter dem Zähler liegenden Komponenten addiert. Damit lässt sich z. B. eine Reserve für nicht erfasste Verbraucher einstellen. ")])),_:1},8,["model-value"])])}const E=l(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/virtual/counter.vue"]]);export{E as default}; diff --git a/web/settings/assets/counter-d5ce341d.js b/web/settings/assets/counter-09ee9f20.js similarity index 53% rename from web/settings/assets/counter-d5ce341d.js rename to web/settings/assets/counter-09ee9f20.js index 2becbc1cd4..c355307531 100644 --- a/web/settings/assets/counter-d5ce341d.js +++ b/web/settings/assets/counter-09ee9f20.js @@ -1 +1 @@ -import{C as m}from"./HardwareInstallation-3a644290.js";import{_ as u,u as o,l as d,m as l,G as t,E as i,y as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceEnphaseCounter",mixins:[m]},_={class:"device-enphase-counter"};function f(n,e,b,v,g,E){const p=o("openwb-base-heading"),r=o("openwb-base-number-input");return d(),l("div",_,[t(p,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für Enphase Envoy / IQ Gateway Zähler ")])),_:1}),t(r,{title:"EID",required:"","model-value":n.component.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.eid"))},{help:i(()=>e[2]||(e[2]=[s(' EID für "net-consumption" ')])),_:1},8,["model-value"])])}const V=u(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/counter.vue"]]);export{V as default}; +import{C as m}from"./HardwareInstallation-727b5962.js";import{_ as u,u as o,l as d,m as l,G as t,E as i,B as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceEnphaseCounter",mixins:[m]},_={class:"device-enphase-counter"};function f(n,e,b,v,g,E){const p=o("openwb-base-heading"),r=o("openwb-base-number-input");return d(),l("div",_,[t(p,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für Enphase Envoy / IQ Gateway Zähler ")])),_:1}),t(r,{title:"EID",required:"","model-value":n.component.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.eid"))},{help:i(()=>e[2]||(e[2]=[s(' EID für "net-consumption" ')])),_:1},8,["model-value"])])}const k=u(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-55c27daf.js b/web/settings/assets/counter-0e51da5e.js similarity index 65% rename from web/settings/assets/counter-55c27daf.js rename to web/settings/assets/counter-0e51da5e.js index 73165ccfdc..bcb3bf341a 100644 --- a/web/settings/assets/counter-55c27daf.js +++ b/web/settings/assets/counter-0e51da5e.js @@ -1 +1 @@ -import{C as a}from"./HardwareInstallation-3a644290.js";import{_ as u,u as n,l as d,m as c,G as t,E as i,y as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceMTecCounter",mixins:[a]},_={class:"device-mtec-counter"};function b(o,e,f,v,g,C){const r=n("openwb-base-heading"),m=n("openwb-base-number-input");return d(),c("div",_,[t(r,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für M-Tec Zähler ")])),_:1}),t(m,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[s(" Die Standard-Modbus-ID von M-Tec ist 247 ")])),_:1},8,["model-value"])])}const k=u(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/counter.vue"]]);export{k as default}; +import{C as a}from"./HardwareInstallation-727b5962.js";import{_ as u,u as n,l as d,m as c,G as t,E as i,B as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceMTecCounter",mixins:[a]},_={class:"device-mtec-counter"};function b(o,e,f,v,g,C){const r=n("openwb-base-heading"),m=n("openwb-base-number-input");return d(),c("div",_,[t(r,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für M-Tec Zähler ")])),_:1}),t(m,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[s(" Die Standard-Modbus-ID von M-Tec ist 247 ")])),_:1},8,["model-value"])])}const k=u(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-394e8014.js b/web/settings/assets/counter-11d67ba8.js similarity index 63% rename from web/settings/assets/counter-394e8014.js rename to web/settings/assets/counter-11d67ba8.js index b077f84612..d44d66c138 100644 --- a/web/settings/assets/counter-394e8014.js +++ b/web/settings/assets/counter-11d67ba8.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as a,u as n,l as m,m as u,G as t,E as l,y as d}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisCounter",mixins:[p]},_={class:"device-solis-counter"};function b(o,e,f,v,g,C){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:l(()=>e[1]||(e[1]=[d(" Einstellungen für Solis Zähler ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const M=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/counter.vue"]]);export{M as default}; +import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as a,u as n,l as m,m as u,G as t,E as l,B as d}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisCounter",mixins:[p]},_={class:"device-solis-counter"};function b(o,e,f,v,g,C){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:l(()=>e[1]||(e[1]=[d(" Einstellungen für Solis Zähler ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const M=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/counter.vue"]]);export{M as default}; diff --git a/web/settings/assets/counter-7668209b.js b/web/settings/assets/counter-1306a4c6.js similarity index 63% rename from web/settings/assets/counter-7668209b.js rename to web/settings/assets/counter-1306a4c6.js index 4981a9eac0..fab93ffa53 100644 --- a/web/settings/assets/counter-7668209b.js +++ b/web/settings/assets/counter-1306a4c6.js @@ -1 +1 @@ -import{C as u}from"./HardwareInstallation-3a644290.js";import{_ as l,u as t,l as m,m as c,G as r,E as i,y as n,x as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfoxCounter",mixins:[u]},b={class:"device-powerfox-counter"};function g(o,e,w,x,_,h){const a=t("openwb-base-heading"),p=t("openwb-base-text-input");return m(),c("div",b,[r(a,null,{default:i(()=>e[1]||(e[1]=[n(" Einstellungen für Powerfox Zähler ")])),_:1}),r(p,{title:"ID",required:"","model-value":o.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>o.updateConfiguration(d,"configuration.id"))},{help:i(()=>e[2]||(e[2]=[n(" Um die ID herauszufinden mit dem Browser die Adresse "),s("a",{href:"https://backend.powerfox.energy/api/2.0/my/all/devices",target:"_blank",rel:"noopener noreferrer"}," https://backend.powerfox.energy/api/2.0/my/all/devices ",-1),n(" aufrufen und dort Benutzername und Passwort eingeben. Die DeviceID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/Kleinschreibung ist zu beachten! In dem Feld ist nur die Zeichenfolge direkt hinter "),s("span",{class:"font-weight-bold text-monospace",style:{display:"contents"}},' "DeviceID" ',-1),n(" ohne den Doppelpunkt und Anführungszeichen einzutragen. ")])),_:1},8,["model-value"])])}const $=l(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/counter.vue"]]);export{$ as default}; +import{C as u}from"./HardwareInstallation-727b5962.js";import{_ as l,u as t,l as m,m as c,G as r,E as i,B as n,A as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfoxCounter",mixins:[u]},b={class:"device-powerfox-counter"};function g(o,e,w,_,x,h){const a=t("openwb-base-heading"),p=t("openwb-base-text-input");return m(),c("div",b,[r(a,null,{default:i(()=>e[1]||(e[1]=[n(" Einstellungen für Powerfox Zähler ")])),_:1}),r(p,{title:"ID",required:"","model-value":o.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>o.updateConfiguration(d,"configuration.id"))},{help:i(()=>e[2]||(e[2]=[n(" Um die ID herauszufinden mit dem Browser die Adresse "),s("a",{href:"https://backend.powerfox.energy/api/2.0/my/all/devices",target:"_blank",rel:"noopener noreferrer"}," https://backend.powerfox.energy/api/2.0/my/all/devices ",-1),n(" aufrufen und dort Benutzername und Passwort eingeben. Die DeviceID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/Kleinschreibung ist zu beachten! In dem Feld ist nur die Zeichenfolge direkt hinter "),s("span",{class:"font-weight-bold text-monospace",style:{display:"contents"}},' "DeviceID" ',-1),n(" ohne den Doppelpunkt und Anführungszeichen einzutragen. ")])),_:1},8,["model-value"])])}const V=l(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/counter.vue"]]);export{V as default}; diff --git a/web/settings/assets/counter-1b273ac4.js b/web/settings/assets/counter-1b273ac4.js deleted file mode 100644 index 17bbba8552..0000000000 --- a/web/settings/assets/counter-1b273ac4.js +++ /dev/null @@ -1 +0,0 @@ -import{C as t}from"./HardwareInstallation-3a644290.js";import{_ as o,u as s,l as i,m as r,G as a,E as p,y as m}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSonnenbatterieCounter",mixins:[t]},d={class:"device-sonnenbatterie-counter"};function _(l,e,u,f,b,v){const n=s("openwb-base-alert");return i(),r("div",d,[a(n,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[m(" Mit diesem Modul ist kein phasenbasiertes Lastmanagement möglich, da keine Ströme der einzelnen Phasen gemessen werden. ")])),_:1})])}const y=o(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/counter.vue"]]);export{y as default}; diff --git a/web/settings/assets/counter-8d45ef9c.js b/web/settings/assets/counter-28bcfaac.js similarity index 87% rename from web/settings/assets/counter-8d45ef9c.js rename to web/settings/assets/counter-28bcfaac.js index 725fd75637..87a1d6a7c3 100644 --- a/web/settings/assets/counter-8d45ef9c.js +++ b/web/settings/assets/counter-28bcfaac.js @@ -1 +1 @@ -import{C as d}from"./HardwareInstallation-3a644290.js";import{_ as a,u,l as f,m as g,G as l,E as o,y as t,x as e,F as r}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceMqttCounter",mixins:[d]},k={class:"device-mqtt-counter"};function B(i,n,z,x,v,w){const p=u("openwb-base-heading"),s=u("openwb-base-copy-to-clipboard"),m=u("openwb-base-alert");return f(),g("div",k,[l(p,null,{default:o(()=>n[0]||(n[0]=[t(" Einstellungen für MQTT Zähler ")])),_:1}),l(m,{subtype:"info"},{default:o(()=>[n[41]||(n[41]=t(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: ")),e("ul",null,[e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/power ",1)]),_:1}),n[1]||(n[1]=e("br",null,null,-1)),n[2]||(n[2]=t(" Bezugsleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Bezug, negativ Einspeisung")),n[3]||(n[3]=e("br",null,null,-1)),n[4]||(n[4]=t(" Beispiel: ")),n[5]||(n[5]=e("span",{class:"text-info"},"-123.45",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/imported ",1)]),_:1}),n[6]||(n[6]=e("br",null,null,-1)),n[7]||(n[7]=t(" Bezogene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),n[8]||(n[8]=e("br",null,null,-1)),n[9]||(n[9]=t(" Beispiel: ")),n[10]||(n[10]=e("span",{class:"text-info"},"123.45",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/exported ",1)]),_:1}),n[11]||(n[11]=e("br",null,null,-1)),n[12]||(n[12]=t(" Eingespeiste Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),n[13]||(n[13]=e("br",null,null,-1)),n[14]||(n[14]=t(" Beispiel: ")),n[15]||(n[15]=e("span",{class:"text-info"},"123.45",-1))])]),n[42]||(n[42]=t(" Ströme je Phase sind für phasenbasiertes Lastmanagement unbedingt erforderlich, sonst erfolgt das Lastmanagement ausschließlich auf Basis der Gesamtleistung am EVU-Punkt: ")),e("ul",null,[e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/currents ",1)]),_:1}),n[16]||(n[16]=e("br",null,null,-1)),n[17]||(n[17]=t(" Array mit den Strömen je Phase in Ampere, mit Nachkommastellen (Float), positiv Bezug, negativ Einspeisung")),n[18]||(n[18]=e("br",null,null,-1)),n[19]||(n[19]=t(" Beispiel: ")),n[20]||(n[20]=e("span",{class:"text-info"},"[1.2,2.3,-2.1]",-1))])]),n[43]||(n[43]=t(" Die Netzfrequenz, Spannungen, Leistungen und Leistungsfaktoren jeder Phase werden ausschließlich zu Anzeigezwecken verwendet: ")),e("ul",null,[e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/frequency ",1)]),_:1}),n[21]||(n[21]=e("br",null,null,-1)),n[22]||(n[22]=t(" Netzfrequenz in Hz, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen")),n[23]||(n[23]=e("br",null,null,-1)),n[24]||(n[24]=t(" Beispiel: ")),n[25]||(n[25]=e("span",{class:"text-info"},"50.12",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/voltages ",1)]),_:1}),n[26]||(n[26]=e("br",null,null,-1)),n[27]||(n[27]=t(" Array mit den Spannungen je Phase in Volt, mit Nachkommastellen (Float)")),n[28]||(n[28]=e("br",null,null,-1)),n[29]||(n[29]=t(" Beispiel: ")),n[30]||(n[30]=e("span",{class:"text-info"},"[222.2,223.3,222.3]",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/powers ",1)]),_:1}),n[31]||(n[31]=e("br",null,null,-1)),n[32]||(n[32]=t(" Array mit den Leistungen je Phase in Watt, mit Nachkommastellen (Float)")),n[33]||(n[33]=e("br",null,null,-1)),n[34]||(n[34]=t(" Beispiel: ")),n[35]||(n[35]=e("span",{class:"text-info"},"[12.3,23.4,-12.3]",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/power_factors ",1)]),_:1}),n[36]||(n[36]=e("br",null,null,-1)),n[37]||(n[37]=t(" Array mit den Leistungsfaktoren je Phase, mit Nachkommastellen (Float), Wertebereich -1 bis 1")),n[38]||(n[38]=e("br",null,null,-1)),n[39]||(n[39]=t(" Beispiel: ")),n[40]||(n[40]=e("span",{class:"text-info"},"[0.95,0.96,-0.95]",-1))])])]),_:1})])}const q=a(b,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/counter.vue"]]);export{q as default}; +import{C as d}from"./HardwareInstallation-727b5962.js";import{_ as a,u,l as f,m as g,G as l,E as o,B as t,A as e,F as r}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceMqttCounter",mixins:[d]},B={class:"device-mqtt-counter"};function k(i,n,z,x,v,w){const p=u("openwb-base-heading"),s=u("openwb-base-copy-to-clipboard"),m=u("openwb-base-alert");return f(),g("div",B,[l(p,null,{default:o(()=>n[0]||(n[0]=[t(" Einstellungen für MQTT Zähler ")])),_:1}),l(m,{subtype:"info"},{default:o(()=>[n[41]||(n[41]=t(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: ")),e("ul",null,[e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/power ",1)]),_:1}),n[1]||(n[1]=e("br",null,null,-1)),n[2]||(n[2]=t(" Bezugsleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Bezug, negativ Einspeisung")),n[3]||(n[3]=e("br",null,null,-1)),n[4]||(n[4]=t(" Beispiel: ")),n[5]||(n[5]=e("span",{class:"text-info"},"-123.45",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/imported ",1)]),_:1}),n[6]||(n[6]=e("br",null,null,-1)),n[7]||(n[7]=t(" Bezogene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),n[8]||(n[8]=e("br",null,null,-1)),n[9]||(n[9]=t(" Beispiel: ")),n[10]||(n[10]=e("span",{class:"text-info"},"123.45",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/exported ",1)]),_:1}),n[11]||(n[11]=e("br",null,null,-1)),n[12]||(n[12]=t(" Eingespeiste Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),n[13]||(n[13]=e("br",null,null,-1)),n[14]||(n[14]=t(" Beispiel: ")),n[15]||(n[15]=e("span",{class:"text-info"},"123.45",-1))])]),n[42]||(n[42]=t(" Ströme je Phase sind für phasenbasiertes Lastmanagement unbedingt erforderlich, sonst erfolgt das Lastmanagement ausschließlich auf Basis der Gesamtleistung am EVU-Punkt: ")),e("ul",null,[e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/currents ",1)]),_:1}),n[16]||(n[16]=e("br",null,null,-1)),n[17]||(n[17]=t(" Array mit den Strömen je Phase in Ampere, mit Nachkommastellen (Float), positiv Bezug, negativ Einspeisung")),n[18]||(n[18]=e("br",null,null,-1)),n[19]||(n[19]=t(" Beispiel: ")),n[20]||(n[20]=e("span",{class:"text-info"},"[1.2,2.3,-2.1]",-1))])]),n[43]||(n[43]=t(" Die Netzfrequenz, Spannungen, Leistungen und Leistungsfaktoren jeder Phase werden ausschließlich zu Anzeigezwecken verwendet: ")),e("ul",null,[e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/frequency ",1)]),_:1}),n[21]||(n[21]=e("br",null,null,-1)),n[22]||(n[22]=t(" Netzfrequenz in Hz, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen")),n[23]||(n[23]=e("br",null,null,-1)),n[24]||(n[24]=t(" Beispiel: ")),n[25]||(n[25]=e("span",{class:"text-info"},"50.12",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/voltages ",1)]),_:1}),n[26]||(n[26]=e("br",null,null,-1)),n[27]||(n[27]=t(" Array mit den Spannungen je Phase in Volt, mit Nachkommastellen (Float)")),n[28]||(n[28]=e("br",null,null,-1)),n[29]||(n[29]=t(" Beispiel: ")),n[30]||(n[30]=e("span",{class:"text-info"},"[222.2,223.3,222.3]",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/powers ",1)]),_:1}),n[31]||(n[31]=e("br",null,null,-1)),n[32]||(n[32]=t(" Array mit den Leistungen je Phase in Watt, mit Nachkommastellen (Float)")),n[33]||(n[33]=e("br",null,null,-1)),n[34]||(n[34]=t(" Beispiel: ")),n[35]||(n[35]=e("span",{class:"text-info"},"[12.3,23.4,-12.3]",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/power_factors ",1)]),_:1}),n[36]||(n[36]=e("br",null,null,-1)),n[37]||(n[37]=t(" Array mit den Leistungsfaktoren je Phase, mit Nachkommastellen (Float), Wertebereich -1 bis 1")),n[38]||(n[38]=e("br",null,null,-1)),n[39]||(n[39]=t(" Beispiel: ")),n[40]||(n[40]=e("span",{class:"text-info"},"[0.95,0.96,-0.95]",-1))])])]),_:1})])}const j=a(b,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/counter.vue"]]);export{j as default}; diff --git a/web/settings/assets/counter-958da48c.js b/web/settings/assets/counter-2d03ca61.js similarity index 78% rename from web/settings/assets/counter-958da48c.js rename to web/settings/assets/counter-2d03ca61.js index 3412ac9d95..94b97f0bcb 100644 --- a/web/settings/assets/counter-958da48c.js +++ b/web/settings/assets/counter-2d03ca61.js @@ -1 +1 @@ -import{C as d}from"./HardwareInstallation-3a644290.js";import{_ as m,u as o,l as b,m as c,G as t,E as r,y as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceOpenwbFlexCounter",mixins:[d]},_={class:"device-openwb-flex-counter"};function v(n,e,w,g,M,x){const l=o("openwb-base-heading"),a=o("openwb-base-alert"),p=o("openwb-base-select-input"),u=o("openwb-base-number-input");return b(),c("div",_,[t(l,null,{default:r(()=>e[2]||(e[2]=[s(" Einstellungen für openWB-Flex Zähler ")])),_:1}),t(a,{subtype:"info"},{default:r(()=>e[3]||(e[3]=[s(" Bei saldierenden Zählern (MPM3PM, B23) werden die Zählerstände für Einspeisung und Bezug aus dem Zähler ausgelesen. Bei Zählern, die nicht saldierend arbeiten (Lovato, SDM630, SDM72D-M), werden die Zählerstände von der openWB berechnet. ")])),_:1}),t(p,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:3,text:"B23"},{value:1,text:"Lovato"},{value:0,text:"MPM3PM"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":n.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.version"))},null,8,["model-value"]),t(u,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":n.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.id"))},null,8,["model-value"])])}const $=m(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/counter.vue"]]);export{$ as default}; +import{C as d}from"./HardwareInstallation-727b5962.js";import{_ as m,u as o,l as b,m as c,G as t,E as r,B as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceOpenwbFlexCounter",mixins:[d]},_={class:"device-openwb-flex-counter"};function v(n,e,w,g,M,x){const l=o("openwb-base-heading"),a=o("openwb-base-alert"),p=o("openwb-base-select-input"),u=o("openwb-base-number-input");return b(),c("div",_,[t(l,null,{default:r(()=>e[2]||(e[2]=[s(" Einstellungen für openWB-Flex Zähler ")])),_:1}),t(a,{subtype:"info"},{default:r(()=>e[3]||(e[3]=[s(" Bei saldierenden Zählern (MPM3PM, B23) werden die Zählerstände für Einspeisung und Bezug aus dem Zähler ausgelesen. Bei Zählern, die nicht saldierend arbeiten (Lovato, SDM630, SDM72D-M), werden die Zählerstände von der openWB berechnet. ")])),_:1}),t(p,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:3,text:"B23"},{value:1,text:"Lovato"},{value:0,text:"MPM3PM"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":n.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.version"))},null,8,["model-value"]),t(u,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":n.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.id"))},null,8,["model-value"])])}const $=m(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/counter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/counter-32cca269.js b/web/settings/assets/counter-32cca269.js new file mode 100644 index 0000000000..f31176f25d --- /dev/null +++ b/web/settings/assets/counter-32cca269.js @@ -0,0 +1 @@ +import{C as n}from"./HardwareInstallation-727b5962.js";import{_ as o,u as s,l as r,m as a,G as i,E as m,B as p}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceTeslaCounter",mixins:[n]},l={class:"device-tesla-counter"};function _(d,e,u,f,v,x){const t=s("openwb-base-alert");return r(),a("div",l,[i(t,{subtype:"info"},{default:m(()=>e[0]||(e[0]=[p(" Je nach Firmware-Version ist nur ein Lastmanagement anhand der Gesamtleistung möglich, da nicht alle Firmware-Versionen Phasenströme liefern. ")])),_:1})])}const E=o(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/counter.vue"]]);export{E as default}; diff --git a/web/settings/assets/counter-00141858.js b/web/settings/assets/counter-40260f20.js similarity index 60% rename from web/settings/assets/counter-00141858.js rename to web/settings/assets/counter-40260f20.js index adc470143b..5f3fff444c 100644 --- a/web/settings/assets/counter-00141858.js +++ b/web/settings/assets/counter-40260f20.js @@ -1 +1 @@ -import{C as m}from"./HardwareInstallation-3a644290.js";import{_ as u,u as n,l as d,m as l,G as t,E as i,y as r}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSigenergyCounter",mixins:[m]},_={class:"device-sigenergy-counter"};function c(o,e,b,f,v,y){const s=n("openwb-base-heading"),p=n("openwb-base-number-input");return d(),l("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Sigenergy Zähler ")])),_:1}),t(p,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[r(" Die Standard-Modbus-ID von Sigenergy ist 247 ")])),_:1},8,["model-value"])])}const V=u(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/counter.vue"]]);export{V as default}; +import{C as m}from"./HardwareInstallation-727b5962.js";import{_ as u,u as n,l as d,m as l,G as t,E as i,B as r}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSigenergyCounter",mixins:[m]},_={class:"device-sigenergy-counter"};function c(o,e,b,f,v,C){const s=n("openwb-base-heading"),p=n("openwb-base-number-input");return d(),l("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Sigenergy Zähler ")])),_:1}),t(p,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[r(" Die Standard-Modbus-ID von Sigenergy ist 247 ")])),_:1},8,["model-value"])])}const V=u(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/counter.vue"]]);export{V as default}; diff --git a/web/settings/assets/counter-75e3d92e.js b/web/settings/assets/counter-48702b69.js similarity index 72% rename from web/settings/assets/counter-75e3d92e.js rename to web/settings/assets/counter-48702b69.js index ff8ba597d8..107e999570 100644 --- a/web/settings/assets/counter-75e3d92e.js +++ b/web/settings/assets/counter-48702b69.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as a,u as t,l as m,m as l,G as i,E as d,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceVictronCounter",mixins:[p]},_={class:"device-victron-counter"};function f(o,e,g,v,C,V){const r=t("openwb-base-heading"),u=t("openwb-base-number-input"),s=t("openwb-base-button-group-input");return m(),l("div",_,[i(r,null,{default:d(()=>e[2]||(e[2]=[c(" Einstellungen für Victron Zähler ")])),_:1}),i(u,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(s,{title:"Messgerät",buttons:[{buttonValue:!1,text:"AC-In Victron GX"},{buttonValue:!0,text:"Energy Meter"}],"model-value":o.component.configuration.energy_meter,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.energy_meter"))},null,8,["model-value"])])}const G=a(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/counter.vue"]]);export{G as default}; +import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as a,u as t,l as m,m as l,G as i,E as d,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceVictronCounter",mixins:[p]},_={class:"device-victron-counter"};function f(o,e,g,v,C,V){const r=t("openwb-base-heading"),u=t("openwb-base-number-input"),s=t("openwb-base-button-group-input");return m(),l("div",_,[i(r,null,{default:d(()=>e[2]||(e[2]=[c(" Einstellungen für Victron Zähler ")])),_:1}),i(u,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(s,{title:"Messgerät",buttons:[{buttonValue:!1,text:"AC-In Victron GX"},{buttonValue:!0,text:"Energy Meter"}],"model-value":o.component.configuration.energy_meter,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.energy_meter"))},null,8,["model-value"])])}const G=a(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/counter.vue"]]);export{G as default}; diff --git a/web/settings/assets/counter-5bbed3f1.js b/web/settings/assets/counter-5bbed3f1.js new file mode 100644 index 0000000000..fdfefc7514 --- /dev/null +++ b/web/settings/assets/counter-5bbed3f1.js @@ -0,0 +1 @@ +import{C as t}from"./HardwareInstallation-727b5962.js";import{_ as n,u as r,l as s,m as a,G as i,E as p,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceCarloGavazziCounter",mixins:[t]},_={class:"device-carlo-gavazzi-counter"};function l(u,e,d,v,f,z){const o=r("openwb-base-alert");return s(),a("div",_,[i(o,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(" ModbusTCP muss aktiviert sein. ")])),_:1})])}const G=n(m,[["render",l],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/carlo_gavazzi/counter.vue"]]);export{G as default}; diff --git a/web/settings/assets/counter-95bdcdb7.js b/web/settings/assets/counter-6c87b676.js similarity index 71% rename from web/settings/assets/counter-95bdcdb7.js rename to web/settings/assets/counter-6c87b676.js index 8904106055..e8815306d2 100644 --- a/web/settings/assets/counter-95bdcdb7.js +++ b/web/settings/assets/counter-6c87b676.js @@ -1 +1 @@ -import{C as n}from"./HardwareInstallation-3a644290.js";import{_ as s,u as a,l as i,m as l,G as m,E as p,x as e,y as r}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolarLogCounter",mixins:[n]},u={class:"device-solar_log-counter"};function d(_,o,g,h,f,b){const t=a("openwb-base-alert");return i(),l("div",u,[m(t,{subtype:"info"},{default:p(()=>o[0]||(o[0]=[e("span",{class:"text-danger"},[r(" Solar-Log Zähler geben keine Ströme aus, sodass nur ein Lastmanagement anhand der Gesamtleistung, aber nicht phasenbasiert möglich ist."),e("br")],-1),r(" Solar-Log Zähler sind Hausverbrauchs-Zähler. Um die Werte am EVU-Punkt zu ermitteln, muss ein virtueller Zähler konfiguriert werden. Eine Beispiel-Konfiguration mit Solar-Log Zähler findest Du im "),e("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"}," Wiki für Hausverbrauchs-Zähler ",-1),r(". ")])),_:1})])}const E=s(c,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/solar_log/counter.vue"]]);export{E as default}; +import{C as n}from"./HardwareInstallation-727b5962.js";import{_ as s,u as a,l as i,m as l,G as m,E as p,A as e,B as r}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolarLogCounter",mixins:[n]},u={class:"device-solar_log-counter"};function d(_,o,g,h,f,b){const t=a("openwb-base-alert");return i(),l("div",u,[m(t,{subtype:"info"},{default:p(()=>o[0]||(o[0]=[e("span",{class:"text-danger"},[r(" Solar-Log Zähler geben keine Ströme aus, sodass nur ein Lastmanagement anhand der Gesamtleistung, aber nicht phasenbasiert möglich ist."),e("br")],-1),r(" Solar-Log Zähler sind Hausverbrauchs-Zähler. Um die Werte am EVU-Punkt zu ermitteln, muss ein virtueller Zähler konfiguriert werden. Eine Beispiel-Konfiguration mit Solar-Log Zähler findest Du im "),e("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"}," Wiki für Hausverbrauchs-Zähler ",-1),r(". ")])),_:1})])}const E=s(c,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/solar_log/counter.vue"]]);export{E as default}; diff --git a/web/settings/assets/counter-19e7f139.js b/web/settings/assets/counter-70674361.js similarity index 64% rename from web/settings/assets/counter-19e7f139.js rename to web/settings/assets/counter-70674361.js index 36d5890297..f2ad438119 100644 --- a/web/settings/assets/counter-19e7f139.js +++ b/web/settings/assets/counter-70674361.js @@ -1 +1 @@ -import{C as r}from"./HardwareInstallation-3a644290.js";import{_ as n,u as s,l as i,m as a,G as c,E as p,y as o,x as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceKostalPlenticoreCounter",mixins:[r]},u={class:"device-kostal-plenticore-counter"};function _(d,e,f,b,h,v){const t=s("openwb-base-alert");return i(),a("div",u,[c(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[o(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),l("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1),o(" beschrieben, angeordnet werden. ")])),_:1})])}const $=n(m,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/counter.vue"]]);export{$ as default}; +import{C as r}from"./HardwareInstallation-727b5962.js";import{_ as n,u as s,l as i,m as a,G as c,E as p,B as o,A as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceKostalPlenticoreCounter",mixins:[r]},u={class:"device-kostal-plenticore-counter"};function _(d,e,f,b,h,v){const t=s("openwb-base-alert");return i(),a("div",u,[c(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[o(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),l("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1),o(" beschrieben, angeordnet werden. ")])),_:1})])}const $=n(m,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/counter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/counter-ab315ba3.js b/web/settings/assets/counter-7680421b.js similarity index 59% rename from web/settings/assets/counter-ab315ba3.js rename to web/settings/assets/counter-7680421b.js index 028adf75ea..604099a845 100644 --- a/web/settings/assets/counter-ab315ba3.js +++ b/web/settings/assets/counter-7680421b.js @@ -1 +1 @@ -import{C as o}from"./HardwareInstallation-3a644290.js";import{_ as s,u as n,l as r,m as i,G as a,E as p,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceKostalSemCounter",mixins:[o]},l={class:"device-kostal-sem-counter"};function d(_,e,u,f,b,h){const t=n("openwb-base-alert");return r(),i("div",l,[a(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(" Diese Komponente ist nur richtig, wenn der Zähler NICHT direkt am Wechselrichter (Kostal Plenticore) angeschlossen ist und daher separat abgefragt werden muss. ")])),_:1})])}const N=s(m,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_sem/counter.vue"]]);export{N as default}; +import{C as o}from"./HardwareInstallation-727b5962.js";import{_ as s,u as n,l as r,m as i,G as a,E as p,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceKostalSemCounter",mixins:[o]},l={class:"device-kostal-sem-counter"};function d(_,e,u,f,b,h){const t=n("openwb-base-alert");return r(),i("div",l,[a(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(" Diese Komponente ist nur richtig, wenn der Zähler NICHT direkt am Wechselrichter (Kostal Plenticore) angeschlossen ist und daher separat abgefragt werden muss. ")])),_:1})])}const N=s(m,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_sem/counter.vue"]]);export{N as default}; diff --git a/web/settings/assets/counter-76ed3a15.js b/web/settings/assets/counter-76ed3a15.js new file mode 100644 index 0000000000..39802bbcee --- /dev/null +++ b/web/settings/assets/counter-76ed3a15.js @@ -0,0 +1 @@ +import{C as t}from"./HardwareInstallation-727b5962.js";import{_ as o,u as s,l as i,m as r,G as a,E as p,B as m}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSonnenbatterieCounter",mixins:[t]},d={class:"device-sonnenbatterie-counter"};function _(l,e,u,f,b,v){const n=s("openwb-base-alert");return i(),r("div",d,[a(n,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[m(" Mit diesem Modul ist kein phasenbasiertes Lastmanagement möglich, da keine Ströme der einzelnen Phasen gemessen werden. ")])),_:1})])}const E=o(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/counter.vue"]]);export{E as default}; diff --git a/web/settings/assets/counter-7a033879.js b/web/settings/assets/counter-7a033879.js deleted file mode 100644 index cd248b9686..0000000000 --- a/web/settings/assets/counter-7a033879.js +++ /dev/null @@ -1 +0,0 @@ -import{C as o}from"./HardwareInstallation-3a644290.js";import{_ as n,u as i,l as s,m as a,G as r,E as p,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceJanitzaBat",mixins:[o]},u={class:"device-janitza-counter"};function _(d,e,f,l,v,b){const t=i("openwb-base-alert");return s(),a("div",u,[r(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(' ModbusTCP muss im Janitza auf Port 502 aktiv und die ID auf "1" eingestellt sein. ')])),_:1})])}const y=n(m,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/janitza/counter.vue"]]);export{y as default}; diff --git a/web/settings/assets/counter-8520ea8e.js b/web/settings/assets/counter-986853af.js similarity index 62% rename from web/settings/assets/counter-8520ea8e.js rename to web/settings/assets/counter-986853af.js index 7d2a2c327b..83a07a3a0c 100644 --- a/web/settings/assets/counter-8520ea8e.js +++ b/web/settings/assets/counter-986853af.js @@ -1 +1 @@ -import{C as a}from"./HardwareInstallation-3a644290.js";import{_ as m,u as t,l as p,m as u,G as n,E as l,y as d}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartMeCounter",mixins:[a]},_={class:"device-smart-me-counter"};function f(o,e,b,v,g,x){const r=t("openwb-base-heading"),i=t("openwb-base-text-input");return p(),u("div",_,[n(r,null,{default:l(()=>e[1]||(e[1]=[d(" Einstellungen für smart-me Zähler ")])),_:1}),n(i,{title:"Geräte-ID",required:"","model-value":o.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.id"))},null,8,["model-value"])])}const G=m(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/counter.vue"]]);export{G as default}; +import{C as a}from"./HardwareInstallation-727b5962.js";import{_ as m,u as t,l as p,m as u,G as n,E as l,B as d}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartMeCounter",mixins:[a]},_={class:"device-smart-me-counter"};function f(o,e,b,v,g,x){const r=t("openwb-base-heading"),i=t("openwb-base-text-input");return p(),u("div",_,[n(r,null,{default:l(()=>e[1]||(e[1]=[d(" Einstellungen für smart-me Zähler ")])),_:1}),n(i,{title:"Geräte-ID",required:"","model-value":o.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.id"))},null,8,["model-value"])])}const G=m(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/counter.vue"]]);export{G as default}; diff --git a/web/settings/assets/counter-a31f5e7d.js b/web/settings/assets/counter-9e94ca6b.js similarity index 75% rename from web/settings/assets/counter-a31f5e7d.js rename to web/settings/assets/counter-9e94ca6b.js index aae50d9f7a..25d5ca6e86 100644 --- a/web/settings/assets/counter-a31f5e7d.js +++ b/web/settings/assets/counter-9e94ca6b.js @@ -1 +1 @@ -import{C as m}from"./HardwareInstallation-3a644290.js";import{_ as d,u as r,l as p,m as f,G as n,E as s,y as a}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSolaredgeCounter",mixins:[m]},b={class:"device-solaredge-counter"};function c(o,e,_,v,w,C){const l=r("openwb-base-heading"),u=r("openwb-base-alert"),i=r("openwb-base-number-input");return p(),f("div",b,[n(l,null,{default:s(()=>e[2]||(e[2]=[a(" Einstellungen für SolarEdge Zähler ")])),_:1}),n(u,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[a(" Hierfür muss ein EVU-Zähler am SolarEdge Wechselrichter per Modbus angebunden sein. Der Zähler muss an erster Position im Wechselrichter konfiguriert sein. ")])),_:1}),n(i,{title:"SolarEdge-Geräte-ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),n(i,{title:"SolarEdge-Meter-ID","model-value":o.component.configuration.meter_id,min:"1",max:"255",required:"","onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"])])}const M=d(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/counter.vue"]]);export{M as default}; +import{C as m}from"./HardwareInstallation-727b5962.js";import{_ as d,u as r,l as p,m as f,G as n,E as s,B as a}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSolaredgeCounter",mixins:[m]},b={class:"device-solaredge-counter"};function c(o,e,_,v,w,C){const l=r("openwb-base-heading"),u=r("openwb-base-alert"),i=r("openwb-base-number-input");return p(),f("div",b,[n(l,null,{default:s(()=>e[2]||(e[2]=[a(" Einstellungen für SolarEdge Zähler ")])),_:1}),n(u,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[a(" Hierfür muss ein EVU-Zähler am SolarEdge Wechselrichter per Modbus angebunden sein. Der Zähler muss an erster Position im Wechselrichter konfiguriert sein. ")])),_:1}),n(i,{title:"SolarEdge-Geräte-ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),n(i,{title:"SolarEdge-Meter-ID","model-value":o.component.configuration.meter_id,min:"1",max:"255",required:"","onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"])])}const M=d(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/counter.vue"]]);export{M as default}; diff --git a/web/settings/assets/counter-ccad25ea.js b/web/settings/assets/counter-a6252054.js similarity index 65% rename from web/settings/assets/counter-ccad25ea.js rename to web/settings/assets/counter-a6252054.js index 9c796bd997..8aedd77578 100644 --- a/web/settings/assets/counter-ccad25ea.js +++ b/web/settings/assets/counter-a6252054.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as u,u as t,l as a,m as l,G as n,E as m,y as d}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DevicePowerdogCounter",mixins:[p]},_={class:"device-powerdog-counter"};function b(e,o,f,g,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-button-group-input");return a(),l("div",_,[n(i,null,{default:m(()=>o[1]||(o[1]=[d(" Einstellungen für Powerdog Zähler ")])),_:1}),n(r,{title:"Einbau-Position",buttons:[{buttonValue:!1,text:"Hausverbrauch"},{buttonValue:!0,text:"EVU-Punkt"}],"model-value":e.component.configuration.position_evu,"onUpdate:modelValue":o[0]||(o[0]=s=>e.updateConfiguration(s,"configuration.position_evu"))},null,8,["model-value"])])}const N=u(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/powerdog/counter.vue"]]);export{N as default}; +import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as u,u as t,l as a,m as l,G as n,E as m,B as d}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DevicePowerdogCounter",mixins:[p]},_={class:"device-powerdog-counter"};function b(e,o,f,g,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-button-group-input");return a(),l("div",_,[n(i,null,{default:m(()=>o[1]||(o[1]=[d(" Einstellungen für Powerdog Zähler ")])),_:1}),n(r,{title:"Einbau-Position",buttons:[{buttonValue:!1,text:"Hausverbrauch"},{buttonValue:!0,text:"EVU-Punkt"}],"model-value":e.component.configuration.position_evu,"onUpdate:modelValue":o[0]||(o[0]=s=>e.updateConfiguration(s,"configuration.position_evu"))},null,8,["model-value"])])}const N=u(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/powerdog/counter.vue"]]);export{N as default}; diff --git a/web/settings/assets/counter-aed75c81.js b/web/settings/assets/counter-aed75c81.js deleted file mode 100644 index 107cae0e00..0000000000 --- a/web/settings/assets/counter-aed75c81.js +++ /dev/null @@ -1 +0,0 @@ -import{C as n}from"./HardwareInstallation-3a644290.js";import{_ as o,u as s,l as r,m as a,G as i,E as m,y as p}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceTeslaCounter",mixins:[n]},l={class:"device-tesla-counter"};function _(d,e,u,f,v,x){const t=s("openwb-base-alert");return r(),a("div",l,[i(t,{subtype:"info"},{default:m(()=>e[0]||(e[0]=[p(" Je nach Firmware-Version ist nur ein Lastmanagement anhand der Gesamtleistung möglich, da nicht alle Firmware-Versionen Phasenströme liefern. ")])),_:1})])}const y=o(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/counter.vue"]]);export{y as default}; diff --git a/web/settings/assets/counter-b03c0db9.js b/web/settings/assets/counter-b03c0db9.js deleted file mode 100644 index 9270db45bb..0000000000 --- a/web/settings/assets/counter-b03c0db9.js +++ /dev/null @@ -1 +0,0 @@ -import{C as t}from"./HardwareInstallation-3a644290.js";import{_ as n,u as r,l as s,m as a,G as i,E as p,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceCarloGavazziCounter",mixins:[t]},_={class:"device-carlo-gavazzi-counter"};function l(u,e,d,v,f,z){const o=r("openwb-base-alert");return s(),a("div",_,[i(o,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(" ModbusTCP muss aktiviert sein. ")])),_:1})])}const E=n(m,[["render",l],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/carlo_gavazzi/counter.vue"]]);export{E as default}; diff --git a/web/settings/assets/counter-018e7196.js b/web/settings/assets/counter-b5c55995.js similarity index 64% rename from web/settings/assets/counter-018e7196.js rename to web/settings/assets/counter-b5c55995.js index 7e3fd1a1b6..2acaddd79e 100644 --- a/web/settings/assets/counter-018e7196.js +++ b/web/settings/assets/counter-b5c55995.js @@ -1 +1 @@ -import{C as r}from"./HardwareInstallation-3a644290.js";import{_ as s,u as n,l as i,m as a,G as p,E as c,y as o,x as m}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceKostalPikoCounter",mixins:[r]},u={class:"device-kostal-piko-counter"};function _(d,e,f,b,h,k){const t=n("openwb-base-alert");return i(),a("div",u,[p(t,{subtype:"info"},{default:c(()=>e[0]||(e[0]=[o(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),m("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1),o(" beschrieben, angeordnet werden. ")])),_:1})])}const $=s(l,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/counter.vue"]]);export{$ as default}; +import{C as r}from"./HardwareInstallation-727b5962.js";import{_ as s,u as n,l as i,m as a,G as p,E as c,B as o,A as m}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceKostalPikoCounter",mixins:[r]},u={class:"device-kostal-piko-counter"};function _(d,e,f,b,h,k){const t=n("openwb-base-alert");return i(),a("div",u,[p(t,{subtype:"info"},{default:c(()=>e[0]||(e[0]=[o(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),m("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1),o(" beschrieben, angeordnet werden. ")])),_:1})])}const $=s(l,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/counter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/counter-fa232f15.js b/web/settings/assets/counter-b7f323cc.js similarity index 62% rename from web/settings/assets/counter-fa232f15.js rename to web/settings/assets/counter-b7f323cc.js index 071976c8ca..b80d2d3ae9 100644 --- a/web/settings/assets/counter-fa232f15.js +++ b/web/settings/assets/counter-b7f323cc.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as a,u as n,l as m,m as u,G as t,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDeyeCounter",mixins:[p]},_={class:"device-deye-counter"};function b(o,e,f,v,g,C){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Deye Zähler ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const k=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/counter.vue"]]);export{k as default}; +import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as a,u as n,l as m,m as u,G as t,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDeyeCounter",mixins:[p]},_={class:"device-deye-counter"};function b(o,e,f,v,g,C){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Deye Zähler ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const k=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-7311f96b.js b/web/settings/assets/counter-c0fbd699.js similarity index 92% rename from web/settings/assets/counter-7311f96b.js rename to web/settings/assets/counter-c0fbd699.js index 7f63b6416e..26db9f8703 100644 --- a/web/settings/assets/counter-7311f96b.js +++ b/web/settings/assets/counter-c0fbd699.js @@ -1 +1 @@ -import{C as u}from"./HardwareInstallation-3a644290.js";import{_ as m,u as s,l as p,m as g,G as i,E as a,y as n,x as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceHttpCounter",mixins:[u]},b={class:"device-http-counter"};function f(t,e,w,v,k,S){const d=s("openwb-base-heading"),o=s("openwb-base-text-input");return p(),g("div",b,[i(d,null,{default:a(()=>e[6]||(e[6]=[n(" Einstellungen für Http Zähler ")])),_:1}),i(o,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateConfiguration(r,"configuration.power_path"))},{help:a(()=>e[7]||(e[7]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Zählerstand Bezug",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.imported_path,"onUpdate:modelValue":e[1]||(e[1]=r=>t.updateConfiguration(r,"configuration.imported_path"))},{help:a(()=>e[8]||(e[8]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Zählerstand Einspeisung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.exported_path,"onUpdate:modelValue":e[2]||(e[2]=r=>t.updateConfiguration(r,"configuration.exported_path"))},{help:a(()=>e[9]||(e[9]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Strom Phase 1",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.current_l1_path,"onUpdate:modelValue":e[3]||(e[3]=r=>t.updateConfiguration(r,"configuration.current_l1_path"))},{help:a(()=>e[10]||(e[10]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 1. Phase in Ampere darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Strom Phase 2",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.current_l2_path,"onUpdate:modelValue":e[4]||(e[4]=r=>t.updateConfiguration(r,"configuration.current_l2_path"))},{help:a(()=>e[11]||(e[11]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 2. Phase in Ampere darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Strom Phase 3",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.current_l3_path,"onUpdate:modelValue":e[5]||(e[5]=r=>t.updateConfiguration(r,"configuration.current_l3_path"))},{help:a(()=>e[12]||(e[12]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 3. Phase in Ampere darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"])])}const F=m(h,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/counter.vue"]]);export{F as default}; +import{C as u}from"./HardwareInstallation-727b5962.js";import{_ as m,u as s,l as p,m as g,G as i,E as a,B as n,A as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceHttpCounter",mixins:[u]},b={class:"device-http-counter"};function f(t,e,w,v,k,S){const d=s("openwb-base-heading"),o=s("openwb-base-text-input");return p(),g("div",b,[i(d,null,{default:a(()=>e[6]||(e[6]=[n(" Einstellungen für Http Zähler ")])),_:1}),i(o,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateConfiguration(r,"configuration.power_path"))},{help:a(()=>e[7]||(e[7]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Zählerstand Bezug",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.imported_path,"onUpdate:modelValue":e[1]||(e[1]=r=>t.updateConfiguration(r,"configuration.imported_path"))},{help:a(()=>e[8]||(e[8]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Zählerstand Einspeisung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.exported_path,"onUpdate:modelValue":e[2]||(e[2]=r=>t.updateConfiguration(r,"configuration.exported_path"))},{help:a(()=>e[9]||(e[9]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Strom Phase 1",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.current_l1_path,"onUpdate:modelValue":e[3]||(e[3]=r=>t.updateConfiguration(r,"configuration.current_l1_path"))},{help:a(()=>e[10]||(e[10]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 1. Phase in Ampere darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Strom Phase 2",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.current_l2_path,"onUpdate:modelValue":e[4]||(e[4]=r=>t.updateConfiguration(r,"configuration.current_l2_path"))},{help:a(()=>e[11]||(e[11]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 2. Phase in Ampere darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Strom Phase 3",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.current_l3_path,"onUpdate:modelValue":e[5]||(e[5]=r=>t.updateConfiguration(r,"configuration.current_l3_path"))},{help:a(()=>e[12]||(e[12]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 3. Phase in Ampere darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"])])}const F=m(h,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/counter.vue"]]);export{F as default}; diff --git a/web/settings/assets/counter-48217739.js b/web/settings/assets/counter-c4ea528f.js similarity index 61% rename from web/settings/assets/counter-48217739.js rename to web/settings/assets/counter-c4ea528f.js index 483f9dc4a9..c9239052de 100644 --- a/web/settings/assets/counter-48217739.js +++ b/web/settings/assets/counter-c4ea528f.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as m,u as t,l as c,m as u,G as o,E as s,y as l,x as n,F as d}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceShellyCounter",mixins:[p]},f={class:"device-shelly-counter"},h={class:"small"};function b(r,e,y,g,x,v){const i=t("openwb-base-heading"),a=t("openwb-base-alert");return c(),u("div",f,[o(i,null,{default:s(()=>[e[0]||(e[0]=l(" Einstellungen für Shelly Zähler ")),n("span",h,"(Modul: "+d(r.$options.name)+")",1)]),_:1}),o(a,{subtype:"info"},{default:s(()=>e[1]||(e[1]=[n("span",{class:"text-danger"}," Als EVU-Zähler werden nur dreiphasige Shelly unterstützt (z.B. Shelly 3EM, Shelly Pro 3EM)",-1),n("br",null,null,-1),l(" Diese Komponente benötigt keine Einstellungen. ")])),_:1})])}const D=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/counter.vue"]]);export{D as default}; +import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as m,u as t,l as c,m as u,G as o,E as s,B as l,A as n,F as d}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceShellyCounter",mixins:[p]},f={class:"device-shelly-counter"},h={class:"small"};function b(r,e,g,y,v,w){const i=t("openwb-base-heading"),a=t("openwb-base-alert");return c(),u("div",f,[o(i,null,{default:s(()=>[e[0]||(e[0]=l(" Einstellungen für Shelly Zähler ")),n("span",h,"(Modul: "+d(r.$options.name)+")",1)]),_:1}),o(a,{subtype:"info"},{default:s(()=>e[1]||(e[1]=[n("span",{class:"text-danger"}," Als EVU-Zähler werden nur dreiphasige Shelly unterstützt (z.B. Shelly 3EM, Shelly Pro 3EM)",-1),n("br",null,null,-1),l(" Diese Komponente benötigt keine Einstellungen. ")])),_:1})])}const D=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/counter.vue"]]);export{D as default}; diff --git a/web/settings/assets/counter-bef0b821.js b/web/settings/assets/counter-d04c382b.js similarity index 64% rename from web/settings/assets/counter-bef0b821.js rename to web/settings/assets/counter-d04c382b.js index 1230033533..377fdf079b 100644 --- a/web/settings/assets/counter-bef0b821.js +++ b/web/settings/assets/counter-d04c382b.js @@ -1 +1 @@ -import{C as s}from"./HardwareInstallation-3a644290.js";import{_ as m,u as n,l as u,m as p,G as t,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLoggerCounter",mixins:[s]},_={class:"device-huawei-smart-logger-counter"};function g(o,e,b,f,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return u(),p("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Huawei SmartLogger Zähler ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const H=m(c,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/counter.vue"]]);export{H as default}; +import{C as s}from"./HardwareInstallation-727b5962.js";import{_ as m,u as n,l as u,m as p,G as t,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLoggerCounter",mixins:[s]},_={class:"device-huawei-smart-logger-counter"};function g(o,e,b,f,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return u(),p("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Huawei SmartLogger Zähler ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const H=m(c,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/counter.vue"]]);export{H as default}; diff --git a/web/settings/assets/counter-d1809224.js b/web/settings/assets/counter-d193f9cd.js similarity index 67% rename from web/settings/assets/counter-d1809224.js rename to web/settings/assets/counter-d193f9cd.js index ce51eae3db..66810417be 100644 --- a/web/settings/assets/counter-d1809224.js +++ b/web/settings/assets/counter-d193f9cd.js @@ -1 +1 @@ -import{C as r}from"./HardwareInstallation-3a644290.js";import{_ as a,u as t,l,m as u,G as n,E as m,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitCounter",mixins:[r]},v={class:"device-openwb-evukit-counter"};function _(o,e,f,b,w,x){const i=t("openwb-base-heading"),s=t("openwb-base-select-input");return l(),u("div",v,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Zähler ")])),_:1}),n(s,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:3,text:"B23"},{value:1,text:"Lovato"},{value:0,text:"MPM3PM"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":o.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/counter.vue"]]);export{$ as default}; +import{C as r}from"./HardwareInstallation-727b5962.js";import{_ as a,u as t,l,m as u,G as n,E as m,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitCounter",mixins:[r]},v={class:"device-openwb-evukit-counter"};function _(o,e,f,b,w,x){const i=t("openwb-base-heading"),s=t("openwb-base-select-input");return l(),u("div",v,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Zähler ")])),_:1}),n(s,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:3,text:"B23"},{value:1,text:"Lovato"},{value:0,text:"MPM3PM"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":o.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/counter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/counter-8b96457f.js b/web/settings/assets/counter-dd217c03.js similarity index 63% rename from web/settings/assets/counter-8b96457f.js rename to web/settings/assets/counter-dd217c03.js index f3541240c8..311ff828df 100644 --- a/web/settings/assets/counter-8b96457f.js +++ b/web/settings/assets/counter-dd217c03.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as a,u as n,l as m,m as u,G as t,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssCounter",mixins:[p]},c={class:"device-fox_ess-counter"};function f(o,e,b,x,v,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für FoxEss Zähler ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const F=a(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/counter.vue"]]);export{F as default}; +import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as a,u as n,l as m,m as u,G as t,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssCounter",mixins:[p]},c={class:"device-fox_ess-counter"};function f(o,e,b,x,v,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für FoxEss Zähler ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const F=a(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/counter.vue"]]);export{F as default}; diff --git a/web/settings/assets/counter-cfb2a7aa.js b/web/settings/assets/counter-dddfcee5.js similarity index 72% rename from web/settings/assets/counter-cfb2a7aa.js rename to web/settings/assets/counter-dddfcee5.js index cf5e5f7c23..81c263e07f 100644 --- a/web/settings/assets/counter-cfb2a7aa.js +++ b/web/settings/assets/counter-dddfcee5.js @@ -1 +1 @@ -import{C as d}from"./HardwareInstallation-3a644290.js";import{_ as m,u as n,l as u,m as c,G as r,E as i,y as o,x as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceDiscovergyCounter",mixins:[d]},g={class:"device-discovergy-counter"};function _(t,e,v,b,w,x){const s=n("openwb-base-heading"),a=n("openwb-base-text-input");return u(),c("div",g,[r(s,null,{default:i(()=>e[1]||(e[1]=[o(" Einstellungen für Discovergy Zähler ")])),_:1}),r(a,{title:"Meter-ID",required:"","model-value":t.component.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>e[2]||(e[2]=[o(" Um die ID herauszufinden mit dem Browser die Adresse "),l("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1),o(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")])),_:1},8,["model-value"])])}const E=m(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/counter.vue"]]);export{E as default}; +import{C as d}from"./HardwareInstallation-727b5962.js";import{_ as m,u as n,l as u,m as c,G as r,E as i,B as o,A as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceDiscovergyCounter",mixins:[d]},g={class:"device-discovergy-counter"};function _(t,e,v,b,w,x){const s=n("openwb-base-heading"),a=n("openwb-base-text-input");return u(),c("div",g,[r(s,null,{default:i(()=>e[1]||(e[1]=[o(" Einstellungen für Discovergy Zähler ")])),_:1}),r(a,{title:"Meter-ID",required:"","model-value":t.component.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>e[2]||(e[2]=[o(" Um die ID herauszufinden mit dem Browser die Adresse "),l("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1),o(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")])),_:1},8,["model-value"])])}const E=m(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/counter.vue"]]);export{E as default}; diff --git a/web/settings/assets/counter-76eff543.js b/web/settings/assets/counter-de0030ac.js similarity index 58% rename from web/settings/assets/counter-76eff543.js rename to web/settings/assets/counter-de0030ac.js index aa82baac29..93d00211c4 100644 --- a/web/settings/assets/counter-76eff543.js +++ b/web/settings/assets/counter-de0030ac.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as u,u as t,l,m as d,G as r,E as i,y as n,x as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSmahmCounter",mixins:[p]},f={class:"device-smahm-counter"};function b(o,e,g,v,M,h){const s=t("openwb-base-heading"),a=t("openwb-base-number-input");return l(),d("div",f,[r(s,null,{default:i(()=>e[1]||(e[1]=[n(" Einstellungen für SMA-HM/EM Zähler ")])),_:1}),r(a,{title:"Seriennummer","model-value":o.component.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=m=>o.updateConfiguration(m,"configuration.serials"))},{help:i(()=>e[2]||(e[2]=[n(" Eine Seriennummer ist nur erforderlich, wenn mehrere SMA HomeManager in Betrieb sind."),c("br",null,null,-1),n(" Funktioniert auch mit Energy Meter anstatt Home Manager. ")])),_:1},8,["model-value"])])}const H=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_shm/counter.vue"]]);export{H as default}; +import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as u,u as t,l,m as d,G as r,E as i,B as n,A as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSmahmCounter",mixins:[p]},f={class:"device-smahm-counter"};function b(o,e,g,v,M,h){const s=t("openwb-base-heading"),a=t("openwb-base-number-input");return l(),d("div",f,[r(s,null,{default:i(()=>e[1]||(e[1]=[n(" Einstellungen für SMA-HM/EM Zähler ")])),_:1}),r(a,{title:"Seriennummer","model-value":o.component.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=m=>o.updateConfiguration(m,"configuration.serials"))},{help:i(()=>e[2]||(e[2]=[n(" Eine Seriennummer ist nur erforderlich, wenn mehrere SMA HomeManager in Betrieb sind."),c("br",null,null,-1),n(" Funktioniert auch mit Energy Meter anstatt Home Manager. ")])),_:1},8,["model-value"])])}const A=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_shm/counter.vue"]]);export{A as default}; diff --git a/web/settings/assets/counter-5a3251ce.js b/web/settings/assets/counter-f257201f.js similarity index 57% rename from web/settings/assets/counter-5a3251ce.js rename to web/settings/assets/counter-f257201f.js index 0e1138fa30..94e8cf81d4 100644 --- a/web/settings/assets/counter-5a3251ce.js +++ b/web/settings/assets/counter-f257201f.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as u,u as n,l as a,m,G as t,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyBoyCounter",mixins:[p]},_={class:"device-sunnyboy-counter"};function b(o,e,f,v,y,g){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return a(),m("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für SMA Sunny Boy/Tripower Zähler ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const h=u(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/counter.vue"]]);export{h as default}; +import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as u,u as n,l as a,m,G as t,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyBoyCounter",mixins:[p]},_={class:"device-sunnyboy-counter"};function b(o,e,f,v,g,y){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return a(),m("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für SMA Sunny Boy/Tripower Zähler ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const h=u(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/counter.vue"]]);export{h as default}; diff --git a/web/settings/assets/counter-f0638cd4.js b/web/settings/assets/counter-fea14072.js similarity index 77% rename from web/settings/assets/counter-f0638cd4.js rename to web/settings/assets/counter-fea14072.js index 0192942173..b8c5697398 100644 --- a/web/settings/assets/counter-f0638cd4.js +++ b/web/settings/assets/counter-fea14072.js @@ -1 +1 @@ -import{C as s}from"./HardwareInstallation-3a644290.js";import{_ as d,u as r,l as m,m as g,G as t,E as l,y as u}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceVZLoggerCounter",mixins:[s]},_={class:"device-vzlogger-counter"};function c(n,e,b,v,w,Z){const a=r("openwb-base-heading"),p=r("openwb-base-alert"),i=r("openwb-base-number-input");return m(),g("div",_,[t(a,null,{default:l(()=>e[3]||(e[3]=[u(" Einstellungen für VZLogger Zähler ")])),_:1}),t(p,{subtype:"info"},{default:l(()=>e[4]||(e[4]=[u(' Bitte auf der Shell ausführen: "curl -s IPdesVZLogger:Port | jq .|cat -n" Zählen, in welcher Zeile der gesuchte Wert steht. Bei der ersten Zeile mit 1 anfangen zu zählen. ')])),_:1}),t(i,{title:"Zeile der Leistung",required:"",min:0,"model-value":n.component.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.line_power"))},null,8,["model-value"]),t(i,{title:"Zeile der Einspeisung",min:0,"model-value":n.component.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.line_exported"))},null,8,["model-value"]),t(i,{title:"Zeile des Bezugs",min:0,"model-value":n.component.configuration.line_imported,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.line_imported"))},null,8,["model-value"])])}const U=d(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/counter.vue"]]);export{U as default}; +import{C as s}from"./HardwareInstallation-727b5962.js";import{_ as d,u as r,l as m,m as g,G as t,E as l,B as u}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceVZLoggerCounter",mixins:[s]},_={class:"device-vzlogger-counter"};function c(n,e,b,v,w,Z){const a=r("openwb-base-heading"),p=r("openwb-base-alert"),i=r("openwb-base-number-input");return m(),g("div",_,[t(a,null,{default:l(()=>e[3]||(e[3]=[u(" Einstellungen für VZLogger Zähler ")])),_:1}),t(p,{subtype:"info"},{default:l(()=>e[4]||(e[4]=[u(' Bitte auf der Shell ausführen: "curl -s IPdesVZLogger:Port | jq .|cat -n" Zählen, in welcher Zeile der gesuchte Wert steht. Bei der ersten Zeile mit 1 anfangen zu zählen. ')])),_:1}),t(i,{title:"Zeile der Leistung",required:"",min:0,"model-value":n.component.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.line_power"))},null,8,["model-value"]),t(i,{title:"Zeile der Einspeisung",min:0,"model-value":n.component.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.line_exported"))},null,8,["model-value"]),t(i,{title:"Zeile des Bezugs",min:0,"model-value":n.component.configuration.line_imported,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.line_imported"))},null,8,["model-value"])])}const U=d(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/counter.vue"]]);export{U as default}; diff --git a/web/settings/assets/counter-40d2f2a6.js b/web/settings/assets/counter-ffe6f59d.js similarity index 90% rename from web/settings/assets/counter-40d2f2a6.js rename to web/settings/assets/counter-ffe6f59d.js index 9a9869d515..62d261120e 100644 --- a/web/settings/assets/counter-40d2f2a6.js +++ b/web/settings/assets/counter-ffe6f59d.js @@ -1 +1 @@ -import{C as d}from"./HardwareInstallation-3a644290.js";import{_ as p,u,l as m,m as f,G as t,E as a,y as l,x as g}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceJsonCounter",mixins:[d]},w={class:"device-json-counter"};function v(n,e,j,q,P,C){const i=u("openwb-base-heading"),r=u("openwb-base-text-input"),s=u("openwb-base-alert");return m(),f("div",w,[t(i,null,{default:a(()=>e[9]||(e[9]=[l(" Einstellungen für JSON Zähler ")])),_:1}),t(r,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":n.component.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.jq_power"))},{help:a(()=>e[10]||(e[10]=[l(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),g("br",null,null,-1),l(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")])),_:1},8,["model-value"]),t(r,{title:"Abfrage für Zählerstand Bezug",subtype:"text","model-value":n.component.configuration.jq_imported,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.jq_imported"))},{help:a(()=>e[11]||(e[11]=[l(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"]),t(r,{title:"Abfrage für Zählerstand Einspeisung",subtype:"text","model-value":n.component.configuration.jq_exported,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.jq_exported"))},{help:a(()=>e[12]||(e[12]=[l(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"]),t(s,{subtype:"info"},{default:a(()=>e[13]||(e[13]=[l(" Werden sowohl Leistung als auch Strom auf den Einzelphasen leer gelassen, erfolgt das Lastmanagement am EVU-Punkt nur anhand der Gesamtleistung am EVU-Punkt. Wird der Zähler als Zwischenzähler verwendet, wird in diesem Fall kein Lastmanagement durchgeführt. ")])),_:1}),t(r,{title:"Abfrage für Leistung auf Phase 1",subtype:"text","model-value":n.component.configuration.jq_power_l1,"onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.jq_power_l1"))},null,8,["model-value"]),t(r,{title:"Abfrage für Leistung auf Phase 2",subtype:"text","model-value":n.component.configuration.jq_power_l2,"onUpdate:modelValue":e[4]||(e[4]=o=>n.updateConfiguration(o,"configuration.jq_power_l2"))},null,8,["model-value"]),t(r,{title:"Abfrage für Leistung auf Phase 3",subtype:"text","model-value":n.component.configuration.jq_power_l3,"onUpdate:modelValue":e[5]||(e[5]=o=>n.updateConfiguration(o,"configuration.jq_power_l3"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 1",subtype:"text","model-value":n.component.configuration.jq_current_l1,"onUpdate:modelValue":e[6]||(e[6]=o=>n.updateConfiguration(o,"configuration.jq_current_l1"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 2",subtype:"text","model-value":n.component.configuration.jq_current_l2,"onUpdate:modelValue":e[7]||(e[7]=o=>n.updateConfiguration(o,"configuration.jq_current_l2"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 3",subtype:"text","model-value":n.component.configuration.jq_current_l3,"onUpdate:modelValue":e[8]||(e[8]=o=>n.updateConfiguration(o,"configuration.jq_current_l3"))},null,8,["model-value"])])}const L=p(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/counter.vue"]]);export{L as default}; +import{C as d}from"./HardwareInstallation-727b5962.js";import{_ as p,u,l as m,m as f,G as t,E as a,B as l,A as g}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceJsonCounter",mixins:[d]},w={class:"device-json-counter"};function v(n,e,j,q,P,C){const i=u("openwb-base-heading"),r=u("openwb-base-text-input"),s=u("openwb-base-alert");return m(),f("div",w,[t(i,null,{default:a(()=>e[9]||(e[9]=[l(" Einstellungen für JSON Zähler ")])),_:1}),t(r,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":n.component.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.jq_power"))},{help:a(()=>e[10]||(e[10]=[l(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),g("br",null,null,-1),l(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")])),_:1},8,["model-value"]),t(r,{title:"Abfrage für Zählerstand Bezug",subtype:"text","model-value":n.component.configuration.jq_imported,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.jq_imported"))},{help:a(()=>e[11]||(e[11]=[l(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"]),t(r,{title:"Abfrage für Zählerstand Einspeisung",subtype:"text","model-value":n.component.configuration.jq_exported,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.jq_exported"))},{help:a(()=>e[12]||(e[12]=[l(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"]),t(s,{subtype:"info"},{default:a(()=>e[13]||(e[13]=[l(" Werden sowohl Leistung als auch Strom auf den Einzelphasen leer gelassen, erfolgt das Lastmanagement am EVU-Punkt nur anhand der Gesamtleistung am EVU-Punkt. Wird der Zähler als Zwischenzähler verwendet, wird in diesem Fall kein Lastmanagement durchgeführt. ")])),_:1}),t(r,{title:"Abfrage für Leistung auf Phase 1",subtype:"text","model-value":n.component.configuration.jq_power_l1,"onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.jq_power_l1"))},null,8,["model-value"]),t(r,{title:"Abfrage für Leistung auf Phase 2",subtype:"text","model-value":n.component.configuration.jq_power_l2,"onUpdate:modelValue":e[4]||(e[4]=o=>n.updateConfiguration(o,"configuration.jq_power_l2"))},null,8,["model-value"]),t(r,{title:"Abfrage für Leistung auf Phase 3",subtype:"text","model-value":n.component.configuration.jq_power_l3,"onUpdate:modelValue":e[5]||(e[5]=o=>n.updateConfiguration(o,"configuration.jq_power_l3"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 1",subtype:"text","model-value":n.component.configuration.jq_current_l1,"onUpdate:modelValue":e[6]||(e[6]=o=>n.updateConfiguration(o,"configuration.jq_current_l1"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 2",subtype:"text","model-value":n.component.configuration.jq_current_l2,"onUpdate:modelValue":e[7]||(e[7]=o=>n.updateConfiguration(o,"configuration.jq_current_l2"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 3",subtype:"text","model-value":n.component.configuration.jq_current_l3,"onUpdate:modelValue":e[8]||(e[8]=o=>n.updateConfiguration(o,"configuration.jq_current_l3"))},null,8,["model-value"])])}const L=p(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/counter.vue"]]);export{L as default}; diff --git a/web/settings/assets/counter_sm-66058b82.js b/web/settings/assets/counter_sm-dd8aa57c.js similarity index 81% rename from web/settings/assets/counter_sm-66058b82.js rename to web/settings/assets/counter_sm-dd8aa57c.js index d32fe9da50..8b37016056 100644 --- a/web/settings/assets/counter_sm-66058b82.js +++ b/web/settings/assets/counter_sm-dd8aa57c.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as f,u as i,l as g,m as c,G as o,E as a,y as t,x as l,F as b}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFroniusCounterSM",mixins:[p],computed:{meterRealtimeUrl:{get(){return`http://${this.device.configuration.ip_address}/solar_api/v1/GetMeterRealtimeData.cgi?Scope=System`}}}},v={class:"device-fronius-counter-sm"},w=["href"];function D(n,e,M,S,h,s){const m=i("openwb-base-heading"),d=i("openwb-base-select-input"),u=i("openwb-base-number-input");return g(),c("div",v,[o(m,null,{default:a(()=>e[2]||(e[2]=[t(" Einstellungen für Fronius SmartMeter ")])),_:1}),o(d,{title:"Kompatibilitätsmodus","not-selected":"Bitte auswählen",required:"",options:[{value:0,text:"Aus"},{value:1,text:"Variante 1"},{value:2,text:"Variante 2"}],"model-value":n.component.configuration.variant,"onUpdate:modelValue":e[0]||(e[0]=r=>n.updateConfiguration(r,"configuration.variant"))},{help:a(()=>e[3]||(e[3]=[t(" Gegebenenfalls auch für alte Modelle nach einem Softwareupdate erforderlich. Fronius hat derzeit keine Konsistente Schnittstelle. Speziell beim Gen24 kann Variante 1 oder 2 erforderlich sein. Nach speichern sollten nach etwa 10-20 Sekunden Daten angezeigt werden. Ist dies nicht der Fall die andere Variante ausprobieren. ")])),_:1},8,["model-value"]),o(u,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":n.component.configuration.meter_id,"onUpdate:modelValue":e[1]||(e[1]=r=>n.updateConfiguration(r,"configuration.meter_id"))},{help:a(()=>[e[4]||(e[4]=t(" Die Meter ID des SmartMeters. Diese ist normalerweise 1. Bei mehreren SmartMetern im System kann es notwendig sein, die Meter ID zu ändern. Zur Ermittlung kann der folgende Link verwendet werden. Die Meter ID kann den zurückgegebenen JSON Daten entnommen werden. ")),l("a",{href:s.meterRealtimeUrl,target:"_blank",rel:"noopener noreferrer"},b(s.meterRealtimeUrl),9,w),e[5]||(e[5]=l("br",null,null,-1)),e[6]||(e[6]=t(' Im Abschnitt "Body" -> "Data" werden die installierten SmartMeter mit aktuellen Messwerten angezeigt. Die Meter ID ist die Zahl vor dem Doppelpunkt und den zugehörigen Messwerten. '))]),_:1},8,["model-value"])])}const N=f(_,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/counter_sm.vue"]]);export{N as default}; +import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as f,u as i,l as g,m as c,G as o,E as a,B as t,A as l,F as b}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFroniusCounterSM",mixins:[p],computed:{meterRealtimeUrl:{get(){return`http://${this.device.configuration.ip_address}/solar_api/v1/GetMeterRealtimeData.cgi?Scope=System`}}}},v={class:"device-fronius-counter-sm"},w=["href"];function D(n,e,M,S,h,s){const m=i("openwb-base-heading"),d=i("openwb-base-select-input"),u=i("openwb-base-number-input");return g(),c("div",v,[o(m,null,{default:a(()=>e[2]||(e[2]=[t(" Einstellungen für Fronius SmartMeter ")])),_:1}),o(d,{title:"Kompatibilitätsmodus","not-selected":"Bitte auswählen",required:"",options:[{value:0,text:"Aus"},{value:1,text:"Variante 1"},{value:2,text:"Variante 2"}],"model-value":n.component.configuration.variant,"onUpdate:modelValue":e[0]||(e[0]=r=>n.updateConfiguration(r,"configuration.variant"))},{help:a(()=>e[3]||(e[3]=[t(" Gegebenenfalls auch für alte Modelle nach einem Softwareupdate erforderlich. Fronius hat derzeit keine Konsistente Schnittstelle. Speziell beim Gen24 kann Variante 1 oder 2 erforderlich sein. Nach speichern sollten nach etwa 10-20 Sekunden Daten angezeigt werden. Ist dies nicht der Fall die andere Variante ausprobieren. ")])),_:1},8,["model-value"]),o(u,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":n.component.configuration.meter_id,"onUpdate:modelValue":e[1]||(e[1]=r=>n.updateConfiguration(r,"configuration.meter_id"))},{help:a(()=>[e[4]||(e[4]=t(" Die Meter ID des SmartMeters. Diese ist normalerweise 1. Bei mehreren SmartMetern im System kann es notwendig sein, die Meter ID zu ändern. Zur Ermittlung kann der folgende Link verwendet werden. Die Meter ID kann den zurückgegebenen JSON Daten entnommen werden. ")),l("a",{href:s.meterRealtimeUrl,target:"_blank",rel:"noopener noreferrer"},b(s.meterRealtimeUrl),9,w),e[5]||(e[5]=l("br",null,null,-1)),e[6]||(e[6]=t(' Im Abschnitt "Body" -> "Data" werden die installierten SmartMeter mit aktuellen Messwerten angezeigt. Die Meter ID ist die Zahl vor dem Doppelpunkt und den zugehörigen Messwerten. '))]),_:1},8,["model-value"])])}const U=f(_,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/counter_sm.vue"]]);export{U as default}; diff --git a/web/settings/assets/device-2f945435.js b/web/settings/assets/device-0d49a26c.js similarity index 65% rename from web/settings/assets/device-2f945435.js rename to web/settings/assets/device-0d49a26c.js index d2f6d12fd0..90e7ae24d1 100644 --- a/web/settings/assets/device-2f945435.js +++ b/web/settings/assets/device-0d49a26c.js @@ -1 +1 @@ -import{D as d}from"./HardwareInstallation-3a644290.js";import{_ as u,u as i,l as p,m as l,G as t,E as m,y as f}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSofar",mixins:[d]},v={class:"device-sofar"};function _(o,e,c,g,w,C){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",v,[t(r,null,{default:m(()=>e[3]||(e[3]=[f("Einstellungen für Sofar")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=u(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sofar/sofar/device.vue"]]);export{y as default}; +import{D as d}from"./HardwareInstallation-727b5962.js";import{_ as u,u as i,l as p,m as l,G as t,E as m,B as f}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSofar",mixins:[d]},v={class:"device-sofar"};function _(o,e,c,g,w,C){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",v,[t(r,null,{default:m(()=>e[3]||(e[3]=[f("Einstellungen für Sofar")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const I=u(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sofar/sofar/device.vue"]]);export{I as default}; diff --git a/web/settings/assets/device-8c6a7cd7.js b/web/settings/assets/device-11f6d869.js similarity index 69% rename from web/settings/assets/device-8c6a7cd7.js rename to web/settings/assets/device-11f6d869.js index a1b048b5d0..51cbfb449e 100644 --- a/web/settings/assets/device-8c6a7cd7.js +++ b/web/settings/assets/device-11f6d869.js @@ -1 +1 @@ -import{D as p}from"./HardwareInstallation-3a644290.js";import{_ as d,u as t,l as u,m as l,G as i,E as m,y as _}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyIsland",mixins:[p]},f={class:"device-sunnyisland"};function b(n,e,v,g,w,x){const s=t("openwb-base-heading"),a=t("openwb-base-text-input"),r=t("openwb-base-number-input");return u(),l("div",f,[i(s,null,{default:m(()=>e[2]||(e[2]=[_(" Einstellungen für Sunny Island ")])),_:1}),i(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(r,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"])])}const q=d(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_island/device.vue"]]);export{q as default}; +import{D as p}from"./HardwareInstallation-727b5962.js";import{_ as d,u as t,l as u,m as l,G as i,E as m,B as _}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyIsland",mixins:[p]},f={class:"device-sunnyisland"};function b(n,e,v,g,w,x){const s=t("openwb-base-heading"),a=t("openwb-base-text-input"),r=t("openwb-base-number-input");return u(),l("div",f,[i(s,null,{default:m(()=>e[2]||(e[2]=[_(" Einstellungen für Sunny Island ")])),_:1}),i(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(r,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"])])}const q=d(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_island/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-509a4ac4.js b/web/settings/assets/device-13f0437c.js similarity index 73% rename from web/settings/assets/device-509a4ac4.js rename to web/settings/assets/device-13f0437c.js index 280945eedd..d322eddce1 100644 --- a/web/settings/assets/device-509a4ac4.js +++ b/web/settings/assets/device-13f0437c.js @@ -1 +1 @@ -import{D as s}from"./HardwareInstallation-3a644290.js";import{_ as d,u as i,l as u,m,G as t,E as l,y as f}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceAmpere",mixins:[s]},v={class:"device-ampere"};function _(o,e,c,g,w,C){const a=i("openwb-base-heading"),p=i("openwb-base-text-input"),r=i("openwb-base-number-input");return u(),m("div",v,[t(a,null,{default:l(()=>e[3]||(e[3]=[f(" Einstellungen für Ampere Pro")])),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const k=d(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/ampere/ampere/device.vue"]]);export{k as default}; +import{D as s}from"./HardwareInstallation-727b5962.js";import{_ as d,u as i,l as u,m,G as t,E as l,B as f}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceAmpere",mixins:[s]},v={class:"device-ampere"};function _(o,e,c,g,w,C){const a=i("openwb-base-heading"),p=i("openwb-base-text-input"),r=i("openwb-base-number-input");return u(),m("div",v,[t(a,null,{default:l(()=>e[3]||(e[3]=[f(" Einstellungen für Ampere Pro")])),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const k=d(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/ampere/ampere/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-45df0691.js b/web/settings/assets/device-1497b5e4.js similarity index 71% rename from web/settings/assets/device-45df0691.js rename to web/settings/assets/device-1497b5e4.js index 8758b04f16..bc07877cc4 100644 --- a/web/settings/assets/device-45df0691.js +++ b/web/settings/assets/device-1497b5e4.js @@ -1 +1 @@ -import{D as u}from"./HardwareInstallation-3a644290.js";import{_ as p,u as r,l as d,m,G as i,E as s,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceKostalPikoOld",mixins:[u]},v={class:"device-kostal-piko-old"};function c(o,e,g,b,w,k){const a=r("openwb-base-heading"),n=r("openwb-base-text-input");return d(),m("div",v,[i(a,null,{default:s(()=>e[3]||(e[3]=[l(" Einstellungen für Kostal Piko (alte Generation) ")])),_:1}),i(n,{title:"URL",subtype:"url",required:"","model-value":o.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.url"))},{help:s(()=>e[4]||(e[4]=[l(' Es wird eine komplette URL inklusive Protokoll erwartet. Normalerweise ist der Wechselrichter über "http://IP" zu erreichen. ')])),_:1},8,["model-value"]),i(n,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),i(n,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const q=p(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko_old/device.vue"]]);export{q as default}; +import{D as u}from"./HardwareInstallation-727b5962.js";import{_ as p,u as r,l as d,m,G as i,E as s,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceKostalPikoOld",mixins:[u]},v={class:"device-kostal-piko-old"};function c(o,e,g,b,w,k){const a=r("openwb-base-heading"),n=r("openwb-base-text-input");return d(),m("div",v,[i(a,null,{default:s(()=>e[3]||(e[3]=[l(" Einstellungen für Kostal Piko (alte Generation) ")])),_:1}),i(n,{title:"URL",subtype:"url",required:"","model-value":o.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.url"))},{help:s(()=>e[4]||(e[4]=[l(' Es wird eine komplette URL inklusive Protokoll erwartet. Normalerweise ist der Wechselrichter über "http://IP" zu erreichen. ')])),_:1},8,["model-value"]),i(n,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),i(n,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const x=p(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko_old/device.vue"]]);export{x as default}; diff --git a/web/settings/assets/device-8de467ac.js b/web/settings/assets/device-1950c8ef.js similarity index 78% rename from web/settings/assets/device-8de467ac.js rename to web/settings/assets/device-1950c8ef.js index 934f1770ac..2caeed0d1e 100644 --- a/web/settings/assets/device-8de467ac.js +++ b/web/settings/assets/device-1950c8ef.js @@ -1 +1 @@ -import{D as u}from"./HardwareInstallation-3a644290.js";import{_ as m,u as i,l as c,m as b,G as t,E as r,y as a}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceKostalPlenticore",mixins:[u]},_={class:"device-kostal-plenticore"};function v(o,e,g,w,C,E){const l=i("openwb-base-heading"),p=i("openwb-base-alert"),d=i("openwb-base-text-input"),s=i("openwb-base-number-input");return c(),b("div",_,[t(l,null,{default:r(()=>e[3]||(e[3]=[a(" Einstellungen für Kostal Plenticore ")])),_:1}),t(p,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[a(" Wenn am Kostal Plenticore-Wechselrichter ein EM300 oder Kostal Smart Energy Meter (KSEM) angeschlossen ist, muss eine Zähler-und eine Wechselrichter-Komponente angelegt werden. ")])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const $=m(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/device.vue"]]);export{$ as default}; +import{D as u}from"./HardwareInstallation-727b5962.js";import{_ as m,u as i,l as c,m as b,G as t,E as r,B as a}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceKostalPlenticore",mixins:[u]},_={class:"device-kostal-plenticore"};function v(o,e,g,w,C,E){const l=i("openwb-base-heading"),p=i("openwb-base-alert"),d=i("openwb-base-text-input"),s=i("openwb-base-number-input");return c(),b("div",_,[t(l,null,{default:r(()=>e[3]||(e[3]=[a(" Einstellungen für Kostal Plenticore ")])),_:1}),t(p,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[a(" Wenn am Kostal Plenticore-Wechselrichter ein EM300 oder Kostal Smart Energy Meter (KSEM) angeschlossen ist, muss eine Zähler-und eine Wechselrichter-Komponente angelegt werden. ")])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const $=m(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/device.vue"]]);export{$ as default}; diff --git a/web/settings/assets/device-653a19f8.js b/web/settings/assets/device-1ad34ad2.js similarity index 80% rename from web/settings/assets/device-653a19f8.js rename to web/settings/assets/device-1ad34ad2.js index 36e028925d..7190ceb976 100644 --- a/web/settings/assets/device-653a19f8.js +++ b/web/settings/assets/device-1ad34ad2.js @@ -1 +1 @@ -import{D as p}from"./HardwareInstallation-3a644290.js";import{_ as m,u as s,l as f,m as g,G as t,E as a,y as r,x as o}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceTesla",mixins:[p]},b={class:"device-tesla"};function c(n,e,v,k,h,_){const d=s("openwb-base-heading"),u=s("openwb-base-alert"),l=s("openwb-base-text-input");return f(),g("div",b,[t(d,null,{default:a(()=>e[3]||(e[3]=[r(" Einstellungen für Tesla ")])),_:1}),t(u,{subtype:"danger"},{default:a(()=>e[4]||(e[4]=[o("span",{style:{"font-weight":"bold"}}," Tesla hat in der aktuellen Firmware-Version die lokale API der PowerWall abgeschaltet. ",-1),r("Daher ist es mit dieser Firmware nicht mehr möglich, die PowerWall direkt auszulesen. Wir prüfen aktuell den Zugriff über die Tesla-Server. Bis zur Umsetzung dieser Funktion ist es nicht möglich, die PowerWall lokal auszulesen."),o("br",null,null,-1),o("span",{style:{"font-weight":"bold"}}," Wenn die lokale Abfrage bei Dir noch funktioniert, dann solltest Du die Firmware der PowerWall nicht aktualisieren! ",-1),o("br",null,null,-1),r(" Wir empfehlen, dass Du Tesla kontaktierst und Kritik an dieser Entscheidung mitteilst. Nur so können wir hoffen, dass Tesla die lokale API wieder aktiviert. Mit der Cloud-API kommt es zwangsläufig zu Verzögerungen (Latenzen), welche eine Regelung durch openWB erschweren. Weiterhin kommt es zu einem totalen Ausfall, wenn die Internetverbindung gestört ist. Aus diesen Gründen ist eine lokale API immer vorzuziehen. ")])),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(l,{title:"E-Mail",subtype:"email",required:"","model-value":n.device.configuration.email,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.email"))},null,8,["model-value"]),t(l,{title:"Passwort",subtype:"password",required:"","model-value":n.device.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=i=>n.updateConfiguration(i,"configuration.password"))},null,8,["model-value"])])}const B=m(w,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/device.vue"]]);export{B as default}; +import{D as p}from"./HardwareInstallation-727b5962.js";import{_ as m,u as s,l as f,m as g,G as t,E as a,B as r,A as o}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceTesla",mixins:[p]},b={class:"device-tesla"};function c(n,e,v,k,h,_){const d=s("openwb-base-heading"),u=s("openwb-base-alert"),l=s("openwb-base-text-input");return f(),g("div",b,[t(d,null,{default:a(()=>e[3]||(e[3]=[r(" Einstellungen für Tesla ")])),_:1}),t(u,{subtype:"danger"},{default:a(()=>e[4]||(e[4]=[o("span",{style:{"font-weight":"bold"}}," Tesla hat in der aktuellen Firmware-Version die lokale API der PowerWall abgeschaltet. ",-1),r("Daher ist es mit dieser Firmware nicht mehr möglich, die PowerWall direkt auszulesen. Wir prüfen aktuell den Zugriff über die Tesla-Server. Bis zur Umsetzung dieser Funktion ist es nicht möglich, die PowerWall lokal auszulesen."),o("br",null,null,-1),o("span",{style:{"font-weight":"bold"}}," Wenn die lokale Abfrage bei Dir noch funktioniert, dann solltest Du die Firmware der PowerWall nicht aktualisieren! ",-1),o("br",null,null,-1),r(" Wir empfehlen, dass Du Tesla kontaktierst und Kritik an dieser Entscheidung mitteilst. Nur so können wir hoffen, dass Tesla die lokale API wieder aktiviert. Mit der Cloud-API kommt es zwangsläufig zu Verzögerungen (Latenzen), welche eine Regelung durch openWB erschweren. Weiterhin kommt es zu einem totalen Ausfall, wenn die Internetverbindung gestört ist. Aus diesen Gründen ist eine lokale API immer vorzuziehen. ")])),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(l,{title:"E-Mail",subtype:"email",required:"","model-value":n.device.configuration.email,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.email"))},null,8,["model-value"]),t(l,{title:"Passwort",subtype:"password",required:"","model-value":n.device.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=i=>n.updateConfiguration(i,"configuration.password"))},null,8,["model-value"])])}const y=m(w,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-99e093c0.js b/web/settings/assets/device-1cc75082.js similarity index 80% rename from web/settings/assets/device-99e093c0.js rename to web/settings/assets/device-1cc75082.js index 2a6917d7a1..9d056e2ea3 100644 --- a/web/settings/assets/device-99e093c0.js +++ b/web/settings/assets/device-1cc75082.js @@ -1 +1 @@ -import{D as p}from"./HardwareInstallation-3a644290.js";import{_ as m,u as i,l as v,m as b,G as n,E as s,y as u}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceGrowatt",mixins:[p]},g={class:"device-growatt"};function _(o,e,c,w,V,C){const a=i("openwb-base-heading"),d=i("openwb-base-text-input"),r=i("openwb-base-number-input"),l=i("openwb-base-select-input");return v(),b("div",g,[n(a,null,{default:s(()=>e[4]||(e[4]=[u("Einstellungen für Growatt")])),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"]),n(r,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),n(l,{title:"Version","not-selected":"Bitte auswählen",options:[{value:"MAX",text:"MAX Series"},{value:"TL-X",text:"TL-X Inverter"}],"model-value":o.device.configuration.version,required:"","onUpdate:modelValue":e[3]||(e[3]=t=>o.updateConfiguration(t,"configuration.version"))},{help:s(()=>e[5]||(e[5]=[u(" Die Wahl der API-Version beeinflusst die Auslesung der Speicherleistung und der Import/ Export Werte des Zählers. ")])),_:1},8,["model-value"])])}const X=m(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/growatt/growatt/device.vue"]]);export{X as default}; +import{D as p}from"./HardwareInstallation-727b5962.js";import{_ as m,u as i,l as v,m as b,G as n,E as s,B as u}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceGrowatt",mixins:[p]},g={class:"device-growatt"};function _(o,e,c,w,V,C){const a=i("openwb-base-heading"),d=i("openwb-base-text-input"),r=i("openwb-base-number-input"),l=i("openwb-base-select-input");return v(),b("div",g,[n(a,null,{default:s(()=>e[4]||(e[4]=[u("Einstellungen für Growatt")])),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"]),n(r,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),n(l,{title:"Version","not-selected":"Bitte auswählen",options:[{value:"MAX",text:"MAX Series"},{value:"TL-X",text:"TL-X Inverter"}],"model-value":o.device.configuration.version,required:"","onUpdate:modelValue":e[3]||(e[3]=t=>o.updateConfiguration(t,"configuration.version"))},{help:s(()=>e[5]||(e[5]=[u(" Die Wahl der API-Version beeinflusst die Auslesung der Speicherleistung und der Import/ Export Werte des Zählers. ")])),_:1},8,["model-value"])])}const X=m(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/growatt/growatt/device.vue"]]);export{X as default}; diff --git a/web/settings/assets/device-5ceb63e9.js b/web/settings/assets/device-1e200cbf.js similarity index 63% rename from web/settings/assets/device-5ceb63e9.js rename to web/settings/assets/device-1e200cbf.js index e8cdffeb06..2daf89b9c6 100644 --- a/web/settings/assets/device-5ceb63e9.js +++ b/web/settings/assets/device-1e200cbf.js @@ -1 +1 @@ -import{D as d}from"./HardwareInstallation-3a644290.js";import{_ as u,u as t,l as c,m,G as o,E as s,y as i}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceKostalPiko",mixins:[d]},f={class:"device-kostal-piko"};function b(n,e,v,g,k,h){const a=t("openwb-base-heading"),r=t("openwb-base-alert"),p=t("openwb-base-text-input");return c(),m("div",f,[o(a,null,{default:s(()=>e[1]||(e[1]=[i(" Einstellungen für Kostal Piko ")])),_:1}),o(r,{subtype:"info"},{default:s(()=>e[2]||(e[2]=[i(" Der Wechselrichter liefert Werte nur, solange er auch PV-Leistung liefert. Nachts geht er in den Standby. Die Hausanschlussüberwachung ist nur aktiv, wenn der Wechselrichter auch aktiv ist. ")])),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=l=>n.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"])])}const B=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/device.vue"]]);export{B as default}; +import{D as d}from"./HardwareInstallation-727b5962.js";import{_ as u,u as t,l as c,m,G as o,E as s,B as i}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceKostalPiko",mixins:[d]},f={class:"device-kostal-piko"};function b(n,e,v,g,k,h){const a=t("openwb-base-heading"),r=t("openwb-base-alert"),p=t("openwb-base-text-input");return c(),m("div",f,[o(a,null,{default:s(()=>e[1]||(e[1]=[i(" Einstellungen für Kostal Piko ")])),_:1}),o(r,{subtype:"info"},{default:s(()=>e[2]||(e[2]=[i(" Der Wechselrichter liefert Werte nur, solange er auch PV-Leistung liefert. Nachts geht er in den Standby. Die Hausanschlussüberwachung ist nur aktiv, wenn der Wechselrichter auch aktiv ist. ")])),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=l=>n.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"])])}const y=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-a9846396.js b/web/settings/assets/device-2144978c.js similarity index 72% rename from web/settings/assets/device-a9846396.js rename to web/settings/assets/device-2144978c.js index c9c6022c73..db4af5f977 100644 --- a/web/settings/assets/device-a9846396.js +++ b/web/settings/assets/device-2144978c.js @@ -1 +1 @@ -import{D as l}from"./HardwareInstallation-3a644290.js";import{_ as m,u as n,l as p,m as c,G as t,E as r,y as o,x as _}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceFronius",mixins:[l]},b={class:"device-fronius"};function g(i,e,v,h,w,x){const s=n("openwb-base-heading"),a=n("openwb-base-alert"),d=n("openwb-base-text-input");return p(),c("div",b,[t(s,null,{default:r(()=>e[1]||(e[1]=[o(" Einstellungen für Fronius ")])),_:1}),t(a,{subtype:"info"},{default:r(()=>e[2]||(e[2]=[o(" Die Fronius API muss aktiviert sein."),_("br",null,null,-1),o(" Sind nur Symos in Nutzung, welche über Fronius Solar Net / DATCOM miteinander verbunden sind, muss nur ein Gerät mit einer Komponente Wechselrichter angelegt werden. Sind aber z.B. Symo und Symo Hybrid im Einsatz, muss für jeden Wechselrichter ein Gerät mit einer Komponente Wechselrichter angelegt werden. Die Zähler-Komponente für das Smart-Meter wird in dem Gerät angelegt, dass den Wechselrichter enthält, an den das SmartMeter angeschlossen ist. ")])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const G=m(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/device.vue"]]);export{G as default}; +import{D as l}from"./HardwareInstallation-727b5962.js";import{_ as m,u as n,l as p,m as c,G as t,E as r,B as o,A as _}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceFronius",mixins:[l]},b={class:"device-fronius"};function g(i,e,v,h,w,S){const s=n("openwb-base-heading"),a=n("openwb-base-alert"),d=n("openwb-base-text-input");return p(),c("div",b,[t(s,null,{default:r(()=>e[1]||(e[1]=[o(" Einstellungen für Fronius ")])),_:1}),t(a,{subtype:"info"},{default:r(()=>e[2]||(e[2]=[o(" Die Fronius API muss aktiviert sein."),_("br",null,null,-1),o(" Sind nur Symos in Nutzung, welche über Fronius Solar Net / DATCOM miteinander verbunden sind, muss nur ein Gerät mit einer Komponente Wechselrichter angelegt werden. Sind aber z.B. Symo und Symo Hybrid im Einsatz, muss für jeden Wechselrichter ein Gerät mit einer Komponente Wechselrichter angelegt werden. Die Zähler-Komponente für das Smart-Meter wird in dem Gerät angelegt, dass den Wechselrichter enthält, an den das SmartMeter angeschlossen ist. ")])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const G=m(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/device.vue"]]);export{G as default}; diff --git a/web/settings/assets/device-5cc2cdfa.js b/web/settings/assets/device-21c38268.js similarity index 66% rename from web/settings/assets/device-5cc2cdfa.js rename to web/settings/assets/device-21c38268.js index d9be1b263e..f57e71b87b 100644 --- a/web/settings/assets/device-5cc2cdfa.js +++ b/web/settings/assets/device-21c38268.js @@ -1 +1 @@ -import{D as d}from"./HardwareInstallation-3a644290.js";import{_ as m,u as t,l,m as u,G as n,E as i,y as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceVZLogger",mixins:[d]},c={class:"device-vzlogger"};function _(o,e,v,f,b,w){const r=t("openwb-base-heading"),p=t("openwb-base-text-input");return l(),u("div",c,[n(r,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für VZLogger ")])),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.ip_address"))},{help:i(()=>e[2]||(e[2]=[s(" Bei Angabe des Ports muss auch das Schema mit angegeben werden: http://ip:port ")])),_:1},8,["model-value"])])}const k=m(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/device.vue"]]);export{k as default}; +import{D as d}from"./HardwareInstallation-727b5962.js";import{_ as m,u as t,l,m as u,G as n,E as i,B as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceVZLogger",mixins:[d]},c={class:"device-vzlogger"};function _(o,e,v,f,b,w){const r=t("openwb-base-heading"),p=t("openwb-base-text-input");return l(),u("div",c,[n(r,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für VZLogger ")])),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.ip_address"))},{help:i(()=>e[2]||(e[2]=[s(" Bei Angabe des Ports muss auch das Schema mit angegeben werden: http://ip:port ")])),_:1},8,["model-value"])])}const k=m(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-4f7aad98.js b/web/settings/assets/device-240bbfb8.js similarity index 63% rename from web/settings/assets/device-4f7aad98.js rename to web/settings/assets/device-240bbfb8.js index 6ea8102468..cb7e4ad1ae 100644 --- a/web/settings/assets/device-4f7aad98.js +++ b/web/settings/assets/device-240bbfb8.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as p,u as t,l as d,m as l,G as n,E as m,y as u}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarWorld",mixins:[a]},c={class:"device-solar_world"};function f(o,e,v,b,w,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),l("div",c,[n(i,null,{default:m(()=>e[1]||(e[1]=[u(" Einstellungen für SolarWorld ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const k=p(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/solar_world/device.vue"]]);export{k as default}; +import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as p,u as t,l as d,m as l,G as n,E as m,B as u}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarWorld",mixins:[a]},c={class:"device-solar_world"};function f(o,e,v,b,w,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),l("div",c,[n(i,null,{default:m(()=>e[1]||(e[1]=[u(" Einstellungen für SolarWorld ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const k=p(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/solar_world/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-264114d8.js b/web/settings/assets/device-2c344b3e.js similarity index 50% rename from web/settings/assets/device-264114d8.js rename to web/settings/assets/device-2c344b3e.js index 0952984cef..86a79acd7e 100644 --- a/web/settings/assets/device-264114d8.js +++ b/web/settings/assets/device-2c344b3e.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as p,u as t,l,m as d,G as n,E as m,y as u}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarLog",mixins:[a]},c={class:"device-solar_log"};function f(o,e,g,v,b,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return l(),d("div",c,[n(i,null,{default:m(()=>e[1]||(e[1]=[u(" Einstellungen für Solar-Log ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=p(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/solar_log/device.vue"]]);export{y as default}; +import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as p,u as t,l,m as d,G as n,E as m,B as u}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarLog",mixins:[a]},c={class:"device-solar_log"};function f(o,e,g,v,b,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return l(),d("div",c,[n(i,null,{default:m(()=>e[1]||(e[1]=[u(" Einstellungen für Solar-Log ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const L=p(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/solar_log/device.vue"]]);export{L as default}; diff --git a/web/settings/assets/device-30d7c2e0.js b/web/settings/assets/device-342a235f.js similarity index 64% rename from web/settings/assets/device-30d7c2e0.js rename to web/settings/assets/device-342a235f.js index f5578937af..604219cfc9 100644 --- a/web/settings/assets/device-30d7c2e0.js +++ b/web/settings/assets/device-342a235f.js @@ -1 +1 @@ -import{D as r}from"./HardwareInstallation-3a644290.js";import{_ as p,u as t,l as d,m as l,G as n,E as c,y as m}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceKostalSteca",mixins:[r]},_={class:"device-kostal-steca"};function f(o,e,v,b,g,x){const s=t("openwb-base-heading"),i=t("openwb-base-text-input");return d(),l("div",_,[n(s,null,{default:c(()=>e[1]||(e[1]=[m(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept ")])),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const h=p(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_steca/device.vue"]]);export{h as default}; +import{D as r}from"./HardwareInstallation-727b5962.js";import{_ as p,u as t,l as d,m as l,G as n,E as c,B as m}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceKostalSteca",mixins:[r]},_={class:"device-kostal-steca"};function f(o,e,v,b,g,x){const s=t("openwb-base-heading"),i=t("openwb-base-text-input");return d(),l("div",_,[n(s,null,{default:c(()=>e[1]||(e[1]=[m(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept ")])),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const h=p(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_steca/device.vue"]]);export{h as default}; diff --git a/web/settings/assets/device-6659803e.js b/web/settings/assets/device-35241d4e.js similarity index 68% rename from web/settings/assets/device-6659803e.js rename to web/settings/assets/device-35241d4e.js index 4ac3e7a6b4..93db3f3662 100644 --- a/web/settings/assets/device-6659803e.js +++ b/web/settings/assets/device-35241d4e.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as d,u as t,l,m,G as i,E as s,y as n,x as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const p={name:"DeviceMqtt",mixins:[a]},u={class:"device-mqtt"};function g(_,e,b,f,h,v){const r=t("openwb-base-heading"),o=t("openwb-base-alert");return l(),m("div",u,[i(r,null,{default:s(()=>e[0]||(e[0]=[n("Einstellungen für MQTT")])),_:1}),i(o,{subtype:"info"},{default:s(()=>e[1]||(e[1]=[n(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten an die angegebenen Topics im Broker gesendet werden. Da die Daten direkt an den Broker gesendet werden, erfolgt keine Verrechnung bei Hybrid-Systemen und auch keine Berechnung fehlender Werte, z.B. von Phasen-Leistung aus Spannung und Strömen. Beim Logging und im Lastmanagement, z.B. bei verschachtelten Zählern, werden die MQTT-Zähler wie gewohnt berücksichtigt."),c("br",null,null,-1),n(" Alle Daten sind als gültiges JSON zu senden! Zahlen mit Nachkommastellen (Float) müssen einen Punkt als Dezimaltrenner verwenden (internationales Format). ")])),_:1})])}const y=d(p,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/device.vue"]]);export{y as default}; +import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as d,u as t,l,m,G as i,E as s,B as n,A as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const p={name:"DeviceMqtt",mixins:[a]},u={class:"device-mqtt"};function g(_,e,b,f,h,v){const r=t("openwb-base-heading"),o=t("openwb-base-alert");return l(),m("div",u,[i(r,null,{default:s(()=>e[0]||(e[0]=[n("Einstellungen für MQTT")])),_:1}),i(o,{subtype:"info"},{default:s(()=>e[1]||(e[1]=[n(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten an die angegebenen Topics im Broker gesendet werden. Da die Daten direkt an den Broker gesendet werden, erfolgt keine Verrechnung bei Hybrid-Systemen und auch keine Berechnung fehlender Werte, z.B. von Phasen-Leistung aus Spannung und Strömen. Beim Logging und im Lastmanagement, z.B. bei verschachtelten Zählern, werden die MQTT-Zähler wie gewohnt berücksichtigt."),c("br",null,null,-1),n(" Alle Daten sind als gültiges JSON zu senden! Zahlen mit Nachkommastellen (Float) müssen einen Punkt als Dezimaltrenner verwenden (internationales Format). ")])),_:1})])}const z=d(p,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/device.vue"]]);export{z as default}; diff --git a/web/settings/assets/device-3d86bc85.js b/web/settings/assets/device-429cae7c.js similarity index 70% rename from web/settings/assets/device-3d86bc85.js rename to web/settings/assets/device-429cae7c.js index 8e0ae1da57..d41191fdad 100644 --- a/web/settings/assets/device-3d86bc85.js +++ b/web/settings/assets/device-429cae7c.js @@ -1 +1 @@ -import{D as l}from"./HardwareInstallation-3a644290.js";import{_ as m,u as n,l as b,m as _,G as t,E as r,y as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyBoy",mixins:[l]},f={class:"device-sunnyboy"};function v(o,e,w,y,g,x){const a=n("openwb-base-heading"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),u=n("openwb-base-number-input");return b(),_("div",f,[t(a,null,{default:r(()=>e[2]||(e[2]=[s(" Einstellungen für SMA Sunny Boy/Tripower ")])),_:1}),t(p,{subtype:"info"},{default:r(()=>e[3]||(e[3]=[s(' ModbusTCP muss entweder direkt am Wechselrichter, per Sunny Portal oder über das Tool "Sunny Explorer" aktiviert werden. Dies ist standardmäßig deaktiviert. ')])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(u,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>o.updateConfiguration(i,"configuration.port"))},null,8,["model-value"])])}const $=m(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/device.vue"]]);export{$ as default}; +import{D as l}from"./HardwareInstallation-727b5962.js";import{_ as m,u as n,l as b,m as _,G as t,E as r,B as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyBoy",mixins:[l]},f={class:"device-sunnyboy"};function v(o,e,w,g,y,x){const a=n("openwb-base-heading"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),u=n("openwb-base-number-input");return b(),_("div",f,[t(a,null,{default:r(()=>e[2]||(e[2]=[s(" Einstellungen für SMA Sunny Boy/Tripower ")])),_:1}),t(p,{subtype:"info"},{default:r(()=>e[3]||(e[3]=[s(' ModbusTCP muss entweder direkt am Wechselrichter, per Sunny Portal oder über das Tool "Sunny Explorer" aktiviert werden. Dies ist standardmäßig deaktiviert. ')])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(u,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>o.updateConfiguration(i,"configuration.port"))},null,8,["model-value"])])}const $=m(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/device.vue"]]);export{$ as default}; diff --git a/web/settings/assets/device-6656b07f.js b/web/settings/assets/device-45781f1b.js similarity index 58% rename from web/settings/assets/device-6656b07f.js rename to web/settings/assets/device-45781f1b.js index 2aa6e803a6..f370e51412 100644 --- a/web/settings/assets/device-6656b07f.js +++ b/web/settings/assets/device-45781f1b.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as p,u as s,l as m,m as u,G as n,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartMe",mixins:[a]},f={class:"device-smart-me"};function v(o,e,_,b,g,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return m(),u("div",f,[n(r,null,{default:d(()=>e[2]||(e[2]=[l(" Einstellungen für smart-me ")])),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const q=p(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/device.vue"]]);export{q as default}; +import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as p,u as s,l as m,m as u,G as n,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartMe",mixins:[a]},f={class:"device-smart-me"};function v(o,e,_,b,g,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return m(),u("div",f,[n(r,null,{default:d(()=>e[2]||(e[2]=[l(" Einstellungen für smart-me ")])),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const y=p(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-31e5797e.js b/web/settings/assets/device-45cfa872.js similarity index 65% rename from web/settings/assets/device-31e5797e.js rename to web/settings/assets/device-45cfa872.js index abf9066c17..e418f323e6 100644 --- a/web/settings/assets/device-31e5797e.js +++ b/web/settings/assets/device-45cfa872.js @@ -1 +1 @@ -import{D as u}from"./HardwareInstallation-3a644290.js";import{_ as l,u as i,l as p,m as d,G as t,E as m,y as v}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSolarView",mixins:[u]},_={class:"device-solar-view"};function c(o,e,b,g,w,V){const a=i("openwb-base-heading"),s=i("openwb-base-text-input"),r=i("openwb-base-number-input");return p(),d("div",_,[t(a,null,{default:m(()=>e[3]||(e[3]=[v(" Einstellungen für SolarView ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Timeout",required:"","model-value":o.device.configuration.timeout,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.timeout"))},null,8,["model-value"])])}const y=l(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/solar_view/device.vue"]]);export{y as default}; +import{D as u}from"./HardwareInstallation-727b5962.js";import{_ as l,u as i,l as p,m as d,G as t,E as m,B as v}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSolarView",mixins:[u]},_={class:"device-solar-view"};function c(o,e,b,g,w,V){const a=i("openwb-base-heading"),s=i("openwb-base-text-input"),r=i("openwb-base-number-input");return p(),d("div",_,[t(a,null,{default:m(()=>e[3]||(e[3]=[v(" Einstellungen für SolarView ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Timeout",required:"","model-value":o.device.configuration.timeout,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.timeout"))},null,8,["model-value"])])}const N=l(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/solar_view/device.vue"]]);export{N as default}; diff --git a/web/settings/assets/device-88e6829b.js b/web/settings/assets/device-55249d75.js similarity index 73% rename from web/settings/assets/device-88e6829b.js rename to web/settings/assets/device-55249d75.js index 196fe53ffb..d29b7d2b0d 100644 --- a/web/settings/assets/device-88e6829b.js +++ b/web/settings/assets/device-55249d75.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as d,u as s,l as u,m as p,G as t,E as l,y as m}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceBYD",mixins:[a]},v={class:"device-byd"};function b(o,e,c,g,_,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return u(),p("div",v,[t(r,null,{default:l(()=>e[3]||(e[3]=[m(" Einstellungen für BYD ")])),_:1}),t(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.user"))},null,8,["model-value"]),t(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.password"))},null,8,["model-value"])])}const U=d(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/byd/device.vue"]]);export{U as default}; +import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as d,u as s,l as u,m as p,G as t,E as l,B as m}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceBYD",mixins:[a]},v={class:"device-byd"};function b(o,e,c,g,_,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return u(),p("div",v,[t(r,null,{default:l(()=>e[3]||(e[3]=[m(" Einstellungen für BYD ")])),_:1}),t(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.user"))},null,8,["model-value"]),t(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.password"))},null,8,["model-value"])])}const U=d(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/byd/device.vue"]]);export{U as default}; diff --git a/web/settings/assets/device-7f7452f2.js b/web/settings/assets/device-55bb825c.js similarity index 61% rename from web/settings/assets/device-7f7452f2.js rename to web/settings/assets/device-55bb825c.js index 26923cb4fb..16eb8438f5 100644 --- a/web/settings/assets/device-7f7452f2.js +++ b/web/settings/assets/device-55bb825c.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as d,u as n,l as u,m,G as i,E as l,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceStuder",mixins:[a]},f={class:"device-studer"};function b(o,e,v,g,w,x){const r=n("openwb-base-heading"),s=n("openwb-base-text-input"),p=n("openwb-base-number-input");return u(),m("div",f,[i(r,null,{default:l(()=>e[2]||(e[2]=[c(" Einstellungen für Studer ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const N=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/device.vue"]]);export{N as default}; +import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as d,u as n,l as u,m,G as i,E as l,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceStuder",mixins:[a]},f={class:"device-studer"};function b(o,e,v,g,w,x){const r=n("openwb-base-heading"),s=n("openwb-base-text-input"),p=n("openwb-base-number-input");return u(),m("div",f,[i(r,null,{default:l(()=>e[2]||(e[2]=[c(" Einstellungen für Studer ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const P=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/device.vue"]]);export{P as default}; diff --git a/web/settings/assets/device-4c55f797.js b/web/settings/assets/device-5a5c2204.js similarity index 70% rename from web/settings/assets/device-4c55f797.js rename to web/settings/assets/device-5a5c2204.js index 000e1c2d84..b944a22922 100644 --- a/web/settings/assets/device-4c55f797.js +++ b/web/settings/assets/device-5a5c2204.js @@ -1 +1 @@ -import{D as p}from"./HardwareInstallation-3a644290.js";import{_ as u,u as n,l as m,m as d,G as i,E as l,y as _}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLogger",mixins:[p]},g={class:"device-huawei-smart-logger"};function f(o,e,b,v,w,x){const r=n("openwb-base-heading"),a=n("openwb-base-text-input"),s=n("openwb-base-number-input");return m(),d("div",g,[i(r,null,{default:l(()=>e[2]||(e[2]=[_(" Einstellungen für Huawei SmartLogger ")])),_:1}),i(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const q=u(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/device.vue"]]);export{q as default}; +import{D as p}from"./HardwareInstallation-727b5962.js";import{_ as u,u as n,l as m,m as d,G as i,E as l,B as _}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLogger",mixins:[p]},g={class:"device-huawei-smart-logger"};function f(o,e,b,v,w,x){const r=n("openwb-base-heading"),a=n("openwb-base-text-input"),s=n("openwb-base-number-input");return m(),d("div",g,[i(r,null,{default:l(()=>e[2]||(e[2]=[_(" Einstellungen für Huawei SmartLogger ")])),_:1}),i(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const q=u(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-9749c9e1.js b/web/settings/assets/device-5e15f44e.js similarity index 63% rename from web/settings/assets/device-9749c9e1.js rename to web/settings/assets/device-5e15f44e.js index ac84943a0d..980001d6b6 100644 --- a/web/settings/assets/device-9749c9e1.js +++ b/web/settings/assets/device-5e15f44e.js @@ -1 +1 @@ -import{D as d}from"./HardwareInstallation-3a644290.js";import{_ as l,u as o,l as u,m,G as i,E as r,y as t,x as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceHttp",mixins:[d]},v={class:"device-http"};function _(n,e,b,g,x,w){const s=o("openwb-base-heading"),p=o("openwb-base-text-input");return u(),m("div",v,[i(s,null,{default:r(()=>e[1]||(e[1]=[t(" Einstellungen für Http ")])),_:1}),i(p,{title:"Server-URL",subtype:"url",required:"","model-value":n.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.url"))},{help:r(()=>e[2]||(e[2]=[t(" Hier sind die Verbindungsangaben für den Http-Server einzutragen. Der Pfad für die einzelnen Daten wird in der Komponente hinterlegt."),c("br",null,null,-1),t(" Beispiel: http://mein.server:8080 ")])),_:1},8,["model-value"])])}const k=l(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/device.vue"]]);export{k as default}; +import{D as d}from"./HardwareInstallation-727b5962.js";import{_ as l,u as o,l as u,m,G as i,E as r,B as t,A as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceHttp",mixins:[d]},v={class:"device-http"};function _(n,e,b,g,w,x){const s=o("openwb-base-heading"),p=o("openwb-base-text-input");return u(),m("div",v,[i(s,null,{default:r(()=>e[1]||(e[1]=[t(" Einstellungen für Http ")])),_:1}),i(p,{title:"Server-URL",subtype:"url",required:"","model-value":n.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.url"))},{help:r(()=>e[2]||(e[2]=[t(" Hier sind die Verbindungsangaben für den Http-Server einzutragen. Der Pfad für die einzelnen Daten wird in der Komponente hinterlegt."),c("br",null,null,-1),t(" Beispiel: http://mein.server:8080 ")])),_:1},8,["model-value"])])}const k=l(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-67811713.js b/web/settings/assets/device-5fd78306.js similarity index 74% rename from web/settings/assets/device-67811713.js rename to web/settings/assets/device-5fd78306.js index 9f910abf63..a51b3f5328 100644 --- a/web/settings/assets/device-67811713.js +++ b/web/settings/assets/device-5fd78306.js @@ -1 +1 @@ -import{D as d}from"./HardwareInstallation-3a644290.js";import{_ as u,u as t,l,m as p,G as i,E as m,y as v}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceCarloGavazzi",mixins:[d]},f={class:"device-carlo-gavazzi"};function _(o,e,b,g,z,w){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),a=t("openwb-base-number-input");return l(),p("div",f,[i(r,null,{default:m(()=>e[3]||(e[3]=[v(" Einstellungen für Carlo Gavazzi ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=u(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/carlo_gavazzi/device.vue"]]);export{U as default}; +import{D as d}from"./HardwareInstallation-727b5962.js";import{_ as u,u as t,l,m as p,G as i,E as m,B as v}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceCarloGavazzi",mixins:[d]},f={class:"device-carlo-gavazzi"};function _(o,e,b,g,z,w){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),a=t("openwb-base-number-input");return l(),p("div",f,[i(r,null,{default:m(()=>e[3]||(e[3]=[v(" Einstellungen für Carlo Gavazzi ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=u(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/carlo_gavazzi/device.vue"]]);export{U as default}; diff --git a/web/settings/assets/device-fcda5bd2.js b/web/settings/assets/device-68b75b5b.js similarity index 65% rename from web/settings/assets/device-fcda5bd2.js rename to web/settings/assets/device-68b75b5b.js index 961a12e6e2..ce06a21ae1 100644 --- a/web/settings/assets/device-fcda5bd2.js +++ b/web/settings/assets/device-68b75b5b.js @@ -1 +1 @@ -import{D as p}from"./HardwareInstallation-3a644290.js";import{_ as d,u as i,l as u,m as l,G as t,E as m,y as f}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSaxpower",mixins:[p]},v={class:"device-saxpower"};function _(o,e,c,g,w,x){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return u(),l("div",v,[t(r,null,{default:m(()=>e[3]||(e[3]=[f(" Einstellungen für Saxpower ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=d(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/saxpower/device.vue"]]);export{y as default}; +import{D as p}from"./HardwareInstallation-727b5962.js";import{_ as d,u as i,l as u,m as l,G as t,E as m,B as f}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSaxpower",mixins:[p]},v={class:"device-saxpower"};function _(o,e,c,g,w,x){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return u(),l("div",v,[t(r,null,{default:m(()=>e[3]||(e[3]=[f(" Einstellungen für Saxpower ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const I=d(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/saxpower/device.vue"]]);export{I as default}; diff --git a/web/settings/assets/device-fd0ed77c.js b/web/settings/assets/device-69185b02.js similarity index 78% rename from web/settings/assets/device-fd0ed77c.js rename to web/settings/assets/device-69185b02.js index 21cb044af2..510854d033 100644 --- a/web/settings/assets/device-fd0ed77c.js +++ b/web/settings/assets/device-69185b02.js @@ -1 +1 @@ -import{D as u}from"./HardwareInstallation-3a644290.js";import{_ as m,u as n,l as c,m as f,G as o,E as l,y as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceShelly",mixins:[u]},v={class:"device-shelly"};function b(t,e,g,h,w,y){const r=n("openwb-base-heading"),a=n("openwb-base-alert"),p=n("openwb-base-text-input"),d=n("openwb-base-select-input");return c(),f("div",v,[o(r,null,{default:l(()=>e[2]||(e[2]=[s(" Einstellungen für Shelly ")])),_:1}),o(a,{subtype:"info"},{default:l(()=>e[3]||(e[3]=[s(" Unterstützt werden theoretisch alle ein- und dreiphasigen Shelly der Generation 1-3. Getestete Modelle sind Shelly 1pm, 1pm plus, Pro Pro 3EM, Plug S. ")])),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),o(d,{title:"Vorzeichen invertieren","not-selected":"Bitte auswählen",options:[{value:-1,text:"ja"},{value:1,text:"nein"}],"model-value":t.device.configuration.factor,required:"","onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.factor"))},{help:l(()=>e[4]||(e[4]=[s(" Einige Shelly Modelle liefern die Leistung mit umgedrehtem Vorzeichen. Falls dies der Fall sein sollte, das Vorzeichen invertieren. ")])),_:1},8,["model-value"])])}const $=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/device.vue"]]);export{$ as default}; +import{D as u}from"./HardwareInstallation-727b5962.js";import{_ as m,u as n,l as c,m as f,G as o,E as l,B as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceShelly",mixins:[u]},v={class:"device-shelly"};function b(t,e,g,h,w,y){const r=n("openwb-base-heading"),a=n("openwb-base-alert"),p=n("openwb-base-text-input"),d=n("openwb-base-select-input");return c(),f("div",v,[o(r,null,{default:l(()=>e[2]||(e[2]=[s(" Einstellungen für Shelly ")])),_:1}),o(a,{subtype:"info"},{default:l(()=>e[3]||(e[3]=[s(" Unterstützt werden theoretisch alle ein- und dreiphasigen Shelly der Generation 1-3. Getestete Modelle sind Shelly 1pm, 1pm plus, Pro Pro 3EM, Plug S. ")])),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),o(d,{title:"Vorzeichen invertieren","not-selected":"Bitte auswählen",options:[{value:-1,text:"ja"},{value:1,text:"nein"}],"model-value":t.device.configuration.factor,required:"","onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.factor"))},{help:l(()=>e[4]||(e[4]=[s(" Einige Shelly Modelle liefern die Leistung mit umgedrehtem Vorzeichen. Falls dies der Fall sein sollte, das Vorzeichen invertieren. ")])),_:1},8,["model-value"])])}const $=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/device.vue"]]);export{$ as default}; diff --git a/web/settings/assets/device-1830d04b.js b/web/settings/assets/device-6dd461c4.js similarity index 58% rename from web/settings/assets/device-1830d04b.js rename to web/settings/assets/device-6dd461c4.js index 4321e787f6..c09515ef8e 100644 --- a/web/settings/assets/device-1830d04b.js +++ b/web/settings/assets/device-6dd461c4.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as p,u as r,l as u,m as d,G as n,E as l,y as m}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfox",mixins:[a]},c={class:"device-powerfox"};function v(o,e,w,_,b,g){const s=r("openwb-base-heading"),i=r("openwb-base-text-input");return u(),d("div",c,[n(s,null,{default:l(()=>e[2]||(e[2]=[m(" Einstellungen für Powerfox ")])),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const k=p(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/device.vue"]]);export{k as default}; +import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as p,u as r,l as u,m as d,G as n,E as l,B as m}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfox",mixins:[a]},c={class:"device-powerfox"};function v(o,e,w,_,b,g){const s=r("openwb-base-heading"),i=r("openwb-base-text-input");return u(),d("div",c,[n(s,null,{default:l(()=>e[2]||(e[2]=[m(" Einstellungen für Powerfox ")])),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const q=p(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-04b7418e.js b/web/settings/assets/device-6dfe8cd8.js similarity index 71% rename from web/settings/assets/device-04b7418e.js rename to web/settings/assets/device-6dfe8cd8.js index dd1112d53a..a218163919 100644 --- a/web/settings/assets/device-04b7418e.js +++ b/web/settings/assets/device-6dfe8cd8.js @@ -1 +1 @@ -import{D as r}from"./HardwareInstallation-3a644290.js";import{_ as l,u as n,l as u,m as d,G as a,E as m,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceTasmota",mixins:[r]},v={class:"device-tasmota"};function f(t,e,b,g,w,x){const i=n("openwb-base-heading"),s=n("openwb-base-text-input"),p=n("openwb-base-select-input");return u(),d("div",v,[a(i,null,{default:m(()=>e[2]||(e[2]=[c("Einstellungen für Tasmota")])),_:1}),a(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Phase","not-selected":"Bitte auswählen",options:[{value:1,text:"1"},{value:2,text:"2"},{value:3,text:"3"}],"model-value":t.device.configuration.phase,required:"","onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.phase"))},null,8,["model-value"])])}const q=l(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tasmota/tasmota/device.vue"]]);export{q as default}; +import{D as r}from"./HardwareInstallation-727b5962.js";import{_ as l,u as n,l as u,m as d,G as a,E as m,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceTasmota",mixins:[r]},v={class:"device-tasmota"};function f(t,e,b,g,w,x){const i=n("openwb-base-heading"),s=n("openwb-base-text-input"),p=n("openwb-base-select-input");return u(),d("div",v,[a(i,null,{default:m(()=>e[2]||(e[2]=[c("Einstellungen für Tasmota")])),_:1}),a(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Phase","not-selected":"Bitte auswählen",options:[{value:1,text:"1"},{value:2,text:"2"},{value:3,text:"3"}],"model-value":t.device.configuration.phase,required:"","onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.phase"))},null,8,["model-value"])])}const q=l(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tasmota/tasmota/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-c61fae76.js b/web/settings/assets/device-6dfeff1b.js similarity index 74% rename from web/settings/assets/device-c61fae76.js rename to web/settings/assets/device-6dfeff1b.js index 9a1785d443..6c4cf7c4ec 100644 --- a/web/settings/assets/device-c61fae76.js +++ b/web/settings/assets/device-6dfeff1b.js @@ -1 +1 @@ -import{D as p}from"./HardwareInstallation-3a644290.js";import{_ as u,u as n,l as m,m as _,G as a,E as i,y as r}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSolarwatt",mixins:[p]},v={class:"device-solarwatt"};function c(t,e,w,b,g,x){const s=n("openwb-base-heading"),l=n("openwb-base-text-input"),d=n("openwb-base-select-input");return m(),_("div",v,[a(s,null,{default:i(()=>e[2]||(e[2]=[r(" Einstellungen für Solarwatt/My Reserve ")])),_:1}),a(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Abrufmethode","not-selected":"Bitte auswählen",options:[{value:0,text:"Gateway"},{value:1,text:"Energy Manager"}],"model-value":t.device.configuration.energy_manager,required:"","onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.energy_manager"))},{help:i(()=>e[3]||(e[3]=[r(" Wenn beide Abrufmethoden verwendet werden sollen, muss für jede Methode ein Gerät erstellt werden. ")])),_:1},8,["model-value"])])}const G=u(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/solar_watt/device.vue"]]);export{G as default}; +import{D as p}from"./HardwareInstallation-727b5962.js";import{_ as u,u as n,l as m,m as _,G as a,E as i,B as r}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSolarwatt",mixins:[p]},v={class:"device-solarwatt"};function c(t,e,w,b,g,x){const s=n("openwb-base-heading"),l=n("openwb-base-text-input"),d=n("openwb-base-select-input");return m(),_("div",v,[a(s,null,{default:i(()=>e[2]||(e[2]=[r(" Einstellungen für Solarwatt/My Reserve ")])),_:1}),a(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Abrufmethode","not-selected":"Bitte auswählen",options:[{value:0,text:"Gateway"},{value:1,text:"Energy Manager"}],"model-value":t.device.configuration.energy_manager,required:"","onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.energy_manager"))},{help:i(()=>e[3]||(e[3]=[r(" Wenn beide Abrufmethoden verwendet werden sollen, muss für jede Methode ein Gerät erstellt werden. ")])),_:1},8,["model-value"])])}const G=u(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/solar_watt/device.vue"]]);export{G as default}; diff --git a/web/settings/assets/device-1565347a.js b/web/settings/assets/device-72bc8ff3.js similarity index 74% rename from web/settings/assets/device-1565347a.js rename to web/settings/assets/device-72bc8ff3.js index 8e2a254355..1c4e68c731 100644 --- a/web/settings/assets/device-1565347a.js +++ b/web/settings/assets/device-72bc8ff3.js @@ -1 +1 @@ -import{D as u}from"./HardwareInstallation-3a644290.js";import{_ as l,u as n,l as m,m as b,G as t,E as s,y as c,x as _}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceDeye",mixins:[u]},v={class:"device-deye"};function g(o,e,w,y,x,C){const r=n("openwb-base-heading"),a=n("openwb-base-alert"),p=n("openwb-base-text-input"),d=n("openwb-base-number-input");return m(),b("div",v,[t(r,null,{default:s(()=>e[2]||(e[2]=[c("Einstellungen für Deye")])),_:1}),t(a,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[_("span",{class:"text-danger"}," Deye Wechselrichter verfügen über keine Modbus-TCP Schnittstelle. Für die Auslesung wird ein RS485/LAN-Adapter benötigt. ",-1)])),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>o.updateConfiguration(i,"configuration.port"))},null,8,["model-value"])])}const q=l(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/device.vue"]]);export{q as default}; +import{D as u}from"./HardwareInstallation-727b5962.js";import{_ as l,u as n,l as m,m as b,G as t,E as s,B as c,A as _}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceDeye",mixins:[u]},v={class:"device-deye"};function g(o,e,w,y,x,C){const r=n("openwb-base-heading"),a=n("openwb-base-alert"),p=n("openwb-base-text-input"),d=n("openwb-base-number-input");return m(),b("div",v,[t(r,null,{default:s(()=>e[2]||(e[2]=[c("Einstellungen für Deye")])),_:1}),t(a,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[_("span",{class:"text-danger"}," Deye Wechselrichter verfügen über keine Modbus-TCP Schnittstelle. Für die Auslesung wird ein RS485/LAN-Adapter benötigt. ",-1)])),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>o.updateConfiguration(i,"configuration.port"))},null,8,["model-value"])])}const q=l(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-123cfe52.js b/web/settings/assets/device-82bb06d6.js similarity index 61% rename from web/settings/assets/device-123cfe52.js rename to web/settings/assets/device-82bb06d6.js index 7bce1600dd..5de1f600cc 100644 --- a/web/settings/assets/device-123cfe52.js +++ b/web/settings/assets/device-82bb06d6.js @@ -1 +1 @@ -import{D as p}from"./HardwareInstallation-3a644290.js";import{_ as m,u as t,l,m as d,G as i,E as u,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarmax",mixins:[p]},f={class:"device-solarmax"};function b(o,e,v,g,x,w){const a=t("openwb-base-heading"),r=t("openwb-base-text-input"),s=t("openwb-base-number-input");return l(),d("div",f,[i(a,null,{default:u(()=>e[2]||(e[2]=[c(" Einstellungen für Solarmax ")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const N=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/device.vue"]]);export{N as default}; +import{D as p}from"./HardwareInstallation-727b5962.js";import{_ as m,u as t,l,m as d,G as i,E as u,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarmax",mixins:[p]},f={class:"device-solarmax"};function b(o,e,v,g,x,w){const a=t("openwb-base-heading"),r=t("openwb-base-text-input"),s=t("openwb-base-number-input");return l(),d("div",f,[i(a,null,{default:u(()=>e[2]||(e[2]=[c(" Einstellungen für Solarmax ")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const P=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/device.vue"]]);export{P as default}; diff --git a/web/settings/assets/device-aacbf2a5.js b/web/settings/assets/device-86f7621f.js similarity index 73% rename from web/settings/assets/device-aacbf2a5.js rename to web/settings/assets/device-86f7621f.js index 20a819ea0c..78c74645e7 100644 --- a/web/settings/assets/device-aacbf2a5.js +++ b/web/settings/assets/device-86f7621f.js @@ -1 +1 @@ -import{D as d}from"./HardwareInstallation-3a644290.js";import{_ as m,u as i,l,m as u,G as n,E as a,y as r}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceFems",mixins:[d]},c={class:"device-fems"};function v(o,e,_,b,g,w){const p=i("openwb-base-heading"),s=i("openwb-base-text-input");return l(),u("div",c,[n(p,null,{default:a(()=>e[2]||(e[2]=[r(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(s,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},{help:a(()=>e[3]||(e[3]=[r(" Bei Nutzung von Fenecon FEMS ist das Passwort im Normalfall user, bei Kaco mit Hy-Control ist das Passwort meist admin. ")])),_:1},8,["model-value"])])}const V=m(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/device.vue"]]);export{V as default}; +import{D as d}from"./HardwareInstallation-727b5962.js";import{_ as m,u as i,l,m as u,G as n,E as a,B as r}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceFems",mixins:[d]},c={class:"device-fems"};function v(o,e,_,b,g,w){const p=i("openwb-base-heading"),s=i("openwb-base-text-input");return l(),u("div",c,[n(p,null,{default:a(()=>e[2]||(e[2]=[r(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(s,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},{help:a(()=>e[3]||(e[3]=[r(" Bei Nutzung von Fenecon FEMS ist das Passwort im Normalfall user, bei Kaco mit Hy-Control ist das Passwort meist admin. ")])),_:1},8,["model-value"])])}const V=m(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-968183c7.js b/web/settings/assets/device-8a67a9ec.js similarity index 61% rename from web/settings/assets/device-968183c7.js rename to web/settings/assets/device-8a67a9ec.js index d457902b52..1b76630ba0 100644 --- a/web/settings/assets/device-968183c7.js +++ b/web/settings/assets/device-8a67a9ec.js @@ -1 +1 @@ -import{D as p}from"./HardwareInstallation-3a644290.js";import{_ as a,u as t,l as d,m as c,G as n,E as m,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceRCT",mixins:[p]},_={class:"device-rct"};function f(o,e,v,b,g,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),c("div",_,[n(i,null,{default:m(()=>e[1]||(e[1]=[l(" Einstellungen für RCT ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const k=a(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/rct/device.vue"]]);export{k as default}; +import{D as p}from"./HardwareInstallation-727b5962.js";import{_ as a,u as t,l as d,m as c,G as n,E as m,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceRCT",mixins:[p]},_={class:"device-rct"};function f(o,e,v,b,g,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),c("div",_,[n(i,null,{default:m(()=>e[1]||(e[1]=[l(" Einstellungen für RCT ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const k=a(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/rct/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-357d44c6.js b/web/settings/assets/device-8b9db644.js similarity index 77% rename from web/settings/assets/device-357d44c6.js rename to web/settings/assets/device-8b9db644.js index 29d73e991a..c38cdf2e1c 100644 --- a/web/settings/assets/device-357d44c6.js +++ b/web/settings/assets/device-8b9db644.js @@ -1 +1 @@ -import{D as m}from"./HardwareInstallation-3a644290.js";import{_ as l,u as i,l as b,m as f,G as t,E as r,y as a}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSiemensSentron",mixins:[m]},v={class:"device-siemens-sentron"};function c(n,e,g,w,C,x){const u=i("openwb-base-heading"),p=i("openwb-base-alert"),d=i("openwb-base-text-input"),s=i("openwb-base-number-input");return b(),f("div",v,[t(u,null,{default:r(()=>e[3]||(e[3]=[a(" Einstellungen für Siemens Sentron ")])),_:1}),t(p,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[a(' Derzeit werden nur Messgeräte vom Typ "7KM PAC2200" mit Ethernet-Schnittstelle unterstützt. ')])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":n.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const P=l(_,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens_sentron/device.vue"]]);export{P as default}; +import{D as m}from"./HardwareInstallation-727b5962.js";import{_ as l,u as i,l as b,m as f,G as t,E as r,B as a}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSiemensSentron",mixins:[m]},v={class:"device-siemens-sentron"};function c(n,e,g,w,C,x){const u=i("openwb-base-heading"),p=i("openwb-base-alert"),d=i("openwb-base-text-input"),s=i("openwb-base-number-input");return b(),f("div",v,[t(u,null,{default:r(()=>e[3]||(e[3]=[a(" Einstellungen für Siemens Sentron ")])),_:1}),t(p,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[a(' Derzeit werden nur Messgeräte vom Typ "7KM PAC2200" mit Ethernet-Schnittstelle unterstützt. ')])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":n.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const P=l(_,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens_sentron/device.vue"]]);export{P as default}; diff --git a/web/settings/assets/device-e29a0ff7.js b/web/settings/assets/device-8bba052a.js similarity index 76% rename from web/settings/assets/device-e29a0ff7.js rename to web/settings/assets/device-8bba052a.js index ef4dd1889c..f481d27421 100644 --- a/web/settings/assets/device-e29a0ff7.js +++ b/web/settings/assets/device-8bba052a.js @@ -1 +1 @@ -import{D as p}from"./HardwareInstallation-3a644290.js";import{_ as u,u as t,l as d,m,G as i,E as c,y as v}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSolis",mixins:[p]},_={class:"device-solis"};function f(o,e,g,w,h,x){const s=t("openwb-base-heading"),r=t("openwb-base-text-input"),a=t("openwb-base-number-input"),l=t("openwb-base-select-input");return d(),m("div",_,[i(s,null,{default:c(()=>e[3]||(e[3]=[v("Einstellungen für Solis")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(l,{title:"Version","not-selected":"Bitte auswählen",options:[{value:"inverter",text:"Wechselrichter ohne Speicheranbindung"},{value:"hybrid",text:"Hybridwechselrichter RHI/S Serie"}],"model-value":o.device.configuration.version,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const U=u(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/device.vue"]]);export{U as default}; +import{D as p}from"./HardwareInstallation-727b5962.js";import{_ as u,u as t,l as d,m,G as i,E as c,B as v}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSolis",mixins:[p]},_={class:"device-solis"};function f(o,e,g,w,h,x){const s=t("openwb-base-heading"),r=t("openwb-base-text-input"),a=t("openwb-base-number-input"),l=t("openwb-base-select-input");return d(),m("div",_,[i(s,null,{default:c(()=>e[3]||(e[3]=[v("Einstellungen für Solis")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(l,{title:"Version","not-selected":"Bitte auswählen",options:[{value:"inverter",text:"Wechselrichter ohne Speicheranbindung"},{value:"hybrid",text:"Hybridwechselrichter RHI/S Serie"}],"model-value":o.device.configuration.version,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const U=u(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/device.vue"]]);export{U as default}; diff --git a/web/settings/assets/device-716c4065.js b/web/settings/assets/device-8c80f180.js similarity index 88% rename from web/settings/assets/device-716c4065.js rename to web/settings/assets/device-8c80f180.js index 5dc1eb3489..570cb21a8a 100644 --- a/web/settings/assets/device-716c4065.js +++ b/web/settings/assets/device-8c80f180.js @@ -1 +1 @@ -import{D as f}from"./HardwareInstallation-3a644290.js";import{_ as g,u as d,l as t,m as b,G as l,E as a,y as i,z as s,B as u,x as p}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceEnphase",mixins:[f]},y={class:"device-enphase"};function k(n,e,V,c,E,h){const m=d("openwb-base-heading"),r=d("openwb-base-text-input"),v=d("openwb-base-select-input");return t(),b("div",y,[l(m,null,{default:a(()=>e[6]||(e[6]=[i(" Einstellungen für Enphase Envoy / IQ Gateway ")])),_:1}),l(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.hostname,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.hostname"))},{help:a(()=>e[7]||(e[7]=[i(' Bitte geben Sie die IP-Adresse oder den Hostnamen des Enphase Envoy oder IQ Gateway an. Die Info finden Sie in Ihrem Router. Ab Werk ist der Hostname "envoy" oder "envoy.local". ')])),_:1},8,["model-value"]),l(v,{title:"Version",required:"",options:[{value:1,text:"Firmware < 7.0"},{value:2,text:"Firmware ab 7.0"}],"model-value":n.device.configuration.version,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.version"))},{help:a(()=>e[8]||(e[8]=[i(" Bitte wählen Sie die Version des Enphase Envoy oder IQ Gateway aus. Die Version 1 ist für Geräte mit einer Firmware-Version unter 7.0, die Version 2 für Geräte mit einer Firmware-Version ab 7.0. Ein angebundener Speicher wird nur bei Version 2 unterstützt. ")])),_:1},8,["model-value"]),n.device.configuration.version>1?(t(),s(r,{key:0,title:"Benutzer",subtype:"user","model-value":n.device.configuration.user,required:"","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.user"))},null,8,["model-value"])):u("",!0),n.device.configuration.version>1?(t(),s(r,{key:1,title:"Kennwort",subtype:"password","model-value":n.device.configuration.password,required:"","onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])):u("",!0),n.device.configuration.version>1?(t(),s(r,{key:2,title:"Envoy Seriennummer","model-value":n.device.configuration.serial,required:"","onUpdate:modelValue":e[4]||(e[4]=o=>n.updateConfiguration(o,"configuration.serial"))},null,8,["model-value"])):u("",!0),n.device.configuration.version>1?(t(),s(r,{key:3,title:"Token",subtype:"password","model-value":n.device.configuration.token,required:"","onUpdate:modelValue":e[5]||(e[5]=o=>n.updateConfiguration(o,"configuration.token"))},{help:a(()=>e[9]||(e[9]=[i(" Wenn Benutzer, Kennwort und Seriennummer des Envoys angegeben werden, wird das Token automatisch beim Speichern abgerufen. Ebenfalls wird ein abgelaufenes Token (derzeit nach einem Jahr) automatisch erneuert."),p("br",null,null,-1),i(" Wenn Sie ein Token manuell erstellen möchten, können Sie dies auf der "),p("a",{href:"https://developer.enphase.com/docs/quickstart.html",target:"_blank",rel:"noopener"}," Enphase-Webseite ",-1),i(" erledigen. ")])),_:1},8,["model-value"])):u("",!0)])}const T=g(w,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/device.vue"]]);export{T as default}; +import{D as f}from"./HardwareInstallation-727b5962.js";import{_ as g,u as d,l as t,m as b,G as l,E as a,B as i,x as s,z as u,A as p}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceEnphase",mixins:[f]},y={class:"device-enphase"};function k(n,e,V,c,E,h){const m=d("openwb-base-heading"),r=d("openwb-base-text-input"),v=d("openwb-base-select-input");return t(),b("div",y,[l(m,null,{default:a(()=>e[6]||(e[6]=[i(" Einstellungen für Enphase Envoy / IQ Gateway ")])),_:1}),l(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.hostname,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.hostname"))},{help:a(()=>e[7]||(e[7]=[i(' Bitte geben Sie die IP-Adresse oder den Hostnamen des Enphase Envoy oder IQ Gateway an. Die Info finden Sie in Ihrem Router. Ab Werk ist der Hostname "envoy" oder "envoy.local". ')])),_:1},8,["model-value"]),l(v,{title:"Version",required:"",options:[{value:1,text:"Firmware < 7.0"},{value:2,text:"Firmware ab 7.0"}],"model-value":n.device.configuration.version,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.version"))},{help:a(()=>e[8]||(e[8]=[i(" Bitte wählen Sie die Version des Enphase Envoy oder IQ Gateway aus. Die Version 1 ist für Geräte mit einer Firmware-Version unter 7.0, die Version 2 für Geräte mit einer Firmware-Version ab 7.0. Ein angebundener Speicher wird nur bei Version 2 unterstützt. ")])),_:1},8,["model-value"]),n.device.configuration.version>1?(t(),s(r,{key:0,title:"Benutzer",subtype:"user","model-value":n.device.configuration.user,required:"","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.user"))},null,8,["model-value"])):u("",!0),n.device.configuration.version>1?(t(),s(r,{key:1,title:"Kennwort",subtype:"password","model-value":n.device.configuration.password,required:"","onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])):u("",!0),n.device.configuration.version>1?(t(),s(r,{key:2,title:"Envoy Seriennummer","model-value":n.device.configuration.serial,required:"","onUpdate:modelValue":e[4]||(e[4]=o=>n.updateConfiguration(o,"configuration.serial"))},null,8,["model-value"])):u("",!0),n.device.configuration.version>1?(t(),s(r,{key:3,title:"Token",subtype:"password","model-value":n.device.configuration.token,required:"","onUpdate:modelValue":e[5]||(e[5]=o=>n.updateConfiguration(o,"configuration.token"))},{help:a(()=>e[9]||(e[9]=[i(" Wenn Benutzer, Kennwort und Seriennummer des Envoys angegeben werden, wird das Token automatisch beim Speichern abgerufen. Ebenfalls wird ein abgelaufenes Token (derzeit nach einem Jahr) automatisch erneuert."),p("br",null,null,-1),i(" Wenn Sie ein Token manuell erstellen möchten, können Sie dies auf der "),p("a",{href:"https://developer.enphase.com/docs/quickstart.html",target:"_blank",rel:"noopener"}," Enphase-Webseite ",-1),i(" erledigen. ")])),_:1},8,["model-value"])):u("",!0)])}const T=g(w,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/device.vue"]]);export{T as default}; diff --git a/web/settings/assets/device-c8cf6368.js b/web/settings/assets/device-8dcea009.js similarity index 68% rename from web/settings/assets/device-c8cf6368.js rename to web/settings/assets/device-8dcea009.js index 6986d83fbf..9624dea70d 100644 --- a/web/settings/assets/device-c8cf6368.js +++ b/web/settings/assets/device-8dcea009.js @@ -1 +1 @@ -import{D as l}from"./HardwareInstallation-3a644290.js";import{_ as m,u as i,l as b,m as f,G as t,E as s,y as d}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DevicePowerdog",mixins:[l]},v={class:"device-powerdog"};function g(o,e,c,w,C,x){const a=i("openwb-base-heading"),p=i("openwb-base-alert"),u=i("openwb-base-text-input"),r=i("openwb-base-number-input");return b(),f("div",v,[t(a,null,{default:s(()=>e[3]||(e[3]=[d(" Einstellungen für Powerdog ")])),_:1}),t(p,{subtype:"info"},{default:s(()=>e[4]||(e[4]=[d(" ModbusTCP muss aktiviert sein. ")])),_:1}),t(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const M=m(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/powerdog/device.vue"]]);export{M as default}; +import{D as l}from"./HardwareInstallation-727b5962.js";import{_ as m,u as i,l as b,m as f,G as t,E as s,B as d}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DevicePowerdog",mixins:[l]},v={class:"device-powerdog"};function g(o,e,c,w,C,x){const a=i("openwb-base-heading"),p=i("openwb-base-alert"),u=i("openwb-base-text-input"),r=i("openwb-base-number-input");return b(),f("div",v,[t(a,null,{default:s(()=>e[3]||(e[3]=[d(" Einstellungen für Powerdog ")])),_:1}),t(p,{subtype:"info"},{default:s(()=>e[4]||(e[4]=[d(" ModbusTCP muss aktiviert sein. ")])),_:1}),t(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=m(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/powerdog/device.vue"]]);export{U as default}; diff --git a/web/settings/assets/device-9befb1d4.js b/web/settings/assets/device-92ff8214.js similarity index 67% rename from web/settings/assets/device-9befb1d4.js rename to web/settings/assets/device-92ff8214.js index 9598d7ccbb..9e16d60433 100644 --- a/web/settings/assets/device-9befb1d4.js +++ b/web/settings/assets/device-92ff8214.js @@ -1 +1 @@ -import{D as d}from"./HardwareInstallation-3a644290.js";import{_ as u,u as i,l,m as p,G as t,E as m,y as f}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceKostalSEM",mixins:[d]},v={class:"device-kostal-sem"};function _(o,e,c,g,w,C){const s=i("openwb-base-heading"),r=i("openwb-base-text-input"),a=i("openwb-base-number-input");return l(),p("div",v,[t(s,null,{default:m(()=>e[3]||(e[3]=[f(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 ")])),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const B=u(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_sem/device.vue"]]);export{B as default}; +import{D as d}from"./HardwareInstallation-727b5962.js";import{_ as u,u as i,l,m as p,G as t,E as m,B as f}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceKostalSEM",mixins:[d]},v={class:"device-kostal-sem"};function _(o,e,c,g,w,C){const s=i("openwb-base-heading"),r=i("openwb-base-text-input"),a=i("openwb-base-number-input");return l(),p("div",v,[t(s,null,{default:m(()=>e[3]||(e[3]=[f(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 ")])),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=u(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_sem/device.vue"]]);export{U as default}; diff --git a/web/settings/assets/device-3f9eff90.js b/web/settings/assets/device-93509dc9.js similarity index 65% rename from web/settings/assets/device-3f9eff90.js rename to web/settings/assets/device-93509dc9.js index 54f1fcd293..97eb90e647 100644 --- a/web/settings/assets/device-3f9eff90.js +++ b/web/settings/assets/device-93509dc9.js @@ -1 +1 @@ -import{D as d}from"./HardwareInstallation-3a644290.js";import{_ as u,u as i,l as p,m as l,G as t,E as m,y as v}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceVarta",mixins:[d]},b={class:"device-varta"};function _(o,e,c,g,w,V){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",b,[t(r,null,{default:m(()=>e[3]||(e[3]=[v(" Einstellungen für Varta ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=u(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/varta/device.vue"]]);export{y as default}; +import{D as d}from"./HardwareInstallation-727b5962.js";import{_ as u,u as i,l as p,m as l,G as t,E as m,B as v}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceVarta",mixins:[d]},b={class:"device-varta"};function _(o,e,c,g,w,V){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",b,[t(r,null,{default:m(()=>e[3]||(e[3]=[v(" Einstellungen für Varta ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const I=u(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/varta/device.vue"]]);export{I as default}; diff --git a/web/settings/assets/device-e44ec84b.js b/web/settings/assets/device-94d6b50f.js similarity index 83% rename from web/settings/assets/device-e44ec84b.js rename to web/settings/assets/device-94d6b50f.js index a55b1ee976..146703807b 100644 --- a/web/settings/assets/device-e44ec84b.js +++ b/web/settings/assets/device-94d6b50f.js @@ -1 +1 @@ -import{D as m}from"./HardwareInstallation-3a644290.js";import{_ as v,u as t,l as i,m as f,G as a,E as c,y as b,z as u,B as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceAlphaess",mixins:[m]},_={class:"device-alphaess"};function w(e,o,V,C,B,E){const d=t("openwb-base-heading"),r=t("openwb-base-select-input"),p=t("openwb-base-text-input"),l=t("openwb-base-number-input");return i(),f("div",_,[a(d,null,{default:c(()=>o[5]||(o[5]=[b(" Einstellungen für Alpha ESS ")])),_:1}),a(r,{title:"Ausleseart","not-selected":"Bitte auswählen",required:"",options:[{value:0,text:"Alpha ESS-Kit"},{value:1,text:"Hi 5/10"}],"model-value":e.device.configuration.source,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.source"))},null,8,["model-value"]),e.device.configuration.source==1?(i(),u(p,{key:0,title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])):s("",!0),e.device.configuration.source==1?(i(),u(l,{key:1,title:"Port",subtype:"host",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])):s("",!0),e.device.configuration.source==1?(i(),u(l,{key:2,title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[3]||(o[3]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])):s("",!0),a(r,{title:"Firmware Version","not-selected":"Bitte auswählen",required:"",options:[{value:0,text:"EMS älter als 1.23V"},{value:1,text:"EMS 1.23V oder neuer"}],"model-value":e.device.configuration.version,"onUpdate:modelValue":o[4]||(o[4]=n=>e.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const h=v(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/alpha_ess/device.vue"]]);export{h as default}; +import{D as m}from"./HardwareInstallation-727b5962.js";import{_ as v,u as t,l as i,m as f,G as a,E as c,B as b,x as u,z as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceAlphaess",mixins:[m]},_={class:"device-alphaess"};function w(e,o,V,C,B,E){const d=t("openwb-base-heading"),r=t("openwb-base-select-input"),p=t("openwb-base-text-input"),l=t("openwb-base-number-input");return i(),f("div",_,[a(d,null,{default:c(()=>o[5]||(o[5]=[b(" Einstellungen für Alpha ESS ")])),_:1}),a(r,{title:"Ausleseart","not-selected":"Bitte auswählen",required:"",options:[{value:0,text:"Alpha ESS-Kit"},{value:1,text:"Hi 5/10"}],"model-value":e.device.configuration.source,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.source"))},null,8,["model-value"]),e.device.configuration.source==1?(i(),u(p,{key:0,title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])):s("",!0),e.device.configuration.source==1?(i(),u(l,{key:1,title:"Port",subtype:"host",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])):s("",!0),e.device.configuration.source==1?(i(),u(l,{key:2,title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[3]||(o[3]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])):s("",!0),a(r,{title:"Firmware Version","not-selected":"Bitte auswählen",required:"",options:[{value:0,text:"EMS älter als 1.23V"},{value:1,text:"EMS 1.23V oder neuer"}],"model-value":e.device.configuration.version,"onUpdate:modelValue":o[4]||(o[4]=n=>e.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const h=v(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/alpha_ess/device.vue"]]);export{h as default}; diff --git a/web/settings/assets/device-eb9518f3.js b/web/settings/assets/device-961ae78d.js similarity index 69% rename from web/settings/assets/device-eb9518f3.js rename to web/settings/assets/device-961ae78d.js index e7d6488845..31b045eed1 100644 --- a/web/settings/assets/device-eb9518f3.js +++ b/web/settings/assets/device-961ae78d.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as p,u as s,l as d,m as u,G as n,E as l,y as m}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDiscovergy",mixins:[a]},v={class:"device-discovergy"};function f(o,e,g,_,b,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return d(),u("div",v,[n(r,null,{default:l(()=>e[2]||(e[2]=[m(" Einstellungen für Discovergy ")])),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const q=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/device.vue"]]);export{q as default}; +import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as p,u as s,l as d,m as u,G as n,E as l,B as m}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDiscovergy",mixins:[a]},v={class:"device-discovergy"};function f(o,e,g,_,b,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return d(),u("div",v,[n(r,null,{default:l(()=>e[2]||(e[2]=[m(" Einstellungen für Discovergy ")])),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const q=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-4e960663.js b/web/settings/assets/device-9684db49.js similarity index 69% rename from web/settings/assets/device-4e960663.js rename to web/settings/assets/device-9684db49.js index 553860ebe6..a89c97e241 100644 --- a/web/settings/assets/device-4e960663.js +++ b/web/settings/assets/device-9684db49.js @@ -1 +1 @@ -import{D as m}from"./HardwareInstallation-3a644290.js";import{_ as u,u as s,l as p,m as l,G as t,E as r,y as a}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceLG",mixins:[m]},f={class:"device-lg"};function c(n,e,v,b,_,w){const d=s("openwb-base-heading"),o=s("openwb-base-text-input");return p(),l("div",f,[t(d,null,{default:r(()=>e[2]||(e[2]=[a(" Einstellungen für LG ESS V1.0 ")])),_:1}),t(o,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(o,{title:"Passwort",subtype:"password",required:"","model-value":n.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.password"))},{help:r(()=>e[3]||(e[3]=[a(' Passwort, um sich in den LG ESS V1.0 einzuloggen. Das Passwort ist standardmäßig die Registrierungsnummer, die sich auf einem Aufkleber auf dem PCS (dem Hybridwechselrichter und Batteriemanagementsystem) befindet. Alternativ findet man die Registrierungsnummer in der App unter dem Menüpunkt "Systeminformationen". Mit der Registrierungsnummer kann man sich dann in der Rolle "installer" einloggen. ')])),_:1},8,["model-value"])])}const B=u(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/lg/device.vue"]]);export{B as default}; +import{D as m}from"./HardwareInstallation-727b5962.js";import{_ as u,u as s,l as p,m as l,G as t,E as r,B as a}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceLG",mixins:[m]},f={class:"device-lg"};function c(n,e,v,b,_,w){const d=s("openwb-base-heading"),o=s("openwb-base-text-input");return p(),l("div",f,[t(d,null,{default:r(()=>e[2]||(e[2]=[a(" Einstellungen für LG ESS V1.0 ")])),_:1}),t(o,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(o,{title:"Passwort",subtype:"password",required:"","model-value":n.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.password"))},{help:r(()=>e[3]||(e[3]=[a(' Passwort, um sich in den LG ESS V1.0 einzuloggen. Das Passwort ist standardmäßig die Registrierungsnummer, die sich auf einem Aufkleber auf dem PCS (dem Hybridwechselrichter und Batteriemanagementsystem) befindet. Alternativ findet man die Registrierungsnummer in der App unter dem Menüpunkt "Systeminformationen". Mit der Registrierungsnummer kann man sich dann in der Rolle "installer" einloggen. ')])),_:1},8,["model-value"])])}const h=u(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/lg/device.vue"]]);export{h as default}; diff --git a/web/settings/assets/device-f1c2a7a5.js b/web/settings/assets/device-9a79e89c.js similarity index 69% rename from web/settings/assets/device-f1c2a7a5.js rename to web/settings/assets/device-9a79e89c.js index 00a5c8c2e3..bb0ea46a2c 100644 --- a/web/settings/assets/device-f1c2a7a5.js +++ b/web/settings/assets/device-9a79e89c.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as d,u as n,l as m,m as u,G as i,E as l,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceMTec",mixins:[a]},f={class:"device-mtec"};function b(o,e,v,g,w,x){const s=n("openwb-base-heading"),r=n("openwb-base-text-input"),p=n("openwb-base-number-input");return m(),u("div",f,[i(s,null,{default:l(()=>e[2]||(e[2]=[c("Einstellungen für M-Tec")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const q=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/device.vue"]]);export{q as default}; +import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as d,u as n,l as m,m as u,G as i,E as l,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceMTec",mixins:[a]},f={class:"device-mtec"};function b(o,e,v,g,w,x){const s=n("openwb-base-heading"),r=n("openwb-base-text-input"),p=n("openwb-base-number-input");return m(),u("div",f,[i(s,null,{default:l(()=>e[2]||(e[2]=[c("Einstellungen für M-Tec")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const q=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-3e5adae7.js b/web/settings/assets/device-9eedaff7.js similarity index 62% rename from web/settings/assets/device-3e5adae7.js rename to web/settings/assets/device-9eedaff7.js index 15b507b349..1655be97f2 100644 --- a/web/settings/assets/device-3e5adae7.js +++ b/web/settings/assets/device-9eedaff7.js @@ -1 +1 @@ -import{D as r}from"./HardwareInstallation-3a644290.js";import{_ as a,u as t,l as d,m as u,G as n,E as l,y as m}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceOpenDTU",mixins:[r]},_={class:"device-opendtu"};function f(o,e,v,b,g,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),u("div",_,[n(i,null,{default:l(()=>e[1]||(e[1]=[m("Einstellungen für OpenDTU")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.url"))},null,8,["model-value"])])}const h=a(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/opendtu/opendtu/device.vue"]]);export{h as default}; +import{D as r}from"./HardwareInstallation-727b5962.js";import{_ as a,u as t,l as d,m as u,G as n,E as l,B as m}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceOpenDTU",mixins:[r]},_={class:"device-opendtu"};function f(o,e,v,b,g,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),u("div",_,[n(i,null,{default:l(()=>e[1]||(e[1]=[m("Einstellungen für OpenDTU")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.url"))},null,8,["model-value"])])}const h=a(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/opendtu/opendtu/device.vue"]]);export{h as default}; diff --git a/web/settings/assets/device-4f5bf65a.js b/web/settings/assets/device-aa0e176c.js similarity index 60% rename from web/settings/assets/device-4f5bf65a.js rename to web/settings/assets/device-aa0e176c.js index 32e9131be4..53546357ad 100644 --- a/web/settings/assets/device-4f5bf65a.js +++ b/web/settings/assets/device-aa0e176c.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as d,u as t,l,m as u,G as i,E as m,y as _}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceOpenwbFlex",mixins:[a]},c={class:"device-openwb-flex"};function f(o,e,v,w,g,x){const p=t("openwb-base-heading"),s=t("openwb-base-text-input"),r=t("openwb-base-number-input");return l(),u("div",c,[i(p,null,{default:m(()=>e[2]||(e[2]=[_(" Einstellungen für openWB-Flex ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const F=d(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/device.vue"]]);export{F as default}; +import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as d,u as t,l,m as u,G as i,E as m,B as _}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceOpenwbFlex",mixins:[a]},c={class:"device-openwb-flex"};function f(o,e,v,w,g,x){const p=t("openwb-base-heading"),s=t("openwb-base-text-input"),r=t("openwb-base-number-input");return l(),u("div",c,[i(p,null,{default:m(()=>e[2]||(e[2]=[_(" Einstellungen für openWB-Flex ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const N=d(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/device.vue"]]);export{N as default}; diff --git a/web/settings/assets/device-249da548.js b/web/settings/assets/device-b9b6be03.js similarity index 50% rename from web/settings/assets/device-249da548.js rename to web/settings/assets/device-b9b6be03.js index d2f4e9fb54..a7b6aec568 100644 --- a/web/settings/assets/device-249da548.js +++ b/web/settings/assets/device-b9b6be03.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as p,u as o,l as d,m,G as n,E as l,y as u}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceBatterX",mixins:[a]},_={class:"device-batterx"};function f(t,e,b,v,x,g){const i=o("openwb-base-heading"),s=o("openwb-base-text-input");return d(),m("div",_,[n(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für BatterX ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/batterx/device.vue"]]);export{y as default}; +import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as p,u as o,l as d,m,G as n,E as l,B as u}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceBatterX",mixins:[a]},_={class:"device-batterx"};function f(t,e,b,v,x,g){const i=o("openwb-base-heading"),s=o("openwb-base-text-input");return d(),m("div",_,[n(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für BatterX ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const N=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/batterx/device.vue"]]);export{N as default}; diff --git a/web/settings/assets/device-ae68eae2.js b/web/settings/assets/device-cc6d1d33.js similarity index 86% rename from web/settings/assets/device-ae68eae2.js rename to web/settings/assets/device-cc6d1d33.js index 1495d2b526..41eb4bd457 100644 --- a/web/settings/assets/device-ae68eae2.js +++ b/web/settings/assets/device-cc6d1d33.js @@ -1 +1 @@ -import{D as m}from"./HardwareInstallation-3a644290.js";import{_ as v,u as t,l as b,m as f,G as i,E as r,y as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceGoodWe",mixins:[m]},w={class:"device-goodwe"};function _(o,e,W,c,D,V){const l=t("openwb-base-heading"),a=t("openwb-base-alert"),p=t("openwb-base-text-input"),d=t("openwb-base-number-input"),u=t("openwb-base-select-input");return b(),f("div",w,[i(l,null,{default:r(()=>e[5]||(e[5]=[s("Einstellungen für GoodWe")])),_:1}),i(a,{subtype:"info"},{default:r(()=>e[6]||(e[6]=[s(" GoodWe-Wechselrichter verfügen über 3 Dongle: Den WiFi-Dongle, das Wifi-Lan-Kit und das Wifi-Lan-Kit 2.0. Die Einbindung über dieses Modul ist nur mit den Wifi-Lan-Kits möglich. Welches Kit benötigt wird ist vom Wechselrichter abhängig und kann bei GoodWe erfragt werden. ")])),_:1}),i(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(d,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(d,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(u,{title:"API-Version","not-selected":"Bitte auswählen",options:[{value:"v_1_7",text:"v1.7"},{value:"v_1_1",text:"v1.0/ v1.1"}],"model-value":o.device.configuration.version,required:"","onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.version"))},{help:r(()=>e[7]||(e[7]=[s(" Die Wahl der API-Version beeinflusst die Auslesung der Speicherleistung und der Import/ Export Werte des Zählers. ")])),_:1},8,["model-value"]),i(u,{title:"Firmware","not-selected":"Bitte auswählen",options:[{value:8,text:"ARM < 9.0"},{value:9,text:"ARM ab 9.0"}],"model-value":o.device.configuration.firmware,required:"","onUpdate:modelValue":e[4]||(e[4]=n=>o.updateConfiguration(n,"configuration.firmware"))},{help:r(()=>e[8]||(e[8]=[s(" Die Auswahl der Firmware-Version beeinflusst die Auslesung der Wirkleistung und der Phasenströme des Zählers. ")])),_:1},8,["model-value"])])}const M=v(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/good_we/device.vue"]]);export{M as default}; +import{D as m}from"./HardwareInstallation-727b5962.js";import{_ as v,u as t,l as b,m as f,G as i,E as r,B as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceGoodWe",mixins:[m]},w={class:"device-goodwe"};function _(o,e,W,c,D,V){const l=t("openwb-base-heading"),a=t("openwb-base-alert"),p=t("openwb-base-text-input"),d=t("openwb-base-number-input"),u=t("openwb-base-select-input");return b(),f("div",w,[i(l,null,{default:r(()=>e[5]||(e[5]=[s("Einstellungen für GoodWe")])),_:1}),i(a,{subtype:"info"},{default:r(()=>e[6]||(e[6]=[s(" GoodWe-Wechselrichter verfügen über 3 Dongle: Den WiFi-Dongle, das Wifi-Lan-Kit und das Wifi-Lan-Kit 2.0. Die Einbindung über dieses Modul ist nur mit den Wifi-Lan-Kits möglich. Welches Kit benötigt wird ist vom Wechselrichter abhängig und kann bei GoodWe erfragt werden. ")])),_:1}),i(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(d,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(d,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(u,{title:"API-Version","not-selected":"Bitte auswählen",options:[{value:"v_1_7",text:"v1.7"},{value:"v_1_1",text:"v1.0/ v1.1"}],"model-value":o.device.configuration.version,required:"","onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.version"))},{help:r(()=>e[7]||(e[7]=[s(" Die Wahl der API-Version beeinflusst die Auslesung der Speicherleistung und der Import/ Export Werte des Zählers. ")])),_:1},8,["model-value"]),i(u,{title:"Firmware","not-selected":"Bitte auswählen",options:[{value:8,text:"ARM < 9.0"},{value:9,text:"ARM ab 9.0"}],"model-value":o.device.configuration.firmware,required:"","onUpdate:modelValue":e[4]||(e[4]=n=>o.updateConfiguration(n,"configuration.firmware"))},{help:r(()=>e[8]||(e[8]=[s(" Die Auswahl der Firmware-Version beeinflusst die Auslesung der Wirkleistung und der Phasenströme des Zählers. ")])),_:1},8,["model-value"])])}const M=v(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/good_we/device.vue"]]);export{M as default}; diff --git a/web/settings/assets/device-b21c21f9.js b/web/settings/assets/device-d1bfd3f3.js similarity index 80% rename from web/settings/assets/device-b21c21f9.js rename to web/settings/assets/device-d1bfd3f3.js index 49a58befd5..9deea1557b 100644 --- a/web/settings/assets/device-b21c21f9.js +++ b/web/settings/assets/device-d1bfd3f3.js @@ -1 +1 @@ -import{D as p}from"./HardwareInstallation-3a644290.js";import{_ as m,u as i,l as g,m as b,G as t,E as r,y as a}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSolax",mixins:[p]},v={class:"device-solax"};function c(n,e,_,w,x,C){const l=i("openwb-base-heading"),d=i("openwb-base-text-input"),s=i("openwb-base-number-input"),u=i("openwb-base-select-input");return g(),b("div",v,[t(l,null,{default:r(()=>e[4]||(e[4]=[a(" Einstellungen für Solax ")])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",min:1,max:65535,placeholder:502,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},{help:r(()=>e[5]||(e[5]=[a(" Standardmäßig ist der Port 502. Dieser sollte nur geändert werden, wenn der Solax Wechselrichter auf einen anderen Port konfiguriert wurde. ")])),_:1},8,["model-value"]),t(s,{title:"Modbus-ID",required:"",min:0,max:255,"model-value":n.device.configuration.modbus_id,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},{help:r(()=>e[6]||(e[6]=[a(" Laut der Schnittstellenbeschreibung ist die ID bei Solax ab Werk auf 1 gesetzt. Entgegen der Beschreibung ist meist für Gen4 eine ID größer als 2 eingestellt. Bei Gen3 sogar (gegen jeglicher Modbus Standards) eine 0. ")])),_:1},8,["model-value"]),t(u,{title:"Generation","not-selected":"Bitte auswählen",options:[{value:"g2",text:"Gen 2"},{value:"g3",text:"Gen 3"},{value:"g4",text:"Gen 4"}],"model-value":n.device.configuration.version,required:"","onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.version"))},null,8,["model-value"])])}const U=m(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/solax/device.vue"]]);export{U as default}; +import{D as p}from"./HardwareInstallation-727b5962.js";import{_ as m,u as i,l as g,m as b,G as t,E as r,B as a}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSolax",mixins:[p]},v={class:"device-solax"};function c(n,e,_,w,x,B){const l=i("openwb-base-heading"),d=i("openwb-base-text-input"),s=i("openwb-base-number-input"),u=i("openwb-base-select-input");return g(),b("div",v,[t(l,null,{default:r(()=>e[4]||(e[4]=[a(" Einstellungen für Solax ")])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",min:1,max:65535,placeholder:502,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},{help:r(()=>e[5]||(e[5]=[a(" Standardmäßig ist der Port 502. Dieser sollte nur geändert werden, wenn der Solax Wechselrichter auf einen anderen Port konfiguriert wurde. ")])),_:1},8,["model-value"]),t(s,{title:"Modbus-ID",required:"",min:0,max:255,"model-value":n.device.configuration.modbus_id,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},{help:r(()=>e[6]||(e[6]=[a(" Laut der Schnittstellenbeschreibung ist die ID bei Solax ab Werk auf 1 gesetzt. Entgegen der Beschreibung ist meist für Gen4 eine ID größer als 2 eingestellt. Bei Gen3 sogar (gegen jeglicher Modbus Standards) eine 0. ")])),_:1},8,["model-value"]),t(u,{title:"Generation","not-selected":"Bitte auswählen",options:[{value:"g2",text:"Gen 2"},{value:"g3",text:"Gen 3"},{value:"g4",text:"Gen 4"}],"model-value":n.device.configuration.version,required:"","onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.version"))},null,8,["model-value"])])}const U=m(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/solax/device.vue"]]);export{U as default}; diff --git a/web/settings/assets/device-3435a852.js b/web/settings/assets/device-d32f448c.js similarity index 61% rename from web/settings/assets/device-3435a852.js rename to web/settings/assets/device-d32f448c.js index 2416024a87..e5103f93b2 100644 --- a/web/settings/assets/device-3435a852.js +++ b/web/settings/assets/device-d32f448c.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as d,u as t,l as u,m,G as i,E as l,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceVictron",mixins:[a]},v={class:"device-victron"};function f(o,e,b,g,w,x){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),p=t("openwb-base-number-input");return u(),m("div",v,[i(r,null,{default:l(()=>e[2]||(e[2]=[c(" Einstellungen für Victron ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const N=d(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/device.vue"]]);export{N as default}; +import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as d,u as t,l as u,m,G as i,E as l,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceVictron",mixins:[a]},v={class:"device-victron"};function f(o,e,b,g,w,x){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),p=t("openwb-base-number-input");return u(),m("div",v,[i(r,null,{default:l(()=>e[2]||(e[2]=[c(" Einstellungen für Victron ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const P=d(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/device.vue"]]);export{P as default}; diff --git a/web/settings/assets/device-23e00b31.js b/web/settings/assets/device-d74725ec.js similarity index 79% rename from web/settings/assets/device-23e00b31.js rename to web/settings/assets/device-d74725ec.js index 47d3f0de4f..6c8a3e5592 100644 --- a/web/settings/assets/device-23e00b31.js +++ b/web/settings/assets/device-d74725ec.js @@ -1 +1 @@ -import{D as u}from"./HardwareInstallation-3a644290.js";import{_ as m,u as o,l as b,m as c,G as t,E as s,y as r,x as f}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSolarEdge",mixins:[u]},_={class:"device-solaredge"};function v(n,e,w,B,h,S){const a=o("openwb-base-heading"),d=o("openwb-base-alert"),p=o("openwb-base-text-input"),l=o("openwb-base-number-input");return b(),c("div",_,[t(a,null,{default:s(()=>e[2]||(e[2]=[r(" Einstellungen für SolarEdge ")])),_:1}),t(d,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[r(" ModbusTCP muss im Wechselrichter aktiviert werden und der Wechselrichter per LAN angebunden sein."),f("br",null,null,-1),r(" SolarEdge lässt nur eine ModbusTCP-Verbindung zu. Wenn Sie mit einem weiteren SmartHome-System, wie z.B. ioBroker oder openHAB, den SolarEdge-Wechselrichter abfragen, kann dies die Abfrage durch die openWB stören oder verhindern. ")])),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(l,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.port"))},{help:s(()=>e[4]||(e[4]=[r(" Je nach Produktionsdatum und Softwareversion ist 502 oder 1502 ab Werk eingestellt. Bitte im Wechselrichter überprüfen. ")])),_:1},8,["model-value"])])}const $=m(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/device.vue"]]);export{$ as default}; +import{D as u}from"./HardwareInstallation-727b5962.js";import{_ as m,u as o,l as b,m as c,G as t,E as s,B as r,A as f}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSolarEdge",mixins:[u]},_={class:"device-solaredge"};function v(n,e,w,B,h,S){const a=o("openwb-base-heading"),d=o("openwb-base-alert"),p=o("openwb-base-text-input"),l=o("openwb-base-number-input");return b(),c("div",_,[t(a,null,{default:s(()=>e[2]||(e[2]=[r(" Einstellungen für SolarEdge ")])),_:1}),t(d,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[r(" ModbusTCP muss im Wechselrichter aktiviert werden und der Wechselrichter per LAN angebunden sein."),f("br",null,null,-1),r(" SolarEdge lässt nur eine ModbusTCP-Verbindung zu. Wenn Sie mit einem weiteren SmartHome-System, wie z.B. ioBroker oder openHAB, den SolarEdge-Wechselrichter abfragen, kann dies die Abfrage durch die openWB stören oder verhindern. ")])),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(l,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.port"))},{help:s(()=>e[4]||(e[4]=[r(" Je nach Produktionsdatum und Softwareversion ist 502 oder 1502 ab Werk eingestellt. Bitte im Wechselrichter überprüfen. ")])),_:1},8,["model-value"])])}const $=m(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/device.vue"]]);export{$ as default}; diff --git a/web/settings/assets/device-dd9fc66e.js b/web/settings/assets/device-d85f27a1.js similarity index 50% rename from web/settings/assets/device-dd9fc66e.js rename to web/settings/assets/device-d85f27a1.js index bee70768d6..b2025fc486 100644 --- a/web/settings/assets/device-dd9fc66e.js +++ b/web/settings/assets/device-d85f27a1.js @@ -1 +1 @@ -import{D as p}from"./HardwareInstallation-3a644290.js";import{_ as a,u as o,l as d,m as l,G as t,E as m,y as u}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceBenning",mixins:[p]},_={class:"device-benning"};function f(n,e,b,g,v,x){const i=o("openwb-base-heading"),s=o("openwb-base-text-input");return d(),l("div",_,[t(i,null,{default:m(()=>e[1]||(e[1]=[u("Einstellungen für Benning")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=r=>n.updateConfiguration(r,"configuration.url"))},null,8,["model-value"])])}const y=a(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/benning/benning/device.vue"]]);export{y as default}; +import{D as p}from"./HardwareInstallation-727b5962.js";import{_ as a,u as o,l as d,m as l,G as t,E as m,B as u}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceBenning",mixins:[p]},_={class:"device-benning"};function f(n,e,b,g,v,x){const i=o("openwb-base-heading"),s=o("openwb-base-text-input");return d(),l("div",_,[t(i,null,{default:m(()=>e[1]||(e[1]=[u("Einstellungen für Benning")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=r=>n.updateConfiguration(r,"configuration.url"))},null,8,["model-value"])])}const N=a(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/benning/benning/device.vue"]]);export{N as default}; diff --git a/web/settings/assets/device-a319d4b6.js b/web/settings/assets/device-dc895585.js similarity index 88% rename from web/settings/assets/device-a319d4b6.js rename to web/settings/assets/device-dc895585.js index b63087750b..2f27d14921 100644 --- a/web/settings/assets/device-a319d4b6.js +++ b/web/settings/assets/device-dc895585.js @@ -1 +1 @@ -import{D as b}from"./HardwareInstallation-3a644290.js";import{_ as v,u as i,l as s,m as g,G as t,E as a,y as r,z as f,x as w,B as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const S={name:"DeviceSungrow",mixins:[b]},N={class:"device-sungrow"};function _(n,e,D,V,H,h){const d=i("openwb-base-heading"),m=i("openwb-base-alert"),p=i("openwb-base-text-input"),l=i("openwb-base-number-input"),u=i("openwb-base-select-input");return s(),g("div",N,[t(d,null,{default:a(()=>e[5]||(e[5]=[r(" Einstellungen für Sungrow ")])),_:1}),t(m,{subtype:"info"},{default:a(()=>e[6]||(e[6]=[r(" Bitte zur Fehlervermeidung die Firmware des Sungrow Wechselrichters und WiNet-S Dongles aktuell halten. ")])),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(l,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(l,{title:"Modbus ID",required:"","model-value":n.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"]),t(u,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:3,text:"SH (Hybrid) über WiNet-S Dongle"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) über WiNet-S Dongle"}],"model-value":n.device.configuration.version,required:"","onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.version"))},{help:a(()=>e[7]||(e[7]=[r(" Die Variante SH sollte möglichst über den internen LAN-Port genutzt werden (befindet sich am Wechselrichter hinter dem WiNet-S Dongle), da nur hier alle Werte vollständig ausgelesen werden können. Den WiNet-S Dongle zusätzlich ins Heimnetz (per LAN oder WLAN) einbinden, um iSolarCloud nutzen zu können. ")])),_:1},8,["model-value"]),n.device.configuration.version===0?(s(),f(u,{key:0,title:"Firmware",options:[{value:"v1",text:"bis November 2024"},{value:"v2",text:"ab November 2024"}],"model-value":n.device.configuration.firmware,required:"","onUpdate:modelValue":e[4]||(e[4]=o=>n.updateConfiguration(o,"configuration.firmware"))},{help:a(()=>e[8]||(e[8]=[r(' Mit einem Firmwareupdate hat Sungrow ab November 2024 die Auslesung der Speicherleistung verändert. Sollte ab November 2024 selbst oder vom Installateur ein Firmwareupdate gemacht worden sein bitte "ab November 2024" als Firmware wählen. Ohne dieses Update ist "bis November 2024" die richtige Auswahl (Standard).'),w("br",null,null,-1),r(' Für Benutzer mit Installateur-Account: Dies entspricht einer Version des MDSP Moduls größer gleich "SAPPHIRE-H_03011.95.03" ')])),_:1},8,["model-value"])):c("",!0)])}const P=v(S,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/sungrow/device.vue"]]);export{P as default}; +import{D as b}from"./HardwareInstallation-727b5962.js";import{_ as v,u as i,l as s,m as g,G as t,E as a,B as r,x as f,A as w,z as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const S={name:"DeviceSungrow",mixins:[b]},N={class:"device-sungrow"};function _(n,e,D,V,H,h){const d=i("openwb-base-heading"),m=i("openwb-base-alert"),p=i("openwb-base-text-input"),l=i("openwb-base-number-input"),u=i("openwb-base-select-input");return s(),g("div",N,[t(d,null,{default:a(()=>e[5]||(e[5]=[r(" Einstellungen für Sungrow ")])),_:1}),t(m,{subtype:"info"},{default:a(()=>e[6]||(e[6]=[r(" Bitte zur Fehlervermeidung die Firmware des Sungrow Wechselrichters und WiNet-S Dongles aktuell halten. ")])),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(l,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(l,{title:"Modbus ID",required:"","model-value":n.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"]),t(u,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:3,text:"SH (Hybrid) über WiNet-S Dongle"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) über WiNet-S Dongle"}],"model-value":n.device.configuration.version,required:"","onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.version"))},{help:a(()=>e[7]||(e[7]=[r(" Die Variante SH sollte möglichst über den internen LAN-Port genutzt werden (befindet sich am Wechselrichter hinter dem WiNet-S Dongle), da nur hier alle Werte vollständig ausgelesen werden können. Den WiNet-S Dongle zusätzlich ins Heimnetz (per LAN oder WLAN) einbinden, um iSolarCloud nutzen zu können. ")])),_:1},8,["model-value"]),n.device.configuration.version===0?(s(),f(u,{key:0,title:"Firmware",options:[{value:"v1",text:"bis November 2024"},{value:"v2",text:"ab November 2024"}],"model-value":n.device.configuration.firmware,required:"","onUpdate:modelValue":e[4]||(e[4]=o=>n.updateConfiguration(o,"configuration.firmware"))},{help:a(()=>e[8]||(e[8]=[r(' Mit einem Firmwareupdate hat Sungrow ab November 2024 die Auslesung der Speicherleistung verändert. Sollte ab November 2024 selbst oder vom Installateur ein Firmwareupdate gemacht worden sein bitte "ab November 2024" als Firmware wählen. Ohne dieses Update ist "bis November 2024" die richtige Auswahl (Standard).'),w("br",null,null,-1),r(' Für Benutzer mit Installateur-Account: Dies entspricht einer Version des MDSP Moduls größer gleich "SAPPHIRE-H_03011.95.03" ')])),_:1},8,["model-value"])):c("",!0)])}const P=v(S,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/sungrow/device.vue"]]);export{P as default}; diff --git a/web/settings/assets/device-54f1a203.js b/web/settings/assets/device-e3878572.js similarity index 69% rename from web/settings/assets/device-54f1a203.js rename to web/settings/assets/device-e3878572.js index 9dcab53ca5..03ff312683 100644 --- a/web/settings/assets/device-54f1a203.js +++ b/web/settings/assets/device-e3878572.js @@ -1 +1 @@ -import{D as r}from"./HardwareInstallation-3a644290.js";import{_ as p,u as i,l as d,m as u,G as t,E as l,y as m}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunways",mixins:[r]},f={class:"device-sunways"};function v(o,e,w,_,b,g){const a=i("openwb-base-heading"),s=i("openwb-base-text-input");return d(),u("div",f,[t(a,null,{default:l(()=>e[2]||(e[2]=[m(" Einstellungen für Sunways ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},null,8,["model-value"])])}const q=p(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/sunways/device.vue"]]);export{q as default}; +import{D as r}from"./HardwareInstallation-727b5962.js";import{_ as p,u as i,l as d,m as u,G as t,E as l,B as m}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunways",mixins:[r]},f={class:"device-sunways"};function v(o,e,w,_,b,g){const a=i("openwb-base-heading"),s=i("openwb-base-text-input");return d(),u("div",f,[t(a,null,{default:l(()=>e[2]||(e[2]=[m(" Einstellungen für Sunways ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},null,8,["model-value"])])}const q=p(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/sunways/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-906beffa.js b/web/settings/assets/device-e51f6a05.js similarity index 64% rename from web/settings/assets/device-906beffa.js rename to web/settings/assets/device-e51f6a05.js index d00dd2dbcc..af0178f418 100644 --- a/web/settings/assets/device-906beffa.js +++ b/web/settings/assets/device-e51f6a05.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as d,u as t,l as u,m,G as i,E as l,y as g}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSigenergy",mixins:[a]},_={class:"device-sigenergy"};function f(o,e,b,v,w,y){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),p=t("openwb-base-number-input");return u(),m("div",_,[i(r,null,{default:l(()=>e[2]||(e[2]=[g("Einstellungen für Sigenergy")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const N=d(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/device.vue"]]);export{N as default}; +import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as d,u as t,l as u,m,G as i,E as l,B as g}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSigenergy",mixins:[a]},_={class:"device-sigenergy"};function f(o,e,b,v,w,x){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),p=t("openwb-base-number-input");return u(),m("div",_,[i(r,null,{default:l(()=>e[2]||(e[2]=[g("Einstellungen für Sigenergy")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const N=d(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/device.vue"]]);export{N as default}; diff --git a/web/settings/assets/device-dbe167d8.js b/web/settings/assets/device-e6a31e33.js similarity index 73% rename from web/settings/assets/device-dbe167d8.js rename to web/settings/assets/device-e6a31e33.js index 079505ba0b..73f93fc8cd 100644 --- a/web/settings/assets/device-dbe167d8.js +++ b/web/settings/assets/device-e6a31e33.js @@ -1 +1 @@ -import{D as d}from"./HardwareInstallation-3a644290.js";import{_ as u,u as i,l as p,m as l,G as t,E as m,y as f}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceJanitza",mixins:[d]},v={class:"device-janitza"};function _(o,e,c,g,w,C){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",v,[t(r,null,{default:m(()=>e[3]||(e[3]=[f(" Einstellungen für Janitza ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=u(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/janitza/device.vue"]]);export{U as default}; +import{D as d}from"./HardwareInstallation-727b5962.js";import{_ as u,u as i,l as p,m as l,G as t,E as m,B as f}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceJanitza",mixins:[d]},v={class:"device-janitza"};function _(o,e,c,g,w,C){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",v,[t(r,null,{default:m(()=>e[3]||(e[3]=[f(" Einstellungen für Janitza ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=u(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/janitza/device.vue"]]);export{U as default}; diff --git a/web/settings/assets/device-52c218d2.js b/web/settings/assets/device-e6d1ff67.js similarity index 66% rename from web/settings/assets/device-52c218d2.js rename to web/settings/assets/device-e6d1ff67.js index 2c3409999d..d9c6364b51 100644 --- a/web/settings/assets/device-52c218d2.js +++ b/web/settings/assets/device-e6d1ff67.js @@ -1 +1 @@ -import{D as s}from"./HardwareInstallation-3a644290.js";import{_ as u,u as i,l as p,m as l,G as t,E as m,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceE3dc",mixins:[s]},b={class:"device-e3dc"};function v(o,e,_,g,w,C){const a=i("openwb-base-heading"),r=i("openwb-base-text-input"),d=i("openwb-base-number-input");return p(),l("div",b,[t(a,null,{default:m(()=>e[3]||(e[3]=[c(" Einstellungen für E3DC ")])),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(d,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=u(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/e3dc/device.vue"]]);export{y as default}; +import{D as s}from"./HardwareInstallation-727b5962.js";import{_ as u,u as i,l as p,m as l,G as t,E as m,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceE3dc",mixins:[s]},b={class:"device-e3dc"};function v(o,e,_,g,w,C){const a=i("openwb-base-heading"),r=i("openwb-base-text-input"),d=i("openwb-base-number-input");return p(),l("div",b,[t(a,null,{default:m(()=>e[3]||(e[3]=[c(" Einstellungen für E3DC ")])),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(d,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const I=u(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/e3dc/device.vue"]]);export{I as default}; diff --git a/web/settings/assets/device-8c5dabb3.js b/web/settings/assets/device-e7442473.js similarity index 61% rename from web/settings/assets/device-8c5dabb3.js rename to web/settings/assets/device-e7442473.js index b1ab9a2e98..d814693c86 100644 --- a/web/settings/assets/device-8c5dabb3.js +++ b/web/settings/assets/device-e7442473.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as d,u as t,l as u,m,G as i,E as l,y as _}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceFoxEss",mixins:[a]},f={class:"device-fox_ess"};function b(o,e,v,g,x,w){const s=t("openwb-base-heading"),r=t("openwb-base-text-input"),p=t("openwb-base-number-input");return u(),m("div",f,[i(s,null,{default:l(()=>e[2]||(e[2]=[_("Einstellungen für FoxEss")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const F=d(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/device.vue"]]);export{F as default}; +import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as d,u as t,l as u,m,G as i,E as l,B as _}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceFoxEss",mixins:[a]},f={class:"device-fox_ess"};function b(o,e,v,g,x,w){const s=t("openwb-base-heading"),r=t("openwb-base-text-input"),p=t("openwb-base-number-input");return u(),m("div",f,[i(s,null,{default:l(()=>e[2]||(e[2]=[_("Einstellungen für FoxEss")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const N=d(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/device.vue"]]);export{N as default}; diff --git a/web/settings/assets/device-354918a0.js b/web/settings/assets/device-e80c7a1a.js similarity index 69% rename from web/settings/assets/device-354918a0.js rename to web/settings/assets/device-e80c7a1a.js index ea51bcc239..c2bd4d89d8 100644 --- a/web/settings/assets/device-354918a0.js +++ b/web/settings/assets/device-e80c7a1a.js @@ -1 +1 @@ -import{D as l}from"./HardwareInstallation-3a644290.js";import{_ as m,u as t,l as d,m as u,G as i,E as s,y as o,x as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceJson",mixins:[l]},f={class:"device-json"};function b(n,e,v,g,w,x){const r=t("openwb-base-heading"),a=t("openwb-base-text-input");return d(),u("div",f,[i(r,null,{default:s(()=>e[1]||(e[1]=[o(" Einstellungen für JSON ")])),_:1}),i(a,{title:"URL",subtype:"url",required:"","model-value":n.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>n.updateConfiguration(p,"configuration.url"))},{help:s(()=>e[2]||(e[2]=[o(" Es wird eine komplette URL erwartet mit Angaben zum Protokoll, IP oder Hostnamen, optional einem Port und einem Pfad. Die Antwort muss ein json-Objekt sein."),c("br",null,null,-1),o(" Beispiel: http://192.168.1.1:8080/json?data=1 ")])),_:1},8,["model-value"])])}const $=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/device.vue"]]);export{$ as default}; +import{D as l}from"./HardwareInstallation-727b5962.js";import{_ as m,u as t,l as d,m as u,G as i,E as s,B as o,A as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceJson",mixins:[l]},f={class:"device-json"};function b(n,e,v,g,w,x){const r=t("openwb-base-heading"),a=t("openwb-base-text-input");return d(),u("div",f,[i(r,null,{default:s(()=>e[1]||(e[1]=[o(" Einstellungen für JSON ")])),_:1}),i(a,{title:"URL",subtype:"url",required:"","model-value":n.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>n.updateConfiguration(p,"configuration.url"))},{help:s(()=>e[2]||(e[2]=[o(" Es wird eine komplette URL erwartet mit Angaben zum Protokoll, IP oder Hostnamen, optional einem Port und einem Pfad. Die Antwort muss ein json-Objekt sein."),c("br",null,null,-1),o(" Beispiel: http://192.168.1.1:8080/json?data=1 ")])),_:1},8,["model-value"])])}const $=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/device.vue"]]);export{$ as default}; diff --git a/web/settings/assets/device-99900f00.js b/web/settings/assets/device-e89043ef.js similarity index 80% rename from web/settings/assets/device-99900f00.js rename to web/settings/assets/device-e89043ef.js index ac3ec2fde4..3937daafdb 100644 --- a/web/settings/assets/device-99900f00.js +++ b/web/settings/assets/device-e89043ef.js @@ -1 +1 @@ -import{D as m}from"./HardwareInstallation-3a644290.js";import{_ as b,u as o,l as g,m as f,G as t,E as s,y as r,x as v}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceHuawei",mixins:[m]},c={class:"device-huawei"};function _(n,e,h,D,C,H){const a=o("openwb-base-heading"),d=o("openwb-base-alert"),l=o("openwb-base-text-input"),u=o("openwb-base-number-input"),p=o("openwb-base-select-input");return g(),f("div",c,[t(a,null,{default:s(()=>e[4]||(e[4]=[r(" Einstellungen für Huawei ")])),_:1}),t(d,{subtype:"info"},{default:s(()=>e[5]||(e[5]=[r(' Die Antwort der Huawei Wechselrichter benötigt sehr viel Zeit. Es wird empfohlen, dass Regelintervall der openWB auf "sehr langsam" zu stellen. ')])),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(u,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.port"))},null,8,["model-value"]),t(u,{title:"Modbus ID",required:"","model-value":n.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=i=>n.updateConfiguration(i,"configuration.modbus_id"))},{help:s(()=>e[6]||(e[6]=[r(' Sind mehrere Huawei Wechselrichter als "Schwarm" verbunden, dann besitzt der Master vermutlich die ID "16". Über diese ID werden dann alle Daten in Summe zur Verfügung gestellt.'),v("br",null,null,-1),r(" Die IDs 1 bis 15 sind für einzelne Wechselrichter reserviert. ")])),_:1},8,["model-value"]),t(p,{title:"Anbindung","not-selected":"Bitte auswählen",options:[{value:"s_dongle",text:"SDongle"},{value:"modbus_rtu",text:"Modbus RTU (mit Modbus/TCP Adapter)"}],"model-value":n.device.configuration.type,required:"","onUpdate:modelValue":e[3]||(e[3]=i=>n.updateConfiguration(i,"configuration.type"))},{help:s(()=>e[7]||(e[7]=[r(' Die Anbindung über den Huawei SDongle erfordert die Regelgeschwindigkeit "sehr langsam". Alternativ kann Huawei auch mittels Modbus/TCP Adapter (z.B. Protoss oder Elfin) über den Modbus RTU Ausgang des Wechselrichters abgefragt werden. Hier gibt es keine Einschränkungen der Regelgeschwindigkeit. Eine gleichzeitige Nutzung von SDongle und Modbus RTU ist nicht möglich. ')])),_:1},8,["model-value"])])}const R=b(w,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei/device.vue"]]);export{R as default}; +import{D as m}from"./HardwareInstallation-727b5962.js";import{_ as b,u as o,l as g,m as f,G as t,E as s,B as r,A as v}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceHuawei",mixins:[m]},c={class:"device-huawei"};function _(n,e,h,D,C,A){const a=o("openwb-base-heading"),d=o("openwb-base-alert"),l=o("openwb-base-text-input"),u=o("openwb-base-number-input"),p=o("openwb-base-select-input");return g(),f("div",c,[t(a,null,{default:s(()=>e[4]||(e[4]=[r(" Einstellungen für Huawei ")])),_:1}),t(d,{subtype:"info"},{default:s(()=>e[5]||(e[5]=[r(' Die Antwort der Huawei Wechselrichter benötigt sehr viel Zeit. Es wird empfohlen, dass Regelintervall der openWB auf "sehr langsam" zu stellen. ')])),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(u,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.port"))},null,8,["model-value"]),t(u,{title:"Modbus ID",required:"","model-value":n.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=i=>n.updateConfiguration(i,"configuration.modbus_id"))},{help:s(()=>e[6]||(e[6]=[r(' Sind mehrere Huawei Wechselrichter als "Schwarm" verbunden, dann besitzt der Master vermutlich die ID "16". Über diese ID werden dann alle Daten in Summe zur Verfügung gestellt.'),v("br",null,null,-1),r(" Die IDs 1 bis 15 sind für einzelne Wechselrichter reserviert. ")])),_:1},8,["model-value"]),t(p,{title:"Anbindung","not-selected":"Bitte auswählen",options:[{value:"s_dongle",text:"SDongle"},{value:"modbus_rtu",text:"Modbus RTU (mit Modbus/TCP Adapter)"}],"model-value":n.device.configuration.type,required:"","onUpdate:modelValue":e[3]||(e[3]=i=>n.updateConfiguration(i,"configuration.type"))},{help:s(()=>e[7]||(e[7]=[r(' Die Anbindung über den Huawei SDongle erfordert die Regelgeschwindigkeit "sehr langsam". Alternativ kann Huawei auch mittels Modbus/TCP Adapter (z.B. Protoss oder Elfin) über den Modbus RTU Ausgang des Wechselrichters abgefragt werden. Hier gibt es keine Einschränkungen der Regelgeschwindigkeit. Eine gleichzeitige Nutzung von SDongle und Modbus RTU ist nicht möglich. ')])),_:1},8,["model-value"])])}const S=b(w,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei/device.vue"]]);export{S as default}; diff --git a/web/settings/assets/device-7075a0a8.js b/web/settings/assets/device-eaa956ad.js similarity index 50% rename from web/settings/assets/device-7075a0a8.js rename to web/settings/assets/device-eaa956ad.js index ad28d7218f..d81d0cbdf1 100644 --- a/web/settings/assets/device-7075a0a8.js +++ b/web/settings/assets/device-eaa956ad.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as p,u as t,l as m,m as d,G as n,E as l,y as u}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartfox",mixins:[a]},f={class:"device-smartfox"};function _(o,e,v,x,b,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return m(),d("div",f,[n(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für Smartfox ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=p(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/smartfox/device.vue"]]);export{y as default}; +import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as p,u as t,l as m,m as d,G as n,E as l,B as u}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartfox",mixins:[a]},f={class:"device-smartfox"};function _(o,e,v,x,b,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return m(),d("div",f,[n(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für Smartfox ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const N=p(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/smartfox/device.vue"]]);export{N as default}; diff --git a/web/settings/assets/device-d1c48c2c.js b/web/settings/assets/device-ebfe2885.js similarity index 74% rename from web/settings/assets/device-d1c48c2c.js rename to web/settings/assets/device-ebfe2885.js index e799094ff0..c546846513 100644 --- a/web/settings/assets/device-d1c48c2c.js +++ b/web/settings/assets/device-ebfe2885.js @@ -1 +1 @@ -import{D as u}from"./HardwareInstallation-3a644290.js";import{_ as d,u as i,l as p,m as l,G as t,E as m,y as _}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceZCS",mixins:[u]},f={class:"device-azzurro_zcs"};function b(o,e,v,g,z,w){const a=i("openwb-base-heading"),s=i("openwb-base-text-input"),r=i("openwb-base-number-input");return p(),l("div",f,[t(a,null,{default:m(()=>e[3]||(e[3]=[_(" Einstellungen für Azzurro ZCS ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const k=d(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/azzurro_zcs/azzurro_zcs/device.vue"]]);export{k as default}; +import{D as u}from"./HardwareInstallation-727b5962.js";import{_ as d,u as i,l as p,m as l,G as t,E as m,B as _}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceZCS",mixins:[u]},f={class:"device-azzurro_zcs"};function b(o,e,v,g,z,w){const a=i("openwb-base-heading"),s=i("openwb-base-text-input"),r=i("openwb-base-number-input");return p(),l("div",f,[t(a,null,{default:m(()=>e[3]||(e[3]=[_(" Einstellungen für Azzurro ZCS ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const k=d(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/azzurro_zcs/azzurro_zcs/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-1b11a3ea.js b/web/settings/assets/device-ee4fe242.js similarity index 79% rename from web/settings/assets/device-1b11a3ea.js rename to web/settings/assets/device-ee4fe242.js index 16fc8fb3c2..c24515101a 100644 --- a/web/settings/assets/device-1b11a3ea.js +++ b/web/settings/assets/device-ee4fe242.js @@ -1 +1 @@ -import{D as v}from"./HardwareInstallation-3a644290.js";import{_ as m,u as o,l as g,m as _,G as s,E as u,y as i,x as n,F as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const A={name:"DeviceSonnenbatterie",mixins:[v],computed:{linkRestApi1(){return"http://"+this.device.configuration.ip_address+":7979/rest/devices/battery"},linkRestApi2(){return"http://"+this.device.configuration.ip_address+":7979/rest/devices/battery/M05"},linkJsonApi1(){return"http://"+this.device.configuration.ip_address+"/api/v1/status"},linkJsonApi2(){return"http://"+this.device.configuration.ip_address+"/api/v2/status"}}},k={class:"device-sonnenbatterie"},w={style:{display:"block"}},B=["href"],J=["href"],R=["href"],I=["href"];function P(r,e,x,h,C,t){const d=o("openwb-base-heading"),p=o("openwb-base-alert"),f=o("openwb-base-text-input"),b=o("openwb-base-select-input");return g(),_("div",k,[s(d,null,{default:u(()=>e[2]||(e[2]=[i(" Einstellungen für SonnenBatterie ")])),_:1}),s(p,{subtype:"info"},{default:u(()=>e[3]||(e[3]=[i(' Die Leistung steht nur in den Varianten "Rest-API 2" und "JSON-API" zur Verfügung. ')])),_:1}),s(f,{title:"IP oder Hostname",subtype:"host",required:"","model-value":r.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>r.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"]),s(b,{title:"Datenverbindung",required:"","not-selected":"Bitte auswählen",options:[{value:0,text:"Rest-API 1 (z.B. ECO 4)"},{value:2,text:"Rest-API 2 (z.B. ECO 6)"},{value:1,text:"JSON-API v1(z.B. ECO 8 oder 10)"},{value:3,text:"JSON-API v2(z.B. ECO 8 oder 10)"}],"model-value":r.device.configuration.variant,"onUpdate:modelValue":e[1]||(e[1]=a=>r.updateConfiguration(a,"configuration.variant"))},{help:u(()=>[n("span",w,[e[4]||(e[4]=i(" Je nach SonnenBatterie muss die richtige Datenverbindung ausgewählt werden. Folgende URLs werden zum Abruf der Daten genutzt und können auch manuell über einen Browser abgefragt werden, um die richtige Einstellung zu finden:")),e[5]||(e[5]=n("br",null,null,-1)),e[6]||(e[6]=i(" Rest-API 1: ")),n("a",{href:t.linkRestApi1,target:"_blank",rel:"noopener noreferrer"},l(t.linkRestApi1),9,B),e[7]||(e[7]=n("br",null,null,-1)),e[8]||(e[8]=i(" Rest-API 2: ")),n("a",{href:t.linkRestApi2,target:"_blank",rel:"noopener noreferrer"},l(t.linkRestApi2),9,J),e[9]||(e[9]=n("br",null,null,-1)),e[10]||(e[10]=i(" JSON-API v1: ")),n("a",{href:t.linkJsonApi1,target:"_blank",rel:"noopener noreferrer"},l(t.linkJsonApi1),9,R),e[11]||(e[11]=n("br",null,null,-1)),e[12]||(e[12]=i(" JSON-API v2: ")),n("a",{href:t.linkJsonApi2,target:"_blank",rel:"noopener noreferrer"},l(t.linkJsonApi2),9,I)])]),_:1},8,["model-value"])])}const U=m(A,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/device.vue"]]);export{U as default}; +import{D as v}from"./HardwareInstallation-727b5962.js";import{_ as m,u as o,l as g,m as A,G as s,E as u,B as i,A as n,F as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSonnenbatterie",mixins:[v],computed:{linkRestApi1(){return"http://"+this.device.configuration.ip_address+":7979/rest/devices/battery"},linkRestApi2(){return"http://"+this.device.configuration.ip_address+":7979/rest/devices/battery/M05"},linkJsonApi1(){return"http://"+this.device.configuration.ip_address+"/api/v1/status"},linkJsonApi2(){return"http://"+this.device.configuration.ip_address+"/api/v2/status"}}},k={class:"device-sonnenbatterie"},w={style:{display:"block"}},B=["href"],J=["href"],R=["href"],I=["href"];function P(r,e,h,x,C,t){const d=o("openwb-base-heading"),p=o("openwb-base-alert"),f=o("openwb-base-text-input"),b=o("openwb-base-select-input");return g(),A("div",k,[s(d,null,{default:u(()=>e[2]||(e[2]=[i(" Einstellungen für SonnenBatterie ")])),_:1}),s(p,{subtype:"info"},{default:u(()=>e[3]||(e[3]=[i(' Die Leistung steht nur in den Varianten "Rest-API 2" und "JSON-API" zur Verfügung. ')])),_:1}),s(f,{title:"IP oder Hostname",subtype:"host",required:"","model-value":r.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>r.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"]),s(b,{title:"Datenverbindung",required:"","not-selected":"Bitte auswählen",options:[{value:0,text:"Rest-API 1 (z.B. ECO 4)"},{value:2,text:"Rest-API 2 (z.B. ECO 6)"},{value:1,text:"JSON-API v1(z.B. ECO 8 oder 10)"},{value:3,text:"JSON-API v2(z.B. ECO 8 oder 10)"}],"model-value":r.device.configuration.variant,"onUpdate:modelValue":e[1]||(e[1]=a=>r.updateConfiguration(a,"configuration.variant"))},{help:u(()=>[n("span",w,[e[4]||(e[4]=i(" Je nach SonnenBatterie muss die richtige Datenverbindung ausgewählt werden. Folgende URLs werden zum Abruf der Daten genutzt und können auch manuell über einen Browser abgefragt werden, um die richtige Einstellung zu finden:")),e[5]||(e[5]=n("br",null,null,-1)),e[6]||(e[6]=i(" Rest-API 1: ")),n("a",{href:t.linkRestApi1,target:"_blank",rel:"noopener noreferrer"},l(t.linkRestApi1),9,B),e[7]||(e[7]=n("br",null,null,-1)),e[8]||(e[8]=i(" Rest-API 2: ")),n("a",{href:t.linkRestApi2,target:"_blank",rel:"noopener noreferrer"},l(t.linkRestApi2),9,J),e[9]||(e[9]=n("br",null,null,-1)),e[10]||(e[10]=i(" JSON-API v1: ")),n("a",{href:t.linkJsonApi1,target:"_blank",rel:"noopener noreferrer"},l(t.linkJsonApi1),9,R),e[11]||(e[11]=n("br",null,null,-1)),e[12]||(e[12]=i(" JSON-API v2: ")),n("a",{href:t.linkJsonApi2,target:"_blank",rel:"noopener noreferrer"},l(t.linkJsonApi2),9,I)])]),_:1},8,["model-value"])])}const U=m(_,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/device.vue"]]);export{U as default}; diff --git a/web/settings/assets/device-f0eb9f12.js b/web/settings/assets/device-f71805ce.js similarity index 62% rename from web/settings/assets/device-f0eb9f12.js rename to web/settings/assets/device-f71805ce.js index fdc1108317..2cc96fa10e 100644 --- a/web/settings/assets/device-f0eb9f12.js +++ b/web/settings/assets/device-f71805ce.js @@ -1 +1 @@ -import{D as r}from"./HardwareInstallation-3a644290.js";import{_ as a,u as t,l as d,m as l,G as s,E as u,y as m}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceYouless",mixins:[r]},_={class:"device-youless"};function f(o,e,v,b,g,x){const n=t("openwb-base-heading"),i=t("openwb-base-text-input");return d(),l("div",_,[s(n,null,{default:u(()=>e[1]||(e[1]=[m(" Einstellungen für Youless ")])),_:1}),s(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const k=a(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/youless/device.vue"]]);export{k as default}; +import{D as r}from"./HardwareInstallation-727b5962.js";import{_ as a,u as t,l as d,m as l,G as s,E as u,B as m}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceYouless",mixins:[r]},_={class:"device-youless"};function f(o,e,v,b,g,x){const n=t("openwb-base-heading"),i=t("openwb-base-text-input");return d(),l("div",_,[s(n,null,{default:u(()=>e[1]||(e[1]=[m(" Einstellungen für Youless ")])),_:1}),s(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const k=a(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/youless/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-a0c4f59d.js b/web/settings/assets/device-f7b12563.js similarity index 62% rename from web/settings/assets/device-a0c4f59d.js rename to web/settings/assets/device-f7b12563.js index 0482a12dd5..0cf4cdc979 100644 --- a/web/settings/assets/device-a0c4f59d.js +++ b/web/settings/assets/device-f7b12563.js @@ -1 +1 @@ -import{D as p}from"./HardwareInstallation-3a644290.js";import{_ as r,u as t,l as d,m,G as n,E as l,y as u}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmaWebbox",mixins:[p]},_={class:"device-sma-webbox"};function b(o,e,f,v,x,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),m("div",_,[n(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für SMA Webbox ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const k=r(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_webbox/device.vue"]]);export{k as default}; +import{D as p}from"./HardwareInstallation-727b5962.js";import{_ as r,u as t,l as d,m,G as n,E as l,B as u}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmaWebbox",mixins:[p]},_={class:"device-sma-webbox"};function b(o,e,f,v,x,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),m("div",_,[n(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für SMA Webbox ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const k=r(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_webbox/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-f3f81832.js b/web/settings/assets/device-f82ddafe.js similarity index 70% rename from web/settings/assets/device-f3f81832.js rename to web/settings/assets/device-f82ddafe.js index 2c1635b840..0015805b6f 100644 --- a/web/settings/assets/device-f3f81832.js +++ b/web/settings/assets/device-f82ddafe.js @@ -1 +1 @@ -import{D as m}from"./HardwareInstallation-3a644290.js";import{_ as l,u as i,l as b,m as f,G as t,E as r,y as a}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSiemens",mixins:[m]},v={class:"device-siemens"};function c(o,e,g,w,C,x){const p=i("openwb-base-heading"),d=i("openwb-base-alert"),u=i("openwb-base-text-input"),s=i("openwb-base-number-input");return b(),f("div",v,[t(p,null,{default:r(()=>e[3]||(e[3]=[a(" Einstellungen für Siemens ")])),_:1}),t(d,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[a(" Im Siemens-Speicher muss die Schnittstelle openWB gewählt werden. ")])),_:1}),t(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=l(_,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens/device.vue"]]);export{U as default}; +import{D as m}from"./HardwareInstallation-727b5962.js";import{_ as l,u as i,l as b,m as f,G as t,E as r,B as a}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSiemens",mixins:[m]},v={class:"device-siemens"};function c(o,e,g,w,C,x){const p=i("openwb-base-heading"),d=i("openwb-base-alert"),u=i("openwb-base-text-input"),s=i("openwb-base-number-input");return b(),f("div",v,[t(p,null,{default:r(()=>e[3]||(e[3]=[a(" Einstellungen für Siemens ")])),_:1}),t(d,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[a(" Im Siemens-Speicher muss die Schnittstelle openWB gewählt werden. ")])),_:1}),t(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const k=l(_,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-3be14789.js b/web/settings/assets/device-fec30c56.js similarity index 65% rename from web/settings/assets/device-3be14789.js rename to web/settings/assets/device-fec30c56.js index 4c3d26896b..0f5160bd6e 100644 --- a/web/settings/assets/device-3be14789.js +++ b/web/settings/assets/device-fec30c56.js @@ -1 +1 @@ -import{D as r}from"./HardwareInstallation-3a644290.js";import{_ as d,u as i,l as u,m as p,G as t,E as m,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceQCells",mixins:[r]},b={class:"device-qcells"};function v(o,e,_,g,w,C){const l=i("openwb-base-heading"),a=i("openwb-base-text-input"),s=i("openwb-base-number-input");return u(),p("div",b,[t(l,null,{default:m(()=>e[3]||(e[3]=[c(" Einstellungen für QCells ESS ")])),_:1}),t(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=d(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/qcells/device.vue"]]);export{y as default}; +import{D as r}from"./HardwareInstallation-727b5962.js";import{_ as d,u as i,l as u,m as p,G as t,E as m,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceQCells",mixins:[r]},b={class:"device-qcells"};function v(o,e,_,g,w,C){const l=i("openwb-base-heading"),a=i("openwb-base-text-input"),s=i("openwb-base-number-input");return u(),p("div",b,[t(l,null,{default:m(()=>e[3]||(e[3]=[c(" Einstellungen für QCells ESS ")])),_:1}),t(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const I=d(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/qcells/device.vue"]]);export{I as default}; diff --git a/web/settings/assets/displayTheme-1e1ee4eb.js b/web/settings/assets/displayTheme-575345bd.js similarity index 77% rename from web/settings/assets/displayTheme-1e1ee4eb.js rename to web/settings/assets/displayTheme-575345bd.js index c5009d5c34..92fc41e294 100644 --- a/web/settings/assets/displayTheme-1e1ee4eb.js +++ b/web/settings/assets/displayTheme-575345bd.js @@ -1 +1 @@ -import{D as d}from"./OptionalComponents-f79f9835.js";import{_ as m,u as n,l as i,m as c,G as p,E as s,y as a,z as b,B as g}from"./vendor-ea36120f.js";import"./index-cc8f65ba.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DisplayThemeColors",mixins:[d]},f={class:"display-theme-colors"};function h(o,e,y,w,k,v){const r=n("openwb-base-heading"),l=n("openwb-base-button-group-input"),u=n("openwb-base-text-input");return i(),c("div",f,[p(r,null,{default:s(()=>e[2]||(e[2]=[a("Bediensperre")])),_:1}),p(l,{title:"Bedienung sperren","model-value":o.displayTheme.configuration.lock_changes,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.lock_changes"))},{help:s(()=>e[3]||(e[3]=[a(' Die Bedienung wird automatisch nach der eingestellten Ausschaltzeit (siehe "Display Standby") wieder gesperrt. ')])),_:1},8,["model-value"]),o.displayTheme.configuration.lock_changes?(i(),b(u,{key:0,title:"PIN zur Freigabe",subtype:"password",required:"",pattern:"[0-9]{4,10}","model-value":o.displayTheme.configuration.lock_changes_code,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.lock_changes_code"))},{help:s(()=>e[4]||(e[4]=[a(" Der PIN muss aus 4 bis 10 Zahlen bestehen. ")])),_:1},8,["model-value"])):g("",!0)])}const A=m(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/colors/displayTheme.vue"]]);export{A as default}; +import{D as d}from"./OptionalComponents-8819b9a1.js";import{_ as m,u as n,l as i,m as c,G as p,E as s,B as a,x as b,z as g}from"./vendor-ad7c30fd.js";import"./index-b236cee5.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DisplayThemeColors",mixins:[d]},f={class:"display-theme-colors"};function h(o,e,y,w,k,v){const r=n("openwb-base-heading"),l=n("openwb-base-button-group-input"),u=n("openwb-base-text-input");return i(),c("div",f,[p(r,null,{default:s(()=>e[2]||(e[2]=[a("Bediensperre")])),_:1}),p(l,{title:"Bedienung sperren","model-value":o.displayTheme.configuration.lock_changes,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.lock_changes"))},{help:s(()=>e[3]||(e[3]=[a(' Die Bedienung wird automatisch nach der eingestellten Ausschaltzeit (siehe "Display Standby") wieder gesperrt. ')])),_:1},8,["model-value"]),o.displayTheme.configuration.lock_changes?(i(),b(u,{key:0,title:"PIN zur Freigabe",subtype:"password",required:"",pattern:"[0-9]{4,10}","model-value":o.displayTheme.configuration.lock_changes_code,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.lock_changes_code"))},{help:s(()=>e[4]||(e[4]=[a(" Der PIN muss aus 4 bis 10 Zahlen bestehen. ")])),_:1},8,["model-value"])):g("",!0)])}const A=m(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/colors/displayTheme.vue"]]);export{A as default}; diff --git a/web/settings/assets/displayTheme-64a8b4a0.js b/web/settings/assets/displayTheme-95f1ddf2.js similarity index 92% rename from web/settings/assets/displayTheme-64a8b4a0.js rename to web/settings/assets/displayTheme-95f1ddf2.js index 2cf3f701ec..631e9b2a35 100644 --- a/web/settings/assets/displayTheme-64a8b4a0.js +++ b/web/settings/assets/displayTheme-95f1ddf2.js @@ -1 +1 @@ -import{D as g}from"./OptionalComponents-f79f9835.js";import{_ as m,u as i,l as d,m as f,G as a,E as l,y as u,z as r,B as b}from"./vendor-ea36120f.js";import"./index-cc8f65ba.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DisplayThemeCards",mixins:[g]},c={class:"display-theme-cards"};function v(n,e,V,h,y,w){const s=i("openwb-base-heading"),o=i("openwb-base-button-group-input"),p=i("openwb-base-text-input");return d(),f("div",c,[a(s,null,{default:l(()=>e[13]||(e[13]=[u("Bediensperre")])),_:1}),a(o,{title:"Bedienung sperren","model-value":n.displayTheme.configuration.lock_changes,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.lock_changes"))},{help:l(()=>e[14]||(e[14]=[u(' Die Bedienung wird automatisch nach der eingestellten Ausschaltzeit (siehe "Display Standby") wieder gesperrt. ')])),_:1},8,["model-value"]),n.displayTheme.configuration.lock_changes?(d(),r(p,{key:0,title:"PIN zur Freigabe",subtype:"password",required:"",pattern:"[0-9]{4,10}","model-value":n.displayTheme.configuration.lock_changes_code,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.lock_changes_code"))},{help:l(()=>e[15]||(e[15]=[u(" Der PIN muss aus 4 bis 10 Zahlen bestehen. ")])),_:1},8,["model-value"])):b("",!0),a(s,null,{default:l(()=>e[16]||(e[16]=[u("Ansichten")])),_:1}),a(o,{title:"Übersicht anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_view"))},null,8,["model-value"]),a(o,{title:"Energiefluss anzeigen","model-value":n.displayTheme.configuration.enable_energy_flow_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateConfiguration(t,"configuration.enable_energy_flow_view"))},null,8,["model-value"]),a(o,{title:"Ladepunkte anzeigen","model-value":n.displayTheme.configuration.enable_charge_points_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateConfiguration(t,"configuration.enable_charge_points_view"))},null,8,["model-value"]),n.displayTheme.configuration.enable_charge_points_view==!0?(d(),r(o,{key:1,title:"Einfache Ansicht der Ladepunkte","model-value":n.displayTheme.configuration.simple_charge_point_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateConfiguration(t,"configuration.simple_charge_point_view"))},null,8,["model-value"])):b("",!0),a(o,{title:"Status anzeigen","model-value":n.displayTheme.configuration.enable_status_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateConfiguration(t,"configuration.enable_status_view"))},null,8,["model-value"]),a(s,null,{help:l(()=>e[17]||(e[17]=[u(' Hier kann festgelegt werden, welche Daten in den Ansichten "Übersicht" und "Energiefluss" angezeigt werden. ')])),default:l(()=>[e[18]||(e[18]=u(" Datenauswahl "))]),_:1}),a(o,{title:"EVU anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_grid,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_grid"))},null,8,["model-value"]),a(o,{title:"Hausverbrauch anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_home_consumption,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_home_consumption"))},null,8,["model-value"]),a(o,{title:"PV anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_inverter_sum,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[9]||(e[9]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_inverter_sum"))},null,8,["model-value"]),a(o,{title:"Batteriespeicher anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_battery_sum,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[10]||(e[10]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_battery_sum"))},null,8,["model-value"]),a(o,{title:"Ladepunkte anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_charge_point_sum,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_charge_point_sum"))},null,8,["model-value"]),a(o,{title:"Fahrzeuge anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_vehicles,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[12]||(e[12]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_vehicles"))},null,8,["model-value"])])}const x=m(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/cards/displayTheme.vue"]]);export{x as default}; +import{D as g}from"./OptionalComponents-8819b9a1.js";import{_ as m,u as i,l as d,m as f,G as a,E as l,B as u,x as r,z as b}from"./vendor-ad7c30fd.js";import"./index-b236cee5.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DisplayThemeCards",mixins:[g]},c={class:"display-theme-cards"};function v(n,e,V,h,y,w){const s=i("openwb-base-heading"),o=i("openwb-base-button-group-input"),p=i("openwb-base-text-input");return d(),f("div",c,[a(s,null,{default:l(()=>e[13]||(e[13]=[u("Bediensperre")])),_:1}),a(o,{title:"Bedienung sperren","model-value":n.displayTheme.configuration.lock_changes,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.lock_changes"))},{help:l(()=>e[14]||(e[14]=[u(' Die Bedienung wird automatisch nach der eingestellten Ausschaltzeit (siehe "Display Standby") wieder gesperrt. ')])),_:1},8,["model-value"]),n.displayTheme.configuration.lock_changes?(d(),r(p,{key:0,title:"PIN zur Freigabe",subtype:"password",required:"",pattern:"[0-9]{4,10}","model-value":n.displayTheme.configuration.lock_changes_code,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.lock_changes_code"))},{help:l(()=>e[15]||(e[15]=[u(" Der PIN muss aus 4 bis 10 Zahlen bestehen. ")])),_:1},8,["model-value"])):b("",!0),a(s,null,{default:l(()=>e[16]||(e[16]=[u("Ansichten")])),_:1}),a(o,{title:"Übersicht anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_view"))},null,8,["model-value"]),a(o,{title:"Energiefluss anzeigen","model-value":n.displayTheme.configuration.enable_energy_flow_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateConfiguration(t,"configuration.enable_energy_flow_view"))},null,8,["model-value"]),a(o,{title:"Ladepunkte anzeigen","model-value":n.displayTheme.configuration.enable_charge_points_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateConfiguration(t,"configuration.enable_charge_points_view"))},null,8,["model-value"]),n.displayTheme.configuration.enable_charge_points_view==!0?(d(),r(o,{key:1,title:"Einfache Ansicht der Ladepunkte","model-value":n.displayTheme.configuration.simple_charge_point_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateConfiguration(t,"configuration.simple_charge_point_view"))},null,8,["model-value"])):b("",!0),a(o,{title:"Status anzeigen","model-value":n.displayTheme.configuration.enable_status_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateConfiguration(t,"configuration.enable_status_view"))},null,8,["model-value"]),a(s,null,{help:l(()=>e[17]||(e[17]=[u(' Hier kann festgelegt werden, welche Daten in den Ansichten "Übersicht" und "Energiefluss" angezeigt werden. ')])),default:l(()=>[e[18]||(e[18]=u(" Datenauswahl "))]),_:1}),a(o,{title:"EVU anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_grid,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_grid"))},null,8,["model-value"]),a(o,{title:"Hausverbrauch anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_home_consumption,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_home_consumption"))},null,8,["model-value"]),a(o,{title:"PV anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_inverter_sum,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[9]||(e[9]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_inverter_sum"))},null,8,["model-value"]),a(o,{title:"Batteriespeicher anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_battery_sum,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[10]||(e[10]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_battery_sum"))},null,8,["model-value"]),a(o,{title:"Ladepunkte anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_charge_point_sum,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_charge_point_sum"))},null,8,["model-value"]),a(o,{title:"Fahrzeuge anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_vehicles,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[12]||(e[12]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_vehicles"))},null,8,["model-value"])])}const E=m(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/cards/displayTheme.vue"]]);export{E as default}; diff --git a/web/settings/assets/electricity_tariff-8330f492.js b/web/settings/assets/electricity_tariff-388476a3.js similarity index 57% rename from web/settings/assets/electricity_tariff-8330f492.js rename to web/settings/assets/electricity_tariff-388476a3.js index af0a2e3726..f5a07e09ee 100644 --- a/web/settings/assets/electricity_tariff-8330f492.js +++ b/web/settings/assets/electricity_tariff-388476a3.js @@ -1 +1 @@ -import{E as o}from"./GeneralChargeConfig-401ab7d4.js";import{_ as a,u as n,l as s,m as c,G as l,E as p,y as f}from"./vendor-ea36120f.js";import"./index-cc8f65ba.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffAwattar",mixins:[o]},u={class:"electricity-tariff-awattar"};function m(t,e,_,w,y,b){const i=n("openwb-base-select-input");return s(),c("div",u,[l(i,{title:"Land","not-selected":"Bitte auswählen",options:[{value:"de",text:"Deutschland"},{value:"at",text:"Österreich"}],"model-value":t.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateConfiguration(r,"configuration.country"))},{help:p(()=>e[1]||(e[1]=[f(" Es werden die abgefragten Börsenpreise verwendet, die aWATTar bereitstellt. aWATTar-Gebühren oder Steuern werden nicht berücksichtigt. ")])),_:1},8,["model-value"])])}const k=a(d,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/awattar/electricity_tariff.vue"]]);export{k as default}; +import{E as o}from"./GeneralChargeConfig-5075da0e.js";import{_ as a,u as n,l as s,m as c,G as l,E as p,B as f}from"./vendor-ad7c30fd.js";import"./index-b236cee5.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffAwattar",mixins:[o]},u={class:"electricity-tariff-awattar"};function m(t,e,_,w,b,v){const i=n("openwb-base-select-input");return s(),c("div",u,[l(i,{title:"Land","not-selected":"Bitte auswählen",options:[{value:"de",text:"Deutschland"},{value:"at",text:"Österreich"}],"model-value":t.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateConfiguration(r,"configuration.country"))},{help:p(()=>e[1]||(e[1]=[f(" Es werden die abgefragten Börsenpreise verwendet, die aWATTar bereitstellt. aWATTar-Gebühren oder Steuern werden nicht berücksichtigt. ")])),_:1},8,["model-value"])])}const k=a(d,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/awattar/electricity_tariff.vue"]]);export{k as default}; diff --git a/web/settings/assets/electricity_tariff-4d29c538.js b/web/settings/assets/electricity_tariff-5562646b.js similarity index 86% rename from web/settings/assets/electricity_tariff-4d29c538.js rename to web/settings/assets/electricity_tariff-5562646b.js index 597cfc39f1..af721bb436 100644 --- a/web/settings/assets/electricity_tariff-4d29c538.js +++ b/web/settings/assets/electricity_tariff-5562646b.js @@ -1 +1 @@ -import{E as m}from"./GeneralChargeConfig-401ab7d4.js";import{_ as g,u as s,l as h,m as _,G as n,E as y,y as l,x as T}from"./vendor-ea36120f.js";import"./index-cc8f65ba.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const k={name:"ElectricityTariffTibber",mixins:[m],data(){return{tibberAPI:"https://api.tibber.com/v1-beta/gql",tibberHomeList:[]}},methods:{async getTibberHomeList(){if(this.electricityTariff.configuration.token===null)return;const i='{ "query": "{viewer {homes{id address{address1 address2 address3 postalCode city country}}}}" }';try{const e=await this.axios.post(this.tibberAPI,i,{headers:{Authorization:"Bearer "+this.electricityTariff.configuration.token,"Content-Type":"application/json"}});this.tibberHomeList=e.data.data.viewer.homes.map(t=>{let r=t.address.address1;return t.address.address2&&(r=r+", "+t.address.address2),t.address.address3&&(r=r+", "+t.address.address3),r=r+`, ${t.address.postalCode} ${t.address.city}, ${t.address.country}`,{value:t.id,text:r}}),this.electricityTariff.configuration.home_id||this.updateConfiguration(this.tibberHomeList[0].value,"configuration.home_id"),this.$root.postClientMessage("Home IDs erfolgreich abgerufen.","success")}catch(e){console.error(e),this.$root.postClientMessage("Beim Abfragen der Tibber API ist ein Fehler aufgetreten!
"+e+"
","danger")}}}},v={class:"electricity-tariff-tibber"};function w(i,e,t,r,u,c){var d;const b=s("openwb-base-alert"),a=s("openwb-base-text-input"),p=s("openwb-base-button-input"),f=s("openwb-base-select-input");return h(),_("div",v,[n(b,{subtype:"info"},{default:y(()=>e[3]||(e[3]=[l(" Ihren persönlichen Tibber-Token erhalten Sie über die "),T("a",{href:"https://developer.tibber.com/explorer",target:"_blank",rel:"noopener noreferrer"}," Tibber-Developer-Seite ",-1),l(" . Behandeln Sie Ihren Token wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Tibber-Account abfragen lassen! Die Home-ID können Sie (wenn bekannt) in das Eingabefeld selbst eintragen oder nach Eingabe Ihres Token durch Klick auf den Button von der openWB ermitteln lassen. Unerlaubte Zeichen werden aus dem Token und der Home-ID automatisch gelöscht. ")])),_:1}),n(a,{ref:"tokenInput",title:"Token",required:"","model-value":i.electricityTariff.configuration.token,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.token"))},null,8,["model-value"]),n(p,{title:"Home-IDs abrufen","button-text":"Jetzt abrufen",subtype:"success",disabled:!((d=i.electricityTariff.configuration.token)!=null&&d.length),onButtonClicked:c.getTibberHomeList},null,8,["disabled","onButtonClicked"]),n(f,{title:"Verfügbare Home-IDs",options:u.tibberHomeList,"model-value":i.electricityTariff.configuration.home_id,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.home_id"))},null,8,["options","model-value"]),n(a,{title:"Home-ID",required:"","model-value":i.electricityTariff.configuration.home_id,"onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.home_id"))},null,8,["model-value"])])}const A=g(k,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/tibber/electricity_tariff.vue"]]);export{A as default}; +import{E as m}from"./GeneralChargeConfig-5075da0e.js";import{_ as g,u as s,l as h,m as _,G as n,E as y,B as l,A as T}from"./vendor-ad7c30fd.js";import"./index-b236cee5.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const k={name:"ElectricityTariffTibber",mixins:[m],data(){return{tibberAPI:"https://api.tibber.com/v1-beta/gql",tibberHomeList:[]}},methods:{async getTibberHomeList(){if(this.electricityTariff.configuration.token===null)return;const i='{ "query": "{viewer {homes{id address{address1 address2 address3 postalCode city country}}}}" }';try{const e=await this.axios.post(this.tibberAPI,i,{headers:{Authorization:"Bearer "+this.electricityTariff.configuration.token,"Content-Type":"application/json"}});this.tibberHomeList=e.data.data.viewer.homes.map(t=>{let r=t.address.address1;return t.address.address2&&(r=r+", "+t.address.address2),t.address.address3&&(r=r+", "+t.address.address3),r=r+`, ${t.address.postalCode} ${t.address.city}, ${t.address.country}`,{value:t.id,text:r}}),this.electricityTariff.configuration.home_id||this.updateConfiguration(this.tibberHomeList[0].value,"configuration.home_id"),this.$root.postClientMessage("Home IDs erfolgreich abgerufen.","success")}catch(e){console.error(e),this.$root.postClientMessage("Beim Abfragen der Tibber API ist ein Fehler aufgetreten!
"+e+"
","danger")}}}},v={class:"electricity-tariff-tibber"};function w(i,e,t,r,u,c){var d;const b=s("openwb-base-alert"),a=s("openwb-base-text-input"),p=s("openwb-base-button-input"),f=s("openwb-base-select-input");return h(),_("div",v,[n(b,{subtype:"info"},{default:y(()=>e[3]||(e[3]=[l(" Ihren persönlichen Tibber-Token erhalten Sie über die "),T("a",{href:"https://developer.tibber.com/explorer",target:"_blank",rel:"noopener noreferrer"}," Tibber-Developer-Seite ",-1),l(" . Behandeln Sie Ihren Token wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Tibber-Account abfragen lassen! Die Home-ID können Sie (wenn bekannt) in das Eingabefeld selbst eintragen oder nach Eingabe Ihres Token durch Klick auf den Button von der openWB ermitteln lassen. Unerlaubte Zeichen werden aus dem Token und der Home-ID automatisch gelöscht. ")])),_:1}),n(a,{ref:"tokenInput",title:"Token",required:"","model-value":i.electricityTariff.configuration.token,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.token"))},null,8,["model-value"]),n(p,{title:"Home-IDs abrufen","button-text":"Jetzt abrufen",subtype:"success",disabled:!((d=i.electricityTariff.configuration.token)!=null&&d.length),onButtonClicked:c.getTibberHomeList},null,8,["disabled","onButtonClicked"]),n(f,{title:"Verfügbare Home-IDs",options:u.tibberHomeList,"model-value":i.electricityTariff.configuration.home_id,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.home_id"))},null,8,["options","model-value"]),n(a,{title:"Home-ID",required:"","model-value":i.electricityTariff.configuration.home_id,"onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.home_id"))},null,8,["model-value"])])}const $=g(k,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/tibber/electricity_tariff.vue"]]);export{$ as default}; diff --git a/web/settings/assets/electricity_tariff-0d285d7d.js b/web/settings/assets/electricity_tariff-5e7da4e9.js similarity index 70% rename from web/settings/assets/electricity_tariff-0d285d7d.js rename to web/settings/assets/electricity_tariff-5e7da4e9.js index 27036a111a..08764d65b9 100644 --- a/web/settings/assets/electricity_tariff-0d285d7d.js +++ b/web/settings/assets/electricity_tariff-5e7da4e9.js @@ -1 +1 @@ -import{E as s}from"./GeneralChargeConfig-401ab7d4.js";import{_ as l,u as r,l as c,m as p,G as n,E as u,y as f}from"./vendor-ea36120f.js";import"./index-cc8f65ba.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffRabot",mixins:[s]},m={class:"electricity-tariff-rabot"};function _(t,e,b,y,g,v){const a=r("openwb-base-alert"),o=r("openwb-base-text-input");return c(),p("div",m,[n(a,{subtype:"info"},{default:u(()=>e[2]||(e[2]=[f(" Ihre persönlichen Zugangsdaten (Client-ID und Client-Secret) erhalten Sie direkt von Rabot. Behandeln Sie diese Daten wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Rabot-Account abfragen lassen! ")])),_:1}),n(o,{title:"Client-ID",subtype:"user",required:"","model-value":t.electricityTariff.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.client_id"))},null,8,["model-value"]),n(o,{title:"Client-Secret",subtype:"password",required:"","model-value":t.electricityTariff.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.client_secret"))},null,8,["model-value"])])}const S=l(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/rabot/electricity_tariff.vue"]]);export{S as default}; +import{E as s}from"./GeneralChargeConfig-5075da0e.js";import{_ as l,u as r,l as c,m as p,G as n,E as u,B as f}from"./vendor-ad7c30fd.js";import"./index-b236cee5.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffRabot",mixins:[s]},m={class:"electricity-tariff-rabot"};function _(t,e,b,g,y,v){const a=r("openwb-base-alert"),o=r("openwb-base-text-input");return c(),p("div",m,[n(a,{subtype:"info"},{default:u(()=>e[2]||(e[2]=[f(" Ihre persönlichen Zugangsdaten (Client-ID und Client-Secret) erhalten Sie direkt von Rabot. Behandeln Sie diese Daten wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Rabot-Account abfragen lassen! ")])),_:1}),n(o,{title:"Client-ID",subtype:"user",required:"","model-value":t.electricityTariff.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.client_id"))},null,8,["model-value"]),n(o,{title:"Client-Secret",subtype:"password",required:"","model-value":t.electricityTariff.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.client_secret"))},null,8,["model-value"])])}const S=l(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/rabot/electricity_tariff.vue"]]);export{S as default}; diff --git a/web/settings/assets/electricity_tariff-0c46c1ec.js b/web/settings/assets/electricity_tariff-6bcc7f9b.js similarity index 66% rename from web/settings/assets/electricity_tariff-0c46c1ec.js rename to web/settings/assets/electricity_tariff-6bcc7f9b.js index c4ca3b2818..b3bfe7633f 100644 --- a/web/settings/assets/electricity_tariff-0c46c1ec.js +++ b/web/settings/assets/electricity_tariff-6bcc7f9b.js @@ -1 +1 @@ -import{E as l}from"./GeneralChargeConfig-401ab7d4.js";import{_ as s,u as r,l as c,m as p,G as o,E as u,y as f}from"./vendor-ea36120f.js";import"./index-cc8f65ba.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffVoltego",mixins:[l]},m={class:"electricity-tariff-voltego"};function _(t,e,g,b,y,v){const a=r("openwb-base-alert"),n=r("openwb-base-text-input");return c(),p("div",m,[o(a,{subtype:"info"},{default:u(()=>e[2]||(e[2]=[f(" Ihre persönlichen Zugangsdaten (Client-ID und Client-Secret) erhalten Sie direkt von Voltego. Behandeln Sie diese Daten wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Voltego-Account abfragen lassen! ")])),_:1}),o(n,{title:"Client-ID",subtype:"user",required:"","model-value":t.electricityTariff.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.client_id"))},null,8,["model-value"]),o(n,{title:"Client-Secret",subtype:"password",required:"","model-value":t.electricityTariff.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.client_secret"))},null,8,["model-value"])])}const I=s(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/voltego/electricity_tariff.vue"]]);export{I as default}; +import{E as l}from"./GeneralChargeConfig-5075da0e.js";import{_ as s,u as r,l as c,m as p,G as o,E as u,B as f}from"./vendor-ad7c30fd.js";import"./index-b236cee5.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffVoltego",mixins:[l]},m={class:"electricity-tariff-voltego"};function _(t,e,g,b,v,y){const a=r("openwb-base-alert"),n=r("openwb-base-text-input");return c(),p("div",m,[o(a,{subtype:"info"},{default:u(()=>e[2]||(e[2]=[f(" Ihre persönlichen Zugangsdaten (Client-ID und Client-Secret) erhalten Sie direkt von Voltego. Behandeln Sie diese Daten wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Voltego-Account abfragen lassen! ")])),_:1}),o(n,{title:"Client-ID",subtype:"user",required:"","model-value":t.electricityTariff.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.client_id"))},null,8,["model-value"]),o(n,{title:"Client-Secret",subtype:"password",required:"","model-value":t.electricityTariff.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.client_secret"))},null,8,["model-value"])])}const I=s(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/voltego/electricity_tariff.vue"]]);export{I as default}; diff --git a/web/settings/assets/electricity_tariff-a0cf3a14.js b/web/settings/assets/electricity_tariff-91c588df.js similarity index 74% rename from web/settings/assets/electricity_tariff-a0cf3a14.js rename to web/settings/assets/electricity_tariff-91c588df.js index 94b6cab18b..c7d306cc70 100644 --- a/web/settings/assets/electricity_tariff-a0cf3a14.js +++ b/web/settings/assets/electricity_tariff-91c588df.js @@ -1 +1 @@ -import{E as c}from"./GeneralChargeConfig-401ab7d4.js";import{_ as p,u as r,l as d,m as f,G as i,E as o,y as s,x as m}from"./vendor-ea36120f.js";import"./index-cc8f65ba.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const g={name:"ElectricityTariffEnergyCharts",mixins:[c]},h={class:"electricity-tariff-energy-charts"};function b(t,e,y,_,w,v){const a=r("openwb-base-alert"),l=r("openwb-base-select-input"),u=r("openwb-base-number-input");return d(),f("div",h,[i(a,{subtype:"info"},{default:o(()=>e[2]||(e[2]=[s(" Börsenstrompreise von Energy Charts (energy-charts.info)"),m("br",null,null,-1),s(" Die Rohdaten werden von Wissenschaftlern des Fraunhofer-Instituts für Solare Energiesysteme ISE aus zahlreichen Quellen stündlich oder täglich abgerufen und für die Darstellung aufbereitet. ")])),_:1}),i(l,{title:"Land","not-selected":"Bitte auswählen",options:[{value:"DE-LU",text:"Deutschland"},{value:"AT",text:"Österreich"},{value:"CH",text:"Schweiz"}],"model-value":t.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateConfiguration(n,"configuration.country"))},null,8,["model-value"]),i(u,{title:"Aufschlag zum Börsenstrompreis",min:0,step:.001,precision:3,required:"",unit:"ct/kWh","model-value":t.electricityTariff.configuration.surcharge,"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateConfiguration(parseFloat(n.toFixed(3)),"configuration.surcharge"))},{help:o(()=>e[3]||(e[3]=[s(" Die Auswahl (Energy-Charts) kann für alle Stromanbieter ausgewählt werden, die die Börsenstrompreise in einem variablen/dynamischen Tarif an die Kunden weitergeben. Das Modul soll es ermöglichen, dass zu tagesaktuellen Strompreisen unter Berücksichtigung eines Aufschlags zu günstigen Zeiten automatisch geladen werden kann und somit die Preisschwankungen an der Börse optimal ausgenutzt werden. ")])),_:1},8,["model-value"])])}const V=p(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/energycharts/electricity_tariff.vue"]]);export{V as default}; +import{E as c}from"./GeneralChargeConfig-5075da0e.js";import{_ as p,u as r,l as d,m as f,G as i,E as o,B as s,A as m}from"./vendor-ad7c30fd.js";import"./index-b236cee5.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const g={name:"ElectricityTariffEnergyCharts",mixins:[c]},h={class:"electricity-tariff-energy-charts"};function b(t,e,_,y,w,v){const a=r("openwb-base-alert"),l=r("openwb-base-select-input"),u=r("openwb-base-number-input");return d(),f("div",h,[i(a,{subtype:"info"},{default:o(()=>e[2]||(e[2]=[s(" Börsenstrompreise von Energy Charts (energy-charts.info)"),m("br",null,null,-1),s(" Die Rohdaten werden von Wissenschaftlern des Fraunhofer-Instituts für Solare Energiesysteme ISE aus zahlreichen Quellen stündlich oder täglich abgerufen und für die Darstellung aufbereitet. ")])),_:1}),i(l,{title:"Land","not-selected":"Bitte auswählen",options:[{value:"DE-LU",text:"Deutschland"},{value:"AT",text:"Österreich"},{value:"CH",text:"Schweiz"}],"model-value":t.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateConfiguration(n,"configuration.country"))},null,8,["model-value"]),i(u,{title:"Aufschlag zum Börsenstrompreis",min:0,step:.001,precision:3,required:"",unit:"ct/kWh","model-value":t.electricityTariff.configuration.surcharge,"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateConfiguration(parseFloat(n.toFixed(3)),"configuration.surcharge"))},{help:o(()=>e[3]||(e[3]=[s(" Die Auswahl (Energy-Charts) kann für alle Stromanbieter ausgewählt werden, die die Börsenstrompreise in einem variablen/dynamischen Tarif an die Kunden weitergeben. Das Modul soll es ermöglichen, dass zu tagesaktuellen Strompreisen unter Berücksichtigung eines Aufschlags zu günstigen Zeiten automatisch geladen werden kann und somit die Preisschwankungen an der Börse optimal ausgenutzt werden. ")])),_:1},8,["model-value"])])}const S=p(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/energycharts/electricity_tariff.vue"]]);export{S as default}; diff --git a/web/settings/assets/external_inverter-19cf6472.js b/web/settings/assets/external_inverter-e76b5192.js similarity index 82% rename from web/settings/assets/external_inverter-19cf6472.js rename to web/settings/assets/external_inverter-e76b5192.js index d5dd36e298..dfbc3bf0b9 100644 --- a/web/settings/assets/external_inverter-19cf6472.js +++ b/web/settings/assets/external_inverter-e76b5192.js @@ -1 +1 @@ -import{C as m}from"./HardwareInstallation-3a644290.js";import{_ as p,u as i,l as g,m as f,G as o,E as r,y as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSolaredgeExternalInverter",mixins:[m]},c={class:"device-solaredge-external-inverter"};function v(n,e,_,w,x,E){const l=i("openwb-base-heading"),u=i("openwb-base-alert"),a=i("openwb-base-number-input"),d=i("openwb-base-select-input");return g(),f("div",c,[o(l,null,{default:r(()=>e[3]||(e[3]=[s(" Einstellungen für SolarEdge externen Wechselrichter ")])),_:1}),o(u,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[s(' Diese Komponente nur konfigurieren, wenn ein weiteres Solaredge SmartMeter verbaut ist, welches z.B. die Leistung einer vorhandenen Bestands-PV-Anlage erfasst. Dieses zusätzliche SmartMeter muss dann als "Zähler 2" / "Position 2" im Wechselrichter-Konfigurationsmenü konfiguriert sein. ')])),_:1}),o(a,{title:"SolarEdge-Geräte-ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),o(a,{title:"SolarEdge-Meter-ID","model-value":n.component.configuration.meter_id,min:"1",max:"255",required:"","onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"]),o(d,{title:"Leistung invertieren","not-selected":"Bitte auswählen",options:[{value:1,text:"nein"},{value:-1,text:"ja"}],"model-value":n.component.configuration.factor,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.factor"))},{help:r(()=>e[5]||(e[5]=[s(" Einige externe SolarEdge Wechselrichter liefern die Leistung mit falschem Vorzeichen. In diesem Fall ist die Leistung zu invertieren. ")])),_:1},8,["model-value"])])}const L=p(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/external_inverter.vue"]]);export{L as default}; +import{C as m}from"./HardwareInstallation-727b5962.js";import{_ as p,u as i,l as g,m as f,G as o,E as r,B as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSolaredgeExternalInverter",mixins:[m]},c={class:"device-solaredge-external-inverter"};function v(n,e,_,w,x,E){const l=i("openwb-base-heading"),u=i("openwb-base-alert"),a=i("openwb-base-number-input"),d=i("openwb-base-select-input");return g(),f("div",c,[o(l,null,{default:r(()=>e[3]||(e[3]=[s(" Einstellungen für SolarEdge externen Wechselrichter ")])),_:1}),o(u,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[s(' Diese Komponente nur konfigurieren, wenn ein weiteres Solaredge SmartMeter verbaut ist, welches z.B. die Leistung einer vorhandenen Bestands-PV-Anlage erfasst. Dieses zusätzliche SmartMeter muss dann als "Zähler 2" / "Position 2" im Wechselrichter-Konfigurationsmenü konfiguriert sein. ')])),_:1}),o(a,{title:"SolarEdge-Geräte-ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),o(a,{title:"SolarEdge-Meter-ID","model-value":n.component.configuration.meter_id,min:"1",max:"255",required:"","onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"]),o(d,{title:"Leistung invertieren","not-selected":"Bitte auswählen",options:[{value:1,text:"nein"},{value:-1,text:"ja"}],"model-value":n.component.configuration.factor,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.factor"))},{help:r(()=>e[5]||(e[5]=[s(" Einige externe SolarEdge Wechselrichter liefern die Leistung mit falschem Vorzeichen. In diesem Fall ist die Leistung zu invertieren. ")])),_:1},8,["model-value"])])}const L=p(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/external_inverter.vue"]]);export{L as default}; diff --git a/web/settings/assets/index-b236cee5.js b/web/settings/assets/index-b236cee5.js new file mode 100644 index 0000000000..5c623f5dcb --- /dev/null +++ b/web/settings/assets/index-b236cee5.js @@ -0,0 +1 @@ +import{_ as y,l as i,m as u,p as g,q as O,u as b,x as h,y as E,z as p,A as a,B as f,D as V,E as c,F as v,G as m,I as B,J as I,K as S,L as ee,M as q,N as T,O as te,P as ne,Q as se,T as H,R as oe,S as N,U as ae,V as ie,W as le,X as re,Y as de,Z as ue,$ as ce}from"./vendor-ad7c30fd.js";import{l as C,f as z,a as U,F as $,b as pe,c as me,d as G,e as fe,g as j,h as _e,i as ge,j as be,k as he,m as ve,n as ye,o as we,p as ke,q as Se,r as Oe,s as Be,t as Ce,u as $e,v as J,w as Ie,x as Te,y as xe,z as Ve,A as K,B as Me,C as Ae,D as qe,E as Pe,G as Ee,H as De,I as Le,J as je,K as Re,L as We,M as Ne}from"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import{p as Fe,a as He}from"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./vendor-jquery-f04b6372.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))d(l);new MutationObserver(l=>{for(const s of l)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&d(o)}).observe(document,{childList:!0,subtree:!0});function n(l){const s={};return l.integrity&&(s.integrity=l.integrity),l.referrerPolicy&&(s.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?s.credentials="include":l.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function d(l){if(l.ep)return;l.ep=!0;const s=n(l);fetch(l.href,s)}})();const ze={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Ue(e,t,n,d,l,s){return i(),u("div",{class:O(["card-text alert","alert-"+n.subtype])},[g(e.$slots,"default",{},void 0,!0)],2)}const Ge=y(ze,[["render",Ue],["__scopeId","data-v-055c15aa"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),Je=Object.freeze(Object.defineProperty({__proto__:null,default:Ge},Symbol.toStringTag,{value:"Module"}));C.add(z,U);const Ke={name:"OpenwbBaseSettingElement",components:{FontAwesomeIcon:$},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},Qe={key:0,class:"col-md-4 col-form-label"},Ze={class:"form-row"},Ye={key:0,class:"form-text alert alert-info my-1 small flex-fill"};function Xe(e,t,n,d,l,s){const o=b("font-awesome-icon");return i(),u("div",{class:O(["form-row",e.$slots.title?"mb-1":"mx-0"])},[e.$slots.title?(i(),u("label",Qe,[g(e.$slots,"title"),e.$slots.help?(i(),h(o,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:O(["clickable ml-1",l.showHelp?"text-info":""]),onClick:E(s.toggleHelp,["stop"])},null,8,["icon","class","onClick"])):p("",!0)])):p("",!0),a("div",{class:O(e.$slots.title?"col-md-8":"col px-0")},[a("div",{class:O({"form-row":e.$slots.title})},[g(e.$slots,"default",{},()=>[t[0]||(t[0]=f("*ELEMENT MISSING*"))])],2),a("div",Ze,[l.showHelp?(i(),u("span",Ye,[g(e.$slots,"help")])):p("",!0)])],2)],2)}const M=y(Ke,[["render",Xe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSettingElement.vue"]]),et=Object.freeze(Object.defineProperty({__proto__:null,default:M},Symbol.toStringTag,{value:"Module"}));C.add(pe,me,G,fe);const tt={name:"OpenwbArrayInput",components:{FontAwesomeIcon:$,OpenwbBaseSettingElement:M},inheritAttrs:!1,props:{title:{type:String,required:!0,default:"#TITLE#"},modelValue:{type:Array,default:()=>[]},noElementsMessage:{type:String,default:()=>"Keine Elemente zugeordnet."}},emits:["update:modelValue"],data(){return{newTag:"",showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},newTagValid:{get(){return this.newTag.length>0&&!this.value.includes(this.newTag)}}},methods:{addTag(){if(this.newTagValid){const e=[...this.value,this.newTag].sort();this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=[...this.value];t.splice(e,1),this.value=t}}},nt={class:"w-100"},st={class:"input-group"},ot={class:"input-group-prepend"},at={class:"input-group-text"},it={class:"input-group-append"},lt={class:"tagList mt-1 w-100"},rt={key:0,class:"noTag"};function dt(e,t,n,d,l,s){const o=b("font-awesome-icon"),_=b("openwb-base-setting-element");return i(),h(_,null,V({title:c(()=>[g(e.$slots,"title",{},()=>[f(v(n.title),1)],!0)]),default:c(()=>[a("div",nt,[a("div",st,[a("div",ot,[a("div",at,[g(e.$slots,"input-prefix",{},()=>[m(o,{"fixed-width":"",icon:["fas","tag"]})],!0)])]),B(a("input",S({ref:"tagInput","onUpdate:modelValue":t[0]||(t[0]=r=>l.newTag=r),type:"text",class:"form-control"},e.$attrs,{onKeyup:t[1]||(t[1]=ee((...r)=>s.addTag&&s.addTag(...r),["enter"]))}),null,16),[[I,l.newTag]]),a("div",it,[a("div",{class:O(["input-group-text",s.newTagValid?"bg-success clickable":"not-clickable"]),onClick:t[2]||(t[2]=(...r)=>s.addTag&&s.addTag(...r))},[g(e.$slots,"input-add",{},()=>[m(o,{"fixed-width":"",icon:["fas","plus"]})],!0)],2)])])]),a("div",lt,[s.value.length==0?(i(),u("span",rt,[m(o,{icon:["fas","info-circle"]}),f(" "+v(n.noElementsMessage),1)])):p("",!0),(i(!0),u(T,null,q(s.value,(r,w)=>(i(),u("span",{key:w,class:"tag"},[g(e.$slots,"element-prefix",{},()=>[m(o,{icon:["fas","tag"]})],!0),f(" "+v(r)+" ",1),m(o,{class:"clickable remove-element",icon:["fas","times-circle"],onClick:x=>s.removeTag(w)},null,8,["onClick"])]))),128))])]),_:2},[e.$slots.help?{name:"help",fn:c(()=>[g(e.$slots,"help",{},void 0,!0)]),key:"0"}:void 0]),1024)}const ut=y(tt,[["render",dt],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),ct=Object.freeze(Object.defineProperty({__proto__:null,default:ut},Symbol.toStringTag,{value:"Module"}));const pt={name:"OpenwbAvatar"},mt={class:"avatar"};function ft(e,t,n,d,l,s){return i(),u("div",mt,[g(e.$slots,"default",{},()=>[t[0]||(t[0]=f("?"))],!0)])}const _t=y(pt,[["render",ft],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),gt=Object.freeze(Object.defineProperty({__proto__:null,default:_t},Symbol.toStringTag,{value:"Module"}));C.add(j);const bt={name:"OpenwbButtonGroupInput",components:{FontAwesomeIcon:$,OpenwbBaseSettingElement:M},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Boolean],default:void 0},buttons:{type:Array,required:!0}},emits:["update:modelValue"],computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}}},ht={class:"btn-group btn-block btn-group-toggle"},vt=["value"];function yt(e,t,n,d,l,s){const o=b("font-awesome-icon"),_=b("openwb-base-setting-element");return i(),h(_,null,V({title:c(()=>[g(e.$slots,"title",{},()=>[f(v(n.title),1)])]),default:c(()=>[a("div",ht,[(i(!0),u(T,null,q(n.buttons,r=>(i(),u("label",{key:r.value,class:O(["btn",[s.value==r.buttonValue?"active":"",r.class?r.class:"btn-outline-info"]])},[B(a("input",S({"onUpdate:modelValue":t[0]||(t[0]=w=>s.value=w),type:"radio",value:r.buttonValue,ref_for:!0},e.$attrs),null,16,vt),[[te,s.value]]),g(e.$slots,"label-"+r.buttonValue,{},()=>[f(v(r.text),1)]),m(o,{"fixed-width":"",icon:["fas","check"],style:ne([s.value==r.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),_:2},[e.$slots.help?{name:"help",fn:c(()=>[g(e.$slots,"help")]),key:"0"}:void 0]),1024)}const wt=y(bt,[["render",yt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),kt=Object.freeze(Object.defineProperty({__proto__:null,default:wt},Symbol.toStringTag,{value:"Module"}));const St={name:"OpenwbClickButton",props:{title:{type:String,required:!1,default:""},tooltip:{type:String,required:!1,default:""}},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}},Ot=["title"];function Bt(e,t,n,d,l,s){return i(),u("button",{type:"button",class:"btn btn-block",title:n.tooltip,onClick:t[0]||(t[0]=E((...o)=>s.click&&s.click(...o),["prevent"]))},[g(e.$slots,"default",{},()=>[f(v(n.title),1)],!0)],8,Ot)}const Q=y(St,[["render",Bt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Ct=Object.freeze(Object.defineProperty({__proto__:null,default:Q},Symbol.toStringTag,{value:"Module"})),$t={name:"OpenwbButtonInput",components:{OpenwbBaseSettingElement:M,OpenwbBaseClickButton:Q},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},buttonText:{type:String,required:!1,default:void 0},disabled:{type:Boolean,default:!1},subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}},emits:["buttonClicked"],methods:{handleClick(e){this.$emit("buttonClicked",e)}}};function It(e,t,n,d,l,s){const o=b("openwb-base-click-button"),_=b("openwb-base-setting-element");return i(),h(_,null,V({title:c(()=>[g(e.$slots,"title",{},()=>[f(v(n.title),1)])]),default:c(()=>[m(o,S({class:(n.disabled?"btn-outline-":"btn-")+n.subtype,disabled:n.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:c(()=>[f(v(n.buttonText),1)]),_:1},16,["class","disabled","onButtonClicked"])]),_:2},[e.$slots.help?{name:"help",fn:c(()=>[g(e.$slots,"help")]),key:"0"}:void 0]),1024)}const Tt=y($t,[["render",It],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),xt=Object.freeze(Object.defineProperty({__proto__:null,default:Tt},Symbol.toStringTag,{value:"Module"}));C.add(_e,ge);const Vt={name:"OpenwbCard",components:{FontAwesomeIcon:$},inheritAttrs:!1,props:{title:{type:String,default:void 0},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink","white"].indexOf(e)!==-1},default:"secondary"},bodyBg:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink","white"].indexOf(e)!==-1},default:"light"},collapsible:{type:Boolean,default:!1},collapsed:{type:Boolean,default:!1}},data(){return{isCollapsed:this.collapsible&&this.collapsed}},methods:{toggleBody(){this.collapsible===!0&&(this.isCollapsed=!this.isCollapsed)}}},Mt={class:"form-group mb-0"},At={class:"form-row vaRow mb-0 py-2"},qt={class:"col"},Pt={class:"card-actions ml-4"},Et={key:0,class:"card-actions mr-4"},Dt={key:2,class:"card-footer"};function Lt(e,t,n,d,l,s){const o=b("font-awesome-icon");return i(),u("div",{class:O(["card","border-"+n.subtype])},[n.title!==void 0||e.$slots.header?(i(),u("div",{key:0,class:O(["card-header py-1","bg-"+n.subtype]),onClick:t[0]||(t[0]=(..._)=>s.toggleBody&&s.toggleBody(..._))},[a("div",Mt,[a("div",At,[a("div",qt,[g(e.$slots,"header",{collapsed:l.isCollapsed},()=>[f(v(n.title),1)])])])]),a("span",Pt,[e.$slots.actions?(i(),u("span",Et,[g(e.$slots,"actions",{collapsed:l.isCollapsed})])):p("",!0),n.collapsible?(i(),h(o,{key:1,"fixed-width":"",icon:l.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):p("",!0)])],2)):p("",!0),l.isCollapsed===!1?(i(),u("div",S({key:1,class:["card-body",[n.title==null&&!e.$slots.header?"border-radius-top-inherit":"",e.$slots.footer?"":"border-radius-bottom-inherit","bg-"+n.bodyBg]]},e.$attrs),[g(e.$slots,"default")],16)):p("",!0),e.$slots.footer&&l.isCollapsed===!1?(i(),u("div",Dt,[g(e.$slots,"footer")])):p("",!0)],2)}const jt=y(Vt,[["render",Lt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Rt=Object.freeze(Object.defineProperty({__proto__:null,default:jt},Symbol.toStringTag,{value:"Module"})),Wt={name:"OpenwbCheckboxInput",components:{OpenwbBaseSettingElement:M},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:Boolean}},emits:["update:modelValue"],computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}}},Nt={class:"col-md-8"};function Ft(e,t,n,d,l,s){const o=b("openwb-base-setting-element");return i(),h(o,null,V({title:c(()=>[g(e.$slots,"title",{},()=>[f(v(n.title),1)])]),default:c(()=>[a("div",Nt,[B(a("input",S({"onUpdate:modelValue":t[0]||(t[0]=_=>s.value=_),class:"form-control",type:"checkbox"},e.$attrs),null,16),[[se,s.value]])])]),_:2},[e.$slots.help?{name:"help",fn:c(()=>[g(e.$slots,"help")]),key:"0"}:void 0]),1024)}const Ht=y(Wt,[["render",Ft],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),zt=Object.freeze(Object.defineProperty({__proto__:null,default:Ht},Symbol.toStringTag,{value:"Module"}));C.add(be,he);const Ut={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:$},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(this.clipboardApiAvailable)navigator.clipboard.writeText(this.$refs["slot-wrapper"].innerText).then(()=>{this.isCopied=!0},()=>{console.error("copy to clipboard failed")});else{if(console.debug("clipboard api not supported/enabled, fallback to selection or text range"),window.getSelection){const e=window.getSelection(),t=document.createRange();t.selectNodeContents(this.$refs["slot-wrapper"]),e.removeAllRanges(),e.addRange(t);return}if(document.body.createTextRange){const e=document.body.createTextRange();e.moveToElementText(this.$refs["slot-wrapper"]),e.select()}else console.warn("could not select text, unsupported browser")}}}},Gt=["title"];function Jt(e,t,n,d,l,s){const o=b("font-awesome-icon");return i(),u("span",{ref:"slot-wrapper",title:n.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(..._)=>s.click&&s.click(..._))},[g(e.$slots,"default",{},void 0,!0),m(o,{"fixed-width":"",icon:l.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Gt)}const Kt=y(Ut,[["render",Jt],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),Qt=Object.freeze(Object.defineProperty({__proto__:null,default:Kt},Symbol.toStringTag,{value:"Module"}));C.add(z,U,j);const Zt={name:"OpenwbHeading",components:{FontAwesomeIcon:$},inheritAttrs:!1,data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},Yt={class:"heading-text"},Xt={key:0,class:"actions"},en={class:""},tn={key:0,class:"form-row alert alert-info small flex-fill"};function nn(e,t,n,d,l,s){const o=b("font-awesome-icon");return i(),u(T,null,[a("div",S({class:"card-text card-text-heading"},e.$attrs),[a("div",Yt,[g(e.$slots,"default",{},void 0,!0),e.$slots.help?(i(),h(o,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:O(["clickable",l.showHelp?"text-info":""]),onClick:E(s.toggleHelp,["stop"])},null,8,["icon","class","onClick"])):p("",!0)]),e.$slots.actions?(i(),u("span",Xt,[g(e.$slots,"actions",{},void 0,!0)])):p("",!0)],16),a("div",en,[l.showHelp?(i(),u("span",tn,[g(e.$slots,"help",{},void 0,!0)])):p("",!0)])],64)}const sn=y(Zt,[["render",nn],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),on=Object.freeze(Object.defineProperty({__proto__:null,default:sn},Symbol.toStringTag,{value:"Module"}));C.add(ve,ye,we,ke);const D={null:{value:null,icon:["fas","question"],iconClass:"text-secondary",title:"Nicht relevant",nextValue:!0},true:{value:!0,icon:["fas","square"],iconClass:"",title:"Geschlossen",nextValue:!1},false:{value:!1,icon:["far","square"],iconClass:"",title:"Offen",nextValue:null}},an={name:"OpenwbIoPattern",components:{FontAwesomeIcon:$},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:Array,required:!1,default:()=>[]}},emits:["update:modelValue"],computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{getIcon(e){return D[e].icon},getIconClass(e){return D[e].iconClass},getTitle(e){return D[e].title},toggleInput(e,t){this.value[e]=D[t].nextValue}}};function ln(e,t,n,d,l,s){const o=b("font-awesome-icon"),_=b("openwb-base-setting-element");return i(),h(_,null,V({title:c(()=>[g(e.$slots,"title",{},()=>[f(v(n.title),1)])]),default:c(()=>[(i(!0),u(T,null,q(s.value,(r,w)=>(i(),u("span",{key:w},[m(o,{title:s.getTitle(r),icon:s.getIcon(r),class:O([s.getIconClass(r),"fa-fw clickable"]),size:"2x",transform:r=="undefined"?"shrink-6":null,mask:r=="undefined"?["fas","square"]:null,onClick:E(x=>s.toggleInput(w,r),["stop","prevent"]),onMousedown:t[0]||(t[0]=E(()=>{},["stop","prevent"])),onMouseup:t[1]||(t[1]=E(()=>{},["stop","prevent"]))},null,8,["title","icon","class","transform","mask","onClick"])]))),128))]),_:2},[e.$slots.help?{name:"help",fn:c(()=>[g(e.$slots,"help")]),key:"0"}:void 0]),1024)}const rn=y(an,[["render",ln],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseIoPattern.vue"]]),dn=Object.freeze(Object.defineProperty({__proto__:null,default:rn},Symbol.toStringTag,{value:"Module"})),un={name:"OpenwbModalDialog",props:{title:{type:String,required:!1,default:""},subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},buttons:{type:Array,default:void 0},footerAlignment:{type:String,validator:function(e){return["around","between","center","end","start"].indexOf(e)!==-1},default:"end"},preventClose:{type:Boolean,default:!1},show:{type:Boolean,default:!1}},emits:["modal-result"],computed:{myButtons(){var e=[];return this.buttons!==void 0&&(e=this.buttons),this.preventClose||e.push({text:"Schließen",event:"close"}),e}},methods:{handleClick(e){e.stopPropagation();let t=e.target.getAttribute("data-event");t===null&&(t="close"),(t!="close"||!this.preventClose)&&this.$emit("modal-result",t)}}},cn={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},pn={class:"modal-content"},mn={class:"modal-title"},fn={class:"modal-body"},_n=["data-event"];function gn(e,t,n,d,l,s){return n.show?(i(),h(H,{key:0,to:"body"},[t[4]||(t[4]=a("div",{class:"modal-backdrop fade show"},null,-1)),a("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...o)=>s.handleClick&&s.handleClick(...o))},[a("div",cn,[a("div",pn,[a("div",{class:O(["modal-header","bg-"+n.subtype])},[a("h4",mn,v(n.title),1),n.preventClose?p("",!0):(i(),u("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...o)=>s.handleClick&&s.handleClick(...o))}," × "))],2),a("div",fn,[g(e.$slots,"default",{},()=>[t[3]||(t[3]=f("# Body #"))])]),s.myButtons.length>0?(i(),u("div",{key:0,class:O(["modal-footer d-flex","justify-content-"+n.footerAlignment])},[(i(!0),u(T,null,q(s.myButtons,o=>(i(),u("button",{key:o.text,type:"button",class:O(["btn",o.subtype?"btn-"+o.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":o.event?o.event:"close",onClick:t[1]||(t[1]=(..._)=>s.handleClick&&s.handleClick(..._))},v(o.text),11,_n))),128))],2)):p("",!0)])])])])):p("",!0)}const bn=y(un,[["render",gn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),hn=Object.freeze(Object.defineProperty({__proto__:null,default:bn},Symbol.toStringTag,{value:"Module"}));C.add(Se);const vn={name:"OpenwbNumberInput",components:{FontAwesomeIcon:$,OpenwbBaseSettingElement:M},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:Number,required:!1,default:void 0},unit:{type:String,required:!1,default:void 0},precision:{type:Number,default:void 0},emptyValue:{type:[Number,null],required:!1,default:null}},emits:["update:modelValue"],computed:{value:{get(){return this.precision!==void 0?parseFloat(Math.round(this.modelValue*Math.pow(10,this.precision))/Math.pow(10,this.precision)):this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}}},yn={class:"input-group"},wn={class:"input-group-prepend"},kn={class:"input-group-text"},Sn={key:0,class:"input-group-append"},On={class:"input-group-text"};function Bn(e,t,n,d,l,s){const o=b("font-awesome-icon"),_=b("openwb-base-setting-element");return i(),h(_,null,V({title:c(()=>[g(e.$slots,"title",{},()=>[f(v(n.title),1)],!0)]),default:c(()=>[a("div",yn,[a("div",wn,[a("div",kn,[m(o,{"fixed-width":"",icon:["fas","calculator"]})])]),B(a("input",S({"onUpdate:modelValue":t[0]||(t[0]=r=>s.value=r),type:"number",class:"form-control"},e.$attrs),null,16),[[I,s.value,void 0,{number:!0}]]),n.unit?(i(),u("div",Sn,[a("div",On,v(n.unit),1)])):p("",!0)])]),_:2},[e.$slots.help?{name:"help",fn:c(()=>[g(e.$slots,"help",{},void 0,!0)]),key:"0"}:void 0]),1024)}const Cn=y(vn,[["render",Bn],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),$n=Object.freeze(Object.defineProperty({__proto__:null,default:Cn},Symbol.toStringTag,{value:"Module"}));C.add(Oe,Be);const In={name:"OpenwbRangeInput",components:{FontAwesomeIcon:$,OpenwbBaseSettingElement:M},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:Number,required:!1,default:void 0},unit:{type:String,required:!1,default:void 0},min:{type:Number,required:!0,default:0},max:{type:Number,required:!0,default:100},step:{type:Number,required:!1,default:1},labels:{type:Array,required:!1,default:void 0}},emits:["update:modelValue"],computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValue[g(e.$slots,"title",{},()=>[f(v(n.title),1)],!0)]),default:c(()=>[a("div",Tn,[a("div",xn,[s.label?(i(),u("label",Vn,v(s.label),1)):p("",!0),a("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[0]||(t[0]=(...r)=>s.decrement&&s.decrement(...r))},[m(o,{icon:["fas","step-backward"]})]),a("div",Mn,[B(a("input",S({"onUpdate:modelValue":t[1]||(t[1]=r=>s.sliderValue=r),type:"range",class:"form-control-range rangeInput",min:n.min,max:n.max,step:n.step},e.$attrs),null,16,An),[[I,s.sliderValue,void 0,{number:!0}]])]),a("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[2]||(t[2]=(...r)=>s.increment&&s.increment(...r))},[m(o,{icon:["fas","step-forward"]})])])])]),_:2},[e.$slots.help?{name:"help",fn:c(()=>[g(e.$slots,"help",{},void 0,!0)]),key:"0"}:void 0]),1024)}const Pn=y(In,[["render",qn],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),En=Object.freeze(Object.defineProperty({__proto__:null,default:Pn},Symbol.toStringTag,{value:"Module"}));C.add(G);const Dn={name:"OpenwbSelectInput",components:{FontAwesomeIcon:$,OpenwbBaseSettingElement:M},inheritAttrs:!1,props:{title:{type:String,required:!1,default:void 0},modelValue:{type:[String,Number,Array,null],required:!1,default:void 0},emptyValue:{type:[String,Number,Array],required:!1,default:void 0},groups:{type:Array,required:!1,default:void 0},options:{type:Array,required:!1,default:void 0},notSelected:{type:String,default:void 0},addButton:{type:Boolean,default:!1}},emits:["update:modelValue","input:add"],computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},addDisabled:{get(){return this.value===void 0}}},methods:{addClicked(){this.addDisabled||this.$emit("input:add")}}},Ln={class:"w-100"},jn={class:"input-group"},Rn={key:0,class:"input-group-prepend"},Wn={class:"input-group-text"},Nn=["value"],Fn=["value"],Hn=["label"],zn=["value"],Un={key:1,class:"input-group-append"};function Gn(e,t,n,d,l,s){const o=b("font-awesome-icon"),_=b("openwb-base-setting-element");return i(),h(_,null,V({default:c(()=>[a("div",Ln,[a("div",jn,[e.$slots.prefix?(i(),u("div",Rn,[a("div",Wn,[g(e.$slots,"prefix")])])):p("",!0),B(a("select",S({"onUpdate:modelValue":t[0]||(t[0]=r=>s.value=r),class:"col form-control"},e.$attrs),[n.notSelected!==void 0?(i(),u("option",{key:0,value:n.emptyValue,disabled:""}," -- "+v(n.notSelected)+" -- ",9,Nn)):p("",!0),(i(!0),u(T,null,q(n.options,r=>(i(),u("option",{key:r.value,value:r.value},v(r.text),9,Fn))),128)),(i(!0),u(T,null,q(n.groups,r=>(i(),u("optgroup",{key:r.label,label:r.label},[(i(!0),u(T,null,q(r.options,w=>(i(),u("option",{key:w.value,value:w.value},v(w.text),9,zn))),128))],8,Hn))),128))],16),[[oe,s.value]]),n.addButton?(i(),u("div",Un,[a("div",{class:O(["input-group-text",s.addDisabled?"not-clickable":"bg-success clickable"]),onClick:t[1]||(t[1]=r=>s.addClicked())},[g(e.$slots,"inputAdd",{},()=>[m(o,{"fixed-width":"",icon:["fas","plus"]})])],2)])):p("",!0)])])]),_:2},[e.$slots.title||n.title?{name:"title",fn:c(()=>[g(e.$slots,"title",{},()=>[f(v(n.title),1)])]),key:"0"}:void 0,e.$slots.help?{name:"help",fn:c(()=>[g(e.$slots,"help")]),key:"1"}:void 0]),1024)}const Jn=y(Dn,[["render",Gn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),Kn=Object.freeze(Object.defineProperty({__proto__:null,default:Jn},Symbol.toStringTag,{value:"Module"}));C.add(j,Ce,$e);const Qn={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:$},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},emits:["reset","defaults","save"],data(){return{showModalReset:!1,showModalDefaults:!1}},computed:{showModalSave(){return this.$store.state.local.savingData}},methods:{showResetModal(){this.showModalReset=!0},handleModalReset(e){this.showModalReset=!1,e=="confirm"&&this.$emit("reset")},showDefaultsModal(){this.showModalDefaults=!0},handleModalDefaults(e){this.showModalDefaults=!1,e=="confirm"&&this.$emit("defaults")},saveSettings(){if(this.formName){if(!document.forms[this.formName].reportValidity()){console.debug("form invalid");return}}else console.debug("no form to validate");this.$emit("save")}}},Zn={class:"row justify-content-center mb-1"},Yn={class:"col-md-4 d-flex py-1 justify-content-center"},Xn={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},es={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function ts(e,t,n,d,l,s){const o=b("openwb-base-modal-dialog"),_=b("font-awesome-icon");return i(),u(T,null,[m(o,{show:s.showModalSave,title:"Speichern",subtype:"success","prevent-close":!0},{default:c(()=>t[3]||(t[3]=[f(" Einstellungen werden gespeichert... ")])),_:1},8,["show"]),m(o,{show:l.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:c(()=>t[4]||(t[4]=[f(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")])),_:1},8,["show","onModalResult"]),m(o,{show:l.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:c(()=>t[5]||(t[5]=[f(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")])),_:1},8,["show","onModalResult"]),a("div",Zn,[a("div",Yn,[a("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...r)=>s.saveSettings&&s.saveSettings(...r))},[t[6]||(t[6]=f(" Speichern ")),m(_,{"fixed-width":"",icon:["fas","check"]})])]),n.hideReset?p("",!0):(i(),u("div",Xn,[a("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...r)=>s.showResetModal&&s.showResetModal(...r))},[t[7]||(t[7]=f(" Änderungen verwerfen ")),m(_,{"fixed-width":"",icon:["fas","undo"]})])])),n.hideDefaults?p("",!0):(i(),u("div",es,[a("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...r)=>s.showDefaultsModal&&s.showDefaultsModal(...r))},[t[8]||(t[8]=f(" Werkseinstellungen ")),m(_,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const ns=y(Qn,[["render",ts],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),ss=Object.freeze(Object.defineProperty({__proto__:null,default:ns},Symbol.toStringTag,{value:"Module"}));C.add(J,Ie,Te,xe,Ve,K,Me,Ae,qe,Pe,Ee,De);const os={name:"OpenwbTextInput",components:{FontAwesomeIcon:$,OpenwbBaseSettingElement:M},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Object],required:!1,default:void 0},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:{type:String,required:!1,default:void 0},unit:{type:String,required:!1,default:void 0},emptyValue:{type:[String,Object,null],required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showPassword:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.warn("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch(t){console.error("parsing JSON failed: "+e,t),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(e=this.emptyValue),this.$emit("update:modelValue",e)}},inputRef(){switch(this.subtype){case"json":return this.$refs.jsonInput;case"password":return this.$refs.passwordInput;case"host":return this.$refs.hostInput;case"email":case"url":return this.$refs.urlInput;case"time":return this.$refs.timeInput;case"date":return this.$refs.dateInput;case"month":return this.$refs.monthInput;case"year":return this.$refs.yearInput}return this.$refs.textInput}},methods:{togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,n=new Date(this.modelValue);switch(this.subtype){case"date":n.setDate(n.getDate()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0")+"-"+String(n.getDate()).padStart(2,"0");break;case"month":n.setMonth(n.getMonth()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0");break;case"year":n.setYear(n.getFullYear()+e),t=String(n.getFullYear());break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}t>this.inputRef.max||t[g(e.$slots,"title",{},()=>[f(v(n.title),1)],!0)]),default:c(()=>[a("div",as,[a("div",is,[a("div",ls,[a("div",rs,[n.subtype=="text"?(i(),h(o,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):p("",!0),n.subtype=="email"?(i(),h(o,{key:1,"fixed-width":"",icon:["fas","envelope"]})):p("",!0),n.subtype=="host"?(i(),h(o,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):p("",!0),n.subtype=="url"?(i(),h(o,{key:3,"fixed-width":"",icon:["fas","globe"]})):p("",!0),n.subtype=="user"?(i(),h(o,{key:4,"fixed-width":"",icon:["fas","user"]})):p("",!0),n.subtype=="json"?(i(),h(o,{key:5,"fixed-width":"",icon:["fas","code"]})):p("",!0),n.subtype=="password"?(i(),h(o,{key:6,"fixed-width":"",icon:l.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):p("",!0),n.subtype=="time"?(i(),h(o,{key:7,"fixed-width":"",icon:["fas","clock"]})):p("",!0),n.subtype=="date"||n.subtype=="month"||n.subtype=="year"?(i(),h(o,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):p("",!0)])]),["text","user"].includes(n.subtype)?B((i(),u("input",S({key:0,ref:"textInput","onUpdate:modelValue":t[0]||(t[0]=r=>s.value=r),type:"text",class:["form-control",{invalid:l.inputInvalid}]},e.$attrs,{pattern:n.pattern}),null,16,ds)),[[I,s.value]]):p("",!0),n.subtype=="json"?B((i(),u("input",S({key:1,ref:"jsonInput","onUpdate:modelValue":t[1]||(t[1]=r=>s.value=r),type:"text",class:"form-control"},e.$attrs,{pattern:n.pattern}),null,16,us)),[[I,s.value]]):p("",!0),n.subtype=="password"?B((i(),u("input",S({key:2,ref:"passwordInput","onUpdate:modelValue":t[2]||(t[2]=r=>s.value=r),type:l.showPassword?"text":"password",class:"form-control"},e.$attrs,{pattern:n.pattern}),null,16,cs)),[[N,s.value]]):p("",!0),n.subtype=="host"?B((i(),u("input",S({key:3,ref:"hostInput","onUpdate:modelValue":t[3]||(t[3]=r=>s.value=r),type:"text",class:"form-control"},e.$attrs),null,16)),[[I,s.value]]):p("",!0),["email","url"].includes(n.subtype)?B((i(),u("input",S({key:4,"onUpdate:modelValue":t[4]||(t[4]=r=>s.value=r),refs:"urlInput",type:n.subtype,class:"form-control"},e.$attrs),null,16,ps)),[[N,s.value]]):p("",!0),n.subtype=="time"?B((i(),u("input",S({key:5,ref:"timeInput","onUpdate:modelValue":t[5]||(t[5]=r=>s.value=r),type:"time",class:"form-control"},e.$attrs),null,16)),[[I,s.value]]):p("",!0),n.subtype=="date"?B((i(),u("input",S({key:6,ref:"dateInput","onUpdate:modelValue":t[6]||(t[6]=r=>s.value=r),type:"date",class:"form-control"},e.$attrs),null,16)),[[I,s.value]]):p("",!0),n.subtype=="month"?B((i(),u("input",S({key:7,ref:"monthInput","onUpdate:modelValue":t[7]||(t[7]=r=>s.value=r),type:"month",class:"form-control"},e.$attrs),null,16)),[[I,s.value]]):p("",!0),n.subtype=="year"?B((i(),u("input",S({key:8,ref:"yearInput","onUpdate:modelValue":t[8]||(t[8]=r=>s.value=r),type:"number",class:"form-control"},e.$attrs),null,16)),[[I,s.value]]):p("",!0),n.unit?(i(),u("div",ms,[a("div",fs,v(n.unit),1)])):p("",!0),n.subtype=="password"?(i(),u("div",{key:10,class:"input-group-append clickable",onClick:t[9]||(t[9]=(...r)=>s.togglePassword&&s.togglePassword(...r))},[a("div",_s,[m(o,{"fixed-width":"",icon:l.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):p("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(i(),u("div",{key:11,class:"input-group-append clickable",onClick:t[10]||(t[10]=r=>s.modify(-1))},t[12]||(t[12]=[a("div",{class:"input-group-text"},"-",-1)]))):p("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(i(),u("div",{key:12,class:"input-group-append clickable",onClick:t[11]||(t[11]=r=>s.modify(1))},t[13]||(t[13]=[a("div",{class:"input-group-text"},"+",-1)]))):p("",!0)])])]),_:2},[e.$slots.help?{name:"help",fn:c(()=>[g(e.$slots,"help",{},void 0,!0)]),key:"0"}:void 0]),1024)}const bs=y(os,[["render",gs],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),hs=Object.freeze(Object.defineProperty({__proto__:null,default:bs},Symbol.toStringTag,{value:"Module"}));C.add(J,K);const vs={name:"OpenwbTextareaInput",components:{OpenwbBaseSettingElement:M,FontAwesomeIcon:$},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Object],required:!1,default:void 0},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid JSON as String"),this.tempValue):JSON.stringify(this.tempValue,void 0,2):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch(t){console.warn("parsing JSON failed: "+e,t),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else this.$emit("update:modelValue",e)}},length:{get(){return this.value!==void 0?this.value.length:0}}}},ys={class:"w-100"},ws={class:"input-group"},ks={class:"input-group-prepend"},Ss={class:"input-group-text"},Os={key:2,class:"input-group-append"},Bs={class:"input-group-text"},Cs={class:"form-text text-muted text-right"};function $s(e,t,n,d,l,s){const o=b("font-awesome-icon"),_=b("openwb-base-setting-element");return i(),h(_,null,V({title:c(()=>[g(e.$slots,"title",{},()=>[f(v(n.title),1)],!0)]),default:c(()=>[a("div",ys,[a("div",ws,[a("div",ks,[a("div",Ss,[n.subtype=="text"?(i(),h(o,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):p("",!0),n.subtype=="json"?(i(),h(o,{key:1,"fixed-width":"",icon:["fas","code"]})):p("",!0)])]),n.subtype==="json"?B((i(),u("textarea",S({key:0,ref:"jsonInput","onUpdate:modelValue":t[0]||(t[0]=r=>s.value=r),class:"form-control"},e.$attrs),null,16)),[[I,s.value,void 0,{lazy:!0}]]):B((i(),u("textarea",S({key:1,"onUpdate:modelValue":t[1]||(t[1]=r=>s.value=r),class:"form-control"},e.$attrs),null,16)),[[I,s.value]]),e.$attrs.maxlength?(i(),u("div",Os,[a("div",Bs,[a("small",Cs,v(s.length)+" / "+v(e.$attrs.maxlength),1)])])):p("",!0)])])]),_:2},[e.$slots.help?{name:"help",fn:c(()=>[g(e.$slots,"help",{},void 0,!0)]),key:"0"}:void 0]),1024)}const Is=y(vs,[["render",$s],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Ts=Object.freeze(Object.defineProperty({__proto__:null,default:Is},Symbol.toStringTag,{value:"Module"}));const xs={name:"OpenwbToast",props:{topic:{type:String,required:!0},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},source:{type:String,required:!0,validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number,required:!0}},emits:["dismiss","hide"],data(){return{handle:void 0,relativeTime:void 0,hidden:!1}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)},methods:{dismiss(){this.$emit("dismiss",{topic:this.topic})},updateRelativeTime(){const e={year:31536e6,month:2628e6,day:864e5,hour:36e5,minute:6e4,second:1e3};var t=new Intl.RelativeTimeFormat("de",{numeric:"auto"});const d=new Date-this.timestamp*1e3;for(var l in e)if(Math.abs(d)>e[l]){this.relativeTime=t.format(Math.round(-d/e[l]),l);break}d>10*1e3&&!this.hidden&&(this.hidden=!0,this.$emit("hide",{topic:this.topic}))}}},Vs={key:0,class:"time-diff"},Ms={class:"toast-body"};function As(e,t,n,d,l,s){return i(),u("div",{class:O(["toast","border-"+n.subtype]),role:"alert"},[a("div",{class:O(["toast-header","bg-"+n.subtype])},[t[2]||(t[2]=a("strong",{class:"pr-2 mr-auto"},"openWB",-1)),n.timestamp?(i(),u("small",Vs,v(l.relativeTime),1)):p("",!0),a("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...o)=>s.dismiss&&s.dismiss(...o))},t[1]||(t[1]=[a("span",{"aria-hidden":"true"},"×",-1)]))],2),a("div",Ms,[g(e.$slots,"default",{},void 0,!0)])],2)}const qs=y(xs,[["render",As],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),Ps=Object.freeze(Object.defineProperty({__proto__:null,default:qs},Symbol.toStringTag,{value:"Module"}));C.add(Le);const Es={name:"OpenwbNavBar",components:{FontAwesomeIcon:$},computed:{nodeEnv(){return"development"}},watch:{$route(){this.$refs.collapsibleNavbar.classList.remove("show"),this.$refs.navbarButton.classList.add("collapsed"),this.$refs.navbarButton.setAttribute("aria-expanded",!1)}}},Ds={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},Ls={ref:"navbarButton",class:"navbar-toggler mr-5",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar"},js={id:"collapsibleNavbar",ref:"collapsibleNavbar",class:"collapse navbar-collapse navbar-nav-scroll"},Rs={class:"navbar-nav"},Ws={class:"nav-item"},Ns={class:"nav-item dropdown nav-separator-after"},Fs={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Hs={class:"nav-item dropdown"},zs={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Us={class:"nav-item dropdown"},Gs={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Js={class:"nav-item dropdown"},Ks={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Qs={class:"nav-item dropdown"},Zs={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Ys={class:"nav-item nav-separator-before"},Xs={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function eo(e,t,n,d,l,s){const o=b("router-link"),_=b("font-awesome-icon");return i(),u("nav",Ds,[t[32]||(t[32]=a("a",{class:"navbar-brand",href:"/openWB/web/"},[a("span",null,"openWB")],-1)),a("button",Ls,t[0]||(t[0]=[a("span",{class:"navbar-toggler-icon"},null,-1)]),512),a("div",js,[a("ul",Rs,[a("li",Ws,[m(o,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:c(()=>t[1]||(t[1]=[f(" Status ")])),_:1})]),a("li",Ns,[t[4]||(t[4]=a("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),a("div",Fs,[m(o,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[2]||(t[2]=[f(" Ladeprotokoll ")])),_:1}),m(o,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[3]||(t[3]=[f(" Diagramme ")])),_:1})])]),a("li",Hs,[t[7]||(t[7]=a("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),a("div",zs,[m(o,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[5]||(t[5]=[f(" Allgemein ")])),_:1}),m(o,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[6]||(t[6]=[f(" Optionale Hardware ")])),_:1})])]),a("li",Us,[t[13]||(t[13]=a("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),a("div",Gs,[m(o,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[8]||(t[8]=[f(" Übergreifendes ")])),_:1}),m(o,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[9]||(t[9]=[f(" Sofortladen ")])),_:1}),m(o,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[10]||(t[10]=[f(" PV-Laden ")])),_:1}),m(o,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[11]||(t[11]=[f(" Zeitladen ")])),_:1}),m(o,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[12]||(t[12]=[f(" Zielladen ")])),_:1})])]),a("li",Js,[t[21]||(t[21]=a("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),a("div",Ks,[m(o,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[14]||(t[14]=[f(" Geräte und Komponenten ")])),_:1}),m(o,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[15]||(t[15]=[f(" Lastmanagement ")])),_:1}),m(o,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[16]||(t[16]=[f(" Ladepunkte ")])),_:1}),m(o,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[17]||(t[17]=[f(" Fahrzeuge ")])),_:1}),m(o,{to:"/IoConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[18]||(t[18]=[f(" Ein-/Ausgänge ")])),_:1}),t[19]||(t[19]=a("div",{class:"dropdown-divider"},null,-1)),t[20]||(t[20]=a("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1))])]),a("li",Qs,[t[30]||(t[30]=a("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),a("div",Zs,[m(o,{to:"/System/InstallAssistant",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[22]||(t[22]=[f(" Einrichtungsassistent ")])),_:1}),m(o,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[23]||(t[23]=[f(" openWB Cloud ")])),_:1}),m(o,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[24]||(t[24]=[f(" MQTT-Brücken ")])),_:1}),m(o,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[25]||(t[25]=[f(" Fehlersuche ")])),_:1}),m(o,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[26]||(t[26]=[f(" Support ")])),_:1}),m(o,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[27]||(t[27]=[f(" Datenverwaltung ")])),_:1}),m(o,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[28]||(t[28]=[f(" System ")])),_:1}),m(o,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[29]||(t[29]=[f(" Rechtliches ")])),_:1})])]),a("li",Ys,[a("a",Xs,[t[31]||(t[31]=f(" Wiki ")),m(_,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const to=y(Es,[["render",eo],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const no={name:"OpenwbPageFooter"},so={id:"footer",class:"footer bg-dark text-light font-small"},oo={class:"container text-center"};function ao(e,t,n,d,l,s){return i(),u("footer",so,[a("div",oo,[a("small",null," Sie befinden sich hier: Einstellungen / "+v(e.$route.meta.heading),1)])])}const io=y(no,[["render",ao],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]),lo={name:"ComponentState",emits:["reset","defaults","save"],data(){return{mqttTopicsToSubscribe:[]}},computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]},statusLevel(){return["success","warning","danger"]},stateIcon:{get(){switch(this.$store.state.mqtt[this.baseTopic+"/get/fault_state"]){case 0:return["fas","check-circle"];case 1:return["fas","exclamation-triangle"];case 2:return["fas","times-circle"];default:return["fas","check-circle"]}}}},mounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doUnsubscribe(this.mqttTopicsToSubscribe)},methods:{updateState(e,t,n=void 0){console.debug("updateState:",e,t,n),this.$store.commit({type:"updateTopic",topic:e,objectPath:n,payload:t})},ac_current2dc_power(e){return parseFloat((e*3*230/1e3).toFixed(0))},dc_power2ac_current(e){return parseFloat((e*1e3/230/3).toFixed(2))},getWildcardIndexList(e,t=!1){let n=e;t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let d=Object.keys(this.$store.state.mqtt).filter(l=>l.match(n));return d.forEach((l,s,o)=>{o[s]=parseInt(l.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),d},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(d=>d.match(n)).reduce((d,l)=>({...d,[l]:this.$store.state.mqtt[l]}),{})},formatDate(e,t={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(e).toLocaleDateString(void 0,t)},formatNumber(e,t=0,n=t,d=1){if(!(e==null||isNaN(e)))return e=e*d,e.toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:n})},formatNumberTopic(e,t=0,n=t,d=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,n,d):"-"},formatPhaseArrayNumberTopic(e,t=0,n=t,d=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(l=>this.formatNumber(l,t,n,d)).join(" / "):"- / - / -"},translateChargeMode(e){switch(e){case"instant_charging":return"Sofort";case"pv_charging":return"PV";case"scheduled_charging":return"Zielladen";case"time_charging":return"Zeitladen";case"standby":return"Standby";case"stop":return"Stop";default:return console.warn("unknown charge mode:",e),e}},getFaultStateSubtype(e){const t=this.$store.state.mqtt[e+"/get/fault_state"];if(t===void 0)return"warning";switch(t){case 0:return"success";case 1:return"warning";case 2:return"danger";default:return"dark"}}}},Z=y(lo,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);C.add(je,Re);const ro={name:"OpenwbPageMessages",components:{FontAwesomeIcon:$,FontAwesomeLayers:We,FontAwesomeLayersText:Ne},mixins:[Z],data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+"],showAllMessages:!1,hiddenMessages:[]}},computed:{alertLevel(){return this.messages.reduce((t,n)=>((t=="light"&&["info","success","warning","danger"].includes(n.type)||t=="info"&&["success","warning","danger"].includes(n.type)||t=="success"&&["warning","danger"].includes(n.type)||t=="warning"&&n.type=="danger")&&(t=n.type),t),"light")},messages(){const e=[];return this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e.sort(this.compareMessagesByTimestamp),e},recentMessages(){return this.showAllMessages?this.messages:this.messages.filter(e=>!this.hiddenMessages.includes(e.topic))},messageIndicatorClass(){return"text-"+this.alertLevel},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[n,d]of Object.entries(e))t.push({topic:n,...d});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[n,d]of Object.entries(e))t.push({topic:n,...d});return t}},methods:{toggleAllMessages(){this.showAllMessages=!this.showAllMessages},compareMessagesByTimestamp(e,t){return t.timestamp-e.timestamp},clearTopic(e){this.$root.doPublish(e,void 0)},dismissMessage(e){this.clearTopic(e.topic);var t=this.hiddenMessages.indexOf(e.topic);t>-1&&this.hiddenMessages.splice(t,1)},dismissAllMessages(){this.messages.forEach(e=>{this.clearTopic(e.topic)}),this.hiddenMessages=[],this.toggleAllMessages()},hideMessage(e){this.hiddenMessages.includes(e.topic)||this.hiddenMessages.push(e.topic)}}},uo=["innerHTML"];function co(e,t,n,d,l,s){const o=b("font-awesome-icon"),_=b("font-awesome-layers-text"),r=b("font-awesome-layers"),w=b("openwb-base-alert"),x=b("openwb-base-click-button"),P=b("openwb-base-toast");return i(),u(T,null,[(i(),h(H,{to:"body"},[a("div",{id:"message-indicator",class:O(["text-light mt-1 p-2 mr-1 clickable",l.showAllMessages?"active":""]),onClick:t[0]||(t[0]=(...A)=>s.toggleAllMessages&&s.toggleAllMessages(...A))},[m(r,{"full-width":"",style:{"font-size":"175%"}},{default:c(()=>[m(o,{"fixed-width":"",icon:l.showAllMessages?["fas","bell"]:["far","bell"],class:O(s.messageIndicatorClass)},null,8,["icon","class"]),s.messages.length>0?(i(),h(_,{key:0,counter:"",value:s.messages.length,position:"top-right",class:"message-counter bg-light text-dark"},null,8,["value"])):p("",!0)]),_:1})],2)])),s.recentMessages.length>0||l.showAllMessages?(i(),u("div",{key:0,class:O(["openwb-toast-container",l.showAllMessages?"full-height":""])},[s.recentMessages.length==0?(i(),h(w,{key:0,subtype:"info"},{default:c(()=>t[1]||(t[1]=[f(" Keine Nachrichten vorhanden. ")])),_:1})):l.showAllMessages?(i(),h(x,{key:1,class:"btn-sm btn-secondary mb-1",onButtonClicked:s.dismissAllMessages},{default:c(()=>t[2]||(t[2]=[f(" Alle Nachrichten löschen ")])),_:1},8,["onButtonClicked"])):p("",!0),(i(!0),u(T,null,q(s.recentMessages,A=>(i(),h(P,{key:A.topic,topic:A.topic,source:A.source,subtype:A.type,timestamp:A.timestamp,onDismiss:s.dismissMessage,onHide:s.hideMessage},{default:c(()=>[a("span",{innerHTML:A.message},null,8,uo)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss","onHide"]))),128))],2)):p("",!0)],64)}const po=y(ro,[["render",co],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),mo={name:"OpenwbPageBlocker",mixins:[Z],data(){return{mqttTopicsToSubscribe:["openWB/system/boot_done","openWB/system/update_in_progress"]}},computed:{title(){return this.bootInProgress||this.updateInProgress?"openWB ist noch nicht bereit":this.reloadRequired?"Neues Laden der Seite erforderlich":"???"},myButtons(){return!(this.bootInProgress||this.updateInProgress)&&this.reloadRequired?[{text:"Jetzt neu laden",subtype:"success",event:"reload"}]:[]},bootInProgress(){return this.$store.state.mqtt["openWB/system/boot_done"]==null?!0:!this.$store.state.mqtt["openWB/system/boot_done"]},updateInProgress(){return this.$store.state.mqtt["openWB/system/update_in_progress"]==null?!1:this.$store.state.mqtt["openWB/system/update_in_progress"]},reloadRequired(){return this.$store.state.local.reloadRequired},showModalBlocker(){return this.bootInProgress||this.updateInProgress||this.reloadRequired}},methods:{handleModalResult(e){e=="reload"?location.reload():console.warn("unknown event",e)}}},fo={class:"openwb-blocker"},_o={key:0},go={key:1},bo={key:2},ho={key:3};function vo(e,t,n,d,l,s){const o=b("openwb-base-modal-dialog");return i(),u("div",fo,[m(o,{show:s.showModalBlocker,title:s.title,subtype:"dark","prevent-close":!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=_=>s.handleModalResult(_))},{default:c(()=>[s.bootInProgress?(i(),u("p",_o,"Der Systemstart ist noch nicht abgeschlossen.")):p("",!0),s.updateInProgress?(i(),u("p",go,"Es wird eine Systemaktualisierung ausgeführt.")):p("",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(i(),u("p",bo,"Bitte die Seite neu laden.")):(i(),u("p",ho,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const yo=y(mo,[["render",vo],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const wo={name:"OpenwbSettingsApp",components:{NavBar:to,PageFooter:io,Messages:po,Blocker:yo},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3}}},computed:{mqttClientId(){try{return this.client.options.clientId}catch(e){console.error("mqttClientId error",e);return}},topicList(){return Object.keys(this.$store.state.mqtt)}},created(){this.createConnection()},methods:{async saveValues(e=void 0){function t(d){return new Promise(l=>setTimeout(l,d))}this.$store.state.local.savingData=!0;let n={};e===void 0?(console.debug("no topics defined, so save everything we have in store"),n=this.$store.state.mqtt):Array.isArray(e)?e.forEach(d=>{n[d]=this.$store.state.mqtt[d]}):console.error("expected array, got ",typeof e);for(const[d,l]of Object.entries(n)){let s=d.replace("openWB/","openWB/set/");console.debug("saving data:",s,l),this.doPublish(s,l),await t(100)}this.$store.state.local.savingData=!1},resetValues(e=this.topicList){console.debug("resetting values..."),console.debug("topics: ",e),this.doUnsubscribe(e),this.doSubscribe(e)},setDefaultValues(){console.debug("setting default values... (ToDo)")},sendCommand(e){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",e,!1)},createConnection(){const{protocol:e,host:t,port:n,endpoint:d,...l}=this.connection,s=`${e}://${t}:${n}${d}`;console.debug("connecting to broker:",s);try{this.client=ae.connect(s,l)}catch(o){console.error("mqtt.connect error",o)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"]),this.doSubscribe(["openWB/system/installAssistantDone"])}),this.client.on("error",o=>{console.error("Connection failed",o)}),this.client.on("message",(o,_)=>{if(_.toString().length>0){let r;try{r=JSON.parse(_.toString())}catch(w){console.debug("Json parsing failed, fallback to string: ",o,w),r=_.toString()}this.$store.commit("updateTopic",{topic:o,payload:r})}else this.$store.commit("removeTopic",o)})},doSubscribe(e){e.forEach(t=>{this.$store.commit("addSubscription",t),this.$store.getters.subscriptionCount(t)==1?(t.includes("#")||t.includes("+")?console.debug("skipping init of wildcard topic:",t):this.$store.commit("addTopic",{topic:t,payload:void 0}),this.client.subscribe(t,{},n=>{if(n){console.error("Subscribe to topics error",n);return}})):console.debug("Already subscribed to topic: ",t)})},doUnsubscribe(e){e.forEach(t=>{this.$store.commit("removeSubscription",t),this.$store.getters.subscriptionCount(t)==0?(this.client.unsubscribe(t,n=>{n&&console.error("Unsubscribe error",n)}),t.includes("#")||t.includes("+")?(console.debug("expanding wildcard topic:",t),Object.keys(this.getWildcardTopics(t)).forEach(n=>{console.debug("removing wildcardTopic:",n),this.$store.commit("removeTopic",n)})):(console.debug("removing topic:",t),this.$store.commit("removeTopic",t))):console.debug("Still subscribed to topic: ",t)})},doPublish(e,t,n=!0,d=2){let l={qos:d,retain:n};this.client.publish(e,JSON.stringify(t),l,s=>{s&&console.error("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const n=Date.now(),d="openWB/command/"+this.mqttClientId+"/messages/"+n;this.$store.commit({type:"addTopic",topic:d,payload:{message:e,type:t,source:"client",timestamp:Math.floor(n/1e3)}})},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(d=>d.match(n)).reduce((d,l)=>({...d,[l]:this.$store.state.mqtt[l]}),{})}}},ko={role:"main",class:"container"},So={id:"content"};function Oo(e,t,n,d,l,s){const o=b("nav-bar"),_=b("router-view"),r=b("page-footer"),w=b("messages"),x=b("blocker");return i(),u(T,null,[a("header",null,[m(o)]),a("div",ko,[a("div",So,[a("h1",null,v(e.$route.meta.heading),1),m(_,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])])]),m(r),m(w),m(x)],64)}const Bo=y(wo,[["render",Oo],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),Co="modulepreload",$o=function(e){return"/openWB/web/settings/"+e},F={},k=function(t,n,d){if(!n||n.length===0)return t();const l=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=$o(s),s in F)return;F[s]=!0;const o=s.endsWith(".css"),_=o?'[rel="stylesheet"]':"";if(!!d)for(let x=l.length-1;x>=0;x--){const P=l[x];if(P.href===s&&(!o||P.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${_}`))return;const w=document.createElement("link");if(w.rel=o?"stylesheet":Co,o||(w.as="script",w.crossOrigin=""),w.href=s,document.head.appendChild(w),o)return new Promise((x,P)=>{w.addEventListener("load",x),w.addEventListener("error",()=>P(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=s,window.dispatchEvent(o),!o.defaultPrevented)throw s})};let Y={mqtt:{},mqttSubscriptions:{},local:{reloadRequired:!1,savingData:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im Wiki.'}};Y.examples={text1:"Text...",text2:"mail@domain.com",text3:"openwb.local",text4:"http://www.openwb.de",text5:"Benutzername",text6:"12:34",text7:"2021-10-31",number1:5,number2:10,number3:28e-5,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:void 0,buttonGroup1:1,checkbox1:!0,json1:{text:"Text",number:123},hierarchy1:[{id:0,type:"counter",children:[{id:3,type:"inverter",children:[]},{id:4,type:"bat",children:[]},{id:1,type:"cp",children:[]},{id:2,type:"cp",children:[]}]}],hierarchy1Labels:{0:"EVU",1:"Ladepunkt 1",2:"Ladepunkt 2",3:"Wechselrichter",4:"Batteriespeicher"},tags:["1234","2345","3456"],ioConfig:{active:!1,pattern:[null,!1,!0],action:{value:"stop_all",options:null}}};const L=ie({state:Y,mutations:{storeLocal(e,t){e.local[t.name]=t.value},addTopic(e,t){Object.keys(e.mqtt).includes(t.topic)?console.warn("topic already exists: ",t.topic):e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const n=(d,l,s)=>l.split(".").reduce((o,_,r)=>o[_]=l.split(".").length===++r?s:o[_]||{},d);t.topic in e.mqtt||!(t.topic in e.examples)?t.objectPath!=null?n(e.mqtt[t.topic],t.objectPath,t.payload):e.mqtt[t.topic]=t.payload:(console.debug("topic not found in state.mqtt: ",t.topic),t.topic in e.examples?t.objectPath!=null?n(e.examples[t.topic],t.objectPath,t.payload):e.examples[t.topic]=t.payload:console.warn("topic not found in state: ",t.topic," giving up"))},addSubscription(e,t){t in e.mqttSubscriptions?e.mqttSubscriptions[t]+=1:e.mqttSubscriptions[t]=1,console.debug("subscription count: ",t,e.mqttSubscriptions[t])},removeSubscription(e,t){t in e.mqttSubscriptions&&(e.mqttSubscriptions[t]-=1,e.mqttSubscriptions[t]<=0&&delete e.mqttSubscriptions[t])}},actions:{},modules:{},getters:{usageTermsAcknowledged(e){return new Promise(t=>{if(e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0)t(e.mqtt["openWB/system/usage_terms_acknowledged"]);else{var n,d;n=setTimeout(()=>{clearInterval(d),t(!1)},5e3),d=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(n),clearInterval(d),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})},installAssistantDone(e){return new Promise(t=>{if(e.mqtt["openWB/system/installAssistantDone"]!==void 0)t(e.mqtt["openWB/system/installAssistantDone"]);else{var n,d;n=setTimeout(()=>{clearInterval(d),t(!1)},5e3),d=setInterval(()=>{e.mqtt["openWB/system/installAssistantDone"]!==void 0&&(clearTimeout(n),clearInterval(d),t(e.mqtt["openWB/system/installAssistantDone"]))},100)}})},subscriptionCount:e=>t=>e.mqttSubscriptions[t]||0}}),X=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>k(()=>import("./Status-ae50cd10.js"),["assets/Status-ae50cd10.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-6a6474b3.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/Status-255f6f61.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>k(()=>import("./ChargeLog-b1c57fa6.js"),["assets/ChargeLog-b1c57fa6.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/ChargeLog-1fb3fa68.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>k(()=>import("./Chart-cfe16b91.js"),["assets/Chart-cfe16b91.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-6a6474b3.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>k(()=>import("./GeneralConfig-bc70f34a.js"),["assets/GeneralConfig-bc70f34a.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>k(()=>import("./OptionalComponents-8819b9a1.js").then(e=>e.O),["assets/OptionalComponents-8819b9a1.js","assets/dynamic-import-helper-be004503.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>k(()=>import("./GeneralChargeConfig-5075da0e.js").then(e=>e.G),["assets/GeneralChargeConfig-5075da0e.js","assets/dynamic-import-helper-be004503.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>k(()=>import("./InstantChargeConfig-bb769188.js"),["assets/InstantChargeConfig-bb769188.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>k(()=>import("./PVChargeConfig-2c281c8b.js"),["assets/PVChargeConfig-2c281c8b.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>k(()=>import("./TimeChargeConfig-1a5d2dde.js"),["assets/TimeChargeConfig-1a5d2dde.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>k(()=>import("./ScheduledChargeConfig-9a450d65.js"),["assets/ScheduledChargeConfig-9a450d65.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>k(()=>import("./HardwareInstallation-727b5962.js").then(e=>e.a),["assets/HardwareInstallation-727b5962.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>k(()=>import("./LoadManagementConfig-d6d290f9.js"),["assets/LoadManagementConfig-d6d290f9.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/OpenwbSortableList-13147a4b.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>k(()=>import("./ChargePointInstallation-7e51ce35.js").then(e=>e.c),["assets/ChargePointInstallation-7e51ce35.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-7b9399a8.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>k(()=>import("./VehicleConfig-e49e5ddc.js").then(e=>e.b),["assets/VehicleConfig-e49e5ddc.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js"])},{path:"/IoConfiguration",name:"IoConfiguration",meta:{heading:"Konfiguration - Ein- und Ausgänge"},component:()=>k(()=>import("./IoConfig-bc616ac4.js").then(e=>e.I),["assets/IoConfig-bc616ac4.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>k(()=>import("./CloudConfig-9ce250e8.js"),["assets/CloudConfig-9ce250e8.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>k(()=>import("./MqttBridgeConfig-80ff6fb3.js"),["assets/MqttBridgeConfig-80ff6fb3.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>k(()=>import("./DebugConfig-8637145c.js"),["assets/DebugConfig-8637145c.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/DebugConfig-e21ab72c.css"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>k(()=>import("./Support-cb0a82f9.js"),["assets/Support-cb0a82f9.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>k(()=>import("./LegalSettings-0d86ce7f.js"),["assets/LegalSettings-0d86ce7f.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>k(()=>import("./System-71b2e67e.js"),["assets/System-71b2e67e.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>k(()=>import("./DataManagement-714df651.js").then(e=>e.a),["assets/DataManagement-714df651.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js"])},{path:"/System/InstallAssistant",name:"InstallAssistant",meta:{heading:"System - Einrichtungsassistent"},component:()=>k(()=>import("./InstallAssistant-01649aee.js"),["assets/InstallAssistant-01649aee.js","assets/dynamic-import-helper-be004503.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js"])}];X.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>k(()=>import("./TestingStore-e8ef24a7.js"),["assets/TestingStore-e8ef24a7.js","assets/OpenwbSortableList-13147a4b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js"])});const R=le({history:re(),routes:X});R.beforeEach(async e=>{if(await L.getters.usageTermsAcknowledged){if(!await L.getters.installAssistantDone&&e.name!=="InstallAssistant")return{name:"InstallAssistant"}}else if(e.name!=="LegalSettings")return{name:"LegalSettings"}});R.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const W=de(Bo);W.use(L).use(R).use(Fe,He);const Io=Object.assign({"./components/OpenwbBaseAlert.vue":Je,"./components/OpenwbBaseArrayInput.vue":ct,"./components/OpenwbBaseAvatar.vue":gt,"./components/OpenwbBaseButtonGroupInput.vue":kt,"./components/OpenwbBaseButtonInput.vue":xt,"./components/OpenwbBaseCard.vue":Rt,"./components/OpenwbBaseCheckboxInput.vue":zt,"./components/OpenwbBaseClickButton.vue":Ct,"./components/OpenwbBaseCopyToClipboard.vue":Qt,"./components/OpenwbBaseHeading.vue":on,"./components/OpenwbBaseIoPattern.vue":dn,"./components/OpenwbBaseModalDialog.vue":hn,"./components/OpenwbBaseNumberInput.vue":$n,"./components/OpenwbBaseRangeInput.vue":En,"./components/OpenwbBaseSelectInput.vue":Kn,"./components/OpenwbBaseSettingElement.vue":et,"./components/OpenwbBaseSubmitButtons.vue":ss,"./components/OpenwbBaseTextInput.vue":hs,"./components/OpenwbBaseTextarea.vue":Ts,"./components/OpenwbBaseToast.vue":Ps});Object.entries(Io).forEach(([e,t])=>{const n=ue(ce(e.split("/").pop().replace(/\.\w+$/,"")));W.component(n,t.default)});W.mount("#app");export{Z as C,M as O,k as _}; diff --git a/web/settings/assets/index-cc8f65ba.js b/web/settings/assets/index-cc8f65ba.js deleted file mode 100644 index 8c0b235974..0000000000 --- a/web/settings/assets/index-cc8f65ba.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as y,l,m as u,p as g,q as O,u as b,x as a,y as m,z as h,A as D,B as p,D as V,E as c,F as v,G as f,I as B,J as I,K as S,L as X,M as P,N as T,O as ee,P as te,Q as ne,T as F,R as se,S as W,U as oe,V as ae,W as ie,X as le,Y as re,Z as de,$ as ue}from"./vendor-ea36120f.js";import{l as C,f as H,a as U,F as $,b as ce,c as pe,d as z,e as me,g as L,h as fe,i as _e,j as ge,k as be,m as he,n as ve,o as ye,p as we,q as ke,r as G,s as Se,t as Be,u as Oe,v as Ce,w as J,x as $e,y as Ie,z as Te,A as xe,B as Me,C as Ve,D as Ae,E as Pe,G as qe,H as Ee,I as De}from"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import{p as Le,a as je}from"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./vendor-jquery-48e02303.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))d(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&d(o)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function d(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();const Re={name:"OpenwbAlert",props:{subtype:{validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(t)!==-1},default:"secondary"}}};function We(t,e,n,d,i,s){return l(),u("div",{class:O(["card-text alert","alert-"+n.subtype])},[g(t.$slots,"default",{},void 0,!0)],2)}const Ne=y(Re,[["render",We],["__scopeId","data-v-055c15aa"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),Fe=Object.freeze(Object.defineProperty({__proto__:null,default:Ne},Symbol.toStringTag,{value:"Module"}));C.add(H,U);const He={name:"OpenwbBaseSettingElement",components:{FontAwesomeIcon:$},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},Ue={class:"form-row mb-1"},ze={class:"col-md-4 col-form-label"},Ge={class:"col-md-8"},Je={class:"form-row"},Ke={class:"form-row"},Qe={key:0,class:"form-text alert alert-info my-1 small flex-fill"};function Ze(t,e,n,d,i,s){const o=b("font-awesome-icon");return l(),u("div",Ue,[a("label",ze,[g(t.$slots,"title",{},()=>[e[0]||(e[0]=m("*TITLE*"))]),t.$slots.help?(l(),h(o,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:O(["clickable ml-1",i.showHelp?"text-info":""]),onClick:D(s.toggleHelp,["stop"])},null,8,["icon","class","onClick"])):p("",!0)]),a("div",Ge,[a("div",Je,[g(t.$slots,"default",{},()=>[e[1]||(e[1]=m("*ELEMENT MISSING*"))])]),a("div",Ke,[i.showHelp?(l(),u("span",Qe,[g(t.$slots,"help")])):p("",!0)])])])}const M=y(He,[["render",Ze],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSettingElement.vue"]]),Ye=Object.freeze(Object.defineProperty({__proto__:null,default:M},Symbol.toStringTag,{value:"Module"}));C.add(ce,pe,z,me);const Xe={name:"OpenwbArrayInput",components:{FontAwesomeIcon:$,OpenwbBaseSettingElement:M},inheritAttrs:!1,props:{title:{type:String,required:!0,default:"#TITLE#"},modelValue:{type:Array,default:()=>[]},noElementsMessage:{type:String,default:()=>"Keine Elemente zugeordnet."}},emits:["update:modelValue"],data(){return{newTag:"",showHelp:!1}},computed:{value:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}},newTagValid:{get(){return this.newTag.length>0&&!this.value.includes(this.newTag)}}},methods:{addTag(){if(this.newTagValid){const t=[...this.value,this.newTag].sort();this.value=t,this.newTag=""}this.$refs.tagInput.focus()},removeTag(t){let e=[...this.value];e.splice(t,1),this.value=e}}},et={class:"w-100"},tt={class:"input-group"},nt={class:"input-group-prepend"},st={class:"input-group-text"},ot={class:"input-group-append"},at={class:"tagList mt-1 w-100"},it={key:0,class:"noTag"};function lt(t,e,n,d,i,s){const o=b("font-awesome-icon"),_=b("openwb-base-setting-element");return l(),h(_,null,V({title:c(()=>[g(t.$slots,"title",{},()=>[m(v(n.title),1)],!0)]),default:c(()=>[a("div",et,[a("div",tt,[a("div",nt,[a("div",st,[g(t.$slots,"input-prefix",{},()=>[f(o,{"fixed-width":"",icon:["fas","tag"]})],!0)])]),B(a("input",S({ref:"tagInput","onUpdate:modelValue":e[0]||(e[0]=r=>i.newTag=r),type:"text",class:"form-control"},t.$attrs,{onKeyup:e[1]||(e[1]=X((...r)=>s.addTag&&s.addTag(...r),["enter"]))}),null,16),[[I,i.newTag]]),a("div",ot,[a("div",{class:O(["input-group-text",s.newTagValid?"bg-success clickable":"not-clickable"]),onClick:e[2]||(e[2]=(...r)=>s.addTag&&s.addTag(...r))},[g(t.$slots,"input-add",{},()=>[f(o,{"fixed-width":"",icon:["fas","plus"]})],!0)],2)])])]),a("div",at,[s.value.length==0?(l(),u("span",it,[f(o,{icon:["fas","info-circle"]}),m(" "+v(n.noElementsMessage),1)])):p("",!0),(l(!0),u(T,null,P(s.value,(r,k)=>(l(),u("span",{key:k,class:"tag"},[g(t.$slots,"element-prefix",{},()=>[f(o,{icon:["fas","tag"]})],!0),m(" "+v(r)+" ",1),f(o,{class:"clickable remove-element",icon:["fas","times-circle"],onClick:x=>s.removeTag(k)},null,8,["onClick"])]))),128))])]),_:2},[t.$slots.help?{name:"help",fn:c(()=>[g(t.$slots,"help",{},void 0,!0)]),key:"0"}:void 0]),1024)}const rt=y(Xe,[["render",lt],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),dt=Object.freeze(Object.defineProperty({__proto__:null,default:rt},Symbol.toStringTag,{value:"Module"}));const ut={name:"OpenwbAvatar"},ct={class:"avatar"};function pt(t,e,n,d,i,s){return l(),u("div",ct,[g(t.$slots,"default",{},()=>[e[0]||(e[0]=m("?"))],!0)])}const mt=y(ut,[["render",pt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),ft=Object.freeze(Object.defineProperty({__proto__:null,default:mt},Symbol.toStringTag,{value:"Module"}));C.add(L);const _t={name:"OpenwbButtonGroupInput",components:{FontAwesomeIcon:$,OpenwbBaseSettingElement:M},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Boolean],default:void 0},buttons:{type:Array,required:!0}},emits:["update:modelValue"],computed:{value:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}}}},gt={class:"btn-group btn-block btn-group-toggle"},bt=["value"];function ht(t,e,n,d,i,s){const o=b("font-awesome-icon"),_=b("openwb-base-setting-element");return l(),h(_,null,V({title:c(()=>[g(t.$slots,"title",{},()=>[m(v(n.title),1)])]),default:c(()=>[a("div",gt,[(l(!0),u(T,null,P(n.buttons,r=>(l(),u("label",{key:r.value,class:O(["btn",[s.value==r.buttonValue?"active":"",r.class?r.class:"btn-outline-info"]])},[B(a("input",S({"onUpdate:modelValue":e[0]||(e[0]=k=>s.value=k),type:"radio",value:r.buttonValue,ref_for:!0},t.$attrs),null,16,bt),[[ee,s.value]]),g(t.$slots,"label-"+r.buttonValue,{},()=>[m(v(r.text),1)]),f(o,{"fixed-width":"",icon:["fas","check"],style:te([s.value==r.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),_:2},[t.$slots.help?{name:"help",fn:c(()=>[g(t.$slots,"help")]),key:"0"}:void 0]),1024)}const vt=y(_t,[["render",ht],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),yt=Object.freeze(Object.defineProperty({__proto__:null,default:vt},Symbol.toStringTag,{value:"Module"}));const wt={name:"OpenwbClickButton",props:{title:{type:String,required:!1,default:""}},emits:["buttonClicked"],methods:{click(t){this.$emit("buttonClicked",t)}}};function kt(t,e,n,d,i,s){return l(),u("button",{type:"button",class:"btn btn-block",onClick:e[0]||(e[0]=D((...o)=>s.click&&s.click(...o),["prevent"]))},[g(t.$slots,"default",{},()=>[m(v(n.title),1)],!0)])}const K=y(wt,[["render",kt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),St=Object.freeze(Object.defineProperty({__proto__:null,default:K},Symbol.toStringTag,{value:"Module"})),Bt={name:"OpenwbButtonInput",components:{OpenwbBaseSettingElement:M,OpenwbBaseClickButton:K},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},buttonText:{type:String,required:!1,default:void 0},disabled:{type:Boolean,default:!1},subtype:{type:String,validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(t)!==-1},default:"secondary"}},emits:["buttonClicked"],methods:{handleClick(t){this.$emit("buttonClicked",t)}}};function Ot(t,e,n,d,i,s){const o=b("openwb-base-click-button"),_=b("openwb-base-setting-element");return l(),h(_,null,V({title:c(()=>[g(t.$slots,"title",{},()=>[m(v(n.title),1)])]),default:c(()=>[f(o,S({class:(n.disabled?"btn-outline-":"btn-")+n.subtype,disabled:n.disabled},t.$attrs,{onButtonClicked:s.handleClick}),{default:c(()=>[m(v(n.buttonText),1)]),_:1},16,["class","disabled","onButtonClicked"])]),_:2},[t.$slots.help?{name:"help",fn:c(()=>[g(t.$slots,"help")]),key:"0"}:void 0]),1024)}const Ct=y(Bt,[["render",Ot],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),$t=Object.freeze(Object.defineProperty({__proto__:null,default:Ct},Symbol.toStringTag,{value:"Module"}));C.add(fe,_e);const It={name:"OpenwbCard",components:{FontAwesomeIcon:$},inheritAttrs:!1,props:{title:{type:String,default:void 0},subtype:{validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark","pink","white"].indexOf(t)!==-1},default:"secondary"},bodyBg:{validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark","pink","white"].indexOf(t)!==-1},default:"light"},collapsible:{type:Boolean,default:!1},collapsed:{type:Boolean,default:!1}},data(){return{isCollapsed:this.collapsible&&this.collapsed}},methods:{toggleBody(){this.collapsible===!0&&(this.isCollapsed=!this.isCollapsed)}}},Tt={class:"form-group mb-0"},xt={class:"form-row vaRow mb-0 py-2"},Mt={class:"col"},Vt={class:"card-actions ml-4"},At={key:0,class:"card-actions mr-4"},Pt={key:2,class:"card-footer"};function qt(t,e,n,d,i,s){const o=b("font-awesome-icon");return l(),u("div",{class:O(["card","border-"+n.subtype])},[n.title!==void 0||t.$slots.header?(l(),u("div",{key:0,class:O(["card-header py-1","bg-"+n.subtype]),onClick:e[0]||(e[0]=(..._)=>s.toggleBody&&s.toggleBody(..._))},[a("div",Tt,[a("div",xt,[a("div",Mt,[g(t.$slots,"header",{collapsed:i.isCollapsed},()=>[m(v(n.title),1)])])])]),a("span",Vt,[t.$slots.actions?(l(),u("span",At,[g(t.$slots,"actions",{collapsed:i.isCollapsed})])):p("",!0),n.collapsible?(l(),h(o,{key:1,"fixed-width":"",icon:i.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):p("",!0)])],2)):p("",!0),i.isCollapsed===!1?(l(),u("div",S({key:1,class:["card-body",[n.title==null&&!t.$slots.header?"border-radius-top-inherit":"",t.$slots.footer?"":"border-radius-bottom-inherit","bg-"+n.bodyBg]]},t.$attrs),[g(t.$slots,"default")],16)):p("",!0),t.$slots.footer&&i.isCollapsed===!1?(l(),u("div",Pt,[g(t.$slots,"footer")])):p("",!0)],2)}const Et=y(It,[["render",qt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Dt=Object.freeze(Object.defineProperty({__proto__:null,default:Et},Symbol.toStringTag,{value:"Module"})),Lt={name:"OpenwbCheckboxInput",components:{OpenwbBaseSettingElement:M},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:Boolean}},emits:["update:modelValue"],computed:{value:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}}}},jt={class:"col-md-8"};function Rt(t,e,n,d,i,s){const o=b("openwb-base-setting-element");return l(),h(o,null,V({title:c(()=>[g(t.$slots,"title",{},()=>[m(v(n.title),1)])]),default:c(()=>[a("div",jt,[B(a("input",S({"onUpdate:modelValue":e[0]||(e[0]=_=>s.value=_),class:"form-control",type:"checkbox"},t.$attrs),null,16),[[ne,s.value]])])]),_:2},[t.$slots.help?{name:"help",fn:c(()=>[g(t.$slots,"help")]),key:"0"}:void 0]),1024)}const Wt=y(Lt,[["render",Rt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Nt=Object.freeze(Object.defineProperty({__proto__:null,default:Wt},Symbol.toStringTag,{value:"Module"}));C.add(ge,be);const Ft={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:$},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(this.clipboardApiAvailable)navigator.clipboard.writeText(this.$refs["slot-wrapper"].innerText).then(()=>{this.isCopied=!0},()=>{console.error("copy to clipboard failed")});else{if(console.debug("clipboard api not supported/enabled, fallback to selection or text range"),window.getSelection){const t=window.getSelection(),e=document.createRange();e.selectNodeContents(this.$refs["slot-wrapper"]),t.removeAllRanges(),t.addRange(e);return}if(document.body.createTextRange){const t=document.body.createTextRange();t.moveToElementText(this.$refs["slot-wrapper"]),t.select()}else console.warn("could not select text, unsupported browser")}}}},Ht=["title"];function Ut(t,e,n,d,i,s){const o=b("font-awesome-icon");return l(),u("span",{ref:"slot-wrapper",title:n.tooltip,class:"copy-me",onClick:e[0]||(e[0]=(..._)=>s.click&&s.click(..._))},[g(t.$slots,"default",{},void 0,!0),f(o,{"fixed-width":"",icon:i.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Ht)}const zt=y(Ft,[["render",Ut],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:zt},Symbol.toStringTag,{value:"Module"}));C.add(H,U,L);const Jt={name:"OpenwbHeading",components:{FontAwesomeIcon:$},inheritAttrs:!1,data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},Kt={class:"heading-text"},Qt={key:0,class:"actions"},Zt={class:""},Yt={key:0,class:"form-row alert alert-info small flex-fill"};function Xt(t,e,n,d,i,s){const o=b("font-awesome-icon");return l(),u(T,null,[a("div",S({class:"card-text card-text-heading"},t.$attrs),[a("div",Kt,[g(t.$slots,"default",{},void 0,!0),t.$slots.help?(l(),h(o,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:O(["clickable",i.showHelp?"text-info":""]),onClick:D(s.toggleHelp,["stop"])},null,8,["icon","class","onClick"])):p("",!0)]),t.$slots.actions?(l(),u("span",Qt,[g(t.$slots,"actions",{},void 0,!0)])):p("",!0)],16),a("div",Zt,[i.showHelp?(l(),u("span",Yt,[g(t.$slots,"help",{},void 0,!0)])):p("",!0)])],64)}const en=y(Jt,[["render",Xt],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),tn=Object.freeze(Object.defineProperty({__proto__:null,default:en},Symbol.toStringTag,{value:"Module"})),nn={name:"OpenwbModalDialog",props:{title:{type:String,required:!1,default:""},subtype:{type:String,validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(t)!==-1},default:"secondary"},buttons:{type:Array,default:void 0},footerAlignment:{type:String,validator:function(t){return["around","between","center","end","start"].indexOf(t)!==-1},default:"end"},preventClose:{type:Boolean,default:!1},show:{type:Boolean,default:!1}},emits:["modal-result"],computed:{myButtons(){var t=[];return this.buttons!==void 0&&(t=this.buttons),this.preventClose||t.push({text:"Schließen",event:"close"}),t}},methods:{handleClick(t){t.stopPropagation();let e=t.target.getAttribute("data-event");e===null&&(e="close"),(e!="close"||!this.preventClose)&&this.$emit("modal-result",e)}}},sn={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},on={class:"modal-content"},an={class:"modal-title"},ln={class:"modal-body"},rn=["data-event"];function dn(t,e,n,d,i,s){return n.show?(l(),h(F,{key:0,to:"body"},[e[4]||(e[4]=a("div",{class:"modal-backdrop fade show"},null,-1)),a("div",{class:"modal fade d-block show",role:"dialog",onClick:e[2]||(e[2]=(...o)=>s.handleClick&&s.handleClick(...o))},[a("div",sn,[a("div",on,[a("div",{class:O(["modal-header","bg-"+n.subtype])},[a("h4",an,v(n.title),1),n.preventClose?p("",!0):(l(),u("button",{key:0,type:"button",class:"close",onClick:e[0]||(e[0]=(...o)=>s.handleClick&&s.handleClick(...o))}," × "))],2),a("div",ln,[g(t.$slots,"default",{},()=>[e[3]||(e[3]=m("# Body #"))])]),s.myButtons.length>0?(l(),u("div",{key:0,class:O(["modal-footer d-flex","justify-content-"+n.footerAlignment])},[(l(!0),u(T,null,P(s.myButtons,o=>(l(),u("button",{key:o.text,type:"button",class:O(["btn",o.subtype?"btn-"+o.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":o.event?o.event:"close",onClick:e[1]||(e[1]=(..._)=>s.handleClick&&s.handleClick(..._))},v(o.text),11,rn))),128))],2)):p("",!0)])])])])):p("",!0)}const un=y(nn,[["render",dn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),cn=Object.freeze(Object.defineProperty({__proto__:null,default:un},Symbol.toStringTag,{value:"Module"}));C.add(he);const pn={name:"OpenwbNumberInput",components:{FontAwesomeIcon:$,OpenwbBaseSettingElement:M},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:Number,required:!1,default:void 0},unit:{type:String,required:!1,default:void 0},precision:{type:Number,default:void 0},emptyValue:{type:[Number,null],required:!1,default:null}},emits:["update:modelValue"],computed:{value:{get(){return this.precision!==void 0?parseFloat(Math.round(this.modelValue*Math.pow(10,this.precision))/Math.pow(10,this.precision)):this.modelValue},set(t){(isNaN(t)||typeof t!="number")&&(t=this.emptyValue),this.$emit("update:modelValue",t)}}}},mn={class:"input-group"},fn={class:"input-group-prepend"},_n={class:"input-group-text"},gn={key:0,class:"input-group-append"},bn={class:"input-group-text"};function hn(t,e,n,d,i,s){const o=b("font-awesome-icon"),_=b("openwb-base-setting-element");return l(),h(_,null,V({title:c(()=>[g(t.$slots,"title",{},()=>[m(v(n.title),1)],!0)]),default:c(()=>[a("div",mn,[a("div",fn,[a("div",_n,[f(o,{"fixed-width":"",icon:["fas","calculator"]})])]),B(a("input",S({"onUpdate:modelValue":e[0]||(e[0]=r=>s.value=r),type:"number",class:"form-control"},t.$attrs),null,16),[[I,s.value,void 0,{number:!0}]]),n.unit?(l(),u("div",gn,[a("div",bn,v(n.unit),1)])):p("",!0)])]),_:2},[t.$slots.help?{name:"help",fn:c(()=>[g(t.$slots,"help",{},void 0,!0)]),key:"0"}:void 0]),1024)}const vn=y(pn,[["render",hn],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),yn=Object.freeze(Object.defineProperty({__proto__:null,default:vn},Symbol.toStringTag,{value:"Module"}));C.add(ve,ye);const wn={name:"OpenwbRangeInput",components:{FontAwesomeIcon:$,OpenwbBaseSettingElement:M},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:Number,required:!1,default:void 0},unit:{type:String,required:!1,default:void 0},min:{type:Number,required:!0,default:0},max:{type:Number,required:!0,default:100},step:{type:Number,required:!1,default:1},labels:{type:Array,required:!1,default:void 0}},emits:["update:modelValue"],computed:{label(){var t;return this.labels&&this.sliderValue!=null?this.sliderValue[g(t.$slots,"title",{},()=>[m(v(n.title),1)],!0)]),default:c(()=>[a("div",kn,[a("div",Sn,[s.label?(l(),u("label",Bn,v(s.label),1)):p("",!0),a("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:e[0]||(e[0]=(...r)=>s.decrement&&s.decrement(...r))},[f(o,{icon:["fas","step-backward"]})]),a("div",On,[B(a("input",S({"onUpdate:modelValue":e[1]||(e[1]=r=>s.sliderValue=r),type:"range",class:"form-control-range rangeInput",min:n.min,max:n.max,step:n.step},t.$attrs),null,16,Cn),[[I,s.sliderValue,void 0,{number:!0}]])]),a("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:e[2]||(e[2]=(...r)=>s.increment&&s.increment(...r))},[f(o,{icon:["fas","step-forward"]})])])])]),_:2},[t.$slots.help?{name:"help",fn:c(()=>[g(t.$slots,"help",{},void 0,!0)]),key:"0"}:void 0]),1024)}const In=y(wn,[["render",$n],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Tn=Object.freeze(Object.defineProperty({__proto__:null,default:In},Symbol.toStringTag,{value:"Module"}));C.add(z);const xn={name:"OpenwbSelectInput",components:{FontAwesomeIcon:$,OpenwbBaseSettingElement:M},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Array,null],required:!1,default:void 0},groups:{type:Array,required:!1,default:void 0},options:{type:Array,required:!1,default:void 0},notSelected:{type:String,default:void 0},addButton:{type:Boolean,default:!1}},emits:["update:modelValue","input:add"],computed:{value:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}},addDisabled:{get(){return this.value===void 0}}},methods:{addClicked(){this.addDisabled||this.$emit("input:add")}}},Mn={class:"w-100"},Vn={class:"input-group"},An={key:0,class:"input-group-prepend"},Pn={class:"input-group-text"},qn={key:0,value:void 0,disabled:""},En=["value"],Dn=["label"],Ln=["value"],jn={key:1,class:"input-group-append"};function Rn(t,e,n,d,i,s){const o=b("font-awesome-icon"),_=b("openwb-base-setting-element");return l(),h(_,null,V({title:c(()=>[g(t.$slots,"title",{},()=>[m(v(n.title),1)])]),default:c(()=>[a("div",Mn,[a("div",Vn,[t.$slots.prefix?(l(),u("div",An,[a("div",Pn,[g(t.$slots,"prefix")])])):p("",!0),B(a("select",S({"onUpdate:modelValue":e[0]||(e[0]=r=>s.value=r),class:"col form-control"},t.$attrs),[n.notSelected!==void 0?(l(),u("option",qn," -- "+v(n.notSelected)+" -- ",1)):p("",!0),(l(!0),u(T,null,P(n.options,r=>(l(),u("option",{key:r.value,value:r.value},v(r.text),9,En))),128)),(l(!0),u(T,null,P(n.groups,r=>(l(),u("optgroup",{key:r.label,label:r.label},[(l(!0),u(T,null,P(r.options,k=>(l(),u("option",{key:k.value,value:k.value},v(k.text),9,Ln))),128))],8,Dn))),128))],16),[[se,s.value]]),n.addButton?(l(),u("div",jn,[a("div",{class:O(["input-group-text",s.addDisabled?"not-clickable":"bg-success clickable"]),onClick:e[1]||(e[1]=r=>s.addClicked())},[g(t.$slots,"inputAdd",{},()=>[f(o,{"fixed-width":"",icon:["fas","plus"]})])],2)])):p("",!0)])])]),_:2},[t.$slots.help?{name:"help",fn:c(()=>[g(t.$slots,"help")]),key:"0"}:void 0]),1024)}const Wn=y(xn,[["render",Rn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),Nn=Object.freeze(Object.defineProperty({__proto__:null,default:Wn},Symbol.toStringTag,{value:"Module"}));C.add(L,we,ke);const Fn={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:$},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},emits:["reset","defaults","save"],data(){return{showModalReset:!1,showModalDefaults:!1}},computed:{showModalSave(){return this.$store.state.local.savingData}},methods:{showResetModal(){this.showModalReset=!0},handleModalReset(t){this.showModalReset=!1,t=="confirm"&&this.$emit("reset")},showDefaultsModal(){this.showModalDefaults=!0},handleModalDefaults(t){this.showModalDefaults=!1,t=="confirm"&&this.$emit("defaults")},saveSettings(){if(this.formName){if(!document.forms[this.formName].reportValidity()){console.debug("form invalid");return}}else console.debug("no form to validate");this.$emit("save")}}},Hn={class:"row justify-content-center mb-1"},Un={class:"col-md-4 d-flex py-1 justify-content-center"},zn={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},Gn={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function Jn(t,e,n,d,i,s){const o=b("openwb-base-modal-dialog"),_=b("font-awesome-icon");return l(),u(T,null,[f(o,{show:s.showModalSave,title:"Speichern",subtype:"success","prevent-close":!0},{default:c(()=>e[3]||(e[3]=[m(" Einstellungen werden gespeichert... ")])),_:1},8,["show"]),f(o,{show:i.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:c(()=>e[4]||(e[4]=[m(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")])),_:1},8,["show","onModalResult"]),f(o,{show:i.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:c(()=>e[5]||(e[5]=[m(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")])),_:1},8,["show","onModalResult"]),a("div",Hn,[a("div",Un,[a("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:e[0]||(e[0]=(...r)=>s.saveSettings&&s.saveSettings(...r))},[e[6]||(e[6]=m(" Speichern ")),f(_,{"fixed-width":"",icon:["fas","check"]})])]),n.hideReset?p("",!0):(l(),u("div",zn,[a("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:e[1]||(e[1]=(...r)=>s.showResetModal&&s.showResetModal(...r))},[e[7]||(e[7]=m(" Änderungen verwerfen ")),f(_,{"fixed-width":"",icon:["fas","undo"]})])])),n.hideDefaults?p("",!0):(l(),u("div",Gn,[a("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:e[2]||(e[2]=(...r)=>s.showDefaultsModal&&s.showDefaultsModal(...r))},[e[8]||(e[8]=m(" Werkseinstellungen ")),f(_,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const Kn=y(Fn,[["render",Jn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),Qn=Object.freeze(Object.defineProperty({__proto__:null,default:Kn},Symbol.toStringTag,{value:"Module"}));C.add(G,Se,Be,Oe,Ce,J,$e,Ie,Te,xe,Me,Ve);const Zn={name:"OpenwbTextInput",components:{FontAwesomeIcon:$,OpenwbBaseSettingElement:M},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Object],required:!1,default:void 0},subtype:{validator:function(t){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(t)!==-1},default:"text"},pattern:{type:String,required:!1,default:void 0},unit:{type:String,required:!1,default:void 0},emptyValue:{type:[String,Object,null],required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showPassword:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.warn("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue):this.modelValue},set(t){if(this.subtype=="json")try{let e=JSON.parse(t);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=e,this.$emit("update:modelValue",e)}catch(e){console.error("parsing JSON failed: "+t,e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=t}else t==""&&(t=this.emptyValue),this.$emit("update:modelValue",t)}},inputRef(){switch(this.subtype){case"json":return this.$refs.jsonInput;case"password":return this.$refs.passwordInput;case"host":return this.$refs.hostInput;case"email":case"url":return this.$refs.urlInput;case"time":return this.$refs.timeInput;case"date":return this.$refs.dateInput;case"month":return this.$refs.monthInput;case"year":return this.$refs.yearInput}return this.$refs.textInput}},methods:{togglePassword(){this.showPassword=!this.showPassword},modify(t){var e,n=new Date(this.modelValue);switch(this.subtype){case"date":n.setDate(n.getDate()+t),e=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0")+"-"+String(n.getDate()).padStart(2,"0");break;case"month":n.setMonth(n.getMonth()+t),e=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0");break;case"year":n.setYear(n.getFullYear()+t),e=String(n.getFullYear());break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}e>this.inputRef.max||e[g(t.$slots,"title",{},()=>[m(v(n.title),1)],!0)]),default:c(()=>[a("div",Yn,[a("div",Xn,[a("div",es,[a("div",ts,[n.subtype=="text"?(l(),h(o,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):p("",!0),n.subtype=="email"?(l(),h(o,{key:1,"fixed-width":"",icon:["fas","envelope"]})):p("",!0),n.subtype=="host"?(l(),h(o,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):p("",!0),n.subtype=="url"?(l(),h(o,{key:3,"fixed-width":"",icon:["fas","globe"]})):p("",!0),n.subtype=="user"?(l(),h(o,{key:4,"fixed-width":"",icon:["fas","user"]})):p("",!0),n.subtype=="json"?(l(),h(o,{key:5,"fixed-width":"",icon:["fas","code"]})):p("",!0),n.subtype=="password"?(l(),h(o,{key:6,"fixed-width":"",icon:i.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):p("",!0),n.subtype=="time"?(l(),h(o,{key:7,"fixed-width":"",icon:["fas","clock"]})):p("",!0),n.subtype=="date"||n.subtype=="month"||n.subtype=="year"?(l(),h(o,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):p("",!0)])]),["text","user"].includes(n.subtype)?B((l(),u("input",S({key:0,ref:"textInput","onUpdate:modelValue":e[0]||(e[0]=r=>s.value=r),type:"text",class:["form-control",{invalid:i.inputInvalid}]},t.$attrs,{pattern:n.pattern}),null,16,ns)),[[I,s.value]]):p("",!0),n.subtype=="json"?B((l(),u("input",S({key:1,ref:"jsonInput","onUpdate:modelValue":e[1]||(e[1]=r=>s.value=r),type:"text",class:"form-control"},t.$attrs,{pattern:n.pattern}),null,16,ss)),[[I,s.value]]):p("",!0),n.subtype=="password"?B((l(),u("input",S({key:2,ref:"passwordInput","onUpdate:modelValue":e[2]||(e[2]=r=>s.value=r),type:i.showPassword?"text":"password",class:"form-control"},t.$attrs,{pattern:n.pattern}),null,16,os)),[[W,s.value]]):p("",!0),n.subtype=="host"?B((l(),u("input",S({key:3,ref:"hostInput","onUpdate:modelValue":e[3]||(e[3]=r=>s.value=r),type:"text",class:"form-control"},t.$attrs),null,16)),[[I,s.value]]):p("",!0),["email","url"].includes(n.subtype)?B((l(),u("input",S({key:4,"onUpdate:modelValue":e[4]||(e[4]=r=>s.value=r),refs:"urlInput",type:n.subtype,class:"form-control"},t.$attrs),null,16,as)),[[W,s.value]]):p("",!0),n.subtype=="time"?B((l(),u("input",S({key:5,ref:"timeInput","onUpdate:modelValue":e[5]||(e[5]=r=>s.value=r),type:"time",class:"form-control"},t.$attrs),null,16)),[[I,s.value]]):p("",!0),n.subtype=="date"?B((l(),u("input",S({key:6,ref:"dateInput","onUpdate:modelValue":e[6]||(e[6]=r=>s.value=r),type:"date",class:"form-control"},t.$attrs),null,16)),[[I,s.value]]):p("",!0),n.subtype=="month"?B((l(),u("input",S({key:7,ref:"monthInput","onUpdate:modelValue":e[7]||(e[7]=r=>s.value=r),type:"month",class:"form-control"},t.$attrs),null,16)),[[I,s.value]]):p("",!0),n.subtype=="year"?B((l(),u("input",S({key:8,ref:"yearInput","onUpdate:modelValue":e[8]||(e[8]=r=>s.value=r),type:"number",class:"form-control"},t.$attrs),null,16)),[[I,s.value]]):p("",!0),n.unit?(l(),u("div",is,[a("div",ls,v(n.unit),1)])):p("",!0),n.subtype=="password"?(l(),u("div",{key:10,class:"input-group-append clickable",onClick:e[9]||(e[9]=(...r)=>s.togglePassword&&s.togglePassword(...r))},[a("div",rs,[f(o,{"fixed-width":"",icon:i.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):p("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(l(),u("div",{key:11,class:"input-group-append clickable",onClick:e[10]||(e[10]=r=>s.modify(-1))},e[12]||(e[12]=[a("div",{class:"input-group-text"},"-",-1)]))):p("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(l(),u("div",{key:12,class:"input-group-append clickable",onClick:e[11]||(e[11]=r=>s.modify(1))},e[13]||(e[13]=[a("div",{class:"input-group-text"},"+",-1)]))):p("",!0)])])]),_:2},[t.$slots.help?{name:"help",fn:c(()=>[g(t.$slots,"help",{},void 0,!0)]),key:"0"}:void 0]),1024)}const us=y(Zn,[["render",ds],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),cs=Object.freeze(Object.defineProperty({__proto__:null,default:us},Symbol.toStringTag,{value:"Module"}));C.add(G,J);const ps={name:"OpenwbTextareaInput",components:{OpenwbBaseSettingElement:M,FontAwesomeIcon:$},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Object],required:!1,default:void 0},subtype:{validator:function(t){return["text","json"].indexOf(t)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid JSON as String"),this.tempValue):JSON.stringify(this.tempValue,void 0,2):this.modelValue},set(t){if(this.subtype=="json")try{let e=JSON.parse(t);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=e,this.$emit("update:modelValue",e)}catch(e){console.warn("parsing JSON failed: "+t,e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=t}else this.$emit("update:modelValue",t)}},length:{get(){return this.value!==void 0?this.value.length:0}}}},ms={class:"w-100"},fs={class:"input-group"},_s={class:"input-group-prepend"},gs={class:"input-group-text"},bs={key:2,class:"input-group-append"},hs={class:"input-group-text"},vs={class:"form-text text-muted text-right"};function ys(t,e,n,d,i,s){const o=b("font-awesome-icon"),_=b("openwb-base-setting-element");return l(),h(_,null,V({title:c(()=>[g(t.$slots,"title",{},()=>[m(v(n.title),1)],!0)]),default:c(()=>[a("div",ms,[a("div",fs,[a("div",_s,[a("div",gs,[n.subtype=="text"?(l(),h(o,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):p("",!0),n.subtype=="json"?(l(),h(o,{key:1,"fixed-width":"",icon:["fas","code"]})):p("",!0)])]),n.subtype==="json"?B((l(),u("textarea",S({key:0,ref:"jsonInput","onUpdate:modelValue":e[0]||(e[0]=r=>s.value=r),class:"form-control"},t.$attrs),null,16)),[[I,s.value,void 0,{lazy:!0}]]):B((l(),u("textarea",S({key:1,"onUpdate:modelValue":e[1]||(e[1]=r=>s.value=r),class:"form-control"},t.$attrs),null,16)),[[I,s.value]]),t.$attrs.maxlength?(l(),u("div",bs,[a("div",hs,[a("small",vs,v(s.length)+" / "+v(t.$attrs.maxlength),1)])])):p("",!0)])])]),_:2},[t.$slots.help?{name:"help",fn:c(()=>[g(t.$slots,"help",{},void 0,!0)]),key:"0"}:void 0]),1024)}const ws=y(ps,[["render",ys],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),ks=Object.freeze(Object.defineProperty({__proto__:null,default:ws},Symbol.toStringTag,{value:"Module"}));const Ss={name:"OpenwbToast",props:{topic:{type:String,required:!0},subtype:{validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(t)!==-1},default:"secondary"},source:{type:String,required:!0,validator:function(t){return["system","client","command"].indexOf(t)!==-1}},timestamp:{type:Number,required:!0}},emits:["dismiss","hide"],data(){return{handle:void 0,relativeTime:void 0,hidden:!1}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)},methods:{dismiss(){this.$emit("dismiss",{topic:this.topic})},updateRelativeTime(){const t={year:31536e6,month:2628e6,day:864e5,hour:36e5,minute:6e4,second:1e3};var e=new Intl.RelativeTimeFormat("de",{numeric:"auto"});const d=new Date-this.timestamp*1e3;for(var i in t)if(Math.abs(d)>t[i]){this.relativeTime=e.format(Math.round(-d/t[i]),i);break}d>10*1e3&&!this.hidden&&(this.hidden=!0,this.$emit("hide",{topic:this.topic}))}}},Bs={key:0,class:"time-diff"},Os={class:"toast-body"};function Cs(t,e,n,d,i,s){return l(),u("div",{class:O(["toast","border-"+n.subtype]),role:"alert"},[a("div",{class:O(["toast-header","bg-"+n.subtype])},[e[2]||(e[2]=a("strong",{class:"pr-2 mr-auto"},"openWB",-1)),n.timestamp?(l(),u("small",Bs,v(i.relativeTime),1)):p("",!0),a("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:e[0]||(e[0]=(...o)=>s.dismiss&&s.dismiss(...o))},e[1]||(e[1]=[a("span",{"aria-hidden":"true"},"×",-1)]))],2),a("div",Os,[g(t.$slots,"default",{},void 0,!0)])],2)}const $s=y(Ss,[["render",Cs],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),Is=Object.freeze(Object.defineProperty({__proto__:null,default:$s},Symbol.toStringTag,{value:"Module"}));C.add(Ae);const Ts={name:"OpenwbNavBar",components:{FontAwesomeIcon:$},computed:{nodeEnv(){return"development"}},watch:{$route(){this.$refs.collapsibleNavbar.classList.remove("show"),this.$refs.navbarButton.classList.add("collapsed"),this.$refs.navbarButton.setAttribute("aria-expanded",!1)}}},xs={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},Ms={ref:"navbarButton",class:"navbar-toggler mr-5",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar"},Vs={id:"collapsibleNavbar",ref:"collapsibleNavbar",class:"collapse navbar-collapse navbar-nav-scroll"},As={class:"navbar-nav"},Ps={class:"nav-item"},qs={class:"nav-item dropdown nav-separator-after"},Es={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Ds={class:"nav-item dropdown"},Ls={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},js={class:"nav-item dropdown"},Rs={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Ws={class:"nav-item dropdown"},Ns={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Fs={class:"nav-item dropdown"},Hs={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Us={class:"nav-item nav-separator-before"},zs={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Gs(t,e,n,d,i,s){const o=b("router-link"),_=b("font-awesome-icon");return l(),u("nav",xs,[e[31]||(e[31]=a("a",{class:"navbar-brand",href:"/openWB/web/"},[a("span",null,"openWB")],-1)),a("button",Ms,e[0]||(e[0]=[a("span",{class:"navbar-toggler-icon"},null,-1)]),512),a("div",Vs,[a("ul",As,[a("li",Ps,[f(o,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:c(()=>e[1]||(e[1]=[m(" Status ")])),_:1})]),a("li",qs,[e[4]||(e[4]=a("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),a("div",Es,[f(o,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[2]||(e[2]=[m(" Ladeprotokoll ")])),_:1}),f(o,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[3]||(e[3]=[m(" Diagramme ")])),_:1})])]),a("li",Ds,[e[7]||(e[7]=a("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),a("div",Ls,[f(o,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[5]||(e[5]=[m(" Allgemein ")])),_:1}),f(o,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[6]||(e[6]=[m(" Optionale Hardware ")])),_:1})])]),a("li",js,[e[13]||(e[13]=a("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),a("div",Rs,[f(o,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[8]||(e[8]=[m(" Übergreifendes ")])),_:1}),f(o,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[9]||(e[9]=[m(" Sofortladen ")])),_:1}),f(o,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[10]||(e[10]=[m(" PV-Laden ")])),_:1}),f(o,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[11]||(e[11]=[m(" Zeitladen ")])),_:1}),f(o,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[12]||(e[12]=[m(" Zielladen ")])),_:1})])]),a("li",Ws,[e[20]||(e[20]=a("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),a("div",Ns,[f(o,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[14]||(e[14]=[m(" Geräte und Komponenten ")])),_:1}),f(o,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[15]||(e[15]=[m(" Lastmanagement ")])),_:1}),f(o,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[16]||(e[16]=[m(" Ladepunkte ")])),_:1}),f(o,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[17]||(e[17]=[m(" Fahrzeuge ")])),_:1}),e[18]||(e[18]=a("div",{class:"dropdown-divider"},null,-1)),e[19]||(e[19]=a("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1))])]),a("li",Fs,[e[29]||(e[29]=a("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),a("div",Hs,[f(o,{to:"/System/InstallAssistant",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[21]||(e[21]=[m(" Einrichtungsassistent ")])),_:1}),f(o,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[22]||(e[22]=[m(" openWB Cloud ")])),_:1}),f(o,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[23]||(e[23]=[m(" MQTT-Brücken ")])),_:1}),f(o,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[24]||(e[24]=[m(" Fehlersuche ")])),_:1}),f(o,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[25]||(e[25]=[m(" Support ")])),_:1}),f(o,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[26]||(e[26]=[m(" Datenverwaltung ")])),_:1}),f(o,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[27]||(e[27]=[m(" System ")])),_:1}),f(o,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[28]||(e[28]=[m(" Rechtliches ")])),_:1})])]),a("li",Us,[a("a",zs,[e[30]||(e[30]=m(" Wiki ")),f(_,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Js=y(Ts,[["render",Gs],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Ks={name:"OpenwbPageFooter"},Qs={id:"footer",class:"footer bg-dark text-light font-small"},Zs={class:"container text-center"};function Ys(t,e,n,d,i,s){return l(),u("footer",Qs,[a("div",Zs,[a("small",null," Sie befinden sich hier: Einstellungen / "+v(t.$route.meta.heading),1)])])}const Xs=y(Ks,[["render",Ys],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]),eo={name:"ComponentState",emits:["reset","defaults","save"],data(){return{mqttTopicsToSubscribe:[]}},computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]},statusLevel(){return["success","warning","danger"]},stateIcon:{get(){switch(this.$store.state.mqtt[this.baseTopic+"/get/fault_state"]){case 0:return["fas","check-circle"];case 1:return["fas","exclamation-triangle"];case 2:return["fas","times-circle"];default:return["fas","check-circle"]}}}},mounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doUnsubscribe(this.mqttTopicsToSubscribe)},methods:{updateState(t,e,n=void 0){console.debug("updateState:",t,e,n),this.$store.commit({type:"updateTopic",topic:t,objectPath:n,payload:e})},ac_current2dc_power(t){return parseFloat((t*3*230/1e3).toFixed(0))},dc_power2ac_current(t){return parseFloat((t*1e3/230/3).toFixed(2))},getWildcardIndexList(t,e=!1){let n=t;e||(n="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let d=Object.keys(this.$store.state.mqtt).filter(i=>i.match(n));return d.forEach((i,s,o)=>{o[s]=parseInt(i.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),d},getWildcardTopics(t,e=!1){let n=t;return e||(n="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(d=>d.match(n)).reduce((d,i)=>({...d,[i]:this.$store.state.mqtt[i]}),{})},formatDate(t,e={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(t).toLocaleDateString(void 0,e)},formatNumber(t,e=0,n=e,d=1){if(!(t==null||isNaN(t)))return t=t*d,t.toLocaleString(void 0,{minimumFractionDigits:e,maximumFractionDigits:n})},formatNumberTopic(t,e=0,n=e,d=1){return this.$store.state.mqtt[t]?this.formatNumber(this.$store.state.mqtt[t],e,n,d):"-"},formatPhaseArrayNumberTopic(t,e=0,n=e,d=1){return this.$store.state.mqtt[t]?this.$store.state.mqtt[t].map(i=>this.formatNumber(i,e,n,d)).join(" / "):"- / - / -"},translateChargeMode(t){switch(t){case"instant_charging":return"Sofort";case"pv_charging":return"PV";case"scheduled_charging":return"Zielladen";case"time_charging":return"Zeitladen";case"standby":return"Standby";case"stop":return"Stop";default:return console.warn("unknown charge mode:",t),t}},getFaultStateSubtype(t){const e=this.$store.state.mqtt[t+"/get/fault_state"];if(e===void 0)return"warning";switch(e){case 0:return"success";case 1:return"warning";case 2:return"danger";default:return"dark"}}}},Q=y(eo,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);C.add(Pe,qe);const to={name:"OpenwbPageMessages",components:{FontAwesomeIcon:$,FontAwesomeLayers:Ee,FontAwesomeLayersText:De},mixins:[Q],data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+"],showAllMessages:!1,hiddenMessages:[]}},computed:{alertLevel(){return this.messages.reduce((e,n)=>((e=="light"&&["info","success","warning","danger"].includes(n.type)||e=="info"&&["success","warning","danger"].includes(n.type)||e=="success"&&["warning","danger"].includes(n.type)||e=="warning"&&n.type=="danger")&&(e=n.type),e),"light")},messages(){const t=[];return this.systemMessages.forEach(e=>{t.push(e)}),this.clientMessages.forEach(e=>{t.push(e)}),t.sort(this.compareMessagesByTimestamp),t},recentMessages(){return this.showAllMessages?this.messages:this.messages.filter(t=>!this.hiddenMessages.includes(t.topic))},messageIndicatorClass(){return"text-"+this.alertLevel},systemMessages(){let t=this.getWildcardTopics("openWB/system/messages/+");var e=[];for(const[n,d]of Object.entries(t))e.push({topic:n,...d});return e},clientMessages(){let t=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var e=[];for(const[n,d]of Object.entries(t))e.push({topic:n,...d});return e}},methods:{toggleAllMessages(){this.showAllMessages=!this.showAllMessages},compareMessagesByTimestamp(t,e){return e.timestamp-t.timestamp},clearTopic(t){this.$root.doPublish(t,void 0)},dismissMessage(t){this.clearTopic(t.topic);var e=this.hiddenMessages.indexOf(t.topic);e>-1&&this.hiddenMessages.splice(e,1)},dismissAllMessages(){this.messages.forEach(t=>{this.clearTopic(t.topic)}),this.hiddenMessages=[],this.toggleAllMessages()},hideMessage(t){this.hiddenMessages.includes(t.topic)||this.hiddenMessages.push(t.topic)}}},no=["innerHTML"];function so(t,e,n,d,i,s){const o=b("font-awesome-icon"),_=b("font-awesome-layers-text"),r=b("font-awesome-layers"),k=b("openwb-base-alert"),x=b("openwb-base-click-button"),q=b("openwb-base-toast");return l(),u(T,null,[(l(),h(F,{to:"body"},[a("div",{id:"message-indicator",class:O(["text-light mt-1 p-2 mr-1 clickable",i.showAllMessages?"active":""]),onClick:e[0]||(e[0]=(...A)=>s.toggleAllMessages&&s.toggleAllMessages(...A))},[f(r,{"full-width":"",style:{"font-size":"175%"}},{default:c(()=>[f(o,{"fixed-width":"",icon:i.showAllMessages?["fas","bell"]:["far","bell"],class:O(s.messageIndicatorClass)},null,8,["icon","class"]),s.messages.length>0?(l(),h(_,{key:0,counter:"",value:s.messages.length,position:"top-right",class:"message-counter bg-light text-dark"},null,8,["value"])):p("",!0)]),_:1})],2)])),s.recentMessages.length>0||i.showAllMessages?(l(),u("div",{key:0,class:O(["openwb-toast-container",i.showAllMessages?"full-height":""])},[s.recentMessages.length==0?(l(),h(k,{key:0,subtype:"info"},{default:c(()=>e[1]||(e[1]=[m(" Keine Nachrichten vorhanden. ")])),_:1})):i.showAllMessages?(l(),h(x,{key:1,class:"btn-sm btn-secondary mb-1",onButtonClicked:s.dismissAllMessages},{default:c(()=>e[2]||(e[2]=[m(" Alle Nachrichten löschen ")])),_:1},8,["onButtonClicked"])):p("",!0),(l(!0),u(T,null,P(s.recentMessages,A=>(l(),h(q,{key:A.topic,topic:A.topic,source:A.source,subtype:A.type,timestamp:A.timestamp,onDismiss:s.dismissMessage,onHide:s.hideMessage},{default:c(()=>[a("span",{innerHTML:A.message},null,8,no)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss","onHide"]))),128))],2)):p("",!0)],64)}const oo=y(to,[["render",so],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ao={name:"OpenwbPageBlocker",mixins:[Q],data(){return{mqttTopicsToSubscribe:["openWB/system/boot_done","openWB/system/update_in_progress"]}},computed:{title(){return this.bootInProgress||this.updateInProgress?"openWB ist noch nicht bereit":this.reloadRequired?"Neues Laden der Seite erforderlich":"???"},myButtons(){return!(this.bootInProgress||this.updateInProgress)&&this.reloadRequired?[{text:"Jetzt neu laden",subtype:"success",event:"reload"}]:[]},bootInProgress(){return this.$store.state.mqtt["openWB/system/boot_done"]==null?!0:!this.$store.state.mqtt["openWB/system/boot_done"]},updateInProgress(){return this.$store.state.mqtt["openWB/system/update_in_progress"]==null?!1:this.$store.state.mqtt["openWB/system/update_in_progress"]},reloadRequired(){return this.$store.state.local.reloadRequired},showModalBlocker(){return this.bootInProgress||this.updateInProgress||this.reloadRequired}},methods:{handleModalResult(t){t=="reload"?location.reload():console.warn("unknown event",t)}}},io={class:"openwb-blocker"},lo={key:0},ro={key:1},uo={key:2},co={key:3};function po(t,e,n,d,i,s){const o=b("openwb-base-modal-dialog");return l(),u("div",io,[f(o,{show:s.showModalBlocker,title:s.title,subtype:"dark","prevent-close":!0,buttons:s.myButtons,onModalResult:e[0]||(e[0]=_=>s.handleModalResult(_))},{default:c(()=>[s.bootInProgress?(l(),u("p",lo,"Der Systemstart ist noch nicht abgeschlossen.")):p("",!0),s.updateInProgress?(l(),u("p",ro,"Es wird eine Systemaktualisierung ausgeführt.")):p("",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(l(),u("p",uo,"Bitte die Seite neu laden.")):(l(),u("p",co,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const mo=y(ao,[["render",po],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const fo={name:"OpenwbSettingsApp",components:{NavBar:Js,PageFooter:Xs,Messages:oo,Blocker:mo},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3}}},computed:{mqttClientId(){try{return this.client.options.clientId}catch(t){console.error("mqttClientId error",t);return}},topicList(){return Object.keys(this.$store.state.mqtt)}},created(){this.createConnection()},methods:{async saveValues(t=void 0){function e(d){return new Promise(i=>setTimeout(i,d))}this.$store.state.local.savingData=!0;let n={};t===void 0?(console.debug("no topics defined, so save everything we have in store"),n=this.$store.state.mqtt):Array.isArray(t)?t.forEach(d=>{n[d]=this.$store.state.mqtt[d]}):console.error("expected array, got ",typeof t);for(const[d,i]of Object.entries(n)){let s=d.replace("openWB/","openWB/set/");console.debug("saving data:",s,i),this.doPublish(s,i),await e(100)}this.$store.state.local.savingData=!1},resetValues(t=this.topicList){console.debug("resetting values..."),console.debug("topics: ",t),this.doUnsubscribe(t),this.doSubscribe(t)},setDefaultValues(){console.debug("setting default values... (ToDo)")},sendCommand(t){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",t,!1)},createConnection(){const{protocol:t,host:e,port:n,endpoint:d,...i}=this.connection,s=`${t}://${e}:${n}${d}`;console.debug("connecting to broker:",s);try{this.client=oe.connect(s,i)}catch(o){console.error("mqtt.connect error",o)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"]),this.doSubscribe(["openWB/system/installAssistantDone"])}),this.client.on("error",o=>{console.error("Connection failed",o)}),this.client.on("message",(o,_)=>{if(_.toString().length>0){let r;try{r=JSON.parse(_.toString())}catch(k){console.debug("Json parsing failed, fallback to string: ",o,k),r=_.toString()}this.$store.commit("updateTopic",{topic:o,payload:r})}else this.$store.commit("removeTopic",o)})},doSubscribe(t){t.forEach(e=>{this.$store.commit("addSubscription",e),this.$store.getters.subscriptionCount(e)==1?(e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):this.$store.commit("addTopic",{topic:e,payload:void 0}),this.client.subscribe(e,{},n=>{if(n){console.error("Subscribe to topics error",n);return}})):console.debug("Already subscribed to topic: ",e)})},doUnsubscribe(t){t.forEach(e=>{this.$store.commit("removeSubscription",e),this.$store.getters.subscriptionCount(e)==0?(this.client.unsubscribe(e,n=>{n&&console.error("Unsubscribe error",n)}),e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic:",e),Object.keys(this.getWildcardTopics(e)).forEach(n=>{console.debug("removing wildcardTopic:",n),this.$store.commit("removeTopic",n)})):(console.debug("removing topic:",e),this.$store.commit("removeTopic",e))):console.debug("Still subscribed to topic: ",e)})},doPublish(t,e,n=!0,d=2){let i={qos:d,retain:n};this.client.publish(t,JSON.stringify(e),i,s=>{s&&console.error("Publish error",s)})},postClientMessage(t,e="secondary"){console.debug("postMessage:",t,e);const n=Date.now(),d="openWB/command/"+this.mqttClientId+"/messages/"+n;this.$store.commit({type:"addTopic",topic:d,payload:{message:t,type:e,source:"client",timestamp:Math.floor(n/1e3)}})},getWildcardTopics(t,e=!1){let n=t;return e||(n="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(d=>d.match(n)).reduce((d,i)=>({...d,[i]:this.$store.state.mqtt[i]}),{})}}},_o={role:"main",class:"container"},go={id:"content"};function bo(t,e,n,d,i,s){const o=b("nav-bar"),_=b("router-view"),r=b("page-footer"),k=b("messages"),x=b("blocker");return l(),u(T,null,[a("header",null,[f(o)]),a("div",_o,[a("div",go,[a("h1",null,v(t.$route.meta.heading),1),f(_,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])])]),f(r),f(k),f(x)],64)}const ho=y(fo,[["render",bo],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),vo="modulepreload",yo=function(t){return"/openWB/web/settings/"+t},N={},w=function(e,n,d){if(!n||n.length===0)return e();const i=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=yo(s),s in N)return;N[s]=!0;const o=s.endsWith(".css"),_=o?'[rel="stylesheet"]':"";if(!!d)for(let x=i.length-1;x>=0;x--){const q=i[x];if(q.href===s&&(!o||q.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${_}`))return;const k=document.createElement("link");if(k.rel=o?"stylesheet":vo,o||(k.as="script",k.crossOrigin=""),k.href=s,document.head.appendChild(k),o)return new Promise((x,q)=>{k.addEventListener("load",x),k.addEventListener("error",()=>q(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>e()).catch(s=>{const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=s,window.dispatchEvent(o),!o.defaultPrevented)throw s})};let Z={mqtt:{},mqttSubscriptions:{},local:{reloadRequired:!1,savingData:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im Wiki.'}};Z.examples={text1:"Text...",text2:"mail@domain.com",text3:"openwb.local",text4:"http://www.openwb.de",text5:"Benutzername",text6:"12:34",text7:"2021-10-31",number1:5,number2:10,number3:28e-5,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:void 0,buttonGroup1:1,checkbox1:!0,json1:{text:"Text",number:123},hierarchy1:[{id:0,type:"counter",children:[{id:3,type:"inverter",children:[]},{id:4,type:"bat",children:[]},{id:1,type:"cp",children:[]},{id:2,type:"cp",children:[]}]}],hierarchy1Labels:{0:"EVU",1:"Ladepunkt 1",2:"Ladepunkt 2",3:"Wechselrichter",4:"Batteriespeicher"},tags:["1234","2345","3456"]};const E=ae({state:Z,mutations:{storeLocal(t,e){t.local[e.name]=e.value},addTopic(t,e){Object.keys(t.mqtt).includes(e.topic)?console.warn("topic already exists: ",e.topic):t.mqtt[e.topic]=e.payload},removeTopic(t,e){delete t.mqtt[e]},updateTopic(t,e){const n=(d,i,s)=>i.split(".").reduce((o,_,r)=>o[_]=i.split(".").length===++r?s:o[_]||{},d);e.topic in t.mqtt||!(e.topic in t.examples)?e.objectPath!=null?n(t.mqtt[e.topic],e.objectPath,e.payload):t.mqtt[e.topic]=e.payload:(console.debug("topic not found in state.mqtt: ",e.topic),e.topic in t.examples?e.objectPath!=null?n(t.examples[e.topic],e.objectPath,e.payload):t.examples[e.topic]=e.payload:console.warn("topic not found in state: ",e.topic," giving up"))},addSubscription(t,e){e in t.mqttSubscriptions?t.mqttSubscriptions[e]+=1:t.mqttSubscriptions[e]=1,console.debug("subscription count: ",e,t.mqttSubscriptions[e])},removeSubscription(t,e){e in t.mqttSubscriptions&&(t.mqttSubscriptions[e]-=1,t.mqttSubscriptions[e]<=0&&delete t.mqttSubscriptions[e])}},actions:{},modules:{},getters:{usageTermsAcknowledged(t){return new Promise(e=>{if(t.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0)e(t.mqtt["openWB/system/usage_terms_acknowledged"]);else{var n,d;n=setTimeout(()=>{clearInterval(d),e(!1)},5e3),d=setInterval(()=>{t.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(n),clearInterval(d),e(t.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})},installAssistantDone(t){return new Promise(e=>{if(t.mqtt["openWB/system/installAssistantDone"]!==void 0)e(t.mqtt["openWB/system/installAssistantDone"]);else{var n,d;n=setTimeout(()=>{clearInterval(d),e(!1)},5e3),d=setInterval(()=>{t.mqtt["openWB/system/installAssistantDone"]!==void 0&&(clearTimeout(n),clearInterval(d),e(t.mqtt["openWB/system/installAssistantDone"]))},100)}})},subscriptionCount:t=>e=>t.mqttSubscriptions[e]||0}}),Y=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>w(()=>import("./Status-3484f650.js"),["assets/Status-3484f650.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-chartjs-1398beb1.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/Status-9ecf39ed.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>w(()=>import("./ChargeLog-7f7c5fe2.js"),["assets/ChargeLog-7f7c5fe2.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/ChargeLog-1fb3fa68.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>w(()=>import("./Chart-bf602480.js"),["assets/Chart-bf602480.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-chartjs-1398beb1.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>w(()=>import("./GeneralConfig-b0e93144.js").then(t=>t.a),["assets/GeneralConfig-b0e93144.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/dynamic-import-helper-be004503.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>w(()=>import("./OptionalComponents-f79f9835.js").then(t=>t.O),["assets/OptionalComponents-f79f9835.js","assets/dynamic-import-helper-be004503.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>w(()=>import("./GeneralChargeConfig-401ab7d4.js").then(t=>t.G),["assets/GeneralChargeConfig-401ab7d4.js","assets/dynamic-import-helper-be004503.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>w(()=>import("./InstantChargeConfig-8da1d692.js"),["assets/InstantChargeConfig-8da1d692.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>w(()=>import("./PVChargeConfig-c750b618.js"),["assets/PVChargeConfig-c750b618.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>w(()=>import("./TimeChargeConfig-d3210f64.js"),["assets/TimeChargeConfig-d3210f64.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>w(()=>import("./ScheduledChargeConfig-85a95906.js"),["assets/ScheduledChargeConfig-85a95906.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>w(()=>import("./HardwareInstallation-3a644290.js").then(t=>t.a),["assets/HardwareInstallation-3a644290.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/dynamic-import-helper-be004503.js"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>w(()=>import("./LoadManagementConfig-c15dfafe.js"),["assets/LoadManagementConfig-c15dfafe.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/OpenwbSortableList-bde71f66.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>w(()=>import("./ChargePointInstallation-408ee2ed.js").then(t=>t.c),["assets/ChargePointInstallation-408ee2ed.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-7b9399a8.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>w(()=>import("./VehicleConfig-a49bda81.js").then(t=>t.b),["assets/VehicleConfig-a49bda81.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/dynamic-import-helper-be004503.js"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>w(()=>import("./CloudConfig-c17b71a6.js"),["assets/CloudConfig-c17b71a6.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>w(()=>import("./MqttBridgeConfig-74fa4482.js"),["assets/MqttBridgeConfig-74fa4482.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>w(()=>import("./DebugConfig-ee93cd2f.js"),["assets/DebugConfig-ee93cd2f.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/DebugConfig-e21ab72c.css"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>w(()=>import("./Support-aeee7674.js"),["assets/Support-aeee7674.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>w(()=>import("./LegalSettings-0ab5ea05.js"),["assets/LegalSettings-0ab5ea05.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>w(()=>import("./System-20e6cb5e.js"),["assets/System-20e6cb5e.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>w(()=>import("./DataManagement-f14600c5.js").then(t=>t.a),["assets/DataManagement-f14600c5.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/dynamic-import-helper-be004503.js"])},{path:"/System/InstallAssistant",name:"InstallAssistant",meta:{heading:"System - Einrichtungsassistent"},component:()=>w(()=>import("./InstallAssistant-06ef733c.js"),["assets/InstallAssistant-06ef733c.js","assets/dynamic-import-helper-be004503.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js"])}];Y.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>w(()=>import("./TestingStore-96106450.js"),["assets/TestingStore-96106450.js","assets/OpenwbSortableList-bde71f66.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js"])});const j=ie({history:le(),routes:Y});j.beforeEach(async t=>{if(await E.getters.usageTermsAcknowledged){if(!await E.getters.installAssistantDone&&t.name!=="InstallAssistant")return{name:"InstallAssistant"}}else if(t.name!=="LegalSettings")return{name:"LegalSettings"}});j.afterEach(t=>{t.meta.heading?document.title="openWB | "+t.meta.heading:document.title="openWB"});const R=re(ho);R.use(E).use(j).use(Le,je);const wo=Object.assign({"./components/OpenwbBaseAlert.vue":Fe,"./components/OpenwbBaseArrayInput.vue":dt,"./components/OpenwbBaseAvatar.vue":ft,"./components/OpenwbBaseButtonGroupInput.vue":yt,"./components/OpenwbBaseButtonInput.vue":$t,"./components/OpenwbBaseCard.vue":Dt,"./components/OpenwbBaseCheckboxInput.vue":Nt,"./components/OpenwbBaseClickButton.vue":St,"./components/OpenwbBaseCopyToClipboard.vue":Gt,"./components/OpenwbBaseHeading.vue":tn,"./components/OpenwbBaseModalDialog.vue":cn,"./components/OpenwbBaseNumberInput.vue":yn,"./components/OpenwbBaseRangeInput.vue":Tn,"./components/OpenwbBaseSelectInput.vue":Nn,"./components/OpenwbBaseSettingElement.vue":Ye,"./components/OpenwbBaseSubmitButtons.vue":Qn,"./components/OpenwbBaseTextInput.vue":cs,"./components/OpenwbBaseTextarea.vue":ks,"./components/OpenwbBaseToast.vue":Is});Object.entries(wo).forEach(([t,e])=>{const n=de(ue(t.split("/").pop().replace(/\.\w+$/,"")));R.component(n,e.default)});R.mount("#app");export{Q as C,M as O,w as _}; diff --git a/web/settings/assets/inverter-82378537.js b/web/settings/assets/inverter-1170f457.js similarity index 67% rename from web/settings/assets/inverter-82378537.js rename to web/settings/assets/inverter-1170f457.js index 5eb43423df..3c2bb95654 100644 --- a/web/settings/assets/inverter-82378537.js +++ b/web/settings/assets/inverter-1170f457.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as a,u as o,l,m as u,G as n,E as m,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitInverter",mixins:[p]},v={class:"device-openwb-evukit-inverter"};function _(t,e,f,b,w,g){const i=o("openwb-base-heading"),r=o("openwb-base-select-input");return l(),u("div",v,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Wechselrichter ")])),_:1}),n(r,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/inverter.vue"]]);export{$ as default}; +import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as a,u as o,l,m as u,G as n,E as m,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitInverter",mixins:[p]},v={class:"device-openwb-evukit-inverter"};function _(t,e,f,b,w,g){const i=o("openwb-base-heading"),r=o("openwb-base-select-input");return l(),u("div",v,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Wechselrichter ")])),_:1}),n(r,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/inverter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/inverter-4a2cdfd9.js b/web/settings/assets/inverter-1632a4b1.js similarity index 65% rename from web/settings/assets/inverter-4a2cdfd9.js rename to web/settings/assets/inverter-1632a4b1.js index f239176113..c361ca4c0f 100644 --- a/web/settings/assets/inverter-4a2cdfd9.js +++ b/web/settings/assets/inverter-1632a4b1.js @@ -1 +1 @@ -import{C as a}from"./HardwareInstallation-3a644290.js";import{_ as m,u as n,l as p,m as u,G as t,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLoggerInverter",mixins:[a]},_={class:"device-huawei-smart-logger-inverter"};function g(o,e,b,f,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return p(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Huawei SmartLogger Wechselrichter ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const H=m(c,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/inverter.vue"]]);export{H as default}; +import{C as a}from"./HardwareInstallation-727b5962.js";import{_ as m,u as n,l as p,m as u,G as t,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLoggerInverter",mixins:[a]},_={class:"device-huawei-smart-logger-inverter"};function g(o,e,b,f,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return p(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Huawei SmartLogger Wechselrichter ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const H=m(c,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/inverter.vue"]]);export{H as default}; diff --git a/web/settings/assets/inverter-1e549543.js b/web/settings/assets/inverter-1a290548.js similarity index 63% rename from web/settings/assets/inverter-1e549543.js rename to web/settings/assets/inverter-1a290548.js index 8df7136920..720af47736 100644 --- a/web/settings/assets/inverter-1e549543.js +++ b/web/settings/assets/inverter-1a290548.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as a,u as n,l as m,m as l,G as t,E as u,y as d}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisInverter",mixins:[p]},_={class:"device-solis-inverter"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),l("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[d(" Einstellungen für Solis Wechselrichter ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const I=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/inverter.vue"]]);export{I as default}; +import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as a,u as n,l as m,m as l,G as t,E as u,B as d}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisInverter",mixins:[p]},_={class:"device-solis-inverter"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),l("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[d(" Einstellungen für Solis Wechselrichter ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const I=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/inverter.vue"]]);export{I as default}; diff --git a/web/settings/assets/inverter-68f31134.js b/web/settings/assets/inverter-29c8bc0a.js similarity index 64% rename from web/settings/assets/inverter-68f31134.js rename to web/settings/assets/inverter-29c8bc0a.js index 6d9609511e..c23c6c4f6b 100644 --- a/web/settings/assets/inverter-68f31134.js +++ b/web/settings/assets/inverter-29c8bc0a.js @@ -1 +1 @@ -import{C as a}from"./HardwareInstallation-3a644290.js";import{_ as p,u as n,l as m,m as d,G as t,E as l,y as u}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolaredgeInverter",mixins:[a]},_={class:"device-solaredge-inverter"};function f(o,e,g,b,v,w){const r=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),d("div",_,[t(r,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für SolarEdge Wechselrichter ")])),_:1}),t(i,{title:"SolarEdge-Geräte-ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const D=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/inverter.vue"]]);export{D as default}; +import{C as a}from"./HardwareInstallation-727b5962.js";import{_ as p,u as n,l as m,m as d,G as t,E as l,B as u}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolaredgeInverter",mixins:[a]},_={class:"device-solaredge-inverter"};function f(o,e,g,b,v,w){const r=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),d("div",_,[t(r,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für SolarEdge Wechselrichter ")])),_:1}),t(i,{title:"SolarEdge-Geräte-ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const D=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/inverter.vue"]]);export{D as default}; diff --git a/web/settings/assets/inverter-617b5e4a.js b/web/settings/assets/inverter-2e18bb9f.js similarity index 75% rename from web/settings/assets/inverter-617b5e4a.js rename to web/settings/assets/inverter-2e18bb9f.js index d7ff7618d8..ce434d843d 100644 --- a/web/settings/assets/inverter-617b5e4a.js +++ b/web/settings/assets/inverter-2e18bb9f.js @@ -1 +1 @@ -import{C as u}from"./HardwareInstallation-3a644290.js";import{_ as m,u as r,l as d,m as g,G as o,E as l,y as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceVZLoggerInverter",mixins:[u]},_={class:"device-vzlogger-inverter"};function c(n,e,v,b,w,Z){const a=r("openwb-base-heading"),p=r("openwb-base-alert"),i=r("openwb-base-number-input");return d(),g("div",_,[o(a,null,{default:l(()=>e[2]||(e[2]=[s(" Einstellungen für VZLogger Wechselrichter ")])),_:1}),o(p,{subtype:"info"},{default:l(()=>e[3]||(e[3]=[s(' Bitte auf der Shell ausführen: "curl -s IPdesVZLogger:Port | jq .|cat -n" Zählen, in welcher Zeile der gesuchte Wert steht. Bei der ersten Zeile mit 1 anfangen zu zählen. ')])),_:1}),o(i,{title:"Zeile der Leistung",required:"",min:0,"model-value":n.component.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.line_power"))},null,8,["model-value"]),o(i,{title:"Zeile der exportierten Energie (Ertrag)",min:0,"model-value":n.component.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.line_exported"))},null,8,["model-value"])])}const W=m(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/inverter.vue"]]);export{W as default}; +import{C as u}from"./HardwareInstallation-727b5962.js";import{_ as m,u as r,l as d,m as g,G as o,E as l,B as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceVZLoggerInverter",mixins:[u]},_={class:"device-vzlogger-inverter"};function c(n,e,v,b,w,Z){const a=r("openwb-base-heading"),p=r("openwb-base-alert"),i=r("openwb-base-number-input");return d(),g("div",_,[o(a,null,{default:l(()=>e[2]||(e[2]=[s(" Einstellungen für VZLogger Wechselrichter ")])),_:1}),o(p,{subtype:"info"},{default:l(()=>e[3]||(e[3]=[s(' Bitte auf der Shell ausführen: "curl -s IPdesVZLogger:Port | jq .|cat -n" Zählen, in welcher Zeile der gesuchte Wert steht. Bei der ersten Zeile mit 1 anfangen zu zählen. ')])),_:1}),o(i,{title:"Zeile der Leistung",required:"",min:0,"model-value":n.component.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.line_power"))},null,8,["model-value"]),o(i,{title:"Zeile der exportierten Energie (Ertrag)",min:0,"model-value":n.component.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.line_exported"))},null,8,["model-value"])])}const W=m(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/inverter.vue"]]);export{W as default}; diff --git a/web/settings/assets/inverter-896676a9.js b/web/settings/assets/inverter-387e64b9.js similarity index 67% rename from web/settings/assets/inverter-896676a9.js rename to web/settings/assets/inverter-387e64b9.js index d4fce9abee..f4e0942f4c 100644 --- a/web/settings/assets/inverter-896676a9.js +++ b/web/settings/assets/inverter-387e64b9.js @@ -1 +1 @@ -import{C as u}from"./HardwareInstallation-3a644290.js";import{_ as l,u as t,l as m,m as c,G as r,E as i,y as n,x as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfoxInverter",mixins:[u]},b={class:"device-powerfox-inverter"};function g(o,e,v,w,x,_){const a=t("openwb-base-heading"),p=t("openwb-base-text-input");return m(),c("div",b,[r(a,null,{default:i(()=>e[1]||(e[1]=[n(" Einstellungen für Powerfox Wechselrichter ")])),_:1}),r(p,{title:"ID",required:"","model-value":o.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>o.updateConfiguration(d,"configuration.id"))},{help:i(()=>e[2]||(e[2]=[n(" Um die ID herauszufinden mit dem Browser die Adresse "),s("a",{href:"https://backend.powerfox.energy/api/2.0/my/all/devices",target:"_blank",rel:"noopener noreferrer"}," https://backend.powerfox.energy/api/2.0/my/all/devices ",-1),n(" aufrufen und dort Benutzername und Passwort eingeben. Die DeviceID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/Kleinschreibung ist zu beachten! In dem Feld ist nur die Zeichenfolge direkt hinter "),s("span",{class:"font-weight-bold text-monospace",style:{display:"contents"}},' "DeviceID" ',-1),n(" ohne den Doppelpunkt und Anführungszeichen einzutragen. ")])),_:1},8,["model-value"])])}const $=l(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/inverter.vue"]]);export{$ as default}; +import{C as u}from"./HardwareInstallation-727b5962.js";import{_ as l,u as t,l as m,m as c,G as r,E as i,B as n,A as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfoxInverter",mixins:[u]},b={class:"device-powerfox-inverter"};function g(o,e,v,w,_,x){const a=t("openwb-base-heading"),p=t("openwb-base-text-input");return m(),c("div",b,[r(a,null,{default:i(()=>e[1]||(e[1]=[n(" Einstellungen für Powerfox Wechselrichter ")])),_:1}),r(p,{title:"ID",required:"","model-value":o.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>o.updateConfiguration(d,"configuration.id"))},{help:i(()=>e[2]||(e[2]=[n(" Um die ID herauszufinden mit dem Browser die Adresse "),s("a",{href:"https://backend.powerfox.energy/api/2.0/my/all/devices",target:"_blank",rel:"noopener noreferrer"}," https://backend.powerfox.energy/api/2.0/my/all/devices ",-1),n(" aufrufen und dort Benutzername und Passwort eingeben. Die DeviceID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/Kleinschreibung ist zu beachten! In dem Feld ist nur die Zeichenfolge direkt hinter "),s("span",{class:"font-weight-bold text-monospace",style:{display:"contents"}},' "DeviceID" ',-1),n(" ohne den Doppelpunkt und Anführungszeichen einzutragen. ")])),_:1},8,["model-value"])])}const V=l(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/inverter.vue"]]);export{V as default}; diff --git a/web/settings/assets/inverter-c0d3b643.js b/web/settings/assets/inverter-407f4ad4.js similarity index 78% rename from web/settings/assets/inverter-c0d3b643.js rename to web/settings/assets/inverter-407f4ad4.js index 8dc0934acf..f18aa0e754 100644 --- a/web/settings/assets/inverter-c0d3b643.js +++ b/web/settings/assets/inverter-407f4ad4.js @@ -1 +1 @@ -import{C as u}from"./HardwareInstallation-3a644290.js";import{_ as d,u as s,l as b,m as f,G as o,E as i,y as t,x as n,F as p}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceMqttInverter",mixins:[u]},v={class:"device-mqtt-inverter"};function w(r,e,c,x,z,B){const a=s("openwb-base-heading"),l=s("openwb-base-copy-to-clipboard"),m=s("openwb-base-alert");return b(),f("div",v,[o(a,null,{default:i(()=>e[0]||(e[0]=[t(" Einstellungen für MQTT Wechselrichter ")])),_:1}),o(m,{subtype:"info"},{default:i(()=>[e[9]||(e[9]=t(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: ")),n("ul",null,[n("li",null,[o(l,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/pv/"+p(r.component.id)+"/get/power ",1)]),_:1}),e[1]||(e[1]=n("br",null,null,-1)),e[2]||(e[2]=t(" PV-Leistung in Watt als Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) Beispiel: ")),e[3]||(e[3]=n("span",{class:"text-info"},"-123",-1))]),n("li",null,[o(l,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/pv/"+p(r.component.id)+"/get/exported ",1)]),_:1}),e[4]||(e[4]=n("br",null,null,-1)),e[5]||(e[5]=t(" Erzeugte Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),e[6]||(e[6]=n("br",null,null,-1)),e[7]||(e[7]=t(" Beispiel: ")),e[8]||(e[8]=n("span",{class:"text-info"},"123.45",-1))])])]),_:1})])}const N=d(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/inverter.vue"]]);export{N as default}; +import{C as u}from"./HardwareInstallation-727b5962.js";import{_ as d,u as s,l as b,m as f,G as o,E as i,B as t,A as n,F as p}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceMqttInverter",mixins:[u]},v={class:"device-mqtt-inverter"};function w(r,e,c,B,x,z){const a=s("openwb-base-heading"),l=s("openwb-base-copy-to-clipboard"),m=s("openwb-base-alert");return b(),f("div",v,[o(a,null,{default:i(()=>e[0]||(e[0]=[t(" Einstellungen für MQTT Wechselrichter ")])),_:1}),o(m,{subtype:"info"},{default:i(()=>[e[9]||(e[9]=t(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: ")),n("ul",null,[n("li",null,[o(l,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/pv/"+p(r.component.id)+"/get/power ",1)]),_:1}),e[1]||(e[1]=n("br",null,null,-1)),e[2]||(e[2]=t(" PV-Leistung in Watt als Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) Beispiel: ")),e[3]||(e[3]=n("span",{class:"text-info"},"-123",-1))]),n("li",null,[o(l,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/pv/"+p(r.component.id)+"/get/exported ",1)]),_:1}),e[4]||(e[4]=n("br",null,null,-1)),e[5]||(e[5]=t(" Erzeugte Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),e[6]||(e[6]=n("br",null,null,-1)),e[7]||(e[7]=t(" Beispiel: ")),e[8]||(e[8]=n("span",{class:"text-info"},"123.45",-1))])])]),_:1})])}const N=d(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/inverter.vue"]]);export{N as default}; diff --git a/web/settings/assets/inverter-62de90f4.js b/web/settings/assets/inverter-4cc98b34.js similarity index 63% rename from web/settings/assets/inverter-62de90f4.js rename to web/settings/assets/inverter-4cc98b34.js index 7cd677aa83..8409580a34 100644 --- a/web/settings/assets/inverter-62de90f4.js +++ b/web/settings/assets/inverter-4cc98b34.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as a,u as n,l as m,m as u,G as t,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssInverter",mixins:[p]},c={class:"device-fox_ess-inverter"};function f(o,e,b,v,x,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für FoxEss Wechselrichter ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const F=a(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/inverter.vue"]]);export{F as default}; +import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as a,u as n,l as m,m as u,G as t,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssInverter",mixins:[p]},c={class:"device-fox_ess-inverter"};function f(o,e,b,v,x,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für FoxEss Wechselrichter ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const F=a(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/inverter.vue"]]);export{F as default}; diff --git a/web/settings/assets/inverter-c1990994.js b/web/settings/assets/inverter-5009ea23.js similarity index 65% rename from web/settings/assets/inverter-c1990994.js rename to web/settings/assets/inverter-5009ea23.js index 3aefb29196..506378d02c 100644 --- a/web/settings/assets/inverter-c1990994.js +++ b/web/settings/assets/inverter-5009ea23.js @@ -1 +1 @@ -import{C as a}from"./HardwareInstallation-3a644290.js";import{_ as d,u as n,l as u,m as c,G as t,E as i,y as r}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceMTecInverter",mixins:[a]},_={class:"device-mtec-inverter"};function b(o,e,f,v,g,w){const s=n("openwb-base-heading"),m=n("openwb-base-number-input");return u(),c("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für M-Tec Wechselrichter ")])),_:1}),t(m,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[r(" Die Standard-Modbus-ID von M-Tec ist 247 ")])),_:1},8,["model-value"])])}const V=d(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/inverter.vue"]]);export{V as default}; +import{C as a}from"./HardwareInstallation-727b5962.js";import{_ as d,u as n,l as u,m as c,G as t,E as i,B as r}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceMTecInverter",mixins:[a]},_={class:"device-mtec-inverter"};function b(o,e,f,v,g,w){const s=n("openwb-base-heading"),m=n("openwb-base-number-input");return u(),c("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für M-Tec Wechselrichter ")])),_:1}),t(m,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[r(" Die Standard-Modbus-ID von M-Tec ist 247 ")])),_:1},8,["model-value"])])}const V=d(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/inverter.vue"]]);export{V as default}; diff --git a/web/settings/assets/inverter-50a72e83.js b/web/settings/assets/inverter-50a72e83.js new file mode 100644 index 0000000000..49060a46c5 --- /dev/null +++ b/web/settings/assets/inverter-50a72e83.js @@ -0,0 +1 @@ +import{C as e}from"./HardwareInstallation-727b5962.js";import{_ as t,l as o,m as n}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const r={name:"DeviceOpenDTUInverter",mixins:[e]},i={class:"device-opendtu-inverter"};function p(s,c,m,a,_,d){return o(),n("div",i)}const h=t(r,[["render",p],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/opendtu/opendtu/inverter.vue"]]);export{h as default}; diff --git a/web/settings/assets/inverter-5571eba7.js b/web/settings/assets/inverter-5571eba7.js deleted file mode 100644 index 97b8bf7a3e..0000000000 --- a/web/settings/assets/inverter-5571eba7.js +++ /dev/null @@ -1 +0,0 @@ -import{C as e}from"./HardwareInstallation-3a644290.js";import{_ as t,l as o,m as n}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const r={name:"DeviceOpenDTUInverter",mixins:[e]},i={class:"device-opendtu-inverter"};function p(s,c,m,a,_,d){return o(),n("div",i)}const h=t(r,[["render",p],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/opendtu/opendtu/inverter.vue"]]);export{h as default}; diff --git a/web/settings/assets/inverter-39ce3cb1.js b/web/settings/assets/inverter-62f3baf9.js similarity index 63% rename from web/settings/assets/inverter-39ce3cb1.js rename to web/settings/assets/inverter-62f3baf9.js index 7bc9db1402..5c1f2f8d45 100644 --- a/web/settings/assets/inverter-39ce3cb1.js +++ b/web/settings/assets/inverter-62f3baf9.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as a,u as n,l as m,m as d,G as t,E as u,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDeyeInverter",mixins:[p]},_={class:"device-deye-inverter"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),d("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[l(" Einstellungen für Deye Wechselrichter ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const k=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/inverter.vue"]]);export{k as default}; +import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as a,u as n,l as m,m as d,G as t,E as u,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDeyeInverter",mixins:[p]},_={class:"device-deye-inverter"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),d("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[l(" Einstellungen für Deye Wechselrichter ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const k=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-0931beee.js b/web/settings/assets/inverter-66844342.js similarity index 73% rename from web/settings/assets/inverter-0931beee.js rename to web/settings/assets/inverter-66844342.js index 1597edc6d5..26b94de046 100644 --- a/web/settings/assets/inverter-0931beee.js +++ b/web/settings/assets/inverter-66844342.js @@ -1 +1 @@ -import{C as s}from"./HardwareInstallation-3a644290.js";import{_ as a,u as t,l as u,m,G as i,E as d,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const v={name:"DeviceOpenwbFlexInverter",mixins:[s]},b={class:"device-openwb-flex-inverter"};function f(o,e,_,w,x,g){const r=t("openwb-base-heading"),l=t("openwb-base-select-input"),p=t("openwb-base-number-input");return u(),m("div",b,[i(r,null,{default:d(()=>e[2]||(e[2]=[c(" Einstellungen für openWB-Flex Wechselrichter ")])),_:1}),i(l,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"},{value:3,text:"SDM120"}],"model-value":o.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(p,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":o.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const W=a(v,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/inverter.vue"]]);export{W as default}; +import{C as s}from"./HardwareInstallation-727b5962.js";import{_ as a,u as t,l as u,m,G as i,E as d,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const v={name:"DeviceOpenwbFlexInverter",mixins:[s]},b={class:"device-openwb-flex-inverter"};function f(o,e,_,w,x,g){const r=t("openwb-base-heading"),l=t("openwb-base-select-input"),p=t("openwb-base-number-input");return u(),m("div",b,[i(r,null,{default:d(()=>e[2]||(e[2]=[c(" Einstellungen für openWB-Flex Wechselrichter ")])),_:1}),i(l,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"},{value:3,text:"SDM120"}],"model-value":o.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(p,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":o.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const W=a(v,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/inverter.vue"]]);export{W as default}; diff --git a/web/settings/assets/inverter-d75d32f1.js b/web/settings/assets/inverter-6cea7a86.js similarity index 68% rename from web/settings/assets/inverter-d75d32f1.js rename to web/settings/assets/inverter-6cea7a86.js index 173332d202..580dbb6029 100644 --- a/web/settings/assets/inverter-d75d32f1.js +++ b/web/settings/assets/inverter-6cea7a86.js @@ -1 +1 @@ -import{C as d}from"./HardwareInstallation-3a644290.js";import{_ as m,u as r,l as u,m as c,G as n,E as i,y as o,x as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const v={name:"DeviceDiscovergyInverter",mixins:[d]},f={class:"device-discovergy-inverter"};function g(t,e,_,b,w,x){const s=r("openwb-base-heading"),a=r("openwb-base-text-input");return u(),c("div",f,[n(s,null,{default:i(()=>e[1]||(e[1]=[o(" Einstellungen für Discovergy Wechselrichter ")])),_:1}),n(a,{title:"Meter-ID",required:"","model-value":t.component.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>e[2]||(e[2]=[o(" Um die ID herauszufinden mit dem Browser die Adresse "),l("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1),o(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")])),_:1},8,["model-value"])])}const z=m(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/inverter.vue"]]);export{z as default}; +import{C as d}from"./HardwareInstallation-727b5962.js";import{_ as m,u as r,l as u,m as c,G as n,E as i,B as o,A as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const v={name:"DeviceDiscovergyInverter",mixins:[d]},f={class:"device-discovergy-inverter"};function g(t,e,_,b,w,h){const s=r("openwb-base-heading"),a=r("openwb-base-text-input");return u(),c("div",f,[n(s,null,{default:i(()=>e[1]||(e[1]=[o(" Einstellungen für Discovergy Wechselrichter ")])),_:1}),n(a,{title:"Meter-ID",required:"","model-value":t.component.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>e[2]||(e[2]=[o(" Um die ID herauszufinden mit dem Browser die Adresse "),l("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1),o(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")])),_:1},8,["model-value"])])}const z=m(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/inverter.vue"]]);export{z as default}; diff --git a/web/settings/assets/inverter-f287a1d4.js b/web/settings/assets/inverter-6dedf2c0.js similarity index 71% rename from web/settings/assets/inverter-f287a1d4.js rename to web/settings/assets/inverter-6dedf2c0.js index 656635d378..3439361f1c 100644 --- a/web/settings/assets/inverter-f287a1d4.js +++ b/web/settings/assets/inverter-6dedf2c0.js @@ -1 +1 @@ -import{C as s}from"./HardwareInstallation-3a644290.js";import{_ as a,u as t,l as m,m as l,G as i,E as d,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceVictronInverter",mixins:[s]},_={class:"device-victron-inverter"};function f(o,e,v,g,w,V){const r=t("openwb-base-heading"),p=t("openwb-base-number-input"),u=t("openwb-base-button-group-input");return m(),l("div",_,[i(r,null,{default:d(()=>e[2]||(e[2]=[c(" Einstellungen für Victron Wechselrichter ")])),_:1}),i(p,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(u,{title:"MPPT",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":o.component.configuration.mppt,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.mppt"))},null,8,["model-value"])])}const I=a(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/inverter.vue"]]);export{I as default}; +import{C as s}from"./HardwareInstallation-727b5962.js";import{_ as a,u as t,l as m,m as l,G as i,E as d,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceVictronInverter",mixins:[s]},_={class:"device-victron-inverter"};function f(o,e,v,g,w,V){const r=t("openwb-base-heading"),p=t("openwb-base-number-input"),u=t("openwb-base-button-group-input");return m(),l("div",_,[i(r,null,{default:d(()=>e[2]||(e[2]=[c(" Einstellungen für Victron Wechselrichter ")])),_:1}),i(p,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(u,{title:"MPPT",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":o.component.configuration.mppt,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.mppt"))},null,8,["model-value"])])}const I=a(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/inverter.vue"]]);export{I as default}; diff --git a/web/settings/assets/inverter-cad24111.js b/web/settings/assets/inverter-8ea576fa.js similarity index 72% rename from web/settings/assets/inverter-cad24111.js rename to web/settings/assets/inverter-8ea576fa.js index 51ff4f7648..7ff835b48c 100644 --- a/web/settings/assets/inverter-cad24111.js +++ b/web/settings/assets/inverter-8ea576fa.js @@ -1 +1 @@ -import{C as l}from"./HardwareInstallation-3a644290.js";import{_ as u,u as n,l as d,m as c,G as o,E as r,y as i}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSmahmInverter",mixins:[l]},f={class:"device-smahm-inverter"};function b(t,e,v,g,h,w){const s=n("openwb-base-heading"),a=n("openwb-base-alert"),m=n("openwb-base-number-input");return d(),c("div",f,[o(s,null,{default:r(()=>e[1]||(e[1]=[i(" Einstellungen für SMA-HM/EM Wechselrichter ")])),_:1}),o(a,{subtype:"info"},{default:r(()=>e[2]||(e[2]=[i(' Dies ist nur die richtige Komponente, wenn ein extra EnergyMeter ausschließlich für die PV-Messung vorhanden ist. Wenn nur ein HomeManager vorhanden ist, muss ein Gerät "SMA Sunny Boy" mit der entsprechenden Wechselrichter-Komponente angelegt werden. ')])),_:1}),o(m,{title:"Seriennummer",required:"","model-value":t.component.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.serials"))},null,8,["model-value"])])}const $=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_shm/inverter.vue"]]);export{$ as default}; +import{C as l}from"./HardwareInstallation-727b5962.js";import{_ as u,u as n,l as d,m as c,G as o,E as r,B as i}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSmahmInverter",mixins:[l]},f={class:"device-smahm-inverter"};function b(t,e,v,g,h,w){const s=n("openwb-base-heading"),a=n("openwb-base-alert"),m=n("openwb-base-number-input");return d(),c("div",f,[o(s,null,{default:r(()=>e[1]||(e[1]=[i(" Einstellungen für SMA-HM/EM Wechselrichter ")])),_:1}),o(a,{subtype:"info"},{default:r(()=>e[2]||(e[2]=[i(' Dies ist nur die richtige Komponente, wenn ein extra EnergyMeter ausschließlich für die PV-Messung vorhanden ist. Wenn nur ein HomeManager vorhanden ist, muss ein Gerät "SMA Sunny Boy" mit der entsprechenden Wechselrichter-Komponente angelegt werden. ')])),_:1}),o(m,{title:"Seriennummer",required:"","model-value":t.component.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.serials"))},null,8,["model-value"])])}const $=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_shm/inverter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/inverter-f9eaf59e.js b/web/settings/assets/inverter-991c91e3.js similarity index 53% rename from web/settings/assets/inverter-f9eaf59e.js rename to web/settings/assets/inverter-991c91e3.js index c6ad3220aa..038470100e 100644 --- a/web/settings/assets/inverter-f9eaf59e.js +++ b/web/settings/assets/inverter-991c91e3.js @@ -1 +1 @@ -import{C as m}from"./HardwareInstallation-3a644290.js";import{_ as d,u as o,l as u,m as l,G as t,E as i,y as r}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceEnphaseInverter",mixins:[m]},_={class:"device-enphase-inverter"};function f(n,e,v,b,g,E){const s=o("openwb-base-heading"),p=o("openwb-base-number-input");return u(),l("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Enphase Envoy / IQ Gateway Wechselrichter ")])),_:1}),t(p,{title:"EID",required:"","model-value":n.component.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.eid"))},{help:i(()=>e[2]||(e[2]=[r(' EID für "production" ')])),_:1},8,["model-value"])])}const V=d(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/inverter.vue"]]);export{V as default}; +import{C as m}from"./HardwareInstallation-727b5962.js";import{_ as d,u as o,l as u,m as l,G as t,E as i,B as r}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceEnphaseInverter",mixins:[m]},_={class:"device-enphase-inverter"};function f(n,e,v,b,g,E){const s=o("openwb-base-heading"),p=o("openwb-base-number-input");return u(),l("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Enphase Envoy / IQ Gateway Wechselrichter ")])),_:1}),t(p,{title:"EID",required:"","model-value":n.component.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.eid"))},{help:i(()=>e[2]||(e[2]=[r(' EID für "production" ')])),_:1},8,["model-value"])])}const k=d(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-9c2adc35.js b/web/settings/assets/inverter-9c2adc35.js new file mode 100644 index 0000000000..ecd2d436f0 --- /dev/null +++ b/web/settings/assets/inverter-9c2adc35.js @@ -0,0 +1 @@ +import{C as e}from"./HardwareInstallation-727b5962.js";import{_ as n,l as t,m as i}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const o={name:"DeviceBenningInverter",mixins:[e]},r={class:"device-benning-inverter"};function s(p,c,m,a,_,v){return t(),i("div",r)}const C=n(o,[["render",s],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/benning/benning/inverter.vue"]]);export{C as default}; diff --git a/web/settings/assets/inverter-30cf9ccf.js b/web/settings/assets/inverter-a66b9919.js similarity index 68% rename from web/settings/assets/inverter-30cf9ccf.js rename to web/settings/assets/inverter-a66b9919.js index 55b161f6de..ec7d64075d 100644 --- a/web/settings/assets/inverter-30cf9ccf.js +++ b/web/settings/assets/inverter-a66b9919.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as l,u as n,l as d,m as c,G as t,E as i,y as r}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceSolarViewInverter",mixins:[p]},_={class:"device-solar-view-inverter"};function f(o,e,v,g,w,b){const s=n("openwb-base-heading"),a=n("openwb-base-text-input");return d(),c("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für SolarView Wechselrichter ")])),_:1}),t(a,{title:"Kommando für die Abfrage",required:"","model-value":o.component.configuration.command,"onUpdate:modelValue":e[0]||(e[0]=m=>o.updateConfiguration(m,"configuration.command"))},{help:i(()=>e[2]||(e[2]=[r(" Kommandos gemäß SolarView-Dokumentation, z.B.: 00* (gesamte Anlage), 01* (Wechselrichter 1), 02* (Wechselrichter 2) ")])),_:1},8,["model-value"])])}const S=l(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/solar_view/inverter.vue"]]);export{S as default}; +import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as l,u as n,l as d,m as c,G as t,E as i,B as r}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceSolarViewInverter",mixins:[p]},_={class:"device-solar-view-inverter"};function f(o,e,v,g,w,b){const s=n("openwb-base-heading"),a=n("openwb-base-text-input");return d(),c("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für SolarView Wechselrichter ")])),_:1}),t(a,{title:"Kommando für die Abfrage",required:"","model-value":o.component.configuration.command,"onUpdate:modelValue":e[0]||(e[0]=m=>o.updateConfiguration(m,"configuration.command"))},{help:i(()=>e[2]||(e[2]=[r(" Kommandos gemäß SolarView-Dokumentation, z.B.: 00* (gesamte Anlage), 01* (Wechselrichter 1), 02* (Wechselrichter 2) ")])),_:1},8,["model-value"])])}const S=l(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/solar_view/inverter.vue"]]);export{S as default}; diff --git a/web/settings/assets/inverter-db7c45b0.js b/web/settings/assets/inverter-a8875bde.js similarity index 78% rename from web/settings/assets/inverter-db7c45b0.js rename to web/settings/assets/inverter-a8875bde.js index f0f84fdf91..2ba659ad97 100644 --- a/web/settings/assets/inverter-db7c45b0.js +++ b/web/settings/assets/inverter-a8875bde.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as u,u as l,l as m,m as g,G as r,E as o,y as n,x as a}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceHttpInverter",mixins:[p]},c={class:"device-http-inverter"};function b(t,e,v,f,w,_){const d=l("openwb-base-heading"),s=l("openwb-base-text-input");return m(),g("div",c,[r(d,null,{default:o(()=>e[2]||(e[2]=[n(" Einstellungen für Http Wechselrichter ")])),_:1}),r(s,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.power_path"))},{help:o(()=>e[3]||(e[3]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),a("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) ")])),_:1},8,["model-value"]),r(s,{title:"Pfad für Zählerstand Erzeugung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.exported_path,"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.exported_path"))},{help:o(()=>e[4]||(e[4]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),a("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),a("br",null,null,-1),n(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")])),_:1},8,["model-value"])])}const W=u(h,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/inverter.vue"]]);export{W as default}; +import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as u,u as l,l as m,m as g,G as r,E as o,B as n,A as a}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceHttpInverter",mixins:[p]},c={class:"device-http-inverter"};function b(t,e,v,f,w,_){const d=l("openwb-base-heading"),s=l("openwb-base-text-input");return m(),g("div",c,[r(d,null,{default:o(()=>e[2]||(e[2]=[n(" Einstellungen für Http Wechselrichter ")])),_:1}),r(s,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.power_path"))},{help:o(()=>e[3]||(e[3]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),a("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) ")])),_:1},8,["model-value"]),r(s,{title:"Pfad für Zählerstand Erzeugung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.exported_path,"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.exported_path"))},{help:o(()=>e[4]||(e[4]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),a("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),a("br",null,null,-1),n(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")])),_:1},8,["model-value"])])}const S=u(h,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/inverter.vue"]]);export{S as default}; diff --git a/web/settings/assets/inverter-997c828c.js b/web/settings/assets/inverter-b76a9fda.js similarity index 64% rename from web/settings/assets/inverter-997c828c.js rename to web/settings/assets/inverter-b76a9fda.js index 4d9c761dd7..2756740bd6 100644 --- a/web/settings/assets/inverter-997c828c.js +++ b/web/settings/assets/inverter-b76a9fda.js @@ -1 +1 @@ -import{C as a}from"./HardwareInstallation-3a644290.js";import{_ as m,u as n,l as p,m as l,G as t,E as u,y as d}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolarmaxInverter",mixins:[a]},_={class:"device-solarmax-inverter"};function b(o,e,f,v,x,g){const r=n("openwb-base-heading"),i=n("openwb-base-number-input");return p(),l("div",_,[t(r,null,{default:u(()=>e[1]||(e[1]=[d(" Einstellungen für Solarmax Wechselrichter ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const I=m(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/inverter.vue"]]);export{I as default}; +import{C as a}from"./HardwareInstallation-727b5962.js";import{_ as m,u as n,l as p,m as l,G as t,E as u,B as d}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolarmaxInverter",mixins:[a]},_={class:"device-solarmax-inverter"};function b(o,e,f,v,x,g){const r=n("openwb-base-heading"),i=n("openwb-base-number-input");return p(),l("div",_,[t(r,null,{default:u(()=>e[1]||(e[1]=[d(" Einstellungen für Solarmax Wechselrichter ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const I=m(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/inverter.vue"]]);export{I as default}; diff --git a/web/settings/assets/inverter-456adc79.js b/web/settings/assets/inverter-b8e6f7ca.js similarity index 58% rename from web/settings/assets/inverter-456adc79.js rename to web/settings/assets/inverter-b8e6f7ca.js index 430cf62805..28423e81c8 100644 --- a/web/settings/assets/inverter-456adc79.js +++ b/web/settings/assets/inverter-b8e6f7ca.js @@ -1 +1 @@ -import{C as r}from"./HardwareInstallation-3a644290.js";import{_ as p,u as o,l,m as u,G as n,E as c,y as m}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceKostalStecaInverter",mixins:[r]},_={class:"device-kostal-steca-inverter"};function f(t,e,v,b,g,k){const a=o("openwb-base-heading"),i=o("openwb-base-button-group-input");return l(),u("div",_,[n(a,null,{default:c(()=>e[1]||(e[1]=[m(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept Wechselrichter ")])),_:1}),n(i,{title:"Variante",buttons:[{buttonValue:!1,text:"Kostal Piko MP (non-plus)"},{buttonValue:!0,text:"Kostal Piko MP oder Steca Grid Coolcept"}],"model-value":t.component.configuration.variant_steca,"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.variant_steca"))},null,8,["model-value"])])}const B=p(d,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_steca/inverter.vue"]]);export{B as default}; +import{C as r}from"./HardwareInstallation-727b5962.js";import{_ as p,u as o,l,m as u,G as n,E as c,B as m}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceKostalStecaInverter",mixins:[r]},_={class:"device-kostal-steca-inverter"};function f(t,e,v,b,g,k){const a=o("openwb-base-heading"),i=o("openwb-base-button-group-input");return l(),u("div",_,[n(a,null,{default:c(()=>e[1]||(e[1]=[m(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept Wechselrichter ")])),_:1}),n(i,{title:"Variante",buttons:[{buttonValue:!1,text:"Kostal Piko MP (non-plus)"},{buttonValue:!0,text:"Kostal Piko MP oder Steca Grid Coolcept"}],"model-value":t.component.configuration.variant_steca,"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.variant_steca"))},null,8,["model-value"])])}const h=p(d,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_steca/inverter.vue"]]);export{h as default}; diff --git a/web/settings/assets/inverter-0dee4ab1.js b/web/settings/assets/inverter-c852411a.js similarity index 66% rename from web/settings/assets/inverter-0dee4ab1.js rename to web/settings/assets/inverter-c852411a.js index 7ac088e57e..64f7be6ec9 100644 --- a/web/settings/assets/inverter-0dee4ab1.js +++ b/web/settings/assets/inverter-c852411a.js @@ -1 +1 @@ -import{C as s}from"./HardwareInstallation-3a644290.js";import{_ as d,u as n,l as m,m as c,G as r,E as i,y as a}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceStuderInverter",mixins:[s]},b={class:"device-studer-inverter"};function v(t,e,f,g,V,S){const u=n("openwb-base-heading"),p=n("openwb-base-button-group-input"),l=n("openwb-base-number-input");return m(),c("div",b,[r(u,null,{default:i(()=>e[2]||(e[2]=[a(" Einstellungen für Studer Wechselrichter ")])),_:1}),r(p,{title:"Typ der MPPT Solarladeregler",buttons:[{buttonValue:"VT",text:"Variotrack (VT-40/VT-65/VT-80)"},{buttonValue:"VS",text:"VarioString (VS-70/VS-120)"}],"model-value":t.component.configuration.vc_type,required:"","onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.vc_type"))},null,8,["model-value"]),r(l,{title:"Anzahl MPPT Solarladeregler",required:"",min:1,max:9,"model-value":t.component.configuration.vc_count,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.vc_count"))},{help:i(()=>e[3]||(e[3]=[a(" Anzahl (1-9) der Studer MPPT Solarladeregler im System (VS/VT) ")])),_:1},8,["model-value"])])}const B=d(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/inverter.vue"]]);export{B as default}; +import{C as s}from"./HardwareInstallation-727b5962.js";import{_ as d,u as n,l as m,m as c,G as r,E as i,B as a}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceStuderInverter",mixins:[s]},b={class:"device-studer-inverter"};function v(t,e,f,g,V,S){const u=n("openwb-base-heading"),p=n("openwb-base-button-group-input"),l=n("openwb-base-number-input");return m(),c("div",b,[r(u,null,{default:i(()=>e[2]||(e[2]=[a(" Einstellungen für Studer Wechselrichter ")])),_:1}),r(p,{title:"Typ der MPPT Solarladeregler",buttons:[{buttonValue:"VT",text:"Variotrack (VT-40/VT-65/VT-80)"},{buttonValue:"VS",text:"VarioString (VS-70/VS-120)"}],"model-value":t.component.configuration.vc_type,required:"","onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.vc_type"))},null,8,["model-value"]),r(l,{title:"Anzahl MPPT Solarladeregler",required:"",min:1,max:9,"model-value":t.component.configuration.vc_count,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.vc_count"))},{help:i(()=>e[3]||(e[3]=[a(" Anzahl (1-9) der Studer MPPT Solarladeregler im System (VS/VT) ")])),_:1},8,["model-value"])])}const k=d(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-6157a590.js b/web/settings/assets/inverter-cbcef859.js similarity index 76% rename from web/settings/assets/inverter-6157a590.js rename to web/settings/assets/inverter-cbcef859.js index a38583be95..8a42f12299 100644 --- a/web/settings/assets/inverter-6157a590.js +++ b/web/settings/assets/inverter-cbcef859.js @@ -1 +1 @@ -import{C as d}from"./HardwareInstallation-3a644290.js";import{_ as u,u as a,l as p,m,G as r,E as i,y as t,x as g}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceJsonInverter",mixins:[d]},f={class:"device-json-inverter"};function b(n,e,c,v,_,h){const l=a("openwb-base-heading"),s=a("openwb-base-text-input");return p(),m("div",f,[r(l,null,{default:i(()=>e[2]||(e[2]=[t(" Einstellungen für JSON Wechselrichter ")])),_:1}),r(s,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":n.component.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.jq_power"))},{help:i(()=>e[3]||(e[3]=[t(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),g("br",null,null,-1),t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) ")])),_:1},8,["model-value"]),r(s,{title:"Abfrage für Zählerstand",subtype:"text","model-value":n.component.configuration.jq_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.jq_exported"))},{help:i(()=>e[4]||(e[4]=[t(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"])])}const B=u(w,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/inverter.vue"]]);export{B as default}; +import{C as d}from"./HardwareInstallation-727b5962.js";import{_ as u,u as a,l as p,m,G as r,E as i,B as t,A as g}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceJsonInverter",mixins:[d]},f={class:"device-json-inverter"};function b(n,e,c,v,_,h){const l=a("openwb-base-heading"),s=a("openwb-base-text-input");return p(),m("div",f,[r(l,null,{default:i(()=>e[2]||(e[2]=[t(" Einstellungen für JSON Wechselrichter ")])),_:1}),r(s,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":n.component.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.jq_power"))},{help:i(()=>e[3]||(e[3]=[t(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),g("br",null,null,-1),t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) ")])),_:1},8,["model-value"]),r(s,{title:"Abfrage für Zählerstand",subtype:"text","model-value":n.component.configuration.jq_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.jq_exported"))},{help:i(()=>e[4]||(e[4]=[t(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"])])}const W=u(w,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/inverter.vue"]]);export{W as default}; diff --git a/web/settings/assets/inverter-e8d6d647.js b/web/settings/assets/inverter-ce8f0bd6.js similarity index 66% rename from web/settings/assets/inverter-e8d6d647.js rename to web/settings/assets/inverter-ce8f0bd6.js index 8a594b95a1..6c22134948 100644 --- a/web/settings/assets/inverter-e8d6d647.js +++ b/web/settings/assets/inverter-ce8f0bd6.js @@ -1 +1 @@ -import{C as a}from"./HardwareInstallation-3a644290.js";import{_ as p,u as t,l as u,m as l,G as n,E as m,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceKostalPikoInverter",mixins:[a]},_={class:"device-kostal-piko-inverter"};function f(o,e,b,v,g,k){const i=t("openwb-base-heading"),r=t("openwb-base-button-group-input");return u(),l("div",_,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für Kostal Piko Wechselrichter ")])),_:1}),n(r,{title:"Speicher",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":o.component.configuration.bat_configured,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.bat_configured"))},null,8,["model-value"])])}const N=p(d,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/inverter.vue"]]);export{N as default}; +import{C as a}from"./HardwareInstallation-727b5962.js";import{_ as p,u as t,l as u,m as l,G as n,E as m,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceKostalPikoInverter",mixins:[a]},_={class:"device-kostal-piko-inverter"};function f(o,e,b,v,g,k){const i=t("openwb-base-heading"),r=t("openwb-base-button-group-input");return u(),l("div",_,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für Kostal Piko Wechselrichter ")])),_:1}),n(r,{title:"Speicher",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":o.component.configuration.bat_configured,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.bat_configured"))},null,8,["model-value"])])}const N=p(d,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/inverter.vue"]]);export{N as default}; diff --git a/web/settings/assets/inverter-498c1656.js b/web/settings/assets/inverter-dddc65f7.js similarity index 62% rename from web/settings/assets/inverter-498c1656.js rename to web/settings/assets/inverter-dddc65f7.js index 67b6253489..49a096ed7a 100644 --- a/web/settings/assets/inverter-498c1656.js +++ b/web/settings/assets/inverter-dddc65f7.js @@ -1 +1 @@ -import{C as a}from"./HardwareInstallation-3a644290.js";import{_ as m,u as o,l as p,m as l,G as n,E as d,y as u}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartMeInverter",mixins:[a]},_={class:"device-smart-me-inverter"};function f(t,e,v,b,g,x){const r=o("openwb-base-heading"),i=o("openwb-base-text-input");return p(),l("div",_,[n(r,null,{default:d(()=>e[1]||(e[1]=[u(" Einstellungen für smart-me Wechselrichter ")])),_:1}),n(i,{title:"Geräte-ID",required:"","model-value":t.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.id"))},null,8,["model-value"])])}const G=m(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/inverter.vue"]]);export{G as default}; +import{C as a}from"./HardwareInstallation-727b5962.js";import{_ as m,u as o,l as p,m as l,G as n,E as d,B as u}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartMeInverter",mixins:[a]},_={class:"device-smart-me-inverter"};function f(t,e,v,b,g,x){const r=o("openwb-base-heading"),i=o("openwb-base-text-input");return p(),l("div",_,[n(r,null,{default:d(()=>e[1]||(e[1]=[u(" Einstellungen für smart-me Wechselrichter ")])),_:1}),n(i,{title:"Geräte-ID",required:"","model-value":t.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.id"))},null,8,["model-value"])])}const G=m(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/inverter.vue"]]);export{G as default}; diff --git a/web/settings/assets/inverter-2d9123ee.js b/web/settings/assets/inverter-e972f9b7.js similarity index 65% rename from web/settings/assets/inverter-2d9123ee.js rename to web/settings/assets/inverter-e972f9b7.js index 308dee0093..1acb9230ae 100644 --- a/web/settings/assets/inverter-2d9123ee.js +++ b/web/settings/assets/inverter-e972f9b7.js @@ -1 +1 @@ -import{C as u}from"./HardwareInstallation-3a644290.js";import{_ as a,u as t,l as p,m as l,G as n,E as m,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceYoulessInverter",mixins:[u]},d={class:"device-youless-inverter"};function f(o,e,b,v,g,x){const s=t("openwb-base-heading"),i=t("openwb-base-button-group-input");return p(),l("div",d,[n(s,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für Youless LS120 Wechselrichter ")])),_:1}),n(i,{title:"S0-Eingang auslesen",buttons:[{buttonValue:!1,text:"nein"},{buttonValue:!0,text:"ja"}],"model-value":o.component.configuration.source_s0,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.source_s0"))},null,8,["model-value"])])}const N=a(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/youless/inverter.vue"]]);export{N as default}; +import{C as u}from"./HardwareInstallation-727b5962.js";import{_ as a,u as t,l as p,m as l,G as n,E as m,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceYoulessInverter",mixins:[u]},d={class:"device-youless-inverter"};function f(o,e,b,v,g,x){const s=t("openwb-base-heading"),i=t("openwb-base-button-group-input");return p(),l("div",d,[n(s,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für Youless LS120 Wechselrichter ")])),_:1}),n(i,{title:"S0-Eingang auslesen",buttons:[{buttonValue:!1,text:"nein"},{buttonValue:!0,text:"ja"}],"model-value":o.component.configuration.source_s0,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.source_s0"))},null,8,["model-value"])])}const N=a(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/youless/inverter.vue"]]);export{N as default}; diff --git a/web/settings/assets/inverter-f413f2e1.js b/web/settings/assets/inverter-e9bb7891.js similarity index 60% rename from web/settings/assets/inverter-f413f2e1.js rename to web/settings/assets/inverter-e9bb7891.js index 3b669f160d..3b817bebb4 100644 --- a/web/settings/assets/inverter-f413f2e1.js +++ b/web/settings/assets/inverter-e9bb7891.js @@ -1 +1 @@ -import{C as r}from"./HardwareInstallation-3a644290.js";import{_ as n,u as s,l as o,m as i,G as a,E as p,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceVartaInverter",mixins:[r]},d={class:"varta-inverter"};function _(l,e,u,v,f,b){const t=s("openwb-base-alert");return o(),i("div",d,[a(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(" Die Leistung des Wechselrichters ist nur verfügbar, wenn dieser über Sensor an Varta angebunden ist. Wechselrichter die per Modbus mit dem Speicher kommunizieren lassen sich nicht über den Varta PV-Sensor auslesen. ")])),_:1})])}const S=n(m,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/varta/inverter.vue"]]);export{S as default}; +import{C as r}from"./HardwareInstallation-727b5962.js";import{_ as n,u as s,l as o,m as i,G as a,E as p,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceVartaInverter",mixins:[r]},d={class:"varta-inverter"};function _(l,e,u,v,f,b){const t=s("openwb-base-alert");return o(),i("div",d,[a(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(" Die Leistung des Wechselrichters ist nur verfügbar, wenn dieser über Sensor an Varta angebunden ist. Wechselrichter die per Modbus mit dem Speicher kommunizieren lassen sich nicht über den Varta PV-Sensor auslesen. ")])),_:1})])}const S=n(m,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/varta/inverter.vue"]]);export{S as default}; diff --git a/web/settings/assets/inverter-f447aa74.js b/web/settings/assets/inverter-f447aa74.js deleted file mode 100644 index 5cc50ce9eb..0000000000 --- a/web/settings/assets/inverter-f447aa74.js +++ /dev/null @@ -1 +0,0 @@ -import{C as e}from"./HardwareInstallation-3a644290.js";import{_ as n,l as t,m as i}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const o={name:"DeviceBenningInverter",mixins:[e]},r={class:"device-benning-inverter"};function s(p,c,m,a,_,v){return t(),i("div",r)}const C=n(o,[["render",s],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/benning/benning/inverter.vue"]]);export{C as default}; diff --git a/web/settings/assets/inverter-a427739c.js b/web/settings/assets/inverter-f5f1a5c8.js similarity index 82% rename from web/settings/assets/inverter-a427739c.js rename to web/settings/assets/inverter-f5f1a5c8.js index c7fdfe96aa..fc040623a0 100644 --- a/web/settings/assets/inverter-a427739c.js +++ b/web/settings/assets/inverter-f5f1a5c8.js @@ -1 +1 @@ -import{C as l}from"./HardwareInstallation-3a644290.js";import{_ as m,u as t,l as b,m as v,G as r,E as i,y as a}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSunnyBoyInverter",mixins:[l]},_={class:"device-sunnyboy-inverter"};function g(n,e,y,c,w,C){const s=t("openwb-base-heading"),u=t("openwb-base-button-group-input"),d=t("openwb-base-select-input"),p=t("openwb-base-number-input");return b(),v("div",_,[r(s,null,{default:i(()=>e[3]||(e[3]=[a(" Einstellungen für SMA Sunny Boy/Tripower Wechselrichter ")])),_:1}),r(u,{title:"Hybrid-System",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":n.component.configuration.hybrid,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.hybrid"))},{help:i(()=>e[4]||(e[4]=[a(" Diese Option aktivieren, wenn ein Tripower Smart Energy, Sunny Boy Smart Energy oder ein anderes Hybrid-System verbaut ist. ")])),_:1},8,["model-value"]),r(d,{title:"Version","not-selected":"Bitte auswählen",options:[{value:0,text:"Standard"},{value:1,text:"Core-2"},{value:2,text:"Data Manager/Cluster Controller"}],"model-value":n.component.configuration.version,required:"","onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.version"))},null,8,["model-value"]),r(p,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},{help:i(()=>e[5]||(e[5]=[a(" Für die Standardversion ist die Standardmodbus-ID 3, für Core-2 ist sie 1 und für Data Manager/Cluster Controller 2. Wurde eine abweichende Modbus ID konfiguriert, entsprechend anpassen. ")])),_:1},8,["model-value"])])}const I=m(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/inverter.vue"]]);export{I as default}; +import{C as l}from"./HardwareInstallation-727b5962.js";import{_ as m,u as t,l as b,m as v,G as r,E as i,B as a}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSunnyBoyInverter",mixins:[l]},_={class:"device-sunnyboy-inverter"};function g(n,e,y,c,w,C){const s=t("openwb-base-heading"),u=t("openwb-base-button-group-input"),d=t("openwb-base-select-input"),p=t("openwb-base-number-input");return b(),v("div",_,[r(s,null,{default:i(()=>e[3]||(e[3]=[a(" Einstellungen für SMA Sunny Boy/Tripower Wechselrichter ")])),_:1}),r(u,{title:"Hybrid-System",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":n.component.configuration.hybrid,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.hybrid"))},{help:i(()=>e[4]||(e[4]=[a(" Diese Option aktivieren, wenn ein Tripower Smart Energy, Sunny Boy Smart Energy oder ein anderes Hybrid-System verbaut ist. ")])),_:1},8,["model-value"]),r(d,{title:"Version","not-selected":"Bitte auswählen",options:[{value:0,text:"Standard"},{value:1,text:"Core-2"},{value:2,text:"Data Manager/Cluster Controller"}],"model-value":n.component.configuration.version,required:"","onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.version"))},null,8,["model-value"]),r(p,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},{help:i(()=>e[5]||(e[5]=[a(" Für die Standardversion ist die Standardmodbus-ID 3, für Core-2 ist sie 1 und für Data Manager/Cluster Controller 2. Wurde eine abweichende Modbus ID konfiguriert, entsprechend anpassen. ")])),_:1},8,["model-value"])])}const I=m(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/inverter.vue"]]);export{I as default}; diff --git a/web/settings/assets/inverter-25109ec8.js b/web/settings/assets/inverter-fb891ee4.js similarity index 61% rename from web/settings/assets/inverter-25109ec8.js rename to web/settings/assets/inverter-fb891ee4.js index 7605677ea8..43c985a4c5 100644 --- a/web/settings/assets/inverter-25109ec8.js +++ b/web/settings/assets/inverter-fb891ee4.js @@ -1 +1 @@ -import{C as m}from"./HardwareInstallation-3a644290.js";import{_ as d,u as o,l as u,m as l,G as t,E as i,y as r}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSigenergyInverter",mixins:[m]},_={class:"device-sigenergy-inverter"};function c(n,e,b,f,v,y){const s=o("openwb-base-heading"),p=o("openwb-base-number-input");return u(),l("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Sigenergy Wechselrichter ")])),_:1}),t(p,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[r(" Die Standard-Modbus-ID von Sigenergy ist 247 ")])),_:1},8,["model-value"])])}const M=d(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/inverter.vue"]]);export{M as default}; +import{C as m}from"./HardwareInstallation-727b5962.js";import{_ as d,u as o,l as u,m as l,G as t,E as i,B as r}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSigenergyInverter",mixins:[m]},_={class:"device-sigenergy-inverter"};function c(n,e,b,f,v,w){const s=o("openwb-base-heading"),p=o("openwb-base-number-input");return u(),l("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Sigenergy Wechselrichter ")])),_:1}),t(p,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[r(" Die Standard-Modbus-ID von Sigenergy ist 247 ")])),_:1},8,["model-value"])])}const M=d(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/inverter.vue"]]);export{M as default}; diff --git a/web/settings/assets/inverter-1eaedb65.js b/web/settings/assets/inverter-ff72f261.js similarity index 67% rename from web/settings/assets/inverter-1eaedb65.js rename to web/settings/assets/inverter-ff72f261.js index 47c03e1084..ee69bbb310 100644 --- a/web/settings/assets/inverter-1eaedb65.js +++ b/web/settings/assets/inverter-ff72f261.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as a,u as o,l,m,G as n,E as u,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbPvkitInverter",mixins:[p]},v={class:"device-openwb-pvkit-inverter"};function _(t,e,f,b,w,g){const i=o("openwb-base-heading"),r=o("openwb-base-select-input");return l(),m("div",v,[n(i,null,{default:u(()=>e[1]||(e[1]=[c(" Einstellungen für openWB PV-Kit Wechselrichter ")])),_:1}),n(r,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_pv_kit/inverter.vue"]]);export{$ as default}; +import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as a,u as o,l,m,G as n,E as u,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbPvkitInverter",mixins:[p]},v={class:"device-openwb-pvkit-inverter"};function _(t,e,f,b,w,g){const i=o("openwb-base-heading"),r=o("openwb-base-select-input");return l(),m("div",v,[n(i,null,{default:u(()=>e[1]||(e[1]=[c(" Einstellungen für openWB PV-Kit Wechselrichter ")])),_:1}),n(r,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_pv_kit/inverter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/inverter_secondary-daf65789.js b/web/settings/assets/inverter_secondary-987240b8.js similarity index 78% rename from web/settings/assets/inverter_secondary-daf65789.js rename to web/settings/assets/inverter_secondary-987240b8.js index d7ba92b117..5cb4c1e24f 100644 --- a/web/settings/assets/inverter_secondary-daf65789.js +++ b/web/settings/assets/inverter_secondary-987240b8.js @@ -1 +1 @@ -import{C as u}from"./HardwareInstallation-3a644290.js";import{_ as m,u as t,l as f,m as c,G as i,E as s,y as n,x as a,F as g}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceFroniusInverterSecondary",mixins:[u],computed:{powerFlowUrl:{get(){return`http://${this.device.configuration.ip_address}/solar_api/v1/GetPowerFlowRealtimeData.fcgi?Scope=System`}}}},_={class:"device-fronius-inverter-secondary"},v=["href"];function b(r,e,D,k,h,o){const d=t("openwb-base-heading"),l=t("openwb-base-number-input");return f(),c("div",_,[i(d,null,{default:s(()=>e[1]||(e[1]=[n(" Einstellungen für einen sekundären Wechselrichter ")])),_:1}),i(l,{title:"ID","model-value":r.component.configuration.id,min:"0",required:"","onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.id"))},{help:s(()=>[e[2]||(e[2]=n(" Die ID des sekundären Wechselrichters. Diese ist für jede Installation individuell und muss ermittelt werden. Dafür kann der folgende Link verwendet werden. Die ID kann den zurückgegebenen JSON entnommen werden. ")),a("a",{href:o.powerFlowUrl,target:"_blank",rel:"noopener noreferrer"},g(o.powerFlowUrl),9,v),e[3]||(e[3]=a("br",null,null,-1)),e[4]||(e[4]=n(' Im Abschnitt "Body" -> "Data" -> "SecondaryMeters" werden die installierten Zähler angezeigt. Die ID ist die Zahl vor dem Doppelpunkt und den zugehörigen Daten. '))]),_:1},8,["model-value"])])}const V=m(w,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/inverter_secondary.vue"]]);export{V as default}; +import{C as u}from"./HardwareInstallation-727b5962.js";import{_ as m,u as t,l as f,m as c,G as i,E as s,B as n,A as a,F as g}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceFroniusInverterSecondary",mixins:[u],computed:{powerFlowUrl:{get(){return`http://${this.device.configuration.ip_address}/solar_api/v1/GetPowerFlowRealtimeData.fcgi?Scope=System`}}}},_={class:"device-fronius-inverter-secondary"},v=["href"];function b(r,e,D,k,h,o){const d=t("openwb-base-heading"),l=t("openwb-base-number-input");return f(),c("div",_,[i(d,null,{default:s(()=>e[1]||(e[1]=[n(" Einstellungen für einen sekundären Wechselrichter ")])),_:1}),i(l,{title:"ID","model-value":r.component.configuration.id,min:"0",required:"","onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.id"))},{help:s(()=>[e[2]||(e[2]=n(" Die ID des sekundären Wechselrichters. Diese ist für jede Installation individuell und muss ermittelt werden. Dafür kann der folgende Link verwendet werden. Die ID kann den zurückgegebenen JSON entnommen werden. ")),a("a",{href:o.powerFlowUrl,target:"_blank",rel:"noopener noreferrer"},g(o.powerFlowUrl),9,v),e[3]||(e[3]=a("br",null,null,-1)),e[4]||(e[4]=n(' Im Abschnitt "Body" -> "Data" -> "SecondaryMeters" werden die installierten Zähler angezeigt. Die ID ist die Zahl vor dem Doppelpunkt und den zugehörigen Daten. '))]),_:1},8,["model-value"])])}const V=m(w,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/inverter_secondary.vue"]]);export{V as default}; diff --git a/web/settings/assets/io_action-15f350b8.js b/web/settings/assets/io_action-15f350b8.js new file mode 100644 index 0000000000..72f1ba0d5f --- /dev/null +++ b/web/settings/assets/io_action-15f350b8.js @@ -0,0 +1 @@ +import{a as c}from"./IoConfig-bc616ac4.js";import{O as g}from"./OpenwbIoSinglePattern-83dbc24c.js";import{_ as v,u,l as f,m as b,G as p,A as _,E as w,B as h,N as D}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const V={name:"IoActionDimmingDirectControl",components:{OpenwbIoSinglePattern:g},mixins:[c],computed:{value:{get(){return this.ioAction.configuration.input_pattern},set(t){this.updateConfiguration(t,"configuration.input_pattern")}},ioDevicesOutputOptions(){let t=[];return this.availableIoDevices.forEach(e=>{let n=[];Object.keys(e==null?void 0:e.output.digital).forEach(o=>{n.push({text:`${o}`,value:{type:"io",id:e.id,digital_output:o}})}),n.length>0&&t.push({label:e.name,options:n})}),t},availableDevices(){return[{label:"Ladepunkte",options:this.availableChargePoints.map(t=>({value:{type:"cp",id:t.value},text:t.text}))}].concat(this.ioDevicesOutputOptions)}}};function O(t,e,n,o,k,i){var l,s,r;const d=u("openwb-io-single-pattern"),m=u("openwb-base-select-input");return f(),b(D,null,[p(d,{modelValue:i.value,"onUpdate:modelValue":e[0]||(e[0]=a=>i.value=a),"digital-inputs":(s=(l=t.ioDevice)==null?void 0:l.input)==null?void 0:s.digital,"io-device":t.ioDevice},null,8,["modelValue","digital-inputs","io-device"]),e[3]||(e[3]=_("hr",null,null,-1)),p(m,{title:"Verhalten anwenden auf...","not-selected":"Bitte auswählen","empty-value":[],groups:i.availableDevices,multiple:"",required:"",disabled:!(Object.keys(i.value[0].input_matrix).length>0),"model-value":(r=t.ioAction)==null?void 0:r.configuration.devices,"onUpdate:modelValue":e[1]||(e[1]=a=>t.updateConfiguration(a,"configuration.devices"))},{help:w(()=>e[2]||(e[2]=[h(" Bitte die Ladepunkte und/oder digitalen Ausgänge auswählen, auf welche das Verhalten angewendet werden soll. Es können mehrere Einträge ausgewählt werden. ")])),_:1},8,["groups","disabled","model-value"])],64)}const L=v(V,[["render",O],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/io_actions/controllable_consumers/dimming_direct_control/io_action.vue"]]);export{L as default}; diff --git a/web/settings/assets/io_action-465b927d.js b/web/settings/assets/io_action-465b927d.js new file mode 100644 index 0000000000..76781dd542 --- /dev/null +++ b/web/settings/assets/io_action-465b927d.js @@ -0,0 +1 @@ +import{a as b}from"./IoConfig-bc616ac4.js";import{O as v}from"./OpenwbIoSinglePattern-83dbc24c.js";import{_ as f,u as l,l as _,m as w,G as u,A as h,E as k,B as x,N as A}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const D={name:"IoActionDimming",components:{OpenwbIoSinglePattern:v},mixins:[b],computed:{value:{get(){return this.ioAction.configuration.input_pattern},set(t){this.updateConfiguration(t,"configuration.input_pattern")}},ioDevicesOutputOptions(){let t=[];return this.availableIoDevices.forEach(e=>{let o=[];Object.keys(e==null?void 0:e.output.digital).forEach(a=>{o.push({text:`${a}`,value:{type:"io",id:e.id,digital_output:a}})}),o.length>0&&t.push({label:e.name,options:o})}),t},availableDevices(){return[{label:"Ladepunkte",options:this.availableChargePoints.map(t=>({value:{type:"cp",id:t.value},text:t.text}))}].concat(this.ioDevicesOutputOptions)}}};function O(t,e,o,a,V,i){var r,s,p,m;const d=l("openwb-io-single-pattern"),g=l("openwb-base-number-input"),c=l("openwb-base-select-input");return _(),w(A,null,[u(d,{modelValue:i.value,"onUpdate:modelValue":e[0]||(e[0]=n=>i.value=n),"digital-inputs":(s=(r=t.ioDevice)==null?void 0:r.input)==null?void 0:s.digital,"io-device":t.ioDevice},null,8,["modelValue","digital-inputs","io-device"]),u(g,{title:"maximale Bezugsleistung",unit:"kW",min:"0",step:"0.1",required:"",disabled:!(Object.keys(i.value[0].input_matrix).length>0),"model-value":((p=t.ioAction)==null?void 0:p.configuration.max_import_power)/1e3,"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateConfiguration(n*1e3,"configuration.max_import_power"))},null,8,["disabled","model-value"]),e[4]||(e[4]=h("hr",null,null,-1)),u(c,{title:"Anwenden auf...",groups:i.availableDevices,required:"",multiple:"",disabled:!(Object.keys(i.value[0].input_matrix).length>0),"model-value":(m=t.ioAction)==null?void 0:m.configuration.devices,"onUpdate:modelValue":e[2]||(e[2]=n=>t.updateConfiguration(n,"configuration.devices"))},{help:k(()=>e[3]||(e[3]=[x(" Bitte die Ladepunkte und/oder digitale Ausgänge auswählen, welche berücksichtigt werden sollen. Es können mehrere Einträge ausgewählt werden. Bei steuerbaren Verbrauchseinrichtungen, die über einen digitalen Ausgang angesteuert werden, wird eine Leistung von 4,2 kW bei aktiver Dimmung angenommen. ")])),_:1},8,["groups","disabled","model-value"])],64)}const q=f(D,[["render",O],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/io_actions/controllable_consumers/dimming/io_action.vue"]]);export{q as default}; diff --git a/web/settings/assets/io_action-def63b3b.js b/web/settings/assets/io_action-def63b3b.js new file mode 100644 index 0000000000..569e719971 --- /dev/null +++ b/web/settings/assets/io_action-def63b3b.js @@ -0,0 +1 @@ +import{a as d}from"./IoConfig-bc616ac4.js";import{O as m}from"./OpenwbIoPattern-278f5a90.js";import{_ as c,u as i,l as g,m as v,G as l,E as r,B as s,F as _,A as f,N as w}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"IoActionPowerLevels",components:{OpenwbIoPattern:m},mixins:[d],computed:{value:{get(){return this.ioAction.configuration.input_pattern},set(e){this.updateConfiguration(e,"configuration.input_pattern")}},availableDevices(){return[{label:"Wechselrichter",options:this.availableComponents.filter(e=>e.type==="inverter").map(e=>({value:{type:e.type,id:e.value},text:e.text}))}]}}};function h(e,t,x,B,y,o){var a;const p=i("openwb-io-pattern"),u=i("openwb-base-select-input");return g(),v(w,null,[l(p,{"model-value":o.value,"digital-inputs":e.ioDevice.input.digital,"enable-add-delete":!1,class:"text-center"},{default:r(n=>[s(_(n.pattern.value*100)+" % ",1)]),_:1},8,["model-value","digital-inputs"]),t[2]||(t[2]=f("hr",null,null,-1)),l(u,{title:"Verhalten anwenden auf...","not-selected":"Bitte auswählen","empty-value":null,groups:o.availableDevices,"model-value":(a=e.ioAction)==null?void 0:a.configuration.component_id,"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateConfiguration(n,"configuration.component_id"))},{help:r(()=>t[1]||(t[1]=[s(" Bitte die Erzeugungsanlage auswählen, auf welche das Verhalten angewendet werden soll. Es kann nur eine Erzeugungsanlage ausgewählt werden. ")])),_:1},8,["groups","model-value"])],64)}const F=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/io_actions/generator_systems/power_levels/io_action.vue"]]);export{F as default}; diff --git a/web/settings/assets/io_action-f16988cb.js b/web/settings/assets/io_action-f16988cb.js new file mode 100644 index 0000000000..21b249572e --- /dev/null +++ b/web/settings/assets/io_action-f16988cb.js @@ -0,0 +1 @@ +import{a as d}from"./IoConfig-bc616ac4.js";import{O as m}from"./OpenwbIoPattern-278f5a90.js";import{_ as c,u as r,l as v,m as _,G as o,E as p,A as f,B as g,N as b}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const w={name:"IoActionRippleControlReceiver",components:{OpenwbIoPattern:m},mixins:[d],computed:{value:{get(){return this.ioAction.configuration.input_pattern},set(e){this.updateConfiguration(e,"configuration.input_pattern")}},availableDevices(){return[{label:"Ladepunkte",options:this.availableChargePoints.map(e=>({value:{type:"cp",id:e.value},text:e.text}))}]}}};function x(e,t,h,B,C,a){var l;const i=r("openwb-base-select-input"),u=r("openwb-io-pattern");return v(),_(b,null,[o(u,{"model-value":a.value,"digital-inputs":e.ioDevice.input.digital,"enable-add-delete":!0,"min-patterns":2},{default:p(n=>[o(i,{required:"","not-selected":"Bitte auswählen","empty-value":null,options:[{value:0,text:"sperren"},{value:1,text:"freigeben"}],"model-value":n.pattern.value,"onUpdate:modelValue":s=>n.pattern.value=s},null,8,["model-value","onUpdate:modelValue"])]),_:1},8,["model-value","digital-inputs"]),t[2]||(t[2]=f("hr",null,null,-1)),o(i,{title:"Anwenden auf...","empty-value":[],groups:a.availableDevices,required:"",multiple:"","model-value":(l=e.ioAction)==null?void 0:l.configuration.devices,"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateConfiguration(n,"configuration.devices"))},{help:p(()=>t[1]||(t[1]=[g(" Bitte die Ladepunkte auswählen, auf die das Verhalten angewendet werden soll. Es können mehrere Einträge ausgewählt werden. ")])),_:1},8,["groups","model-value"])],64)}const q=c(w,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/io_actions/controllable_consumers/ripple_control_receiver/io_action.vue"]]);export{q as default}; diff --git a/web/settings/assets/io_device-6aded7c0.js b/web/settings/assets/io_device-6aded7c0.js new file mode 100644 index 0000000000..1b425a99f7 --- /dev/null +++ b/web/settings/assets/io_device-6aded7c0.js @@ -0,0 +1 @@ +import{O as m}from"./IoConfig-bc616ac4.js";import{C as f}from"./index-b236cee5.js";import{_ as g,u as s,l as h,m as b,G as a,E as l,B as o,A as n}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./dynamic-import-helper-be004503.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";const _={name:"IoDeviceAddOn",mixins:[f,m],data(){return{mqttTopicsToSubscribe:["openWB/chargepoint/+/config"]}},computed:{configuredChargePoints(){const t=this.getWildcardTopics("openWB/chargepoint/+/config");let e=[];for(const i of Object.values(t))if(["external_openwb"].includes(i.type)){if(e.find(r=>r.value===i.configuration.ip_address))continue;e.push({value:i.configuration.ip_address,text:i.name})}return e},configuredDisplays(){return[]},availableIoSources:{get(){return[{label:"Ladepunkte",options:this.configuredChargePoints},{label:"Zusatzdisplays",options:this.configuredDisplays}].filter(t=>t.options.length>0)}}}},v={class:"io-device-add-on"};function w(t,e,i,r,B,d){const u=s("openwb-base-alert"),p=s("openwb-base-select-input");return h(),b("div",v,[a(u,{subtype:"warning"},{default:l(()=>e[1]||(e[1]=[o(" Die Kontakte der AddOn-Platine sind nicht galvanisch oder optisch getrennt. Es wird dringend empfohlen, mit Koppelrelais zu arbeiten."),n("br",null,null,-1),o(" Weiterhin muss für die Verwendung der Kontakte in einer openWB series2 eine weitere Kabeldurchführung in das Gehäuse gebohrt werden. Da es hierbei zu Undichtigkeiten kommen kann, ist dies nur von fachkundigen Personen durchzuführen."),n("br",null,null,-1),o(" Es wird keine Haftung für Schäden übernommen, die durch die direkte Beschaltung der Kontakte oder eine zusätzliche Bohrung im Gehäuse entstehen."),n("br",null,null,-1),o(" Es wird der Einsatz des Dimm- & Control-Kits empfohlen! ")])),_:1}),a(p,{title:"Installiert auf...","not-selected":"Bitte auswählen","empty-value":null,options:[{value:"localhost",text:"dieser openWB"}],groups:d.availableIoSources,"model-value":t.ioDevice.configuration.host,"onUpdate:modelValue":e[0]||(e[0]=c=>t.updateConfiguration(c,"configuration.host"))},{help:l(()=>e[2]||(e[2]=[o(" Bitte die Komponente auswählen, an der die Add-On-Platine installiert ist."),n("br",null,null,-1),o(" Unterstützt werden:"),n("br",null,null,-1),n("ul",null,[n("li",null,"openWB standalone (als primary oder Zusatzdisplay)"),n("li",null,'openWB Ladepunkte als primary ("interne openWB") und secondary ("externe openWB")')],-1)])),_:1},8,["groups","model-value"])])}const E=g(_,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/io_devices/add_on/io_device.vue"]]);export{E as default}; diff --git a/web/settings/assets/io_device-a553d2c1.js b/web/settings/assets/io_device-a553d2c1.js new file mode 100644 index 0000000000..9227a93162 --- /dev/null +++ b/web/settings/assets/io_device-a553d2c1.js @@ -0,0 +1 @@ +import{O as m}from"./IoConfig-bc616ac4.js";import{_ as p,u as r,l as a,m as s,G as t}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const d={name:"IoDeviceDimmKit",mixins:[m]},l={class:"io-device-dimm-kit"};function v(o,e,c,f,_,b){const u=r("openwb-base-text-input"),n=r("openwb-base-number-input");return a(),s("div",l,[t(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.ioDevice.configuration.host,"onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.host"))},null,8,["model-value"]),t(n,{title:"Port",required:"","model-value":o.ioDevice.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>o.updateConfiguration(i,"configuration.port"))},null,8,["model-value"]),t(n,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":o.ioDevice.configuration.modbus_id,"onUpdate:modelValue":e[2]||(e[2]=i=>o.updateConfiguration(i,"configuration.modbus_id"))},null,8,["model-value"])])}const B=p(d,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/io_devices/dimm_kit/io_device.vue"]]);export{B as default}; diff --git a/web/settings/assets/monitoring-f3474b05.js b/web/settings/assets/monitoring-df87d8aa.js similarity index 81% rename from web/settings/assets/monitoring-f3474b05.js rename to web/settings/assets/monitoring-df87d8aa.js index 6a261a7e19..c34cac0876 100644 --- a/web/settings/assets/monitoring-f3474b05.js +++ b/web/settings/assets/monitoring-df87d8aa.js @@ -1 +1 @@ -import{M as l}from"./DataManagement-f14600c5.js";import{_ as d,u as a,l as p,m,G as t,E as g,y as r,x as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"MonitoringZabbix",mixins:[l]},b={class:"monitoring-zabbix"};function v(n,e,_,k,y,w){const u=a("openwb-base-alert"),i=a("openwb-base-text-input");return p(),m("div",b,[t(u,{subtype:"info"},{default:g(()=>e[4]||(e[4]=[r(" Mit dem Monitoring-Service von openWB kannst Du Dein System ganz einfach überwachen. Einfach "),s("a",{href:"https://openwb.de/dummy",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),r(" anmelden und Deine Zugangsdaten erhalten."),s("br",null,null,-1),r("Alternativ kannst Du auch deinen eigenen Zabbix-Server aufsetzen und die Zugangsdaten hier eintragen. ")])),_:1}),t(i,{title:"Zielhost",subtype:"host",required:"","model-value":n.monitoring.configuration.destination_host,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.destination_host"))},null,8,["model-value"]),t(i,{title:"Eigener Hostname",subtype:"user",required:"","model-value":n.monitoring.configuration.hostname,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.hostname"))},null,8,["model-value"]),t(i,{title:"PSK Identifier",subtype:"text",required:"","model-value":n.monitoring.configuration.psk_identifier,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.psk_identifier"))},null,8,["model-value"]),t(i,{title:"PSK Key",subtype:"password",required:"","model-value":n.monitoring.configuration.psk_key,"onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.psk_key"))},null,8,["model-value"])])}const q=d(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/monitoring/zabbix/monitoring.vue"]]);export{q as default}; +import{M as l}from"./DataManagement-714df651.js";import{_ as d,u as a,l as p,m,G as t,E as g,B as r,A as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"MonitoringZabbix",mixins:[l]},b={class:"monitoring-zabbix"};function v(n,e,_,k,y,w){const u=a("openwb-base-alert"),i=a("openwb-base-text-input");return p(),m("div",b,[t(u,{subtype:"info"},{default:g(()=>e[4]||(e[4]=[r(" Mit dem Monitoring-Service von openWB kannst Du Dein System ganz einfach überwachen. Einfach "),s("a",{href:"https://openwb.de/dummy",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),r(" anmelden und Deine Zugangsdaten erhalten."),s("br",null,null,-1),r("Alternativ kannst Du auch deinen eigenen Zabbix-Server aufsetzen und die Zugangsdaten hier eintragen. ")])),_:1}),t(i,{title:"Zielhost",subtype:"host",required:"","model-value":n.monitoring.configuration.destination_host,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.destination_host"))},null,8,["model-value"]),t(i,{title:"Eigener Hostname",subtype:"user",required:"","model-value":n.monitoring.configuration.hostname,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.hostname"))},null,8,["model-value"]),t(i,{title:"PSK Identifier",subtype:"text",required:"","model-value":n.monitoring.configuration.psk_identifier,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.psk_identifier"))},null,8,["model-value"]),t(i,{title:"PSK Key",subtype:"password",required:"","model-value":n.monitoring.configuration.psk_key,"onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.psk_key"))},null,8,["model-value"])])}const q=d(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/monitoring/zabbix/monitoring.vue"]]);export{q as default}; diff --git a/web/settings/assets/ripple_control_receiver-14c898b9.js b/web/settings/assets/ripple_control_receiver-14c898b9.js deleted file mode 100644 index a9723eb472..0000000000 --- a/web/settings/assets/ripple_control_receiver-14c898b9.js +++ /dev/null @@ -1 +0,0 @@ -import{R as s}from"./GeneralConfig-b0e93144.js";import{_ as a,u as i,l as d,m as u,G as t,E as m,y as _}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"RippleControlReceiverDimmKit",mixins:[s]},c={class:"ripple-control-receiver-dimm-kit"};function b(o,e,v,g,w,C){const p=i("openwb-base-alert"),l=i("openwb-base-text-input"),r=i("openwb-base-number-input");return d(),u("div",c,[t(p,{subtype:"info"},{default:m(()=>e[3]||(e[3]=[_(" In der aktuellen Implementierung werden Kontakt 1 und 2 des Dimm-Kits ausgewertet. Wenn mindestens ein Kontakt offen ist, wird die Ladung gesperrt. Wenn beide Kontakte geschlossen sind, darf geladen werden. ")])),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.rippleControlReceiver.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"","model-value":o.rippleControlReceiver.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":o.rippleControlReceiver.configuration.modbus_id,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const B=a(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/dimm_kit/ripple_control_receiver.vue"]]);export{B as default}; diff --git a/web/settings/assets/ripple_control_receiver-cd0099ce.js b/web/settings/assets/ripple_control_receiver-cd0099ce.js deleted file mode 100644 index 6067bdfb90..0000000000 --- a/web/settings/assets/ripple_control_receiver-cd0099ce.js +++ /dev/null @@ -1 +0,0 @@ -import{R as t}from"./GeneralConfig-b0e93144.js";import{_ as r,u as n,l as i,m as p,G as s,E as a,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const l={name:"RippleControlReceiverGpio",mixins:[t]},_={class:"ripple-control-receiver-gpio"};function m(d,e,f,u,v,g){const o=n("openwb-base-alert");return i(),p("div",_,[s(o,{subtype:"info"},{default:a(()=>e[0]||(e[0]=[c(" Wenn mindestens ein Kontakt geschlossen ist, wird die Ladung gesperrt. Wenn beide Kontakte offen sind, darf geladen werden. ")])),_:1})])}const h=r(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/gpio/ripple_control_receiver.vue"]]);export{h as default}; diff --git a/web/settings/assets/vehicle-2da6d3ec.js b/web/settings/assets/vehicle-048a17cd.js similarity index 90% rename from web/settings/assets/vehicle-2da6d3ec.js rename to web/settings/assets/vehicle-048a17cd.js index 2ea4061809..c96f5f4cbf 100644 --- a/web/settings/assets/vehicle-2da6d3ec.js +++ b/web/settings/assets/vehicle-048a17cd.js @@ -1 +1 @@ -import{V as p}from"./VehicleConfig-a49bda81.js";import{_ as m,u as s,l as g,m as f,G as i,E as r,y as t,x as n}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"VehicleSocBmwBimmerConnected",mixins:[p]},v={class:"vehicle-soc-bmwbc"},w={href:"https://bimmer-connected.readthedocs.io/en/latest/captcha/rest_of_world.html",target:"_blank"};function C(o,e,k,B,V,S){const u=s("openwb-base-text-input"),a=s("font-awesome-icon"),d=s("openwb-base-button-group-input");return g(),f("div",v,[i(u,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=l=>o.updateConfiguration(l,"configuration.user_id"))},{help:r(()=>e[5]||(e[5]=[t(" Der Benutzername für die Anmeldung an den BMW-Servern. ")])),_:1},8,["model-value"]),i(u,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=l=>o.updateConfiguration(l,"configuration.password"))},{help:r(()=>e[6]||(e[6]=[t(" Das Passwort für die Anmeldung an den BMW-Servern. ")])),_:1},8,["model-value"]),i(u,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=l=>o.updateConfiguration(l,"configuration.vin"))},{help:r(()=>e[7]||(e[7]=[t(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"]),i(u,{title:"Captcha-Token",required:"","model-value":o.vehicle.configuration.captcha_token,"onUpdate:modelValue":e[3]||(e[3]=l=>o.updateConfiguration(l,"configuration.captcha_token"))},{help:r(()=>[e[17]||(e[17]=t(" Zum erstmaligen Login z.B. nach einem Neustart ist ein ")),e[18]||(e[18]=n("b",null,"aktuelles Captcha-Token",-1)),e[19]||(e[19]=t(" notwendig.")),e[20]||(e[20]=n("br",null,null,-1)),e[21]||(e[21]=t(" Dazu bitte folgende Schritte durchführen: ")),n("ol",null,[n("li",null,[e[9]||(e[9]=t(" In einem neuen Browser-Tab auf diese Seite gehen:")),e[10]||(e[10]=n("br",null,null,-1)),n("a",w,[e[8]||(e[8]=t(" Captcha Lösen ")),i(a,{"fixed-width":"",icon:["fas","external-link-alt"]})]),e[11]||(e[11]=t(" (https://bimmer-connected.readthedocs.io/en/latest/captcha/rest_of_world.html) "))]),e[12]||(e[12]=n("li",null,' Dort falls angefragt das Captcha lösen und/oder "Ich bin ein Mensch" und dann Submit anklicken. Als Ergebnis wird ein sehr langer String angezeigt. ',-1)),e[13]||(e[13]=n("li",null,[t("Diesen String komplett mit "),n("b",null,"Copy&Paste"),t(" in das Feld Captcha-Token eingeben.")],-1)),e[14]||(e[14]=n("li",null,"Die Konfiguration speichern.",-1)),e[15]||(e[15]=n("li",null,[n("b",null,"Sofort einmal im Desktop manuell (Kreispfeil) den SoC für das Fahrzeug abrufen.")],-1)),e[16]||(e[16]=n("li",null,[n("b",null,"Fertig."),t(" Ab jetzt wird bis zum nächsten Neustart das sog. Refresh-Token verwendet.")],-1))]),e[22]||(e[22]=n("b",null,"Achtung: Das Captcha-Token kann nur einmal verwendet werden und gilt nur kurze Zeit!",-1))]),_:1},8,["model-value"]),i(d,{title:"SoC während der Ladung berechnen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.vehicle.configuration.calculate_soc,"onUpdate:modelValue":e[4]||(e[4]=l=>o.updateConfiguration(l,"configuration.calculate_soc"))},{help:r(()=>e[23]||(e[23]=[t(" Berechnet den Ladestand (SoC) während der Ladung. "),n("br",null,null,-1),t(" Die Berechnung erfolgt über die Ladeleistung und die Ladedauer. "),n("br",null,null,-1)])),_:1},8,["model-value"])])}const q=m(b,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmwbc/vehicle.vue"]]);export{q as default}; +import{V as p}from"./VehicleConfig-e49e5ddc.js";import{_ as m,u as s,l as g,m as f,G as i,E as r,B as t,A as n}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"VehicleSocBmwBimmerConnected",mixins:[p]},v={class:"vehicle-soc-bmwbc"},w={href:"https://bimmer-connected.readthedocs.io/en/latest/captcha/rest_of_world.html",target:"_blank"};function C(o,e,k,B,V,S){const u=s("openwb-base-text-input"),a=s("font-awesome-icon"),d=s("openwb-base-button-group-input");return g(),f("div",v,[i(u,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=l=>o.updateConfiguration(l,"configuration.user_id"))},{help:r(()=>e[5]||(e[5]=[t(" Der Benutzername für die Anmeldung an den BMW-Servern. ")])),_:1},8,["model-value"]),i(u,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=l=>o.updateConfiguration(l,"configuration.password"))},{help:r(()=>e[6]||(e[6]=[t(" Das Passwort für die Anmeldung an den BMW-Servern. ")])),_:1},8,["model-value"]),i(u,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=l=>o.updateConfiguration(l,"configuration.vin"))},{help:r(()=>e[7]||(e[7]=[t(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"]),i(u,{title:"Captcha-Token",required:"","model-value":o.vehicle.configuration.captcha_token,"onUpdate:modelValue":e[3]||(e[3]=l=>o.updateConfiguration(l,"configuration.captcha_token"))},{help:r(()=>[e[17]||(e[17]=t(" Zum erstmaligen Login z.B. nach einem Neustart ist ein ")),e[18]||(e[18]=n("b",null,"aktuelles Captcha-Token",-1)),e[19]||(e[19]=t(" notwendig.")),e[20]||(e[20]=n("br",null,null,-1)),e[21]||(e[21]=t(" Dazu bitte folgende Schritte durchführen: ")),n("ol",null,[n("li",null,[e[9]||(e[9]=t(" In einem neuen Browser-Tab auf diese Seite gehen:")),e[10]||(e[10]=n("br",null,null,-1)),n("a",w,[e[8]||(e[8]=t(" Captcha Lösen ")),i(a,{"fixed-width":"",icon:["fas","external-link-alt"]})]),e[11]||(e[11]=t(" (https://bimmer-connected.readthedocs.io/en/latest/captcha/rest_of_world.html) "))]),e[12]||(e[12]=n("li",null,' Dort falls angefragt das Captcha lösen und/oder "Ich bin ein Mensch" und dann Submit anklicken. Als Ergebnis wird ein sehr langer String angezeigt. ',-1)),e[13]||(e[13]=n("li",null,[t("Diesen String komplett mit "),n("b",null,"Copy&Paste"),t(" in das Feld Captcha-Token eingeben.")],-1)),e[14]||(e[14]=n("li",null,"Die Konfiguration speichern.",-1)),e[15]||(e[15]=n("li",null,[n("b",null,"Sofort einmal im Desktop manuell (Kreispfeil) den SoC für das Fahrzeug abrufen.")],-1)),e[16]||(e[16]=n("li",null,[n("b",null,"Fertig."),t(" Ab jetzt wird bis zum nächsten Neustart das sog. Refresh-Token verwendet.")],-1))]),e[22]||(e[22]=n("b",null,"Achtung: Das Captcha-Token kann nur einmal verwendet werden und gilt nur kurze Zeit!",-1))]),_:1},8,["model-value"]),i(d,{title:"SoC während der Ladung berechnen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.vehicle.configuration.calculate_soc,"onUpdate:modelValue":e[4]||(e[4]=l=>o.updateConfiguration(l,"configuration.calculate_soc"))},{help:r(()=>e[23]||(e[23]=[t(" Berechnet den Ladestand (SoC) während der Ladung. "),n("br",null,null,-1),t(" Die Berechnung erfolgt über die Ladeleistung und die Ladedauer. "),n("br",null,null,-1)])),_:1},8,["model-value"])])}const q=m(b,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmwbc/vehicle.vue"]]);export{q as default}; diff --git a/web/settings/assets/vehicle-0f1f6912.js b/web/settings/assets/vehicle-0cab1a3e.js similarity index 84% rename from web/settings/assets/vehicle-0f1f6912.js rename to web/settings/assets/vehicle-0cab1a3e.js index b04d29d961..837b3e7f30 100644 --- a/web/settings/assets/vehicle-0f1f6912.js +++ b/web/settings/assets/vehicle-0cab1a3e.js @@ -1 +1 @@ -import{V as s}from"./VehicleConfig-a49bda81.js";import{_ as p,u,l as d,m as v,G as a,E as n,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocEVCC",mixins:[s]},g={class:"vehicle-soc-evcc"};function x(t,e,f,V,w,b){const i=u("openwb-base-text-input"),r=u("openwb-base-select-input");return d(),v("div",g,[a(i,{title:"EVCC Sponsor Token",subtype:"password",required:"","model-value":t.vehicle.configuration.sponsor_token,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.sponsor_token"))},{help:n(()=>e[5]||(e[5]=[l(" EVCC Sponsor Token angeben, dies ist notwendig um SoC über EVCC abrufen zu können. https://sponsor.evcc.io/ ")])),_:1},8,["model-value"]),a(i,{title:"Benutzername",subtype:"text",required:"","model-value":t.vehicle.configuration.user_id,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.user_id"))},{help:n(()=>e[6]||(e[6]=[l(" Benutzername beim Fahrzeughersteller. ")])),_:1},8,["model-value"]),a(i,{title:"Kennwort",subtype:"password",required:"","model-value":t.vehicle.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=o=>t.updateConfiguration(o,"configuration.password"))},{help:n(()=>e[7]||(e[7]=[l(" Kennwort beim Fahrzeughersteller. ")])),_:1},8,["model-value"]),a(r,{title:"Marke",required:"","not-selected":"Bitte auswählen",options:[{value:"aiways",text:"Aiways"},{value:"audi",text:"Audi"},{value:"etron",text:"Audi e-tron"},{value:"bmw",text:"BMW"},{value:"dacia",text:"Dacia"},{value:"fiat",text:"Fiat"},{value:"ford",text:"Ford"},{value:"hyundai",text:"Hyundai"},{value:"jaguar",text:"Jaguar"},{value:"kia",text:"Kia"},{value:"landrover",text:"Landrover"},{value:"mg",text:"Mg"},{value:"mini",text:"Mini"},{value:"nissan",text:"Nissan"},{value:"carwings",text:"Nissan (Leaf pre 2019)"},{value:"ovms",text:"OVMS"},{value:"polestar",text:"Polestar"},{value:"porsche",text:"Porsche"},{value:"renault",text:"Renault"},{value:"seat",text:"Seat"},{value:"cupra",text:"Seat Cupra"},{value:"skoda",text:"Škoda"},{value:"enyaq",text:"Škoda Enyaq"},{value:"smart",text:"Smart"},{value:"smart-hello",text:"Smart-Hello"},{value:"template",text:"Template"},{value:"volvo",text:"Volvo"},{value:"volvo-connected",text:"Volvo-Connected"},{value:"vw",text:"VW"},{value:"id",text:"VW ID"}],"model-value":t.vehicle.configuration.vehicle_type,"onUpdate:modelValue":e[3]||(e[3]=o=>t.updateConfiguration(o,"configuration.vehicle_type"))},{help:n(()=>e[8]||(e[8]=[l(" Marke aus des Fahrzeugs. ")])),_:1},8,["model-value"]),a(i,{title:"VIN",subtype:"text","model-value":t.vehicle.configuration.VIN,"onUpdate:modelValue":e[4]||(e[4]=o=>t.updateConfiguration(o,"configuration.VIN"))},{help:n(()=>e[9]||(e[9]=[l(" Fahrgestellnummer (VIN) des Fahrzeugs. Notwendig falls mehrere Fahrzeuge im Account des Herstellers vorhanden sind. ")])),_:1},8,["model-value"])])}const B=p(m,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evcc/vehicle.vue"]]);export{B as default}; +import{V as s}from"./VehicleConfig-e49e5ddc.js";import{_ as p,u,l as d,m as v,G as a,E as n,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocEVCC",mixins:[s]},g={class:"vehicle-soc-evcc"};function x(t,e,f,V,w,b){const i=u("openwb-base-text-input"),r=u("openwb-base-select-input");return d(),v("div",g,[a(i,{title:"EVCC Sponsor Token",subtype:"password",required:"","model-value":t.vehicle.configuration.sponsor_token,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.sponsor_token"))},{help:n(()=>e[5]||(e[5]=[l(" EVCC Sponsor Token angeben, dies ist notwendig um SoC über EVCC abrufen zu können. https://sponsor.evcc.io/ ")])),_:1},8,["model-value"]),a(i,{title:"Benutzername",subtype:"text",required:"","model-value":t.vehicle.configuration.user_id,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.user_id"))},{help:n(()=>e[6]||(e[6]=[l(" Benutzername beim Fahrzeughersteller. ")])),_:1},8,["model-value"]),a(i,{title:"Kennwort",subtype:"password",required:"","model-value":t.vehicle.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=o=>t.updateConfiguration(o,"configuration.password"))},{help:n(()=>e[7]||(e[7]=[l(" Kennwort beim Fahrzeughersteller. ")])),_:1},8,["model-value"]),a(r,{title:"Marke",required:"","not-selected":"Bitte auswählen",options:[{value:"aiways",text:"Aiways"},{value:"audi",text:"Audi"},{value:"etron",text:"Audi e-tron"},{value:"bmw",text:"BMW"},{value:"dacia",text:"Dacia"},{value:"fiat",text:"Fiat"},{value:"ford",text:"Ford"},{value:"hyundai",text:"Hyundai"},{value:"jaguar",text:"Jaguar"},{value:"kia",text:"Kia"},{value:"landrover",text:"Landrover"},{value:"mg",text:"Mg"},{value:"mini",text:"Mini"},{value:"nissan",text:"Nissan"},{value:"carwings",text:"Nissan (Leaf pre 2019)"},{value:"ovms",text:"OVMS"},{value:"polestar",text:"Polestar"},{value:"porsche",text:"Porsche"},{value:"renault",text:"Renault"},{value:"seat",text:"Seat"},{value:"cupra",text:"Seat Cupra"},{value:"skoda",text:"Škoda"},{value:"enyaq",text:"Škoda Enyaq"},{value:"smart",text:"Smart"},{value:"smart-hello",text:"Smart-Hello"},{value:"template",text:"Template"},{value:"volvo",text:"Volvo"},{value:"volvo-connected",text:"Volvo-Connected"},{value:"vw",text:"VW"},{value:"id",text:"VW ID"}],"model-value":t.vehicle.configuration.vehicle_type,"onUpdate:modelValue":e[3]||(e[3]=o=>t.updateConfiguration(o,"configuration.vehicle_type"))},{help:n(()=>e[8]||(e[8]=[l(" Marke aus des Fahrzeugs. ")])),_:1},8,["model-value"]),a(i,{title:"VIN",subtype:"text","model-value":t.vehicle.configuration.VIN,"onUpdate:modelValue":e[4]||(e[4]=o=>t.updateConfiguration(o,"configuration.VIN"))},{help:n(()=>e[9]||(e[9]=[l(" Fahrgestellnummer (VIN) des Fahrzeugs. Notwendig falls mehrere Fahrzeuge im Account des Herstellers vorhanden sind. ")])),_:1},8,["model-value"])])}const F=p(m,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evcc/vehicle.vue"]]);export{F as default}; diff --git a/web/settings/assets/vehicle-9a78a8ba.js b/web/settings/assets/vehicle-14a72276.js similarity index 64% rename from web/settings/assets/vehicle-9a78a8ba.js rename to web/settings/assets/vehicle-14a72276.js index b0cb3c29bf..3e77e287d5 100644 --- a/web/settings/assets/vehicle-9a78a8ba.js +++ b/web/settings/assets/vehicle-14a72276.js @@ -1 +1 @@ -import{V as o}from"./VehicleConfig-a49bda81.js";import{_ as i,u as r,l as s,m as a,G as c,E as p,y as n,x as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const d={name:"VehicleSocPSA",mixins:[o]},m={class:"vehicle-soc-psa"};function u(f,e,_,h,b,g){const t=r("openwb-base-alert");return s(),a("div",m,[c(t,{subtype:"danger"},{default:p(()=>e[0]||(e[0]=[n(" Diese Modul ist seit Änderungen der Schnittstellen durch PSA nicht mehr funktionsfähig und wird in einer zukünftigen Version entfernt. Bitte auf einen anderen Anbieter wechseln, z.B. Tronity."),l("br",null,null,-1),n(" Bei vorhandener PSA-Integration in Heimautomation kann der SoC ggf. auch per MQTT übergeben werden. ")])),_:1})])}const T=i(d,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/psa/vehicle.vue"]]);export{T as default}; +import{V as o}from"./VehicleConfig-e49e5ddc.js";import{_ as i,u as r,l as s,m as a,G as c,E as p,B as n,A as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const d={name:"VehicleSocPSA",mixins:[o]},m={class:"vehicle-soc-psa"};function u(f,e,_,h,b,g){const t=r("openwb-base-alert");return s(),a("div",m,[c(t,{subtype:"danger"},{default:p(()=>e[0]||(e[0]=[n(" Diese Modul ist seit Änderungen der Schnittstellen durch PSA nicht mehr funktionsfähig und wird in einer zukünftigen Version entfernt. Bitte auf einen anderen Anbieter wechseln, z.B. Tronity."),l("br",null,null,-1),n(" Bei vorhandener PSA-Integration in Heimautomation kann der SoC ggf. auch per MQTT übergeben werden. ")])),_:1})])}const T=i(d,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/psa/vehicle.vue"]]);export{T as default}; diff --git a/web/settings/assets/vehicle-18edee3a.js b/web/settings/assets/vehicle-18edee3a.js new file mode 100644 index 0000000000..6c3489eb94 --- /dev/null +++ b/web/settings/assets/vehicle-18edee3a.js @@ -0,0 +1 @@ +import{_ as h,a4 as c,a5 as _,a6 as f,u as r,l as b,m as k,G as i,E as a,B as s,A as v}from"./vendor-ad7c30fd.js";import{a as w}from"./vendor-axios-8313efad.js";import{C}from"./index-b236cee5.js";import{V as y}from"./VehicleConfig-e49e5ddc.js";import"./vendor-sortablejs-20ba8ac2.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./dynamic-import-helper-be004503.js";const T={name:"VehicleSocTesla",mixins:[C,y],data(){return{tesla_api_oauth2:"https://auth.tesla.com/oauth2/v3",tesla_api_redirect:"https://auth.tesla.com/void/callback",tesla_api_owners:"https://owner-api.teslamotors.com/oauth/token",user_agent:"Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",code_challenge:null,code_verifier:null,page_not_found_url:null}},methods:{tesla_login_window(){this.tesla_gen_challenge();var e=window.open(this.tesla_gen_url(),"TeslaLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");e.focus()},tesla_gen_challenge(){this.code_verifier=c.encode(_.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=_.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=c.encode(e),console.debug(this.code_verifier,this.code_verifier.length,this.code_challenge,this.code_challenge.length)},tesla_gen_url(){const e=new URL(this.tesla_api_oauth2+"/authorize/");return e.searchParams.append("client_id","ownerapi"),e.searchParams.append("code_challenge",this.code_challenge),e.searchParams.append("code_challenge_method","S256"),e.searchParams.append("redirect_uri",this.tesla_api_redirect),e.searchParams.append("response_type","code"),e.searchParams.append("scope","openid email offline_access"),e.searchParams.append("state","myteslaapp"),e},async tesla_login(){const e=f.parse(this.page_not_found_url,!0).query;if(console.debug("queryObject",e),!e.code){console.error("Something is wrong... Code does not exist in URL"),this.$root.postClientMessage("Die eingegebene URL ist ungültig.","danger");return}const n={url:this.tesla_api_owners,user_agent:this.user_agent,data:{grant_type:"authorization_code",client_id:"ownerapi",code:e.code,code_verifier:this.code_verifier,redirect_uri:this.tesla_api_redirect}};try{const o=await w.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/vehicles/tesla/tesla.php",JSON.parse(JSON.stringify(n)),{headers:{"Content-Type":"application/json",Accept:"application/json"}});console.debug("response",o),this.updateConfiguration({access_token:o.data.access_token,refresh_token:o.data.refresh_token,created_at:o.data.created_at,expires_in:o.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(o){console.error(o),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!
"+o+"
","danger")}}}},B={class:"vehicle-soc-tesla"};function U(e,n,o,z,l,p){const u=r("openwb-base-number-input"),m=r("openwb-base-heading"),g=r("openwb-base-button-input"),d=r("openwb-base-text-input");return b(),k("div",B,[i(u,{title:"Fahrzeug-ID",required:"",min:0,"model-value":e.vehicle.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=t=>e.updateConfiguration(t,"configuration.tesla_ev_num"))},{help:a(()=>n[6]||(n[6]=[s(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')])),_:1},8,["model-value"]),i(m,null,{default:a(()=>n[7]||(n[7]=[s("Token abrufen oder eingeben")])),_:1}),i(g,{title:"1. Anmelden","button-text":"Bei Tesla Anmelden",subtype:"success",onButtonClicked:p.tesla_login_window},{help:a(()=>n[8]||(n[8]=[s(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")])),_:1},8,["onButtonClicked"]),i(d,{modelValue:l.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=t=>l.page_not_found_url=t),title:"2. URL kopieren und einfügen",subtype:"url","empty-value":null},{help:a(()=>n[9]||(n[9]=[s(' Hier die komplette URL (Text in der Adresszeile) aus dem geöffneten Browserfenster einfügen, wenn dort "Page Not Found" angezeigt wird. ')])),_:1},8,["modelValue"]),i(g,{title:"3. Token abrufen","button-text":"Jetzt abrufen",subtype:"success",disabled:l.page_not_found_url===null,onButtonClicked:p.tesla_login},{help:a(()=>n[10]||(n[10]=[s(" Der in der eingegebenen URL enthaltene Code wird genutzt, um ein Anmeldetoken bei Tesla abzurufen. Ist dies erfolgreich, so werden die Daten des Token in den weiteren Feldern automatisch eingegeben. ")])),_:1},8,["disabled","onButtonClicked"]),n[13]||(n[13]=v("hr",null,null,-1)),i(d,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=t=>e.updateConfiguration(t,"configuration.token.access_token"))},null,8,["model-value"]),i(d,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=t=>e.updateConfiguration(t,"configuration.token.refresh_token"))},null,8,["model-value"]),i(u,{title:"Erstellt um",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateConfiguration(t,"configuration.token.created_at"))},{help:a(()=>n[11]||(n[11]=[s(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")])),_:1},8,["model-value"]),i(u,{title:"Ungültig in",unit:"s",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateConfiguration(t,"configuration.token.expires_in"))},{help:a(()=>n[12]||(n[12]=[s(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")])),_:1},8,["model-value"])])}const D=h(T,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{D as default}; diff --git a/web/settings/assets/vehicle-1fd068b4.js b/web/settings/assets/vehicle-1fd068b4.js deleted file mode 100644 index 9d455ea2f5..0000000000 --- a/web/settings/assets/vehicle-1fd068b4.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as h,a4 as c,a5 as _,a6 as f,u as r,l as b,m as k,G as i,E as a,y as s,x as v}from"./vendor-ea36120f.js";import{a as w}from"./vendor-axios-1f03ee31.js";import{C as y}from"./index-cc8f65ba.js";import{V as C}from"./VehicleConfig-a49bda81.js";import"./vendor-sortablejs-c6aaccb3.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./dynamic-import-helper-be004503.js";const T={name:"VehicleSocTesla",mixins:[y,C],data(){return{tesla_api_oauth2:"https://auth.tesla.com/oauth2/v3",tesla_api_redirect:"https://auth.tesla.com/void/callback",tesla_api_owners:"https://owner-api.teslamotors.com/oauth/token",user_agent:"Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",code_challenge:null,code_verifier:null,page_not_found_url:null}},methods:{tesla_login_window(){this.tesla_gen_challenge();var e=window.open(this.tesla_gen_url(),"TeslaLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");e.focus()},tesla_gen_challenge(){this.code_verifier=c.encode(_.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=_.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=c.encode(e),console.debug(this.code_verifier,this.code_verifier.length,this.code_challenge,this.code_challenge.length)},tesla_gen_url(){const e=new URL(this.tesla_api_oauth2+"/authorize/");return e.searchParams.append("client_id","ownerapi"),e.searchParams.append("code_challenge",this.code_challenge),e.searchParams.append("code_challenge_method","S256"),e.searchParams.append("redirect_uri",this.tesla_api_redirect),e.searchParams.append("response_type","code"),e.searchParams.append("scope","openid email offline_access"),e.searchParams.append("state","myteslaapp"),e},async tesla_login(){const e=f.parse(this.page_not_found_url,!0).query;if(console.debug("queryObject",e),!e.code){console.error("Something is wrong... Code does not exist in URL"),this.$root.postClientMessage("Die eingegebene URL ist ungültig.","danger");return}const n={url:this.tesla_api_owners,user_agent:this.user_agent,data:{grant_type:"authorization_code",client_id:"ownerapi",code:e.code,code_verifier:this.code_verifier,redirect_uri:this.tesla_api_redirect}};try{const o=await w.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/vehicles/tesla/tesla.php",JSON.parse(JSON.stringify(n)),{headers:{"Content-Type":"application/json",Accept:"application/json"}});console.debug("response",o),this.updateConfiguration({access_token:o.data.access_token,refresh_token:o.data.refresh_token,created_at:o.data.created_at,expires_in:o.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(o){console.error(o),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!
"+o+"
","danger")}}}},U={class:"vehicle-soc-tesla"};function B(e,n,o,z,l,p){const u=r("openwb-base-number-input"),m=r("openwb-base-heading"),g=r("openwb-base-button-input"),d=r("openwb-base-text-input");return b(),k("div",U,[i(u,{title:"Fahrzeug-ID",required:"",min:0,"model-value":e.vehicle.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=t=>e.updateConfiguration(t,"configuration.tesla_ev_num"))},{help:a(()=>n[6]||(n[6]=[s(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')])),_:1},8,["model-value"]),i(m,null,{default:a(()=>n[7]||(n[7]=[s("Token abrufen oder eingeben")])),_:1}),i(g,{title:"1. Anmelden","button-text":"Bei Tesla Anmelden",subtype:"success",onButtonClicked:p.tesla_login_window},{help:a(()=>n[8]||(n[8]=[s(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")])),_:1},8,["onButtonClicked"]),i(d,{modelValue:l.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=t=>l.page_not_found_url=t),title:"2. URL kopieren und einfügen",subtype:"url","empty-value":null},{help:a(()=>n[9]||(n[9]=[s(' Hier die komplette URL (Text in der Adresszeile) aus dem geöffneten Browserfenster einfügen, wenn dort "Page Not Found" angezeigt wird. ')])),_:1},8,["modelValue"]),i(g,{title:"3. Token abrufen","button-text":"Jetzt abrufen",subtype:"success",disabled:l.page_not_found_url===null,onButtonClicked:p.tesla_login},{help:a(()=>n[10]||(n[10]=[s(" Der in der eingegebenen URL enthaltene Code wird genutzt, um ein Anmeldetoken bei Tesla abzurufen. Ist dies erfolgreich, so werden die Daten des Token in den weiteren Feldern automatisch eingegeben. ")])),_:1},8,["disabled","onButtonClicked"]),n[13]||(n[13]=v("hr",null,null,-1)),i(d,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=t=>e.updateConfiguration(t,"configuration.token.access_token"))},null,8,["model-value"]),i(d,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=t=>e.updateConfiguration(t,"configuration.token.refresh_token"))},null,8,["model-value"]),i(u,{title:"Erstellt um",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateConfiguration(t,"configuration.token.created_at"))},{help:a(()=>n[11]||(n[11]=[s(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")])),_:1},8,["model-value"]),i(u,{title:"Ungültig in",unit:"s",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateConfiguration(t,"configuration.token.expires_in"))},{help:a(()=>n[12]||(n[12]=[s(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")])),_:1},8,["model-value"])])}const x=h(T,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{x as default}; diff --git a/web/settings/assets/vehicle-da54a31e.js b/web/settings/assets/vehicle-2530ac78.js similarity index 69% rename from web/settings/assets/vehicle-da54a31e.js rename to web/settings/assets/vehicle-2530ac78.js index 74bd0beb2f..697e1e00ee 100644 --- a/web/settings/assets/vehicle-da54a31e.js +++ b/web/settings/assets/vehicle-2530ac78.js @@ -1 +1 @@ -import{V as a}from"./VehicleConfig-a49bda81.js";import{_ as u,u as l,l as p,m as s,G as i}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocEvnotify",mixins:[a]},d={class:"vehicle-soc-evnotify"};function f(e,o,c,v,b,g){const r=l("openwb-base-number-input"),t=l("openwb-base-text-input");return p(),s("div",d,[i(r,{title:"ID",required:"",min:0,"model-value":e.vehicle.configuration.id,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.id"))},null,8,["model-value"]),i(t,{title:"AKey",required:"","model-value":e.vehicle.configuration.akey,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.akey"))},null,8,["model-value"]),i(t,{title:"Token",required:"","model-value":e.vehicle.configuration.token,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.token"))},null,8,["model-value"])])}const B=u(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evnotify/vehicle.vue"]]);export{B as default}; +import{V as a}from"./VehicleConfig-e49e5ddc.js";import{_ as u,u as l,l as p,m as s,G as i}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocEvnotify",mixins:[a]},d={class:"vehicle-soc-evnotify"};function f(e,o,c,v,b,g){const r=l("openwb-base-number-input"),t=l("openwb-base-text-input");return p(),s("div",d,[i(r,{title:"ID",required:"",min:0,"model-value":e.vehicle.configuration.id,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.id"))},null,8,["model-value"]),i(t,{title:"AKey",required:"","model-value":e.vehicle.configuration.akey,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.akey"))},null,8,["model-value"]),i(t,{title:"Token",required:"","model-value":e.vehicle.configuration.token,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.token"))},null,8,["model-value"])])}const B=u(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evnotify/vehicle.vue"]]);export{B as default}; diff --git a/web/settings/assets/vehicle-47f7fadf.js b/web/settings/assets/vehicle-3f811862.js similarity index 64% rename from web/settings/assets/vehicle-47f7fadf.js rename to web/settings/assets/vehicle-3f811862.js index 2cdfff977a..2250d39f28 100644 --- a/web/settings/assets/vehicle-47f7fadf.js +++ b/web/settings/assets/vehicle-3f811862.js @@ -1 +1 @@ -import{V as n}from"./VehicleConfig-a49bda81.js";import{_ as s,u as i,l as o,m as r,G as a,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const p={name:"VehicleSocManual",mixins:[n]},c={class:"vehicle-soc-tesla"};function m(u,e,_,f,h,g){const t=i("openwb-base-alert");return o(),r("div",c,[a(t,{subtype:"info"},{default:d(()=>e[0]||(e[0]=[l(' Beim Anstecken des Fahrzeugs muss der aktuelle SoC über die Hauptseite angegeben werden. Anhand des Zählers im Ladepunkt wird dann der aktuelle SoC errechnet. Ausschlaggebend für die Qualität dieses Moduls sind die beiden Einstellungen "Kapazität der Batterie" in dem Fahrzeug-Profil und "Wirkungsgrad der Ladeelektronik". ')])),_:1})])}const z=s(p,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/manual/vehicle.vue"]]);export{z as default}; +import{V as n}from"./VehicleConfig-e49e5ddc.js";import{_ as s,u as i,l as o,m as r,G as a,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const p={name:"VehicleSocManual",mixins:[n]},c={class:"vehicle-soc-tesla"};function m(u,e,_,f,h,g){const t=i("openwb-base-alert");return o(),r("div",c,[a(t,{subtype:"info"},{default:d(()=>e[0]||(e[0]=[l(' Beim Anstecken des Fahrzeugs muss der aktuelle SoC über die Hauptseite angegeben werden. Anhand des Zählers im Ladepunkt wird dann der aktuelle SoC errechnet. Ausschlaggebend für die Qualität dieses Moduls sind die beiden Einstellungen "Kapazität der Batterie" in dem Fahrzeug-Profil und "Wirkungsgrad der Ladeelektronik". ')])),_:1})])}const z=s(p,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/manual/vehicle.vue"]]);export{z as default}; diff --git a/web/settings/assets/vehicle-47a5b0e6.js b/web/settings/assets/vehicle-5227ffda.js similarity index 75% rename from web/settings/assets/vehicle-47a5b0e6.js rename to web/settings/assets/vehicle-5227ffda.js index 7a213b955f..df242084ad 100644 --- a/web/settings/assets/vehicle-47a5b0e6.js +++ b/web/settings/assets/vehicle-5227ffda.js @@ -1 +1 @@ -import{V as m}from"./VehicleConfig-a49bda81.js";import{_ as d,u as r,l as u,m as f,G as n,E as l,y as o,x as t,F as p}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"VehicleSocMqtt",mixins:[m]},v={class:"vehicle-soc-mqtt"};function g(i,e,w,x,k,B){const s=r("openwb-base-copy-to-clipboard"),a=r("openwb-base-alert");return u(),f("div",v,[n(a,{subtype:"info"},{default:l(()=>[e[12]||(e[12]=o(" Die Daten werden immer dann aktualisiert, wenn das Topic veröffentlicht wird. Die Abfrageintervalle werden nicht berücksichtigt, da das Intervall vom sendenden Client festgelegt wird. ")),t("ul",null,[t("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[o(" openWB/set/vehicle/"+p(i.vehicleId)+"/get/soc ",1)]),_:1}),e[0]||(e[0]=t("br",null,null,-1)),e[1]||(e[1]=o(" Fahrzeug-SoC mit Nachkommastellen (Float) oder Ganzzahl")),e[2]||(e[2]=t("br",null,null,-1)),e[3]||(e[3]=o(" Beispiel: ")),e[4]||(e[4]=t("span",{class:"text-info"},"89.5",-1))]),t("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[o(" openWB/set/vehicle/"+p(i.vehicleId)+"/get/range ",1)]),_:1}),e[5]||(e[5]=t("br",null,null,-1)),e[6]||(e[6]=o(" Reichweite des Fahrzeugs in km mit Nachkommastellen (Float) oder Ganzzahl")),e[7]||(e[7]=t("br",null,null,-1)),e[8]||(e[8]=o(" Diese Info ist optional.")),e[9]||(e[9]=t("br",null,null,-1)),e[10]||(e[10]=o(" Beispiel: ")),e[11]||(e[11]=t("span",{class:"text-info"},"356.5",-1))])])]),_:1})])}const $=d(b,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mqtt/vehicle.vue"]]);export{$ as default}; +import{V as m}from"./VehicleConfig-e49e5ddc.js";import{_ as d,u as r,l as u,m as f,G as n,E as l,B as o,A as t,F as p}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"VehicleSocMqtt",mixins:[m]},v={class:"vehicle-soc-mqtt"};function g(i,e,w,k,x,B){const s=r("openwb-base-copy-to-clipboard"),a=r("openwb-base-alert");return u(),f("div",v,[n(a,{subtype:"info"},{default:l(()=>[e[12]||(e[12]=o(" Die Daten werden immer dann aktualisiert, wenn das Topic veröffentlicht wird. Die Abfrageintervalle werden nicht berücksichtigt, da das Intervall vom sendenden Client festgelegt wird. ")),t("ul",null,[t("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[o(" openWB/set/vehicle/"+p(i.vehicleId)+"/get/soc ",1)]),_:1}),e[0]||(e[0]=t("br",null,null,-1)),e[1]||(e[1]=o(" Fahrzeug-SoC mit Nachkommastellen (Float) oder Ganzzahl")),e[2]||(e[2]=t("br",null,null,-1)),e[3]||(e[3]=o(" Beispiel: ")),e[4]||(e[4]=t("span",{class:"text-info"},"89.5",-1))]),t("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[o(" openWB/set/vehicle/"+p(i.vehicleId)+"/get/range ",1)]),_:1}),e[5]||(e[5]=t("br",null,null,-1)),e[6]||(e[6]=o(" Reichweite des Fahrzeugs in km mit Nachkommastellen (Float) oder Ganzzahl")),e[7]||(e[7]=t("br",null,null,-1)),e[8]||(e[8]=o(" Diese Info ist optional.")),e[9]||(e[9]=t("br",null,null,-1)),e[10]||(e[10]=o(" Beispiel: ")),e[11]||(e[11]=t("span",{class:"text-info"},"356.5",-1))])])]),_:1})])}const $=d(b,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mqtt/vehicle.vue"]]);export{$ as default}; diff --git a/web/settings/assets/vehicle-9fdd28f6.js b/web/settings/assets/vehicle-6006f37f.js similarity index 91% rename from web/settings/assets/vehicle-9fdd28f6.js rename to web/settings/assets/vehicle-6006f37f.js index 4e7b2b2604..3b1a5e8460 100644 --- a/web/settings/assets/vehicle-9fdd28f6.js +++ b/web/settings/assets/vehicle-6006f37f.js @@ -1 +1 @@ -import{V as m}from"./VehicleConfig-a49bda81.js";import{_ as p,u as s,l as g,m as b,G as r,E as i,y as n,x as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"VehicleSocJson",mixins:[m]},w={class:"vehicle-soc-json"};function h(t,e,v,c,k,z){const a=s("openwb-base-text-input"),u=s("openwb-base-button-group-input"),d=s("openwb-base-number-input");return g(),b("div",w,[r(a,{title:"URL",subtype:"url",required:"","model-value":t.vehicle.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.url"))},{help:i(()=>e[6]||(e[6]=[n(" Es wird eine komplette URL erwartet mit Angaben zum Protokoll, IP oder Hostnamen, optional einem Port und einem Pfad. Die Antwort muss ein json-Objekt sein. Beispiel: http://192.168.1.1:8080/json?data=1 ")])),_:1},8,["model-value"]),r(a,{title:"Abfrage für SoC",subtype:"text",required:"","model-value":t.vehicle.configuration.soc_pattern,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.soc_pattern"))},{help:i(()=>e[7]||(e[7]=[n(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"response":{"soc":"39.8", "range": "207", "timestamp":1734054449}} So muss hier .response.soc eingetragen werden. '),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen Ladestand (SoC) darstellt. ")])),_:1},8,["model-value"]),r(a,{title:"Abfrage für Reichweite",subtype:"text","model-value":t.vehicle.configuration.range_pattern,"onUpdate:modelValue":e[2]||(e[2]=o=>t.updateConfiguration(o,"configuration.range_pattern"))},{help:i(()=>e[8]||(e[8]=[n(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"response":{"soc":"39.8", "range": "207", "timestamp":1734054449}} So muss hier .response.range eingetragen werden. '),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Reichweite darstellt."),l("br",null,null,-1),n(" Ohne Angabe wird die Reichweite nicht abgefragt und auf Null gesetzt. ")])),_:1},8,["model-value"]),r(a,{title:"Abfrage für Zeitstempel",subtype:"text","model-value":t.vehicle.configuration.timestamp_pattern,"onUpdate:modelValue":e[3]||(e[3]=o=>t.updateConfiguration(o,"configuration.timestamp_pattern"))},{help:i(()=>e[9]||(e[9]=[n(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"response":{"soc":"39.8", "range": "207", "timestamp":1734054449}} So muss hier .response.timestamp eingetragen werden.'),l("br",null,null,-1),n(" Es wird vom Server entweder eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen als Epoch Zeitstempel oder eine ISO 8601 formatierte Zeit erwartet welche den Zeitstempel der gelieferten Werte darstellt."),l("br",null,null,-1),n(" Ohne Angabe wird der Zeitpunkt des Datenabrufs als Zeitstempel verwendet. ")])),_:1},8,["model-value"]),r(u,{title:"SoC während der Ladung berechnen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.vehicle.configuration.calculate_soc,"onUpdate:modelValue":e[4]||(e[4]=o=>t.updateConfiguration(o,"configuration.calculate_soc"))},{help:i(()=>e[10]||(e[10]=[n(" Berechnet den Ladestand (SoC) während der Ladung. Dies ist notwendig, wenn der SoC nicht über die Schnittstelle des Fahrzeugs abgerufen werden kann. Die Berechnung erfolgt über die Ladeleistung und die Ladedauer. "),l("br",null,null,-1),n(" Derzeit u.a. notwendig für Peugeot, Opel, Citroen und DS. ")])),_:1},8,["model-value"]),r(d,{title:"Timeout für http-Abfragen",subtype:"number","model-value":t.vehicle.configuration.timeout,"onUpdate:modelValue":e[5]||(e[5]=o=>t.updateConfiguration(o,"configuration.timeout"))},{help:i(()=>e[11]||(e[11]=[n(" Ermöglicht es einen Timeout für die http-Abfragen zu setzen. Der Wert wird in Sekunden angegeben. Standardwert ist 5 Sekunden sofern kein anderer Wert angegeben ist. ")])),_:1},8,["model-value"])])}const E=p(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/json/vehicle.vue"]]);export{E as default}; +import{V as m}from"./VehicleConfig-e49e5ddc.js";import{_ as p,u as s,l as g,m as b,G as r,E as i,B as n,A as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"VehicleSocJson",mixins:[m]},w={class:"vehicle-soc-json"};function h(t,e,v,c,k,z){const a=s("openwb-base-text-input"),u=s("openwb-base-button-group-input"),d=s("openwb-base-number-input");return g(),b("div",w,[r(a,{title:"URL",subtype:"url",required:"","model-value":t.vehicle.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.url"))},{help:i(()=>e[6]||(e[6]=[n(" Es wird eine komplette URL erwartet mit Angaben zum Protokoll, IP oder Hostnamen, optional einem Port und einem Pfad. Die Antwort muss ein json-Objekt sein. Beispiel: http://192.168.1.1:8080/json?data=1 ")])),_:1},8,["model-value"]),r(a,{title:"Abfrage für SoC",subtype:"text",required:"","model-value":t.vehicle.configuration.soc_pattern,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.soc_pattern"))},{help:i(()=>e[7]||(e[7]=[n(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"response":{"soc":"39.8", "range": "207", "timestamp":1734054449}} So muss hier .response.soc eingetragen werden. '),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen Ladestand (SoC) darstellt. ")])),_:1},8,["model-value"]),r(a,{title:"Abfrage für Reichweite",subtype:"text","model-value":t.vehicle.configuration.range_pattern,"onUpdate:modelValue":e[2]||(e[2]=o=>t.updateConfiguration(o,"configuration.range_pattern"))},{help:i(()=>e[8]||(e[8]=[n(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"response":{"soc":"39.8", "range": "207", "timestamp":1734054449}} So muss hier .response.range eingetragen werden. '),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Reichweite darstellt."),l("br",null,null,-1),n(" Ohne Angabe wird die Reichweite nicht abgefragt und auf Null gesetzt. ")])),_:1},8,["model-value"]),r(a,{title:"Abfrage für Zeitstempel",subtype:"text","model-value":t.vehicle.configuration.timestamp_pattern,"onUpdate:modelValue":e[3]||(e[3]=o=>t.updateConfiguration(o,"configuration.timestamp_pattern"))},{help:i(()=>e[9]||(e[9]=[n(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"response":{"soc":"39.8", "range": "207", "timestamp":1734054449}} So muss hier .response.timestamp eingetragen werden.'),l("br",null,null,-1),n(" Es wird vom Server entweder eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen als Epoch Zeitstempel oder eine ISO 8601 formatierte Zeit erwartet welche den Zeitstempel der gelieferten Werte darstellt."),l("br",null,null,-1),n(" Ohne Angabe wird der Zeitpunkt des Datenabrufs als Zeitstempel verwendet. ")])),_:1},8,["model-value"]),r(u,{title:"SoC während der Ladung berechnen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.vehicle.configuration.calculate_soc,"onUpdate:modelValue":e[4]||(e[4]=o=>t.updateConfiguration(o,"configuration.calculate_soc"))},{help:i(()=>e[10]||(e[10]=[n(" Berechnet den Ladestand (SoC) während der Ladung. Dies ist notwendig, wenn der SoC nicht über die Schnittstelle des Fahrzeugs abgerufen werden kann. Die Berechnung erfolgt über die Ladeleistung und die Ladedauer. "),l("br",null,null,-1),n(" Derzeit u.a. notwendig für Peugeot, Opel, Citroen und DS. ")])),_:1},8,["model-value"]),r(d,{title:"Timeout für http-Abfragen",subtype:"number","model-value":t.vehicle.configuration.timeout,"onUpdate:modelValue":e[5]||(e[5]=o=>t.updateConfiguration(o,"configuration.timeout"))},{help:i(()=>e[11]||(e[11]=[n(" Ermöglicht es einen Timeout für die http-Abfragen zu setzen. Der Wert wird in Sekunden angegeben. Standardwert ist 5 Sekunden sofern kein anderer Wert angegeben ist. ")])),_:1},8,["model-value"])])}const E=p(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/json/vehicle.vue"]]);export{E as default}; diff --git a/web/settings/assets/vehicle-1c25409c.js b/web/settings/assets/vehicle-711a16c0.js similarity index 82% rename from web/settings/assets/vehicle-1c25409c.js rename to web/settings/assets/vehicle-711a16c0.js index 62ed5e0c7b..b1e9f31749 100644 --- a/web/settings/assets/vehicle-1c25409c.js +++ b/web/settings/assets/vehicle-711a16c0.js @@ -1 +1 @@ -import{V as u}from"./VehicleConfig-a49bda81.js";import{_ as d,u as l,l as s,m as p,G as n,E as m,y as a,x as v}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"VehicleSocAiways",mixins:[u]},g={class:"vehicle-soc-aiways"};function c(o,e,w,V,b,C){const r=l("openwb-base-alert"),t=l("openwb-base-text-input");return s(),p("div",g,[n(r,{subtype:"info"},{default:m(()=>e[6]||(e[6]=[a(" Alle Werte müssen von der Aiways App abgefangen werden. Dazu kann diese "),v("a",{href:"https://community.home-assistant.io/t/read-aiways-u5-state-of-charge/466441/5"}," Anleitung ",-1),a(" verwendet werden. ")])),_:1}),n(t,{title:"User ID",required:"","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.user_id"))},null,8,["model-value"]),n(t,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[1]||(e[1]=i=>o.updateConfiguration(i,"configuration.vin"))},null,8,["model-value"]),n(t,{title:"Device ID",required:"","model-value":o.vehicle.configuration.device_id,"onUpdate:modelValue":e[2]||(e[2]=i=>o.updateConfiguration(i,"configuration.device_id"))},null,8,["model-value"]),n(t,{title:"Register ID",required:"","model-value":o.vehicle.configuration.register_id,"onUpdate:modelValue":e[3]||(e[3]=i=>o.updateConfiguration(i,"configuration.register_id"))},null,8,["model-value"]),n(t,{title:"Token",required:"","model-value":o.vehicle.configuration.token,"onUpdate:modelValue":e[4]||(e[4]=i=>o.updateConfiguration(i,"configuration.token"))},null,8,["model-value"]),n(t,{title:"Condition URL",subtype:"url",required:"","model-value":o.vehicle.configuration.condition_url,"onUpdate:modelValue":e[5]||(e[5]=i=>o.updateConfiguration(i,"configuration.condition_url"))},null,8,["model-value"])])}const I=d(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/aiways/vehicle.vue"]]);export{I as default}; +import{V as u}from"./VehicleConfig-e49e5ddc.js";import{_ as d,u as l,l as s,m as p,G as n,E as m,B as a,A as v}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"VehicleSocAiways",mixins:[u]},g={class:"vehicle-soc-aiways"};function c(o,e,w,V,b,C){const r=l("openwb-base-alert"),t=l("openwb-base-text-input");return s(),p("div",g,[n(r,{subtype:"info"},{default:m(()=>e[6]||(e[6]=[a(" Alle Werte müssen von der Aiways App abgefangen werden. Dazu kann diese "),v("a",{href:"https://community.home-assistant.io/t/read-aiways-u5-state-of-charge/466441/5"}," Anleitung ",-1),a(" verwendet werden. ")])),_:1}),n(t,{title:"User ID",required:"","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.user_id"))},null,8,["model-value"]),n(t,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[1]||(e[1]=i=>o.updateConfiguration(i,"configuration.vin"))},null,8,["model-value"]),n(t,{title:"Device ID",required:"","model-value":o.vehicle.configuration.device_id,"onUpdate:modelValue":e[2]||(e[2]=i=>o.updateConfiguration(i,"configuration.device_id"))},null,8,["model-value"]),n(t,{title:"Register ID",required:"","model-value":o.vehicle.configuration.register_id,"onUpdate:modelValue":e[3]||(e[3]=i=>o.updateConfiguration(i,"configuration.register_id"))},null,8,["model-value"]),n(t,{title:"Token",required:"","model-value":o.vehicle.configuration.token,"onUpdate:modelValue":e[4]||(e[4]=i=>o.updateConfiguration(i,"configuration.token"))},null,8,["model-value"]),n(t,{title:"Condition URL",subtype:"url",required:"","model-value":o.vehicle.configuration.condition_url,"onUpdate:modelValue":e[5]||(e[5]=i=>o.updateConfiguration(i,"configuration.condition_url"))},null,8,["model-value"])])}const I=d(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/aiways/vehicle.vue"]]);export{I as default}; diff --git a/web/settings/assets/vehicle-74dc0824.js b/web/settings/assets/vehicle-7ee8a745.js similarity index 84% rename from web/settings/assets/vehicle-74dc0824.js rename to web/settings/assets/vehicle-7ee8a745.js index 0f4cd92b91..e05cfec4e2 100644 --- a/web/settings/assets/vehicle-74dc0824.js +++ b/web/settings/assets/vehicle-7ee8a745.js @@ -1 +1 @@ -import{V as a}from"./VehicleConfig-a49bda81.js";import{_ as d,u,l as p,m as g,G as o,E as l,y as i,x as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocTronity",mixins:[a]},f={class:"vehicle-soc-tronity"};function b(n,e,v,C,w,h){const r=u("openwb-base-text-input"),s=u("openwb-base-button-group-input");return p(),g("div",f,[o(r,{title:"Vehicle ID",subtype:"text",required:"","model-value":n.vehicle.configuration.vehicle_id,"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.vehicle_id"))},{help:l(()=>e[4]||(e[4]=[i(' Vehicle ID aus Tronity angeben. Diese ist in den "Assigned Vehicles" zu finden. ')])),_:1},8,["model-value"]),o(r,{title:"Client ID",subtype:"text",required:"","model-value":n.vehicle.configuration.client_id,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.client_id"))},{help:l(()=>e[5]||(e[5]=[i(' Client ID aus Tronity angeben. Diese ist in den "Application Settings" zu finden. ')])),_:1},8,["model-value"]),o(r,{title:"Client Secret",subtype:"password",required:"","model-value":n.vehicle.configuration.client_secret,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.client_secret"))},{help:l(()=>e[6]||(e[6]=[i(' Client Secret aus Tronity angeben. Diese ist in den "Application Settings" zu finden. Das Client Secret kann nur einmalig abgerufen werden. Ggf. neu erzeugen, womit frühere Client Secrets ungültig werden. ')])),_:1},8,["model-value"]),o(s,{title:"SoC während der Ladung berechnen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.vehicle.configuration.calculate_soc,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateConfiguration(t,"configuration.calculate_soc"))},{help:l(()=>e[7]||(e[7]=[i(" Berechnet den Ladestand (SoC) während der Ladung. Dies ist notwendig, wenn der SoC nicht über die Schnittstelle des Fahrzeugs abgerufen werden kann. Die Berechnung erfolgt über die Ladeleistung und die Ladedauer. "),c("br",null,null,-1),i(" Derzeit notwendig für Peugeot, Opel, Citroen und DS. ")])),_:1},8,["model-value"])])}const T=d(m,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tronity/vehicle.vue"]]);export{T as default}; +import{V as a}from"./VehicleConfig-e49e5ddc.js";import{_ as d,u,l as p,m as g,G as o,E as l,B as i,A as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocTronity",mixins:[a]},f={class:"vehicle-soc-tronity"};function b(n,e,v,C,w,h){const r=u("openwb-base-text-input"),s=u("openwb-base-button-group-input");return p(),g("div",f,[o(r,{title:"Vehicle ID",subtype:"text",required:"","model-value":n.vehicle.configuration.vehicle_id,"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.vehicle_id"))},{help:l(()=>e[4]||(e[4]=[i(' Vehicle ID aus Tronity angeben. Diese ist in den "Assigned Vehicles" zu finden. ')])),_:1},8,["model-value"]),o(r,{title:"Client ID",subtype:"text",required:"","model-value":n.vehicle.configuration.client_id,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.client_id"))},{help:l(()=>e[5]||(e[5]=[i(' Client ID aus Tronity angeben. Diese ist in den "Application Settings" zu finden. ')])),_:1},8,["model-value"]),o(r,{title:"Client Secret",subtype:"password",required:"","model-value":n.vehicle.configuration.client_secret,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.client_secret"))},{help:l(()=>e[6]||(e[6]=[i(' Client Secret aus Tronity angeben. Diese ist in den "Application Settings" zu finden. Das Client Secret kann nur einmalig abgerufen werden. Ggf. neu erzeugen, womit frühere Client Secrets ungültig werden. ')])),_:1},8,["model-value"]),o(s,{title:"SoC während der Ladung berechnen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.vehicle.configuration.calculate_soc,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateConfiguration(t,"configuration.calculate_soc"))},{help:l(()=>e[7]||(e[7]=[i(" Berechnet den Ladestand (SoC) während der Ladung. Dies ist notwendig, wenn der SoC nicht über die Schnittstelle des Fahrzeugs abgerufen werden kann. Die Berechnung erfolgt über die Ladeleistung und die Ladedauer. "),c("br",null,null,-1),i(" Derzeit notwendig für Peugeot, Opel, Citroen und DS. ")])),_:1},8,["model-value"])])}const T=d(m,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tronity/vehicle.vue"]]);export{T as default}; diff --git a/web/settings/assets/vehicle-5cb1a571.js b/web/settings/assets/vehicle-865f01e8.js similarity index 66% rename from web/settings/assets/vehicle-5cb1a571.js rename to web/settings/assets/vehicle-865f01e8.js index 09c713533a..3c7e2bc918 100644 --- a/web/settings/assets/vehicle-5cb1a571.js +++ b/web/settings/assets/vehicle-865f01e8.js @@ -1 +1 @@ -import{V as l}from"./VehicleConfig-a49bda81.js";import{_ as a,u,l as d,m as p,G as t,E as r,y as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocVwid",mixins:[l]},v={class:"vehicle-soc-vwid"};function f(o,e,g,w,V,b){const i=u("openwb-base-text-input");return d(),p("div",v,[t(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung an den VW-Servern. ")])),_:1},8,["model-value"]),t(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung an den VW-Servern. ")])),_:1},8,["model-value"]),t(i,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[5]||(e[5]=[s(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const z=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/vwid/vehicle.vue"]]);export{z as default}; +import{V as l}from"./VehicleConfig-e49e5ddc.js";import{_ as a,u,l as d,m as p,G as t,E as r,B as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocVwid",mixins:[l]},v={class:"vehicle-soc-vwid"};function f(o,e,g,w,V,b){const i=u("openwb-base-text-input");return d(),p("div",v,[t(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung an den VW-Servern. ")])),_:1},8,["model-value"]),t(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung an den VW-Servern. ")])),_:1},8,["model-value"]),t(i,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[5]||(e[5]=[s(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const D=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/vwid/vehicle.vue"]]);export{D as default}; diff --git a/web/settings/assets/vehicle-0951b87d.js b/web/settings/assets/vehicle-9213f7f9.js similarity index 68% rename from web/settings/assets/vehicle-0951b87d.js rename to web/settings/assets/vehicle-9213f7f9.js index 14a01a0a9a..37775860ac 100644 --- a/web/settings/assets/vehicle-0951b87d.js +++ b/web/settings/assets/vehicle-9213f7f9.js @@ -1 +1 @@ -import{V as a}from"./VehicleConfig-a49bda81.js";import{_ as s,u as p,l as u,m,G as n,E as r,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const d={name:"VehicleSocHttp",mixins:[a]},c={class:"vehicle-soc-http"};function v(t,e,f,h,g,w){const i=p("openwb-base-text-input");return u(),m("div",c,[n(i,{title:"SoC URL",subtype:"url",required:"","model-value":t.vehicle.configuration.soc_url,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.soc_url"))},{help:r(()=>e[2]||(e[2]=[l(" Es wird vom Server eine Zahl (Float mit Punkt als Dezimaltrennzeichen oder Integer) erwartet, welche den aktuellen Ladestand in Prozent (0 bis 100) zurückgibt. ")])),_:1},8,["model-value"]),n(i,{title:"Reichweiten URL",subtype:"url","model-value":t.vehicle.configuration.range_url,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.range_url"))},{help:r(()=>e[3]||(e[3]=[l(" Es wird vom Server eine Zahl (Float mit Punkt als Dezimaltrennzeichen oder Integer) erwartet, welche die aktuelle Reichweite in Kilometern darstellt. Diese Angabe ist optional. ")])),_:1},8,["model-value"])])}const S=s(d,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/http/vehicle.vue"]]);export{S as default}; +import{V as a}from"./VehicleConfig-e49e5ddc.js";import{_ as s,u as p,l as u,m,G as n,E as r,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const d={name:"VehicleSocHttp",mixins:[a]},c={class:"vehicle-soc-http"};function v(t,e,f,h,g,w){const i=p("openwb-base-text-input");return u(),m("div",c,[n(i,{title:"SoC URL",subtype:"url",required:"","model-value":t.vehicle.configuration.soc_url,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.soc_url"))},{help:r(()=>e[2]||(e[2]=[l(" Es wird vom Server eine Zahl (Float mit Punkt als Dezimaltrennzeichen oder Integer) erwartet, welche den aktuellen Ladestand in Prozent (0 bis 100) zurückgibt. ")])),_:1},8,["model-value"]),n(i,{title:"Reichweiten URL",subtype:"url","model-value":t.vehicle.configuration.range_url,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.range_url"))},{help:r(()=>e[3]||(e[3]=[l(" Es wird vom Server eine Zahl (Float mit Punkt als Dezimaltrennzeichen oder Integer) erwartet, welche die aktuelle Reichweite in Kilometern darstellt. Diese Angabe ist optional. ")])),_:1},8,["model-value"])])}const R=s(d,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/http/vehicle.vue"]]);export{R as default}; diff --git a/web/settings/assets/vehicle-f595aaa1.js b/web/settings/assets/vehicle-94956e80.js similarity index 77% rename from web/settings/assets/vehicle-f595aaa1.js rename to web/settings/assets/vehicle-94956e80.js index ad5f4061f8..21ca42a76c 100644 --- a/web/settings/assets/vehicle-f595aaa1.js +++ b/web/settings/assets/vehicle-94956e80.js @@ -1 +1 @@ -import{V as l}from"./VehicleConfig-a49bda81.js";import{_ as p,u as a,l as m,m as f,G as r,E as t,y as i}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const g={name:"VehicleSocPSACC",mixins:[l]},v={class:"vehicle-soc-psacc"};function c(n,e,b,_,C,h){const d=a("openwb-base-alert"),s=a("openwb-base-text-input"),u=a("openwb-base-number-input");return m(),f("div",v,[r(d,{subtype:"info"},{default:t(()=>e[3]||(e[3]=[i(' Der PSA Car Controller muss auf einem eigenen Host installiert werden, mit Zugangsdaten konfiguriert werden und dauerhaft laufen. Die openWB ruft den SoC zu Beginn der Ladung vom PSA Car Controller ab. Während der Ladung liefert PSA keine Updates. Daher wird der SoC während der Ladung aus dem Zählerstand berechnet. Ausschlaggebend für die Genauigkeit dieser Berechnung sind die beiden Einstellungen "Kapazität der Batterie" und "Wirkungsgrad der Ladeelektronik" im Fahrzeug-Profil. ')])),_:1}),r(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.vehicle.configuration.psacc_server_or_ip,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.psacc_server_or_ip"))},{help:t(()=>e[4]||(e[4]=[i("Host, auf dem der PSA Car Controller läuft.")])),_:1},8,["model-value"]),r(u,{title:"Port",required:"",min:1,max:65535,"model-value":n.vehicle.configuration.psacc_port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.psacc_port"))},{help:t(()=>e[5]||(e[5]=[i("Nummer des Ports, den der PSA Car Controller verwendet.")])),_:1},8,["model-value"]),r(s,{title:"VIN",subtype:"text",required:"","model-value":n.vehicle.configuration.vehicle_vin,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.vehicle_vin"))},{help:t(()=>e[6]||(e[6]=[i("Fahrzeug-Identifizierungsnummer des Fahrzeugs, von dem der SoC abgefragt wird.")])),_:1},8,["model-value"])])}const y=p(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/psacc/vehicle.vue"]]);export{y as default}; +import{V as l}from"./VehicleConfig-e49e5ddc.js";import{_ as p,u as a,l as m,m as f,G as r,E as t,B as i}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const g={name:"VehicleSocPSACC",mixins:[l]},v={class:"vehicle-soc-psacc"};function c(n,e,b,_,C,h){const d=a("openwb-base-alert"),s=a("openwb-base-text-input"),u=a("openwb-base-number-input");return m(),f("div",v,[r(d,{subtype:"info"},{default:t(()=>e[3]||(e[3]=[i(' Der PSA Car Controller muss auf einem eigenen Host installiert werden, mit Zugangsdaten konfiguriert werden und dauerhaft laufen. Die openWB ruft den SoC zu Beginn der Ladung vom PSA Car Controller ab. Während der Ladung liefert PSA keine Updates. Daher wird der SoC während der Ladung aus dem Zählerstand berechnet. Ausschlaggebend für die Genauigkeit dieser Berechnung sind die beiden Einstellungen "Kapazität der Batterie" und "Wirkungsgrad der Ladeelektronik" im Fahrzeug-Profil. ')])),_:1}),r(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.vehicle.configuration.psacc_server_or_ip,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.psacc_server_or_ip"))},{help:t(()=>e[4]||(e[4]=[i("Host, auf dem der PSA Car Controller läuft.")])),_:1},8,["model-value"]),r(u,{title:"Port",required:"",min:1,max:65535,"model-value":n.vehicle.configuration.psacc_port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.psacc_port"))},{help:t(()=>e[5]||(e[5]=[i("Nummer des Ports, den der PSA Car Controller verwendet.")])),_:1},8,["model-value"]),r(s,{title:"VIN",subtype:"text",required:"","model-value":n.vehicle.configuration.vehicle_vin,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.vehicle_vin"))},{help:t(()=>e[6]||(e[6]=[i("Fahrzeug-Identifizierungsnummer des Fahrzeugs, von dem der SoC abgefragt wird.")])),_:1},8,["model-value"])])}const L=p(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/psacc/vehicle.vue"]]);export{L as default}; diff --git a/web/settings/assets/vehicle-b464d124.js b/web/settings/assets/vehicle-b63b1879.js similarity index 79% rename from web/settings/assets/vehicle-b464d124.js rename to web/settings/assets/vehicle-b63b1879.js index bdf3fdbe91..0b6f256b8f 100644 --- a/web/settings/assets/vehicle-b464d124.js +++ b/web/settings/assets/vehicle-b63b1879.js @@ -1 +1 @@ -import{V as u}from"./VehicleConfig-a49bda81.js";import{_ as a,u as s,l as d,m as p,G as i,E as r,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocRenault",mixins:[u]},f={class:"vehicle-soc-renault"};function v(n,e,g,V,w,b){const t=s("openwb-base-text-input");return d(),p("div",f,[i(t,{title:"Benutzername",required:"",subtype:"user","model-value":n.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.user_id"))},{help:r(()=>e[4]||(e[4]=[l(" Der Benutzername für die Anmeldung an den Renault-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Kennwort",required:"",subtype:"password","model-value":n.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.password"))},{help:r(()=>e[5]||(e[5]=[l(" Das Passwort für die Anmeldung an den Renault-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Land",required:"","model-value":n.vehicle.configuration.country,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.country"))},{help:r(()=>e[6]||(e[6]=[l(" Land des Fahrzeugs, z.b. DE für Deutschland. ")])),_:1},8,["model-value"]),i(t,{title:"VIN","model-value":n.vehicle.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.vin"))},{help:r(()=>e[7]||(e[7]=[l(" Die Fahrgestellnummer des Fahrzeugs falls mehrere Fahrzeuge im Account vorhanden sind. ")])),_:1},8,["model-value"])])}const $=a(m,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/renault/vehicle.vue"]]);export{$ as default}; +import{V as u}from"./VehicleConfig-e49e5ddc.js";import{_ as a,u as s,l as d,m as p,G as i,E as r,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocRenault",mixins:[u]},f={class:"vehicle-soc-renault"};function v(n,e,g,V,w,b){const t=s("openwb-base-text-input");return d(),p("div",f,[i(t,{title:"Benutzername",required:"",subtype:"user","model-value":n.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.user_id"))},{help:r(()=>e[4]||(e[4]=[l(" Der Benutzername für die Anmeldung an den Renault-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Kennwort",required:"",subtype:"password","model-value":n.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.password"))},{help:r(()=>e[5]||(e[5]=[l(" Das Passwort für die Anmeldung an den Renault-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Land",required:"","model-value":n.vehicle.configuration.country,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.country"))},{help:r(()=>e[6]||(e[6]=[l(" Land des Fahrzeugs, z.b. DE für Deutschland. ")])),_:1},8,["model-value"]),i(t,{title:"VIN","model-value":n.vehicle.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.vin"))},{help:r(()=>e[7]||(e[7]=[l(" Die Fahrgestellnummer des Fahrzeugs falls mehrere Fahrzeuge im Account vorhanden sind. ")])),_:1},8,["model-value"])])}const $=a(m,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/renault/vehicle.vue"]]);export{$ as default}; diff --git a/web/settings/assets/vehicle-5d229e55.js b/web/settings/assets/vehicle-c305e7fc.js similarity index 65% rename from web/settings/assets/vehicle-5d229e55.js rename to web/settings/assets/vehicle-c305e7fc.js index edc893ceab..9956b90314 100644 --- a/web/settings/assets/vehicle-5d229e55.js +++ b/web/settings/assets/vehicle-c305e7fc.js @@ -1 +1 @@ -import{V as r}from"./VehicleConfig-a49bda81.js";import{_ as l,u as s,l as a,m as u,G as i,E as p,y as d}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocSmartHello",mixins:[r]},f={class:"vehicle-soc-smart-hello"};function v(o,e,c,g,h,V){const n=s("openwb-base-text-input");return a(),u("div",f,[i(n,{title:"Benutzername",subtype:"text",required:"","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user_id"))},null,8,["model-value"]),i(n,{title:"Kennwort",subtype:"password",required:"","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"]),i(n,{title:"VIN",subtype:"text","model-value":o.vehicle.configuration.VIN,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.VIN"))},{help:p(()=>e[3]||(e[3]=[d(" Fahrgestellnummer (VIN) des Fahrzeugs. Notwendig falls mehrere Fahrzeuge im Account des Herstellers vorhanden sind. ")])),_:1},8,["model-value"])])}const $=l(m,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarthello/vehicle.vue"]]);export{$ as default}; +import{V as r}from"./VehicleConfig-e49e5ddc.js";import{_ as l,u as s,l as a,m as u,G as i,E as p,B as d}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocSmartHello",mixins:[r]},f={class:"vehicle-soc-smart-hello"};function v(o,e,c,g,h,V){const n=s("openwb-base-text-input");return a(),u("div",f,[i(n,{title:"Benutzername",subtype:"text",required:"","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user_id"))},null,8,["model-value"]),i(n,{title:"Kennwort",subtype:"password",required:"","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"]),i(n,{title:"VIN",subtype:"text","model-value":o.vehicle.configuration.VIN,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.VIN"))},{help:p(()=>e[3]||(e[3]=[d(" Fahrgestellnummer (VIN) des Fahrzeugs. Notwendig falls mehrere Fahrzeuge im Account des Herstellers vorhanden sind. ")])),_:1},8,["model-value"])])}const y=l(m,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarthello/vehicle.vue"]]);export{y as default}; diff --git a/web/settings/assets/vehicle-56b45282.js b/web/settings/assets/vehicle-d18e5ce2.js similarity index 81% rename from web/settings/assets/vehicle-56b45282.js rename to web/settings/assets/vehicle-d18e5ce2.js index 6d24f70962..40976a03c5 100644 --- a/web/settings/assets/vehicle-56b45282.js +++ b/web/settings/assets/vehicle-d18e5ce2.js @@ -1 +1 @@ -import{V as s}from"./VehicleConfig-a49bda81.js";import{_ as d,u as a,l as p,m,G as t,E as u,y as n,x as i}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const v={name:"VehicleSocOVMS",mixins:[s]},f={class:"vehicle-soc-ovms"};function g(o,e,V,b,S,w){const l=a("openwb-base-text-input");return p(),m("div",f,[t(l,{title:"Server URL",required:"","model-value":o.vehicle.configuration.server_url,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.server_url"))},{help:u(()=>e[4]||(e[4]=[n(" Die URL (incl. Port) des API des OVMS-Servers, an dem das OVMS-Modul angemeldet ist, z.B. "),i("br",null,null,-1),n(" https://ovms.dexters-web.de:6869"),i("br",null,null,-1),n(" oder"),i("br",null,null,-1),n(" https://api.openvehicles.com:6869"),i("br",null,null,-1),n(" oder ein custom server"),i("br",null,null,-1)])),_:1},8,["model-value"]),t(l,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[1]||(e[1]=r=>o.updateConfiguration(r,"configuration.user_id"))},{help:u(()=>e[5]||(e[5]=[n(" Der Benutzername für die Anmeldung am benutzen OVMS-Servers. ")])),_:1},8,["model-value"]),t(l,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=r=>o.updateConfiguration(r,"configuration.password"))},{help:u(()=>e[6]||(e[6]=[n(" Das Passwort für die Anmeldung am OVMS-Server. ")])),_:1},8,["model-value"]),t(l,{title:"Vehicle Id",required:"","model-value":o.vehicle.configuration.vehicleId,"onUpdate:modelValue":e[3]||(e[3]=r=>o.updateConfiguration(r,"configuration.vehicleId"))},{help:u(()=>e[7]||(e[7]=[n(" Die Id des Fahrzeugs im OVMS, auch Module Id genannt. ")])),_:1},8,["model-value"])])}const q=d(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/ovms/vehicle.vue"]]);export{q as default}; +import{V as s}from"./VehicleConfig-e49e5ddc.js";import{_ as d,u as a,l as p,m,G as t,E as u,B as n,A as i}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const v={name:"VehicleSocOVMS",mixins:[s]},f={class:"vehicle-soc-ovms"};function g(o,e,V,b,S,w){const l=a("openwb-base-text-input");return p(),m("div",f,[t(l,{title:"Server URL",required:"","model-value":o.vehicle.configuration.server_url,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.server_url"))},{help:u(()=>e[4]||(e[4]=[n(" Die URL (incl. Port) des API des OVMS-Servers, an dem das OVMS-Modul angemeldet ist, z.B. "),i("br",null,null,-1),n(" https://ovms.dexters-web.de:6869"),i("br",null,null,-1),n(" oder"),i("br",null,null,-1),n(" https://api.openvehicles.com:6869"),i("br",null,null,-1),n(" oder ein custom server"),i("br",null,null,-1)])),_:1},8,["model-value"]),t(l,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[1]||(e[1]=r=>o.updateConfiguration(r,"configuration.user_id"))},{help:u(()=>e[5]||(e[5]=[n(" Der Benutzername für die Anmeldung am benutzen OVMS-Servers. ")])),_:1},8,["model-value"]),t(l,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=r=>o.updateConfiguration(r,"configuration.password"))},{help:u(()=>e[6]||(e[6]=[n(" Das Passwort für die Anmeldung am OVMS-Server. ")])),_:1},8,["model-value"]),t(l,{title:"Vehicle Id",required:"","model-value":o.vehicle.configuration.vehicleId,"onUpdate:modelValue":e[3]||(e[3]=r=>o.updateConfiguration(r,"configuration.vehicleId"))},{help:u(()=>e[7]||(e[7]=[n(" Die Id des Fahrzeugs im OVMS, auch Module Id genannt. ")])),_:1},8,["model-value"])])}const q=d(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/ovms/vehicle.vue"]]);export{q as default}; diff --git a/web/settings/assets/vehicle-28d453ca.js b/web/settings/assets/vehicle-d5f5aff5.js similarity index 75% rename from web/settings/assets/vehicle-28d453ca.js rename to web/settings/assets/vehicle-d5f5aff5.js index 26a689469d..2e857dd9d5 100644 --- a/web/settings/assets/vehicle-28d453ca.js +++ b/web/settings/assets/vehicle-d5f5aff5.js @@ -1 +1 @@ -import{V as a}from"./VehicleConfig-a49bda81.js";import{_ as l,u as d,l as u,m as p,G as i,E as r,y as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocSkodaconnect",mixins:[a]},v={class:"vehicle-soc-skodaconnect"};function f(o,e,c,g,w,V){const t=d("openwb-base-text-input");return u(),p("div",v,[i(t,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung an den SkodaConnect-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung an den SkodaConnect-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[5]||(e[5]=[s(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const x=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/skodaconnect/vehicle.vue"]]);export{x as default}; +import{V as a}from"./VehicleConfig-e49e5ddc.js";import{_ as l,u as d,l as u,m as p,G as i,E as r,B as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocSkodaconnect",mixins:[a]},v={class:"vehicle-soc-skodaconnect"};function f(o,e,c,g,w,V){const t=d("openwb-base-text-input");return u(),p("div",v,[i(t,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung an den SkodaConnect-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung an den SkodaConnect-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[5]||(e[5]=[s(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const x=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/skodaconnect/vehicle.vue"]]);export{x as default}; diff --git a/web/settings/assets/vehicle-837ef917.js b/web/settings/assets/vehicle-dfe6b66d.js similarity index 87% rename from web/settings/assets/vehicle-837ef917.js rename to web/settings/assets/vehicle-dfe6b66d.js index 75a8fe29e7..b29f84e8fc 100644 --- a/web/settings/assets/vehicle-837ef917.js +++ b/web/settings/assets/vehicle-dfe6b66d.js @@ -1 +1 @@ -import{V as m}from"./VehicleConfig-a49bda81.js";import{_ as b,u as s,l as g,m as v,G as i,E as o,y as n,x as u,F as _}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"VehicleSocMercedesEq",mixins:[m],computed:{callback_url(){return`${location.origin}/openWB/web/settings/modules/vehicles/mercedeseq/callback_vehicle.php`},login_url(){return`https://ssoalpha.dvb.corpinter.net/v1/auth?response_type=code&state=${this.vehicleId}&client_id=${this.vehicle.configuration.client_id}&redirect_uri=${this.callback_url}&scope=mb:vehicle:mbdata:evstatus%20offline_access%20openid`},input_complete(){return this.vehicle.configuration.client_id&&this.vehicle.configuration.client_secret&&this.vehicle.configuration.vin}},methods:{login_window(){console.debug("callback url",this.callback_url),console.debug("login url",this.login_url);var t=window.open(this.login_url,"MercedesLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");t.focus()}}},h={class:"vehicle-soc-mercedeseq"};function w(t,e,k,C,y,r){const a=s("openwb-base-text-input"),d=s("openwb-base-copy-to-clipboard"),p=s("openwb-base-alert"),c=s("openwb-base-button-input");return g(),v("div",h,[i(a,{title:"Client-ID",required:"",subtype:"user","model-value":t.vehicle.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=l=>t.updateConfiguration(l,"configuration.client_id"))},{help:o(()=>e[3]||(e[3]=[n(" Die im Developer Portal angelegte Client-ID. ")])),_:1},8,["model-value"]),i(a,{title:"Client Secret",required:"",subtype:"password","model-value":t.vehicle.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=l=>t.updateConfiguration(l,"configuration.client_secret"))},{help:o(()=>e[4]||(e[4]=[n(" Das im Developer Portal angelegte Client Secret. ")])),_:1},8,["model-value"]),i(a,{title:"VIN",required:"","model-value":t.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=l=>t.updateConfiguration(l,"configuration.vin"))},{help:o(()=>e[5]||(e[5]=[n(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"]),i(p,{subtype:"info"},{default:o(()=>[e[6]||(e[6]=n(" Vor dem Anmelden bitte die Angaben speichern.")),e[7]||(e[7]=u("br",null,null,-1)),e[8]||(e[8]=n(" Die Callback-URL für die Anmeldung lautet:")),e[9]||(e[9]=u("br",null,null,-1)),i(d,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[n(_(r.callback_url),1)]),_:1})]),_:1}),i(c,{title:"Anmelden","button-text":"Bei Mercedes Anmelden",subtype:"success",disabled:!r.input_complete,onButtonClicked:r.login_window},{help:o(()=>e[10]||(e[10]=[n(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Mercedes mit Ihren Zugangsdaten anmelden können."),u("br",null,null,-1)])),_:1},8,["disabled","onButtonClicked"])])}const U=b(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mercedeseq/vehicle.vue"]]);export{U as default}; +import{V as m}from"./VehicleConfig-e49e5ddc.js";import{_ as b,u as s,l as g,m as v,G as i,E as o,B as n,A as u,F as _}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"VehicleSocMercedesEq",mixins:[m],computed:{callback_url(){return`${location.origin}/openWB/web/settings/modules/vehicles/mercedeseq/callback_vehicle.php`},login_url(){return`https://ssoalpha.dvb.corpinter.net/v1/auth?response_type=code&state=${this.vehicleId}&client_id=${this.vehicle.configuration.client_id}&redirect_uri=${this.callback_url}&scope=mb:vehicle:mbdata:evstatus%20offline_access%20openid`},input_complete(){return this.vehicle.configuration.client_id&&this.vehicle.configuration.client_secret&&this.vehicle.configuration.vin}},methods:{login_window(){console.debug("callback url",this.callback_url),console.debug("login url",this.login_url);var t=window.open(this.login_url,"MercedesLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");t.focus()}}},h={class:"vehicle-soc-mercedeseq"};function w(t,e,k,C,y,r){const a=s("openwb-base-text-input"),d=s("openwb-base-copy-to-clipboard"),p=s("openwb-base-alert"),c=s("openwb-base-button-input");return g(),v("div",h,[i(a,{title:"Client-ID",required:"",subtype:"user","model-value":t.vehicle.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=l=>t.updateConfiguration(l,"configuration.client_id"))},{help:o(()=>e[3]||(e[3]=[n(" Die im Developer Portal angelegte Client-ID. ")])),_:1},8,["model-value"]),i(a,{title:"Client Secret",required:"",subtype:"password","model-value":t.vehicle.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=l=>t.updateConfiguration(l,"configuration.client_secret"))},{help:o(()=>e[4]||(e[4]=[n(" Das im Developer Portal angelegte Client Secret. ")])),_:1},8,["model-value"]),i(a,{title:"VIN",required:"","model-value":t.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=l=>t.updateConfiguration(l,"configuration.vin"))},{help:o(()=>e[5]||(e[5]=[n(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"]),i(p,{subtype:"info"},{default:o(()=>[e[6]||(e[6]=n(" Vor dem Anmelden bitte die Angaben speichern.")),e[7]||(e[7]=u("br",null,null,-1)),e[8]||(e[8]=n(" Die Callback-URL für die Anmeldung lautet:")),e[9]||(e[9]=u("br",null,null,-1)),i(d,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[n(_(r.callback_url),1)]),_:1})]),_:1}),i(c,{title:"Anmelden","button-text":"Bei Mercedes Anmelden",subtype:"success",disabled:!r.input_complete,onButtonClicked:r.login_window},{help:o(()=>e[10]||(e[10]=[n(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Mercedes mit Ihren Zugangsdaten anmelden können."),u("br",null,null,-1)])),_:1},8,["disabled","onButtonClicked"])])}const U=b(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mercedeseq/vehicle.vue"]]);export{U as default}; diff --git a/web/settings/assets/vehicle-561e20d5.js b/web/settings/assets/vehicle-e12b30b1.js similarity index 74% rename from web/settings/assets/vehicle-561e20d5.js rename to web/settings/assets/vehicle-e12b30b1.js index 80c97bbfd7..f926657ddd 100644 --- a/web/settings/assets/vehicle-561e20d5.js +++ b/web/settings/assets/vehicle-e12b30b1.js @@ -1 +1 @@ -import{V as u}from"./VehicleConfig-a49bda81.js";import{_ as a,u as s,l as d,m as p,G as t,E as r,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocKia",mixins:[u]},v={class:"vehicle-soc-kia"};function f(o,e,g,w,V,b){const i=s("openwb-base-text-input");return d(),p("div",v,[t(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[4]||(e[4]=[l(" Der Benutzername für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),t(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[5]||(e[5]=[l(" Das Passwort für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),t(i,{title:"PIN",required:"",subtype:"password","model-value":o.vehicle.configuration.pin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.pin"))},{help:r(()=>e[6]||(e[6]=[l(" Die PIN für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),t(i,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[7]||(e[7]=[l(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const $=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/kia/vehicle.vue"]]);export{$ as default}; +import{V as u}from"./VehicleConfig-e49e5ddc.js";import{_ as a,u as s,l as d,m as p,G as t,E as r,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocKia",mixins:[u]},v={class:"vehicle-soc-kia"};function f(o,e,g,w,V,b){const i=s("openwb-base-text-input");return d(),p("div",v,[t(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[4]||(e[4]=[l(" Der Benutzername für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),t(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[5]||(e[5]=[l(" Das Passwort für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),t(i,{title:"PIN",required:"",subtype:"password","model-value":o.vehicle.configuration.pin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.pin"))},{help:r(()=>e[6]||(e[6]=[l(" Die PIN für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),t(i,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[7]||(e[7]=[l(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const h=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/kia/vehicle.vue"]]);export{h as default}; diff --git a/web/settings/assets/vendor-3a7c342f.css b/web/settings/assets/vendor-3a7c342f.css deleted file mode 100644 index 04cc584b4f..0000000000 --- a/web/settings/assets/vendor-3a7c342f.css +++ /dev/null @@ -1 +0,0 @@ -.vtl-checkbox-th[data-v-30c302e9],.vtl-checkbox-td[data-v-30c302e9]{width:1%;min-width:38px}.vtl-both[data-v-30c302e9]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X\ QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC)}.vtl-sortable[data-v-30c302e9]{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px!important}.vtl-asc[data-v-30c302e9]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==)}.vtl-desc[data-v-30c302e9]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII=)}.vtl-loading-mask[data-v-30c302e9]{position:absolute;z-index:3;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;flex-flow:column;align-items:center;justify-content:center;transition:opacity .3s ease}.vtl-loading-content[data-v-30c302e9]{flex:1;display:flex;align-items:center;justify-content:center}.vtl-card[data-v-30c302e9]{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box}select[data-v-30c302e9]{width:auto;border:1px solid #cccccc;background-color:#fff;height:auto;padding:0;margin-bottom:0}.vtl-table[data-v-30c302e9]{width:100%;margin-bottom:1rem;color:#212529;border-collapse:collapse}th[data-v-30c302e9]{text-align:inherit}tr[data-v-30c302e9]{display:table-row;vertical-align:inherit;border-color:inherit}.vtl-table-bordered thead td[data-v-30c302e9],.vtl-table-bordered thead th[data-v-30c302e9]{border-bottom-width:2px}.vtl-table thead th[data-v-30c302e9]{vertical-align:bottom;color:#fff;background-color:#343a40;border-color:#454d55;border-bottom:2px solid #dee2e6}.vtl-table-bordered td[data-v-30c302e9],.vtl-table-bordered th[data-v-30c302e9]{border:1px solid #dee2e6}.vtl-table td[data-v-30c302e9],.vtl-table th[data-v-30c302e9]{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6;vertical-align:middle}.vtl-table-hover tbody tr[data-v-30c302e9]:hover{color:#212529;background-color:#ececec}.vtl-table-responsive[data-v-30c302e9]{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.vtl-table-responsive>.vtl-table-bordered[data-v-30c302e9]{border:0}.vtl-row[data-v-30c302e9]{display:flex;flex-wrap:wrap}.vtl-pagination[data-v-30c302e9]{margin:2px 0;white-space:nowrap;justify-content:flex-end;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-item.disabled .page-link[data-v-30c302e9]{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.page-item:first-child .page-link[data-v-30c302e9]{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-link[data-v-30c302e9]{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.sr-only[data-v-30c302e9]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}[data-v-30c302e9],[data-v-30c302e9]:after,[data-v-30c302e9]:before{box-sizing:border-box}.col-sm-12[data-v-30c302e9]{flex:0 0 100%;max-width:100%}.text-center[data-v-30c302e9]{text-align:center}@media (min-width: 576px){.vtl-table-responsive-sm[data-v-30c302e9]{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.vtl-table-responsive-sm>.table-bordered[data-v-30c302e9]{border:0}.col-md-4[data-v-30c302e9]{flex:0 0 33.333333%;max-width:33.333333%}}.vtl-table thead th[data-v-30c302e9]{position:sticky;top:0;z-index:1}.vtl-table tbody th[data-v-30c302e9]{position:sticky;left:0;z-index:1}.fixed-first-column[data-v-30c302e9]{overflow-x:auto}.fixed-first-column tr th[data-v-30c302e9]:first-child{position:sticky;left:0;z-index:2}.fixed-first-column tr td[data-v-30c302e9]:first-child{position:sticky;left:0}.fixed-first-column tr th[data-v-30c302e9]:first-child:before,.fixed-first-second-column tr th[data-v-30c302e9]:nth-child(2):before{content:"";position:absolute;border-right:1px solid #454d55;left:0;top:0;width:102%;height:102%}.fixed-first-column tr .vtl-checkbox-th[data-v-30c302e9]:first-child:before{content:"";position:absolute;border-right:1px solid #454d55;left:0;top:0;width:103%;height:102%}.fixed-first-column tr td[data-v-30c302e9]:first-child:before,.fixed-first-column tr td[data-v-30c302e9]:nth-child(2):before{content:"";position:absolute;border-right:1px solid #dee2e6;left:0;top:0;width:102%;height:102%}.fixed-first-column tr .vtl-checkbox-td[data-v-30c302e9]:first-child:before{content:"";position:absolute;border-right:1px solid #dee2e6;left:0;top:0;width:103%;height:102%}.fixed-first-second-column tr th[data-v-30c302e9]:nth-child(2),.fixed-first-second-column tr td[data-v-30c302e9]:nth-child(2){position:sticky;left:38px}.fixed-first-second-column tr th[data-v-30c302e9]:nth-child(2){z-index:2}.fixed-first-column tr td[data-v-30c302e9]:first-child,.fixed-first-second-column tr td[data-v-30c302e9]:nth-child(2){background-color:#fff}.fixed-first-column tr.hover td[data-v-30c302e9]:first-child,.fixed-first-second-column tr.hover td[data-v-30c302e9]:nth-child(2){background-color:#ececec}.flex[data-v-30c302e9]{display:flex}.animation[data-v-30c302e9]{transform:rotate(0);transition:transform .3s}.cursor-pointer[data-v-30c302e9]{cursor:pointer}.rotated-90[data-v-30c302e9]{transform:rotate(-90deg)}.hidden[data-v-30c302e9]{display:none}.ml-2[data-v-30c302e9]{margin-left:.5rem}.vtl-tbody-td.hover[data-v-30c302e9]{background-color:#ececec}.spinner-border[data-v-30c302e9]{display:inline-block;border:.25em solid currentcolor;border-right-color:transparent;color:#ffffffbf;width:4rem;height:4rem;vertical-align:-.125em;border-radius:50%;animation:.75s linear infinite spinner-border-30c302e9;-webkit-animation:.75s linear infinite spinner-border-30c302e9}@keyframes spinner-border-30c302e9{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.flex-item[data-v-30c302e9]{display:flex;gap:5px}.skeleton-container[data-v-30c302e9]{border:1px solid #f3f4f6;width:100%}.skeleton-section[data-v-30c302e9]{display:grid;overflow:hidden}.skeleton-header[data-v-30c302e9]{grid-template-columns:repeat(auto-fit,minmax(3rem,1fr));background-color:#f3f6f8;padding-top:4px;padding-bottom:4px}.skeleton-body[data-v-30c302e9]{grid-template-columns:repeat(auto-fit,minmax(3rem,1fr))}.skeleton-footer[data-v-30c302e9]{margin-top:10px;margin-bottom:5px;padding-left:8px;padding-right:8px;display:flex;justify-content:space-between}.skeleton-footer .item[data-v-30c302e9]{background-color:#e5e7eb;border-radius:5px;height:30px;min-width:30px;animation:skeleton-pulse-30c302e9 1s cubic-bezier(.4,0,.6,1) infinite}.skeleton-item[data-v-30c302e9]{height:2.5rem;overflow:hidden;padding:8px;border-bottom:1px solid rgb(243,244,246);animation:skeleton-pulse-30c302e9 2s cubic-bezier(.4,0,.6,1) infinite}.skeleton-body:last-child .skeleton-item[data-v-30c302e9]{border-bottom:0}.skeleton-item .item[data-v-30c302e9]{background-color:#e5e7eb;border-radius:5px;height:100%}@keyframes skeleton-pulse-30c302e9{0%,to{opacity:1}50%{opacity:.5}}@media (max-width: 1024px){.skeleton-section[data-v-30c302e9]{grid-template-columns:repeat(8,minmax(12rem,1fr))}}@media (max-width: 640px){.skeleton-section[data-v-30c302e9]{grid-template-columns:repeat(8,minmax(12rem,1fr))}}@media (max-width: 480px){.skeleton-section[data-v-30c302e9]{grid-template-columns:repeat(8,minmax(12rem,1fr))}} diff --git a/web/settings/assets/vendor-aab9f734.css b/web/settings/assets/vendor-aab9f734.css new file mode 100644 index 0000000000..dd538519c6 --- /dev/null +++ b/web/settings/assets/vendor-aab9f734.css @@ -0,0 +1 @@ +.vtl-checkbox-th[data-v-30c302e9],.vtl-checkbox-td[data-v-30c302e9]{width:1%;min-width:38px}.vtl-both[data-v-30c302e9]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X\ QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC)}.vtl-sortable[data-v-30c302e9]{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px!important}.vtl-asc[data-v-30c302e9]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==)}.vtl-desc[data-v-30c302e9]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII=)}.vtl-loading-mask[data-v-30c302e9]{position:absolute;z-index:3;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;flex-flow:column;transition:opacity .3s ease}.vtl-loading-content[data-v-30c302e9]{flex:1;display:flex;align-items:center;justify-content:center}.vtl-card[data-v-30c302e9]{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box}select[data-v-30c302e9]{width:auto;border:1px solid #cccccc;background-color:#fff;height:auto;padding:0;margin-bottom:0}.vtl-table[data-v-30c302e9]{width:100%;margin-bottom:1rem;color:#212529;border-collapse:collapse}th[data-v-30c302e9]{text-align:inherit}tr[data-v-30c302e9]{display:table-row;vertical-align:inherit;border-color:inherit}.vtl-table-bordered thead td[data-v-30c302e9],.vtl-table-bordered thead th[data-v-30c302e9]{border-bottom-width:2px}.vtl-table thead th[data-v-30c302e9]{vertical-align:bottom;color:#fff;background-color:#343a40;border-color:#454d55;border-bottom:2px solid #dee2e6}.vtl-table-bordered td[data-v-30c302e9],.vtl-table-bordered th[data-v-30c302e9]{border:1px solid #dee2e6}.vtl-table td[data-v-30c302e9],.vtl-table th[data-v-30c302e9]{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6;vertical-align:middle}.vtl-table-hover tbody tr[data-v-30c302e9]:hover{color:#212529;background-color:#ececec}.vtl-table-responsive[data-v-30c302e9]{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.vtl-table-responsive>.vtl-table-bordered[data-v-30c302e9]{border:0}.vtl-row[data-v-30c302e9]{display:flex;flex-wrap:wrap}.vtl-pagination[data-v-30c302e9]{margin:2px 0;white-space:nowrap;justify-content:flex-end;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-item.disabled .page-link[data-v-30c302e9]{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.page-item:first-child .page-link[data-v-30c302e9]{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-link[data-v-30c302e9]{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.sr-only[data-v-30c302e9]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}[data-v-30c302e9],[data-v-30c302e9]:after,[data-v-30c302e9]:before{box-sizing:border-box}.col-sm-12[data-v-30c302e9]{flex:0 0 100%;max-width:100%}.text-center[data-v-30c302e9]{text-align:center}@media (min-width: 576px){.vtl-table-responsive-sm[data-v-30c302e9]{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.vtl-table-responsive-sm>.table-bordered[data-v-30c302e9]{border:0}.col-md-4[data-v-30c302e9]{flex:0 0 33.333333%;max-width:33.333333%}}.vtl-table thead th[data-v-30c302e9]{position:sticky;top:0;z-index:1}.vtl-table tbody th[data-v-30c302e9]{position:sticky;left:0;z-index:1}.fixed-first-column[data-v-30c302e9]{overflow-x:auto}.fixed-first-column tr th[data-v-30c302e9]:first-child{position:sticky;left:0;z-index:2}.fixed-first-column tr td[data-v-30c302e9]:first-child{position:sticky;left:0}.fixed-first-column tr th[data-v-30c302e9]:first-child:before,.fixed-first-second-column tr th[data-v-30c302e9]:nth-child(2):before{content:"";position:absolute;border-right:1px solid #454d55;left:0;top:0;width:102%;height:102%}.fixed-first-column tr .vtl-checkbox-th[data-v-30c302e9]:first-child:before{content:"";position:absolute;border-right:1px solid #454d55;left:0;top:0;width:103%;height:102%}.fixed-first-column tr td[data-v-30c302e9]:first-child:before,.fixed-first-column tr td[data-v-30c302e9]:nth-child(2):before{content:"";position:absolute;border-right:1px solid #dee2e6;left:0;top:0;width:102%;height:102%}.fixed-first-column tr .vtl-checkbox-td[data-v-30c302e9]:first-child:before{content:"";position:absolute;border-right:1px solid #dee2e6;left:0;top:0;width:103%;height:102%}.fixed-first-second-column tr th[data-v-30c302e9]:nth-child(2),.fixed-first-second-column tr td[data-v-30c302e9]:nth-child(2){position:sticky;left:38px}.fixed-first-second-column tr th[data-v-30c302e9]:nth-child(2){z-index:2}.fixed-first-column tr td[data-v-30c302e9]:first-child,.fixed-first-second-column tr td[data-v-30c302e9]:nth-child(2){background-color:#fff}.fixed-first-column tr.hover td[data-v-30c302e9]:first-child,.fixed-first-second-column tr.hover td[data-v-30c302e9]:nth-child(2){background-color:#ececec}.flex[data-v-30c302e9]{display:flex}.animation[data-v-30c302e9]{transform:rotate(0);transition:transform .3s}.cursor-pointer[data-v-30c302e9]{cursor:pointer}.rotated-90[data-v-30c302e9]{transform:rotate(-90deg)}.hidden[data-v-30c302e9]{display:none}.ml-2[data-v-30c302e9]{margin-left:.5rem}.vtl-tbody-td.hover[data-v-30c302e9]{background-color:#ececec} diff --git a/web/settings/assets/vendor-ea36120f.js b/web/settings/assets/vendor-ad7c30fd.js similarity index 89% rename from web/settings/assets/vendor-ea36120f.js rename to web/settings/assets/vendor-ad7c30fd.js index 0ed8bc7680..162d83f187 100644 --- a/web/settings/assets/vendor-ea36120f.js +++ b/web/settings/assets/vendor-ad7c30fd.js @@ -1,9 +1,9 @@ -import{r as require$$1$5}from"./vendor-sortablejs-c6aaccb3.js";var commonjsGlobal=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function getDefaultExportFromCjs(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function getAugmentedNamespace(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function o(){return this instanceof o?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(o){var u=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(n,o,u.get?u:{enumerable:!0,get:function(){return e[o]}})}),n}var buffer$2={},base64Js={};base64Js.byteLength=byteLength$1;base64Js.toByteArray=toByteArray;base64Js.fromByteArray=fromByteArray;var lookup=[],revLookup=[],Arr=typeof Uint8Array<"u"?Uint8Array:Array,code="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var i=0,len=code.length;i0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");n===-1&&(n=t);var o=n===t?0:4-n%4;return[n,o]}function byteLength$1(e){var t=getLens(e),n=t[0],o=t[1];return(n+o)*3/4-o}function _byteLength(e,t,n){return(t+n)*3/4-n}function toByteArray(e){var t,n=getLens(e),o=n[0],u=n[1],a=new Arr(_byteLength(e,o,u)),v=0,y=u>0?o-4:o,w;for(w=0;w>16&255,a[v++]=t>>8&255,a[v++]=t&255;return u===2&&(t=revLookup[e.charCodeAt(w)]<<2|revLookup[e.charCodeAt(w+1)]>>4,a[v++]=t&255),u===1&&(t=revLookup[e.charCodeAt(w)]<<10|revLookup[e.charCodeAt(w+1)]<<4|revLookup[e.charCodeAt(w+2)]>>2,a[v++]=t>>8&255,a[v++]=t&255),a}function tripletToBase64(e){return lookup[e>>18&63]+lookup[e>>12&63]+lookup[e>>6&63]+lookup[e&63]}function encodeChunk(e,t,n){for(var o,u=[],a=t;ay?y:v+a));return o===1?(t=e[n-1],u.push(lookup[t>>2]+lookup[t<<4&63]+"==")):o===2&&(t=(e[n-2]<<8)+e[n-1],u.push(lookup[t>>10]+lookup[t>>4&63]+lookup[t<<2&63]+"=")),u.join("")}var ieee754={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ieee754.read=function(e,t,n,o,u){var a,v,y=u*8-o-1,w=(1<>1,x=-7,E=n?u-1:0,B=n?-1:1,I=e[t+E];for(E+=B,a=I&(1<<-x)-1,I>>=-x,x+=y;x>0;a=a*256+e[t+E],E+=B,x-=8);for(v=a&(1<<-x)-1,a>>=-x,x+=o;x>0;v=v*256+e[t+E],E+=B,x-=8);if(a===0)a=1-$;else{if(a===w)return v?NaN:(I?-1:1)*(1/0);v=v+Math.pow(2,o),a=a-$}return(I?-1:1)*v*Math.pow(2,a-o)};ieee754.write=function(e,t,n,o,u,a){var v,y,w,$=a*8-u-1,x=(1<<$)-1,E=x>>1,B=u===23?Math.pow(2,-24)-Math.pow(2,-77):0,I=o?0:a-1,L=o?1:-1,D=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(y=isNaN(t)?1:0,v=x):(v=Math.floor(Math.log(t)/Math.LN2),t*(w=Math.pow(2,-v))<1&&(v--,w*=2),v+E>=1?t+=B/w:t+=B*Math.pow(2,1-E),t*w>=2&&(v++,w/=2),v+E>=x?(y=0,v=x):v+E>=1?(y=(t*w-1)*Math.pow(2,u),v=v+E):(y=t*Math.pow(2,E-1)*Math.pow(2,u),v=0));u>=8;e[n+I]=y&255,I+=L,y/=256,u-=8);for(v=v<0;e[n+I]=v&255,I+=L,v/=256,$-=8);e[n+I-L]|=D*128};/*! +import{r as require$$1$5}from"./vendor-sortablejs-20ba8ac2.js";var commonjsGlobal=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function getDefaultExportFromCjs(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function getAugmentedNamespace(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function o(){return this instanceof o?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(o){var u=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(n,o,u.get?u:{enumerable:!0,get:function(){return e[o]}})}),n}var buffer$2={},base64Js={};base64Js.byteLength=byteLength$1;base64Js.toByteArray=toByteArray;base64Js.fromByteArray=fromByteArray;var lookup=[],revLookup=[],Arr=typeof Uint8Array<"u"?Uint8Array:Array,code="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var i=0,len=code.length;i0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");n===-1&&(n=t);var o=n===t?0:4-n%4;return[n,o]}function byteLength$1(e){var t=getLens(e),n=t[0],o=t[1];return(n+o)*3/4-o}function _byteLength(e,t,n){return(t+n)*3/4-n}function toByteArray(e){var t,n=getLens(e),o=n[0],u=n[1],a=new Arr(_byteLength(e,o,u)),v=0,y=u>0?o-4:o,w;for(w=0;w>16&255,a[v++]=t>>8&255,a[v++]=t&255;return u===2&&(t=revLookup[e.charCodeAt(w)]<<2|revLookup[e.charCodeAt(w+1)]>>4,a[v++]=t&255),u===1&&(t=revLookup[e.charCodeAt(w)]<<10|revLookup[e.charCodeAt(w+1)]<<4|revLookup[e.charCodeAt(w+2)]>>2,a[v++]=t>>8&255,a[v++]=t&255),a}function tripletToBase64(e){return lookup[e>>18&63]+lookup[e>>12&63]+lookup[e>>6&63]+lookup[e&63]}function encodeChunk(e,t,n){for(var o,u=[],a=t;ay?y:v+a));return o===1?(t=e[n-1],u.push(lookup[t>>2]+lookup[t<<4&63]+"==")):o===2&&(t=(e[n-2]<<8)+e[n-1],u.push(lookup[t>>10]+lookup[t>>4&63]+lookup[t<<2&63]+"=")),u.join("")}var ieee754={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ieee754.read=function(e,t,n,o,u){var a,v,y=u*8-o-1,w=(1<>1,x=-7,E=n?u-1:0,P=n?-1:1,I=e[t+E];for(E+=P,a=I&(1<<-x)-1,I>>=-x,x+=y;x>0;a=a*256+e[t+E],E+=P,x-=8);for(v=a&(1<<-x)-1,a>>=-x,x+=o;x>0;v=v*256+e[t+E],E+=P,x-=8);if(a===0)a=1-$;else{if(a===w)return v?NaN:(I?-1:1)*(1/0);v=v+Math.pow(2,o),a=a-$}return(I?-1:1)*v*Math.pow(2,a-o)};ieee754.write=function(e,t,n,o,u,a){var v,y,w,$=a*8-u-1,x=(1<<$)-1,E=x>>1,P=u===23?Math.pow(2,-24)-Math.pow(2,-77):0,I=o?0:a-1,L=o?1:-1,D=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(y=isNaN(t)?1:0,v=x):(v=Math.floor(Math.log(t)/Math.LN2),t*(w=Math.pow(2,-v))<1&&(v--,w*=2),v+E>=1?t+=P/w:t+=P*Math.pow(2,1-E),t*w>=2&&(v++,w/=2),v+E>=x?(y=0,v=x):v+E>=1?(y=(t*w-1)*Math.pow(2,u),v=v+E):(y=t*Math.pow(2,E-1)*Math.pow(2,u),v=0));u>=8;e[n+I]=y&255,I+=L,y/=256,u-=8);for(v=v<0;e[n+I]=v&255,I+=L,v/=256,$-=8);e[n+I-L]|=D*128};/*! * The buffer module from node.js, for the browser. * * @author Feross Aboukhadijeh * @license MIT - */(function(e){var t=base64Js,n=ieee754,o=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=y,e.SlowBuffer=j,e.INSPECT_MAX_BYTES=50;var u=2147483647;e.kMaxLength=u,y.TYPED_ARRAY_SUPPORT=a(),!y.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function a(){try{var X=new Uint8Array(1),Y={foo:function(){return 42}};return Object.setPrototypeOf(Y,Uint8Array.prototype),Object.setPrototypeOf(X,Y),X.foo()===42}catch{return!1}}Object.defineProperty(y.prototype,"parent",{enumerable:!0,get:function(){if(y.isBuffer(this))return this.buffer}}),Object.defineProperty(y.prototype,"offset",{enumerable:!0,get:function(){if(y.isBuffer(this))return this.byteOffset}});function v(X){if(X>u)throw new RangeError('The value "'+X+'" is invalid for option "size"');var Y=new Uint8Array(X);return Object.setPrototypeOf(Y,y.prototype),Y}function y(X,Y,Z){if(typeof X=="number"){if(typeof Y=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return E(X)}return w(X,Y,Z)}y.poolSize=8192;function w(X,Y,Z){if(typeof X=="string")return B(X,Y);if(ArrayBuffer.isView(X))return L(X);if(X==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof X);if(ee(X,ArrayBuffer)||X&&ee(X.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(ee(X,SharedArrayBuffer)||X&&ee(X.buffer,SharedArrayBuffer)))return D(X,Y,Z);if(typeof X=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var ie=X.valueOf&&X.valueOf();if(ie!=null&&ie!==X)return y.from(ie,Y,Z);var ve=V(X);if(ve)return ve;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof X[Symbol.toPrimitive]=="function")return y.from(X[Symbol.toPrimitive]("string"),Y,Z);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof X)}y.from=function(X,Y,Z){return w(X,Y,Z)},Object.setPrototypeOf(y.prototype,Uint8Array.prototype),Object.setPrototypeOf(y,Uint8Array);function $(X){if(typeof X!="number")throw new TypeError('"size" argument must be of type number');if(X<0)throw new RangeError('The value "'+X+'" is invalid for option "size"')}function x(X,Y,Z){return $(X),X<=0?v(X):Y!==void 0?typeof Z=="string"?v(X).fill(Y,Z):v(X).fill(Y):v(X)}y.alloc=function(X,Y,Z){return x(X,Y,Z)};function E(X){return $(X),v(X<0?0:H(X)|0)}y.allocUnsafe=function(X){return E(X)},y.allocUnsafeSlow=function(X){return E(X)};function B(X,Y){if((typeof Y!="string"||Y==="")&&(Y="utf8"),!y.isEncoding(Y))throw new TypeError("Unknown encoding: "+Y);var Z=z(X,Y)|0,ie=v(Z),ve=ie.write(X,Y);return ve!==Z&&(ie=ie.slice(0,ve)),ie}function I(X){for(var Y=X.length<0?0:H(X.length)|0,Z=v(Y),ie=0;ie=u)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+u.toString(16)+" bytes");return X|0}function j(X){return+X!=X&&(X=0),y.alloc(+X)}y.isBuffer=function(Y){return Y!=null&&Y._isBuffer===!0&&Y!==y.prototype},y.compare=function(Y,Z){if(ee(Y,Uint8Array)&&(Y=y.from(Y,Y.offset,Y.byteLength)),ee(Z,Uint8Array)&&(Z=y.from(Z,Z.offset,Z.byteLength)),!y.isBuffer(Y)||!y.isBuffer(Z))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(Y===Z)return 0;for(var ie=Y.length,ve=Z.length,he=0,pe=Math.min(ie,ve);heve.length?y.from(pe).copy(ve,he):Uint8Array.prototype.set.call(ve,pe,he);else if(y.isBuffer(pe))pe.copy(ve,he);else throw new TypeError('"list" argument must be an Array of Buffers');he+=pe.length}return ve};function z(X,Y){if(y.isBuffer(X))return X.length;if(ArrayBuffer.isView(X)||ee(X,ArrayBuffer))return X.byteLength;if(typeof X!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof X);var Z=X.length,ie=arguments.length>2&&arguments[2]===!0;if(!ie&&Z===0)return 0;for(var ve=!1;;)switch(Y){case"ascii":case"latin1":case"binary":return Z;case"utf8":case"utf-8":return q(X).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Z*2;case"hex":return Z>>>1;case"base64":return k(X).length;default:if(ve)return ie?-1:q(X).length;Y=(""+Y).toLowerCase(),ve=!0}}y.byteLength=z;function J(X,Y,Z){var ie=!1;if((Y===void 0||Y<0)&&(Y=0),Y>this.length||((Z===void 0||Z>this.length)&&(Z=this.length),Z<=0)||(Z>>>=0,Y>>>=0,Z<=Y))return"";for(X||(X="utf8");;)switch(X){case"hex":return S(this,Y,Z);case"utf8":case"utf-8":return m(this,Y,Z);case"ascii":return A(this,Y,Z);case"latin1":case"binary":return C(this,Y,Z);case"base64":return d(this,Y,Z);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return c(this,Y,Z);default:if(ie)throw new TypeError("Unknown encoding: "+X);X=(X+"").toLowerCase(),ie=!0}}y.prototype._isBuffer=!0;function re(X,Y,Z){var ie=X[Y];X[Y]=X[Z],X[Z]=ie}y.prototype.swap16=function(){var Y=this.length;if(Y%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var Z=0;ZZ&&(Y+=" ... "),""},o&&(y.prototype[o]=y.prototype.inspect),y.prototype.compare=function(Y,Z,ie,ve,he){if(ee(Y,Uint8Array)&&(Y=y.from(Y,Y.offset,Y.byteLength)),!y.isBuffer(Y))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof Y);if(Z===void 0&&(Z=0),ie===void 0&&(ie=Y?Y.length:0),ve===void 0&&(ve=0),he===void 0&&(he=this.length),Z<0||ie>Y.length||ve<0||he>this.length)throw new RangeError("out of range index");if(ve>=he&&Z>=ie)return 0;if(ve>=he)return-1;if(Z>=ie)return 1;if(Z>>>=0,ie>>>=0,ve>>>=0,he>>>=0,this===Y)return 0;for(var pe=he-ve,Ae=ie-Z,_e=Math.min(pe,Ae),we=this.slice(ve,he),qe=Y.slice(Z,ie),Se=0;Se<_e;++Se)if(we[Se]!==qe[Se]){pe=we[Se],Ae=qe[Se];break}return pe2147483647?Z=2147483647:Z<-2147483648&&(Z=-2147483648),Z=+Z,Q(Z)&&(Z=ve?0:X.length-1),Z<0&&(Z=X.length+Z),Z>=X.length){if(ve)return-1;Z=X.length-1}else if(Z<0)if(ve)Z=0;else return-1;if(typeof Y=="string"&&(Y=y.from(Y,ie)),y.isBuffer(Y))return Y.length===0?-1:me(X,Y,Z,ie,ve);if(typeof Y=="number")return Y=Y&255,typeof Uint8Array.prototype.indexOf=="function"?ve?Uint8Array.prototype.indexOf.call(X,Y,Z):Uint8Array.prototype.lastIndexOf.call(X,Y,Z):me(X,[Y],Z,ie,ve);throw new TypeError("val must be string, number or Buffer")}function me(X,Y,Z,ie,ve){var he=1,pe=X.length,Ae=Y.length;if(ie!==void 0&&(ie=String(ie).toLowerCase(),ie==="ucs2"||ie==="ucs-2"||ie==="utf16le"||ie==="utf-16le")){if(X.length<2||Y.length<2)return-1;he=2,pe/=2,Ae/=2,Z/=2}function _e(Me,de){return he===1?Me[de]:Me.readUInt16BE(de*he)}var we;if(ve){var qe=-1;for(we=Z;wepe&&(Z=pe-Ae),we=Z;we>=0;we--){for(var Se=!0,Re=0;Reve&&(ie=ve)):ie=ve;var he=Y.length;ie>he/2&&(ie=he/2);for(var pe=0;pe>>0,isFinite(ie)?(ie=ie>>>0,ve===void 0&&(ve="utf8")):(ve=ie,ie=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var he=this.length-Z;if((ie===void 0||ie>he)&&(ie=he),Y.length>0&&(ie<0||Z<0)||Z>this.length)throw new RangeError("Attempt to write outside buffer bounds");ve||(ve="utf8");for(var pe=!1;;)switch(ve){case"hex":return ue(this,Y,Z,ie);case"utf8":case"utf-8":return ne(this,Y,Z,ie);case"ascii":case"latin1":case"binary":return ye(this,Y,Z,ie);case"base64":return T(this,Y,Z,ie);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return l(this,Y,Z,ie);default:if(pe)throw new TypeError("Unknown encoding: "+ve);ve=(""+ve).toLowerCase(),pe=!0}},y.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function d(X,Y,Z){return Y===0&&Z===X.length?t.fromByteArray(X):t.fromByteArray(X.slice(Y,Z))}function m(X,Y,Z){Z=Math.min(X.length,Z);for(var ie=[],ve=Y;ve239?4:he>223?3:he>191?2:1;if(ve+Ae<=Z){var _e,we,qe,Se;switch(Ae){case 1:he<128&&(pe=he);break;case 2:_e=X[ve+1],(_e&192)===128&&(Se=(he&31)<<6|_e&63,Se>127&&(pe=Se));break;case 3:_e=X[ve+1],we=X[ve+2],(_e&192)===128&&(we&192)===128&&(Se=(he&15)<<12|(_e&63)<<6|we&63,Se>2047&&(Se<55296||Se>57343)&&(pe=Se));break;case 4:_e=X[ve+1],we=X[ve+2],qe=X[ve+3],(_e&192)===128&&(we&192)===128&&(qe&192)===128&&(Se=(he&15)<<18|(_e&63)<<12|(we&63)<<6|qe&63,Se>65535&&Se<1114112&&(pe=Se))}}pe===null?(pe=65533,Ae=1):pe>65535&&(pe-=65536,ie.push(pe>>>10&1023|55296),pe=56320|pe&1023),ie.push(pe),ve+=Ae}return _(ie)}var b=4096;function _(X){var Y=X.length;if(Y<=b)return String.fromCharCode.apply(String,X);for(var Z="",ie=0;ieie)&&(Z=ie);for(var ve="",he=Y;heie&&(Y=ie),Z<0?(Z+=ie,Z<0&&(Z=0)):Z>ie&&(Z=ie),ZZ)throw new RangeError("Trying to access beyond buffer length")}y.prototype.readUintLE=y.prototype.readUIntLE=function(Y,Z,ie){Y=Y>>>0,Z=Z>>>0,ie||M(Y,Z,this.length);for(var ve=this[Y],he=1,pe=0;++pe>>0,Z=Z>>>0,ie||M(Y,Z,this.length);for(var ve=this[Y+--Z],he=1;Z>0&&(he*=256);)ve+=this[Y+--Z]*he;return ve},y.prototype.readUint8=y.prototype.readUInt8=function(Y,Z){return Y=Y>>>0,Z||M(Y,1,this.length),this[Y]},y.prototype.readUint16LE=y.prototype.readUInt16LE=function(Y,Z){return Y=Y>>>0,Z||M(Y,2,this.length),this[Y]|this[Y+1]<<8},y.prototype.readUint16BE=y.prototype.readUInt16BE=function(Y,Z){return Y=Y>>>0,Z||M(Y,2,this.length),this[Y]<<8|this[Y+1]},y.prototype.readUint32LE=y.prototype.readUInt32LE=function(Y,Z){return Y=Y>>>0,Z||M(Y,4,this.length),(this[Y]|this[Y+1]<<8|this[Y+2]<<16)+this[Y+3]*16777216},y.prototype.readUint32BE=y.prototype.readUInt32BE=function(Y,Z){return Y=Y>>>0,Z||M(Y,4,this.length),this[Y]*16777216+(this[Y+1]<<16|this[Y+2]<<8|this[Y+3])},y.prototype.readIntLE=function(Y,Z,ie){Y=Y>>>0,Z=Z>>>0,ie||M(Y,Z,this.length);for(var ve=this[Y],he=1,pe=0;++pe=he&&(ve-=Math.pow(2,8*Z)),ve},y.prototype.readIntBE=function(Y,Z,ie){Y=Y>>>0,Z=Z>>>0,ie||M(Y,Z,this.length);for(var ve=Z,he=1,pe=this[Y+--ve];ve>0&&(he*=256);)pe+=this[Y+--ve]*he;return he*=128,pe>=he&&(pe-=Math.pow(2,8*Z)),pe},y.prototype.readInt8=function(Y,Z){return Y=Y>>>0,Z||M(Y,1,this.length),this[Y]&128?(255-this[Y]+1)*-1:this[Y]},y.prototype.readInt16LE=function(Y,Z){Y=Y>>>0,Z||M(Y,2,this.length);var ie=this[Y]|this[Y+1]<<8;return ie&32768?ie|4294901760:ie},y.prototype.readInt16BE=function(Y,Z){Y=Y>>>0,Z||M(Y,2,this.length);var ie=this[Y+1]|this[Y]<<8;return ie&32768?ie|4294901760:ie},y.prototype.readInt32LE=function(Y,Z){return Y=Y>>>0,Z||M(Y,4,this.length),this[Y]|this[Y+1]<<8|this[Y+2]<<16|this[Y+3]<<24},y.prototype.readInt32BE=function(Y,Z){return Y=Y>>>0,Z||M(Y,4,this.length),this[Y]<<24|this[Y+1]<<16|this[Y+2]<<8|this[Y+3]},y.prototype.readFloatLE=function(Y,Z){return Y=Y>>>0,Z||M(Y,4,this.length),n.read(this,Y,!0,23,4)},y.prototype.readFloatBE=function(Y,Z){return Y=Y>>>0,Z||M(Y,4,this.length),n.read(this,Y,!1,23,4)},y.prototype.readDoubleLE=function(Y,Z){return Y=Y>>>0,Z||M(Y,8,this.length),n.read(this,Y,!0,52,8)},y.prototype.readDoubleBE=function(Y,Z){return Y=Y>>>0,Z||M(Y,8,this.length),n.read(this,Y,!1,52,8)};function N(X,Y,Z,ie,ve,he){if(!y.isBuffer(X))throw new TypeError('"buffer" argument must be a Buffer instance');if(Y>ve||YX.length)throw new RangeError("Index out of range")}y.prototype.writeUintLE=y.prototype.writeUIntLE=function(Y,Z,ie,ve){if(Y=+Y,Z=Z>>>0,ie=ie>>>0,!ve){var he=Math.pow(2,8*ie)-1;N(this,Y,Z,ie,he,0)}var pe=1,Ae=0;for(this[Z]=Y&255;++Ae>>0,ie=ie>>>0,!ve){var he=Math.pow(2,8*ie)-1;N(this,Y,Z,ie,he,0)}var pe=ie-1,Ae=1;for(this[Z+pe]=Y&255;--pe>=0&&(Ae*=256);)this[Z+pe]=Y/Ae&255;return Z+ie},y.prototype.writeUint8=y.prototype.writeUInt8=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,1,255,0),this[Z]=Y&255,Z+1},y.prototype.writeUint16LE=y.prototype.writeUInt16LE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,2,65535,0),this[Z]=Y&255,this[Z+1]=Y>>>8,Z+2},y.prototype.writeUint16BE=y.prototype.writeUInt16BE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,2,65535,0),this[Z]=Y>>>8,this[Z+1]=Y&255,Z+2},y.prototype.writeUint32LE=y.prototype.writeUInt32LE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,4,4294967295,0),this[Z+3]=Y>>>24,this[Z+2]=Y>>>16,this[Z+1]=Y>>>8,this[Z]=Y&255,Z+4},y.prototype.writeUint32BE=y.prototype.writeUInt32BE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,4,4294967295,0),this[Z]=Y>>>24,this[Z+1]=Y>>>16,this[Z+2]=Y>>>8,this[Z+3]=Y&255,Z+4},y.prototype.writeIntLE=function(Y,Z,ie,ve){if(Y=+Y,Z=Z>>>0,!ve){var he=Math.pow(2,8*ie-1);N(this,Y,Z,ie,he-1,-he)}var pe=0,Ae=1,_e=0;for(this[Z]=Y&255;++pe>0)-_e&255;return Z+ie},y.prototype.writeIntBE=function(Y,Z,ie,ve){if(Y=+Y,Z=Z>>>0,!ve){var he=Math.pow(2,8*ie-1);N(this,Y,Z,ie,he-1,-he)}var pe=ie-1,Ae=1,_e=0;for(this[Z+pe]=Y&255;--pe>=0&&(Ae*=256);)Y<0&&_e===0&&this[Z+pe+1]!==0&&(_e=1),this[Z+pe]=(Y/Ae>>0)-_e&255;return Z+ie},y.prototype.writeInt8=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,1,127,-128),Y<0&&(Y=255+Y+1),this[Z]=Y&255,Z+1},y.prototype.writeInt16LE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,2,32767,-32768),this[Z]=Y&255,this[Z+1]=Y>>>8,Z+2},y.prototype.writeInt16BE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,2,32767,-32768),this[Z]=Y>>>8,this[Z+1]=Y&255,Z+2},y.prototype.writeInt32LE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,4,2147483647,-2147483648),this[Z]=Y&255,this[Z+1]=Y>>>8,this[Z+2]=Y>>>16,this[Z+3]=Y>>>24,Z+4},y.prototype.writeInt32BE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,4,2147483647,-2147483648),Y<0&&(Y=4294967295+Y+1),this[Z]=Y>>>24,this[Z+1]=Y>>>16,this[Z+2]=Y>>>8,this[Z+3]=Y&255,Z+4};function U(X,Y,Z,ie,ve,he){if(Z+ie>X.length)throw new RangeError("Index out of range");if(Z<0)throw new RangeError("Index out of range")}function oe(X,Y,Z,ie,ve){return Y=+Y,Z=Z>>>0,ve||U(X,Y,Z,4),n.write(X,Y,Z,ie,23,4),Z+4}y.prototype.writeFloatLE=function(Y,Z,ie){return oe(this,Y,Z,!0,ie)},y.prototype.writeFloatBE=function(Y,Z,ie){return oe(this,Y,Z,!1,ie)};function le(X,Y,Z,ie,ve){return Y=+Y,Z=Z>>>0,ve||U(X,Y,Z,8),n.write(X,Y,Z,ie,52,8),Z+8}y.prototype.writeDoubleLE=function(Y,Z,ie){return le(this,Y,Z,!0,ie)},y.prototype.writeDoubleBE=function(Y,Z,ie){return le(this,Y,Z,!1,ie)},y.prototype.copy=function(Y,Z,ie,ve){if(!y.isBuffer(Y))throw new TypeError("argument should be a Buffer");if(ie||(ie=0),!ve&&ve!==0&&(ve=this.length),Z>=Y.length&&(Z=Y.length),Z||(Z=0),ve>0&&ve=this.length)throw new RangeError("Index out of range");if(ve<0)throw new RangeError("sourceEnd out of bounds");ve>this.length&&(ve=this.length),Y.length-Z>>0,ie=ie===void 0?this.length:ie>>>0,Y||(Y=0);var pe;if(typeof Y=="number")for(pe=Z;pe55295&&Z<57344){if(!ve){if(Z>56319){(Y-=3)>-1&&he.push(239,191,189);continue}else if(pe+1===ie){(Y-=3)>-1&&he.push(239,191,189);continue}ve=Z;continue}if(Z<56320){(Y-=3)>-1&&he.push(239,191,189),ve=Z;continue}Z=(ve-55296<<10|Z-56320)+65536}else ve&&(Y-=3)>-1&&he.push(239,191,189);if(ve=null,Z<128){if((Y-=1)<0)break;he.push(Z)}else if(Z<2048){if((Y-=2)<0)break;he.push(Z>>6|192,Z&63|128)}else if(Z<65536){if((Y-=3)<0)break;he.push(Z>>12|224,Z>>6&63|128,Z&63|128)}else if(Z<1114112){if((Y-=4)<0)break;he.push(Z>>18|240,Z>>12&63|128,Z>>6&63|128,Z&63|128)}else throw new Error("Invalid code point")}return he}function te(X){for(var Y=[],Z=0;Z>8,ve=Z%256,he.push(ve),he.push(ie);return he}function k(X){return t.toByteArray(O(X))}function P(X,Y,Z,ie){for(var ve=0;ve=Y.length||ve>=X.length);++ve)Y[ve+Z]=X[ve];return ve}function ee(X,Y){return X instanceof Y||X!=null&&X.constructor!=null&&X.constructor.name!=null&&X.constructor.name===Y.name}function Q(X){return X!==X}var fe=function(){for(var X="0123456789abcdef",Y=new Array(256),Z=0;Z<16;++Z)for(var ie=Z*16,ve=0;ve<16;++ve)Y[ie+ve]=X[Z]+X[ve];return Y}()})(buffer$2);var browser$1$1={exports:{}},process=browser$1$1.exports={},cachedSetTimeout,cachedClearTimeout;function defaultSetTimout(){throw new Error("setTimeout has not been defined")}function defaultClearTimeout(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?cachedSetTimeout=setTimeout:cachedSetTimeout=defaultSetTimout}catch{cachedSetTimeout=defaultSetTimout}try{typeof clearTimeout=="function"?cachedClearTimeout=clearTimeout:cachedClearTimeout=defaultClearTimeout}catch{cachedClearTimeout=defaultClearTimeout}})();function runTimeout(e){if(cachedSetTimeout===setTimeout)return setTimeout(e,0);if((cachedSetTimeout===defaultSetTimout||!cachedSetTimeout)&&setTimeout)return cachedSetTimeout=setTimeout,setTimeout(e,0);try{return cachedSetTimeout(e,0)}catch{try{return cachedSetTimeout.call(null,e,0)}catch{return cachedSetTimeout.call(this,e,0)}}}function runClearTimeout(e){if(cachedClearTimeout===clearTimeout)return clearTimeout(e);if((cachedClearTimeout===defaultClearTimeout||!cachedClearTimeout)&&clearTimeout)return cachedClearTimeout=clearTimeout,clearTimeout(e);try{return cachedClearTimeout(e)}catch{try{return cachedClearTimeout.call(null,e)}catch{return cachedClearTimeout.call(this,e)}}}var queue$1=[],draining=!1,currentQueue,queueIndex=-1;function cleanUpNextTick(){!draining||!currentQueue||(draining=!1,currentQueue.length?queue$1=currentQueue.concat(queue$1):queueIndex=-1,queue$1.length&&drainQueue())}function drainQueue(){if(!draining){var e=runTimeout(cleanUpNextTick);draining=!0;for(var t=queue$1.length;t;){for(currentQueue=queue$1,queue$1=[];++queueIndex1)for(var n=1;nu)throw new RangeError('The value "'+X+'" is invalid for option "size"');var Y=new Uint8Array(X);return Object.setPrototypeOf(Y,y.prototype),Y}function y(X,Y,Z){if(typeof X=="number"){if(typeof Y=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return E(X)}return w(X,Y,Z)}y.poolSize=8192;function w(X,Y,Z){if(typeof X=="string")return P(X,Y);if(ArrayBuffer.isView(X))return L(X);if(X==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof X);if(ee(X,ArrayBuffer)||X&&ee(X.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(ee(X,SharedArrayBuffer)||X&&ee(X.buffer,SharedArrayBuffer)))return D(X,Y,Z);if(typeof X=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var ie=X.valueOf&&X.valueOf();if(ie!=null&&ie!==X)return y.from(ie,Y,Z);var ve=V(X);if(ve)return ve;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof X[Symbol.toPrimitive]=="function")return y.from(X[Symbol.toPrimitive]("string"),Y,Z);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof X)}y.from=function(X,Y,Z){return w(X,Y,Z)},Object.setPrototypeOf(y.prototype,Uint8Array.prototype),Object.setPrototypeOf(y,Uint8Array);function $(X){if(typeof X!="number")throw new TypeError('"size" argument must be of type number');if(X<0)throw new RangeError('The value "'+X+'" is invalid for option "size"')}function x(X,Y,Z){return $(X),X<=0?v(X):Y!==void 0?typeof Z=="string"?v(X).fill(Y,Z):v(X).fill(Y):v(X)}y.alloc=function(X,Y,Z){return x(X,Y,Z)};function E(X){return $(X),v(X<0?0:H(X)|0)}y.allocUnsafe=function(X){return E(X)},y.allocUnsafeSlow=function(X){return E(X)};function P(X,Y){if((typeof Y!="string"||Y==="")&&(Y="utf8"),!y.isEncoding(Y))throw new TypeError("Unknown encoding: "+Y);var Z=z(X,Y)|0,ie=v(Z),ve=ie.write(X,Y);return ve!==Z&&(ie=ie.slice(0,ve)),ie}function I(X){for(var Y=X.length<0?0:H(X.length)|0,Z=v(Y),ie=0;ie=u)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+u.toString(16)+" bytes");return X|0}function j(X){return+X!=X&&(X=0),y.alloc(+X)}y.isBuffer=function(Y){return Y!=null&&Y._isBuffer===!0&&Y!==y.prototype},y.compare=function(Y,Z){if(ee(Y,Uint8Array)&&(Y=y.from(Y,Y.offset,Y.byteLength)),ee(Z,Uint8Array)&&(Z=y.from(Z,Z.offset,Z.byteLength)),!y.isBuffer(Y)||!y.isBuffer(Z))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(Y===Z)return 0;for(var ie=Y.length,ve=Z.length,he=0,pe=Math.min(ie,ve);heve.length?y.from(pe).copy(ve,he):Uint8Array.prototype.set.call(ve,pe,he);else if(y.isBuffer(pe))pe.copy(ve,he);else throw new TypeError('"list" argument must be an Array of Buffers');he+=pe.length}return ve};function z(X,Y){if(y.isBuffer(X))return X.length;if(ArrayBuffer.isView(X)||ee(X,ArrayBuffer))return X.byteLength;if(typeof X!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof X);var Z=X.length,ie=arguments.length>2&&arguments[2]===!0;if(!ie&&Z===0)return 0;for(var ve=!1;;)switch(Y){case"ascii":case"latin1":case"binary":return Z;case"utf8":case"utf-8":return q(X).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Z*2;case"hex":return Z>>>1;case"base64":return k(X).length;default:if(ve)return ie?-1:q(X).length;Y=(""+Y).toLowerCase(),ve=!0}}y.byteLength=z;function J(X,Y,Z){var ie=!1;if((Y===void 0||Y<0)&&(Y=0),Y>this.length||((Z===void 0||Z>this.length)&&(Z=this.length),Z<=0)||(Z>>>=0,Y>>>=0,Z<=Y))return"";for(X||(X="utf8");;)switch(X){case"hex":return S(this,Y,Z);case"utf8":case"utf-8":return m(this,Y,Z);case"ascii":return A(this,Y,Z);case"latin1":case"binary":return C(this,Y,Z);case"base64":return d(this,Y,Z);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return c(this,Y,Z);default:if(ie)throw new TypeError("Unknown encoding: "+X);X=(X+"").toLowerCase(),ie=!0}}y.prototype._isBuffer=!0;function re(X,Y,Z){var ie=X[Y];X[Y]=X[Z],X[Z]=ie}y.prototype.swap16=function(){var Y=this.length;if(Y%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var Z=0;ZZ&&(Y+=" ... "),""},o&&(y.prototype[o]=y.prototype.inspect),y.prototype.compare=function(Y,Z,ie,ve,he){if(ee(Y,Uint8Array)&&(Y=y.from(Y,Y.offset,Y.byteLength)),!y.isBuffer(Y))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof Y);if(Z===void 0&&(Z=0),ie===void 0&&(ie=Y?Y.length:0),ve===void 0&&(ve=0),he===void 0&&(he=this.length),Z<0||ie>Y.length||ve<0||he>this.length)throw new RangeError("out of range index");if(ve>=he&&Z>=ie)return 0;if(ve>=he)return-1;if(Z>=ie)return 1;if(Z>>>=0,ie>>>=0,ve>>>=0,he>>>=0,this===Y)return 0;for(var pe=he-ve,Ae=ie-Z,_e=Math.min(pe,Ae),we=this.slice(ve,he),qe=Y.slice(Z,ie),Se=0;Se<_e;++Se)if(we[Se]!==qe[Se]){pe=we[Se],Ae=qe[Se];break}return pe2147483647?Z=2147483647:Z<-2147483648&&(Z=-2147483648),Z=+Z,Q(Z)&&(Z=ve?0:X.length-1),Z<0&&(Z=X.length+Z),Z>=X.length){if(ve)return-1;Z=X.length-1}else if(Z<0)if(ve)Z=0;else return-1;if(typeof Y=="string"&&(Y=y.from(Y,ie)),y.isBuffer(Y))return Y.length===0?-1:me(X,Y,Z,ie,ve);if(typeof Y=="number")return Y=Y&255,typeof Uint8Array.prototype.indexOf=="function"?ve?Uint8Array.prototype.indexOf.call(X,Y,Z):Uint8Array.prototype.lastIndexOf.call(X,Y,Z):me(X,[Y],Z,ie,ve);throw new TypeError("val must be string, number or Buffer")}function me(X,Y,Z,ie,ve){var he=1,pe=X.length,Ae=Y.length;if(ie!==void 0&&(ie=String(ie).toLowerCase(),ie==="ucs2"||ie==="ucs-2"||ie==="utf16le"||ie==="utf-16le")){if(X.length<2||Y.length<2)return-1;he=2,pe/=2,Ae/=2,Z/=2}function _e(Me,de){return he===1?Me[de]:Me.readUInt16BE(de*he)}var we;if(ve){var qe=-1;for(we=Z;wepe&&(Z=pe-Ae),we=Z;we>=0;we--){for(var Se=!0,Re=0;Reve&&(ie=ve)):ie=ve;var he=Y.length;ie>he/2&&(ie=he/2);for(var pe=0;pe>>0,isFinite(ie)?(ie=ie>>>0,ve===void 0&&(ve="utf8")):(ve=ie,ie=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var he=this.length-Z;if((ie===void 0||ie>he)&&(ie=he),Y.length>0&&(ie<0||Z<0)||Z>this.length)throw new RangeError("Attempt to write outside buffer bounds");ve||(ve="utf8");for(var pe=!1;;)switch(ve){case"hex":return ue(this,Y,Z,ie);case"utf8":case"utf-8":return ne(this,Y,Z,ie);case"ascii":case"latin1":case"binary":return ye(this,Y,Z,ie);case"base64":return T(this,Y,Z,ie);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return l(this,Y,Z,ie);default:if(pe)throw new TypeError("Unknown encoding: "+ve);ve=(""+ve).toLowerCase(),pe=!0}},y.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function d(X,Y,Z){return Y===0&&Z===X.length?t.fromByteArray(X):t.fromByteArray(X.slice(Y,Z))}function m(X,Y,Z){Z=Math.min(X.length,Z);for(var ie=[],ve=Y;ve239?4:he>223?3:he>191?2:1;if(ve+Ae<=Z){var _e,we,qe,Se;switch(Ae){case 1:he<128&&(pe=he);break;case 2:_e=X[ve+1],(_e&192)===128&&(Se=(he&31)<<6|_e&63,Se>127&&(pe=Se));break;case 3:_e=X[ve+1],we=X[ve+2],(_e&192)===128&&(we&192)===128&&(Se=(he&15)<<12|(_e&63)<<6|we&63,Se>2047&&(Se<55296||Se>57343)&&(pe=Se));break;case 4:_e=X[ve+1],we=X[ve+2],qe=X[ve+3],(_e&192)===128&&(we&192)===128&&(qe&192)===128&&(Se=(he&15)<<18|(_e&63)<<12|(we&63)<<6|qe&63,Se>65535&&Se<1114112&&(pe=Se))}}pe===null?(pe=65533,Ae=1):pe>65535&&(pe-=65536,ie.push(pe>>>10&1023|55296),pe=56320|pe&1023),ie.push(pe),ve+=Ae}return _(ie)}var b=4096;function _(X){var Y=X.length;if(Y<=b)return String.fromCharCode.apply(String,X);for(var Z="",ie=0;ieie)&&(Z=ie);for(var ve="",he=Y;heie&&(Y=ie),Z<0?(Z+=ie,Z<0&&(Z=0)):Z>ie&&(Z=ie),ZZ)throw new RangeError("Trying to access beyond buffer length")}y.prototype.readUintLE=y.prototype.readUIntLE=function(Y,Z,ie){Y=Y>>>0,Z=Z>>>0,ie||M(Y,Z,this.length);for(var ve=this[Y],he=1,pe=0;++pe>>0,Z=Z>>>0,ie||M(Y,Z,this.length);for(var ve=this[Y+--Z],he=1;Z>0&&(he*=256);)ve+=this[Y+--Z]*he;return ve},y.prototype.readUint8=y.prototype.readUInt8=function(Y,Z){return Y=Y>>>0,Z||M(Y,1,this.length),this[Y]},y.prototype.readUint16LE=y.prototype.readUInt16LE=function(Y,Z){return Y=Y>>>0,Z||M(Y,2,this.length),this[Y]|this[Y+1]<<8},y.prototype.readUint16BE=y.prototype.readUInt16BE=function(Y,Z){return Y=Y>>>0,Z||M(Y,2,this.length),this[Y]<<8|this[Y+1]},y.prototype.readUint32LE=y.prototype.readUInt32LE=function(Y,Z){return Y=Y>>>0,Z||M(Y,4,this.length),(this[Y]|this[Y+1]<<8|this[Y+2]<<16)+this[Y+3]*16777216},y.prototype.readUint32BE=y.prototype.readUInt32BE=function(Y,Z){return Y=Y>>>0,Z||M(Y,4,this.length),this[Y]*16777216+(this[Y+1]<<16|this[Y+2]<<8|this[Y+3])},y.prototype.readIntLE=function(Y,Z,ie){Y=Y>>>0,Z=Z>>>0,ie||M(Y,Z,this.length);for(var ve=this[Y],he=1,pe=0;++pe=he&&(ve-=Math.pow(2,8*Z)),ve},y.prototype.readIntBE=function(Y,Z,ie){Y=Y>>>0,Z=Z>>>0,ie||M(Y,Z,this.length);for(var ve=Z,he=1,pe=this[Y+--ve];ve>0&&(he*=256);)pe+=this[Y+--ve]*he;return he*=128,pe>=he&&(pe-=Math.pow(2,8*Z)),pe},y.prototype.readInt8=function(Y,Z){return Y=Y>>>0,Z||M(Y,1,this.length),this[Y]&128?(255-this[Y]+1)*-1:this[Y]},y.prototype.readInt16LE=function(Y,Z){Y=Y>>>0,Z||M(Y,2,this.length);var ie=this[Y]|this[Y+1]<<8;return ie&32768?ie|4294901760:ie},y.prototype.readInt16BE=function(Y,Z){Y=Y>>>0,Z||M(Y,2,this.length);var ie=this[Y+1]|this[Y]<<8;return ie&32768?ie|4294901760:ie},y.prototype.readInt32LE=function(Y,Z){return Y=Y>>>0,Z||M(Y,4,this.length),this[Y]|this[Y+1]<<8|this[Y+2]<<16|this[Y+3]<<24},y.prototype.readInt32BE=function(Y,Z){return Y=Y>>>0,Z||M(Y,4,this.length),this[Y]<<24|this[Y+1]<<16|this[Y+2]<<8|this[Y+3]},y.prototype.readFloatLE=function(Y,Z){return Y=Y>>>0,Z||M(Y,4,this.length),n.read(this,Y,!0,23,4)},y.prototype.readFloatBE=function(Y,Z){return Y=Y>>>0,Z||M(Y,4,this.length),n.read(this,Y,!1,23,4)},y.prototype.readDoubleLE=function(Y,Z){return Y=Y>>>0,Z||M(Y,8,this.length),n.read(this,Y,!0,52,8)},y.prototype.readDoubleBE=function(Y,Z){return Y=Y>>>0,Z||M(Y,8,this.length),n.read(this,Y,!1,52,8)};function N(X,Y,Z,ie,ve,he){if(!y.isBuffer(X))throw new TypeError('"buffer" argument must be a Buffer instance');if(Y>ve||YX.length)throw new RangeError("Index out of range")}y.prototype.writeUintLE=y.prototype.writeUIntLE=function(Y,Z,ie,ve){if(Y=+Y,Z=Z>>>0,ie=ie>>>0,!ve){var he=Math.pow(2,8*ie)-1;N(this,Y,Z,ie,he,0)}var pe=1,Ae=0;for(this[Z]=Y&255;++Ae>>0,ie=ie>>>0,!ve){var he=Math.pow(2,8*ie)-1;N(this,Y,Z,ie,he,0)}var pe=ie-1,Ae=1;for(this[Z+pe]=Y&255;--pe>=0&&(Ae*=256);)this[Z+pe]=Y/Ae&255;return Z+ie},y.prototype.writeUint8=y.prototype.writeUInt8=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,1,255,0),this[Z]=Y&255,Z+1},y.prototype.writeUint16LE=y.prototype.writeUInt16LE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,2,65535,0),this[Z]=Y&255,this[Z+1]=Y>>>8,Z+2},y.prototype.writeUint16BE=y.prototype.writeUInt16BE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,2,65535,0),this[Z]=Y>>>8,this[Z+1]=Y&255,Z+2},y.prototype.writeUint32LE=y.prototype.writeUInt32LE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,4,4294967295,0),this[Z+3]=Y>>>24,this[Z+2]=Y>>>16,this[Z+1]=Y>>>8,this[Z]=Y&255,Z+4},y.prototype.writeUint32BE=y.prototype.writeUInt32BE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,4,4294967295,0),this[Z]=Y>>>24,this[Z+1]=Y>>>16,this[Z+2]=Y>>>8,this[Z+3]=Y&255,Z+4},y.prototype.writeIntLE=function(Y,Z,ie,ve){if(Y=+Y,Z=Z>>>0,!ve){var he=Math.pow(2,8*ie-1);N(this,Y,Z,ie,he-1,-he)}var pe=0,Ae=1,_e=0;for(this[Z]=Y&255;++pe>0)-_e&255;return Z+ie},y.prototype.writeIntBE=function(Y,Z,ie,ve){if(Y=+Y,Z=Z>>>0,!ve){var he=Math.pow(2,8*ie-1);N(this,Y,Z,ie,he-1,-he)}var pe=ie-1,Ae=1,_e=0;for(this[Z+pe]=Y&255;--pe>=0&&(Ae*=256);)Y<0&&_e===0&&this[Z+pe+1]!==0&&(_e=1),this[Z+pe]=(Y/Ae>>0)-_e&255;return Z+ie},y.prototype.writeInt8=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,1,127,-128),Y<0&&(Y=255+Y+1),this[Z]=Y&255,Z+1},y.prototype.writeInt16LE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,2,32767,-32768),this[Z]=Y&255,this[Z+1]=Y>>>8,Z+2},y.prototype.writeInt16BE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,2,32767,-32768),this[Z]=Y>>>8,this[Z+1]=Y&255,Z+2},y.prototype.writeInt32LE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,4,2147483647,-2147483648),this[Z]=Y&255,this[Z+1]=Y>>>8,this[Z+2]=Y>>>16,this[Z+3]=Y>>>24,Z+4},y.prototype.writeInt32BE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,4,2147483647,-2147483648),Y<0&&(Y=4294967295+Y+1),this[Z]=Y>>>24,this[Z+1]=Y>>>16,this[Z+2]=Y>>>8,this[Z+3]=Y&255,Z+4};function U(X,Y,Z,ie,ve,he){if(Z+ie>X.length)throw new RangeError("Index out of range");if(Z<0)throw new RangeError("Index out of range")}function oe(X,Y,Z,ie,ve){return Y=+Y,Z=Z>>>0,ve||U(X,Y,Z,4),n.write(X,Y,Z,ie,23,4),Z+4}y.prototype.writeFloatLE=function(Y,Z,ie){return oe(this,Y,Z,!0,ie)},y.prototype.writeFloatBE=function(Y,Z,ie){return oe(this,Y,Z,!1,ie)};function le(X,Y,Z,ie,ve){return Y=+Y,Z=Z>>>0,ve||U(X,Y,Z,8),n.write(X,Y,Z,ie,52,8),Z+8}y.prototype.writeDoubleLE=function(Y,Z,ie){return le(this,Y,Z,!0,ie)},y.prototype.writeDoubleBE=function(Y,Z,ie){return le(this,Y,Z,!1,ie)},y.prototype.copy=function(Y,Z,ie,ve){if(!y.isBuffer(Y))throw new TypeError("argument should be a Buffer");if(ie||(ie=0),!ve&&ve!==0&&(ve=this.length),Z>=Y.length&&(Z=Y.length),Z||(Z=0),ve>0&&ve=this.length)throw new RangeError("Index out of range");if(ve<0)throw new RangeError("sourceEnd out of bounds");ve>this.length&&(ve=this.length),Y.length-Z>>0,ie=ie===void 0?this.length:ie>>>0,Y||(Y=0);var pe;if(typeof Y=="number")for(pe=Z;pe55295&&Z<57344){if(!ve){if(Z>56319){(Y-=3)>-1&&he.push(239,191,189);continue}else if(pe+1===ie){(Y-=3)>-1&&he.push(239,191,189);continue}ve=Z;continue}if(Z<56320){(Y-=3)>-1&&he.push(239,191,189),ve=Z;continue}Z=(ve-55296<<10|Z-56320)+65536}else ve&&(Y-=3)>-1&&he.push(239,191,189);if(ve=null,Z<128){if((Y-=1)<0)break;he.push(Z)}else if(Z<2048){if((Y-=2)<0)break;he.push(Z>>6|192,Z&63|128)}else if(Z<65536){if((Y-=3)<0)break;he.push(Z>>12|224,Z>>6&63|128,Z&63|128)}else if(Z<1114112){if((Y-=4)<0)break;he.push(Z>>18|240,Z>>12&63|128,Z>>6&63|128,Z&63|128)}else throw new Error("Invalid code point")}return he}function te(X){for(var Y=[],Z=0;Z>8,ve=Z%256,he.push(ve),he.push(ie);return he}function k(X){return t.toByteArray(O(X))}function B(X,Y,Z,ie){for(var ve=0;ve=Y.length||ve>=X.length);++ve)Y[ve+Z]=X[ve];return ve}function ee(X,Y){return X instanceof Y||X!=null&&X.constructor!=null&&X.constructor.name!=null&&X.constructor.name===Y.name}function Q(X){return X!==X}var fe=function(){for(var X="0123456789abcdef",Y=new Array(256),Z=0;Z<16;++Z)for(var ie=Z*16,ve=0;ve<16;++ve)Y[ie+ve]=X[Z]+X[ve];return Y}()})(buffer$2);var browser$1$1={exports:{}},process=browser$1$1.exports={},cachedSetTimeout,cachedClearTimeout;function defaultSetTimout(){throw new Error("setTimeout has not been defined")}function defaultClearTimeout(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?cachedSetTimeout=setTimeout:cachedSetTimeout=defaultSetTimout}catch{cachedSetTimeout=defaultSetTimout}try{typeof clearTimeout=="function"?cachedClearTimeout=clearTimeout:cachedClearTimeout=defaultClearTimeout}catch{cachedClearTimeout=defaultClearTimeout}})();function runTimeout(e){if(cachedSetTimeout===setTimeout)return setTimeout(e,0);if((cachedSetTimeout===defaultSetTimout||!cachedSetTimeout)&&setTimeout)return cachedSetTimeout=setTimeout,setTimeout(e,0);try{return cachedSetTimeout(e,0)}catch{try{return cachedSetTimeout.call(null,e,0)}catch{return cachedSetTimeout.call(this,e,0)}}}function runClearTimeout(e){if(cachedClearTimeout===clearTimeout)return clearTimeout(e);if((cachedClearTimeout===defaultClearTimeout||!cachedClearTimeout)&&clearTimeout)return cachedClearTimeout=clearTimeout,clearTimeout(e);try{return cachedClearTimeout(e)}catch{try{return cachedClearTimeout.call(null,e)}catch{return cachedClearTimeout.call(this,e)}}}var queue$1=[],draining=!1,currentQueue,queueIndex=-1;function cleanUpNextTick(){!draining||!currentQueue||(draining=!1,currentQueue.length?queue$1=currentQueue.concat(queue$1):queueIndex=-1,queue$1.length&&drainQueue())}function drainQueue(){if(!draining){var e=runTimeout(cleanUpNextTick);draining=!0;for(var t=queue$1.length;t;){for(currentQueue=queue$1,queue$1=[];++queueIndex1)for(var n=1;n0)return;if(batchedComputed){let t=batchedComputed;for(batchedComputed=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;batchedSub;){let t=batchedSub;for(batchedSub=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(o){e||(e=o)}t=n}}if(e)throw e}function prepareDeps(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function cleanupDeps(e){let t,n=e.depsTail,o=n;for(;o;){const u=o.prevDep;o.version===-1?(o===n&&(n=u),removeSub(o),removeDep(o)):t=o,o.dep.activeLink=o.prevActiveLink,o.prevActiveLink=void 0,o=u}e.deps=t,e.depsTail=n}function isDirty(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(refreshComputed(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function refreshComputed(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===globalVersion))return;e.globalVersion=globalVersion;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!isDirty(e)){e.flags&=-3;return}const n=activeSub,o=shouldTrack;activeSub=e,shouldTrack=!0;try{prepareDeps(e);const u=e.fn(e._value);(t.version===0||hasChanged(u,e._value))&&(e._value=u,t.version++)}catch(u){throw t.version++,u}finally{activeSub=n,shouldTrack=o,cleanupDeps(e),e.flags&=-3}}function removeSub(e,t=!1){const{dep:n,prevSub:o,nextSub:u}=e;if(o&&(o.nextSub=u,e.prevSub=void 0),u&&(u.prevSub=o,e.nextSub=void 0),n.subsHead===e&&(n.subsHead=u),n.subs===e&&(n.subs=o,!o&&n.computed)){n.computed.flags&=-5;for(let a=n.computed.deps;a;a=a.nextDep)removeSub(a,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function removeDep(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}function effect(e,t){e.effect instanceof ReactiveEffect&&(e=e.effect.fn);const n=new ReactiveEffect(e);t&&extend$1(n,t);try{n.run()}catch(u){throw n.stop(),u}const o=n.run.bind(n);return o.effect=n,o}function stop(e){e.effect.stop()}let shouldTrack=!0;const trackStack=[];function pauseTracking(){trackStack.push(shouldTrack),shouldTrack=!1}function resetTracking(){const e=trackStack.pop();shouldTrack=e===void 0?!0:e}function cleanupEffect(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=activeSub;activeSub=void 0;try{t()}finally{activeSub=n}}}let globalVersion=0;class Link{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Dep{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.subsHead=void 0}track(t){if(!activeSub||!shouldTrack||activeSub===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==activeSub)n=this.activeLink=new Link(activeSub,this),activeSub.deps?(n.prevDep=activeSub.depsTail,activeSub.depsTail.nextDep=n,activeSub.depsTail=n):activeSub.deps=activeSub.depsTail=n,addSub(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const o=n.nextDep;o.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=o),n.prevDep=activeSub.depsTail,n.nextDep=void 0,activeSub.depsTail.nextDep=n,activeSub.depsTail=n,activeSub.deps===n&&(activeSub.deps=o)}return activeSub.onTrack&&activeSub.onTrack(extend$1({effect:activeSub},t)),n}trigger(t){this.version++,globalVersion++,this.notify(t)}notify(t){startBatch();try{for(let n=this.subsHead;n;n=n.nextSub)n.sub.onTrigger&&!(n.sub.flags&8)&&n.sub.onTrigger(extend$1({effect:n.sub},t));for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{endBatch()}}}function addSub(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let o=t.deps;o;o=o.nextDep)addSub(o)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subsHead===void 0&&(e.dep.subsHead=e),e.dep.subs=e}}const targetMap=new WeakMap,ITERATE_KEY=Symbol("Object iterate"),MAP_KEY_ITERATE_KEY=Symbol("Map keys iterate"),ARRAY_ITERATE_KEY=Symbol("Array iterate");function track(e,t,n){if(shouldTrack&&activeSub){let o=targetMap.get(e);o||targetMap.set(e,o=new Map);let u=o.get(n);u||(o.set(n,u=new Dep),u.map=o,u.key=n),u.track({target:e,type:t,key:n})}}function trigger(e,t,n,o,u,a){const v=targetMap.get(e);if(!v){globalVersion++;return}const y=w=>{w&&w.trigger({target:e,type:t,key:n,newValue:o,oldValue:u,oldTarget:a})};if(startBatch(),t==="clear")v.forEach(y);else{const w=isArray$8(e),$=w&&isIntegerKey(n);if(w&&n==="length"){const x=Number(o);v.forEach((E,B)=>{(B==="length"||B===ARRAY_ITERATE_KEY||!isSymbol$4(B)&&B>=x)&&y(E)})}else switch((n!==void 0||v.has(void 0))&&y(v.get(n)),$&&y(v.get(ARRAY_ITERATE_KEY)),t){case"add":w?$&&y(v.get("length")):(y(v.get(ITERATE_KEY)),isMap$1(e)&&y(v.get(MAP_KEY_ITERATE_KEY)));break;case"delete":w||(y(v.get(ITERATE_KEY)),isMap$1(e)&&y(v.get(MAP_KEY_ITERATE_KEY)));break;case"set":isMap$1(e)&&y(v.get(ITERATE_KEY));break}}endBatch()}function getDepFromReactive(e,t){const n=targetMap.get(e);return n&&n.get(t)}function reactiveReadArray(e){const t=toRaw(e);return t===e?t:(track(t,"iterate",ARRAY_ITERATE_KEY),isShallow(e)?t:t.map(toReactive))}function shallowReadArray(e){return track(e=toRaw(e),"iterate",ARRAY_ITERATE_KEY),e}const arrayInstrumentations={__proto__:null,[Symbol.iterator](){return iterator$1(this,Symbol.iterator,toReactive)},concat(...e){return reactiveReadArray(this).concat(...e.map(t=>isArray$8(t)?reactiveReadArray(t):t))},entries(){return iterator$1(this,"entries",e=>(e[1]=toReactive(e[1]),e))},every(e,t){return apply(this,"every",e,t,void 0,arguments)},filter(e,t){return apply(this,"filter",e,t,n=>n.map(toReactive),arguments)},find(e,t){return apply(this,"find",e,t,toReactive,arguments)},findIndex(e,t){return apply(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return apply(this,"findLast",e,t,toReactive,arguments)},findLastIndex(e,t){return apply(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return apply(this,"forEach",e,t,void 0,arguments)},includes(...e){return searchProxy(this,"includes",e)},indexOf(...e){return searchProxy(this,"indexOf",e)},join(e){return reactiveReadArray(this).join(e)},lastIndexOf(...e){return searchProxy(this,"lastIndexOf",e)},map(e,t){return apply(this,"map",e,t,void 0,arguments)},pop(){return noTracking(this,"pop")},push(...e){return noTracking(this,"push",e)},reduce(e,...t){return reduce(this,"reduce",e,t)},reduceRight(e,...t){return reduce(this,"reduceRight",e,t)},shift(){return noTracking(this,"shift")},some(e,t){return apply(this,"some",e,t,void 0,arguments)},splice(...e){return noTracking(this,"splice",e)},toReversed(){return reactiveReadArray(this).toReversed()},toSorted(e){return reactiveReadArray(this).toSorted(e)},toSpliced(...e){return reactiveReadArray(this).toSpliced(...e)},unshift(...e){return noTracking(this,"unshift",e)},values(){return iterator$1(this,"values",toReactive)}};function iterator$1(e,t,n){const o=shallowReadArray(e),u=o[t]();return o!==e&&!isShallow(e)&&(u._next=u.next,u.next=()=>{const a=u._next();return a.value&&(a.value=n(a.value)),a}),u}const arrayProto=Array.prototype;function apply(e,t,n,o,u,a){const v=shallowReadArray(e),y=v!==e&&!isShallow(e),w=v[t];if(w!==arrayProto[t]){const E=w.apply(e,a);return y?toReactive(E):E}let $=n;v!==e&&(y?$=function(E,B){return n.call(this,toReactive(E),B,e)}:n.length>2&&($=function(E,B){return n.call(this,E,B,e)}));const x=w.call(v,$,o);return y&&u?u(x):x}function reduce(e,t,n,o){const u=shallowReadArray(e);let a=n;return u!==e&&(isShallow(e)?n.length>3&&(a=function(v,y,w){return n.call(this,v,y,w,e)}):a=function(v,y,w){return n.call(this,v,toReactive(y),w,e)}),u[t](a,...o)}function searchProxy(e,t,n){const o=toRaw(e);track(o,"iterate",ARRAY_ITERATE_KEY);const u=o[t](...n);return(u===-1||u===!1)&&isProxy(n[0])?(n[0]=toRaw(n[0]),o[t](...n)):u}function noTracking(e,t,n=[]){pauseTracking(),startBatch();const o=toRaw(e)[t].apply(e,n);return endBatch(),resetTracking(),o}const isNonTrackableKeys=makeMap("__proto__,__v_isRef,__isVue"),builtInSymbols=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(isSymbol$4));function hasOwnProperty$3(e){isSymbol$4(e)||(e=String(e));const t=toRaw(this);return track(t,"has",e),t.hasOwnProperty(e)}class BaseReactiveHandler{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,o){if(n==="__v_skip")return t.__v_skip;const u=this._isReadonly,a=this._isShallow;if(n==="__v_isReactive")return!u;if(n==="__v_isReadonly")return u;if(n==="__v_isShallow")return a;if(n==="__v_raw")return o===(u?a?shallowReadonlyMap:readonlyMap:a?shallowReactiveMap:reactiveMap).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(o)?t:void 0;const v=isArray$8(t);if(!u){let w;if(v&&(w=arrayInstrumentations[n]))return w;if(n==="hasOwnProperty")return hasOwnProperty$3}const y=Reflect.get(t,n,isRef(t)?t:o);return(isSymbol$4(n)?builtInSymbols.has(n):isNonTrackableKeys(n))||(u||track(t,"get",n),a)?y:isRef(y)?v&&isIntegerKey(n)?y:y.value:isObject$2(y)?u?readonly(y):reactive(y):y}}class MutableReactiveHandler extends BaseReactiveHandler{constructor(t=!1){super(!1,t)}set(t,n,o,u){let a=t[n];if(!this._isShallow){const w=isReadonly(a);if(!isShallow(o)&&!isReadonly(o)&&(a=toRaw(a),o=toRaw(o)),!isArray$8(t)&&isRef(a)&&!isRef(o))return w?!1:(a.value=o,!0)}const v=isArray$8(t)&&isIntegerKey(n)?Number(n)e,getProto$3=e=>Reflect.getPrototypeOf(e);function createIterableMethod(e,t,n){return function(...o){const u=this.__v_raw,a=toRaw(u),v=isMap$1(a),y=e==="entries"||e===Symbol.iterator&&v,w=e==="keys"&&v,$=u[e](...o),x=n?toShallow:t?toReadonly:toReactive;return!t&&track(a,"iterate",w?MAP_KEY_ITERATE_KEY:ITERATE_KEY),{next(){const{value:E,done:B}=$.next();return B?{value:E,done:B}:{value:y?[x(E[0]),x(E[1])]:x(E),done:B}},[Symbol.iterator](){return this}}}}function createReadonlyMethod(e){return function(...t){{const n=t[0]?`on key "${t[0]}" `:"";warn$3(`${capitalize$2(e)} operation ${n}failed: target is readonly.`,toRaw(this))}return e==="delete"?!1:e==="clear"?void 0:this}}function createInstrumentations(e,t){const n={get(u){const a=this.__v_raw,v=toRaw(a),y=toRaw(u);e||(hasChanged(u,y)&&track(v,"get",u),track(v,"get",y));const{has:w}=getProto$3(v),$=t?toShallow:e?toReadonly:toReactive;if(w.call(v,u))return $(a.get(u));if(w.call(v,y))return $(a.get(y));a!==v&&a.get(u)},get size(){const u=this.__v_raw;return!e&&track(toRaw(u),"iterate",ITERATE_KEY),Reflect.get(u,"size",u)},has(u){const a=this.__v_raw,v=toRaw(a),y=toRaw(u);return e||(hasChanged(u,y)&&track(v,"has",u),track(v,"has",y)),u===y?a.has(u):a.has(u)||a.has(y)},forEach(u,a){const v=this,y=v.__v_raw,w=toRaw(y),$=t?toShallow:e?toReadonly:toReactive;return!e&&track(w,"iterate",ITERATE_KEY),y.forEach((x,E)=>u.call(a,$(x),$(E),v))}};return extend$1(n,e?{add:createReadonlyMethod("add"),set:createReadonlyMethod("set"),delete:createReadonlyMethod("delete"),clear:createReadonlyMethod("clear")}:{add(u){!t&&!isShallow(u)&&!isReadonly(u)&&(u=toRaw(u));const a=toRaw(this);return getProto$3(a).has.call(a,u)||(a.add(u),trigger(a,"add",u,u)),this},set(u,a){!t&&!isShallow(a)&&!isReadonly(a)&&(a=toRaw(a));const v=toRaw(this),{has:y,get:w}=getProto$3(v);let $=y.call(v,u);$?checkIdentityKeys(v,y,u):(u=toRaw(u),$=y.call(v,u));const x=w.call(v,u);return v.set(u,a),$?hasChanged(a,x)&&trigger(v,"set",u,a,x):trigger(v,"add",u,a),this},delete(u){const a=toRaw(this),{has:v,get:y}=getProto$3(a);let w=v.call(a,u);w?checkIdentityKeys(a,v,u):(u=toRaw(u),w=v.call(a,u));const $=y?y.call(a,u):void 0,x=a.delete(u);return w&&trigger(a,"delete",u,void 0,$),x},clear(){const u=toRaw(this),a=u.size!==0,v=isMap$1(u)?new Map(u):new Set(u),y=u.clear();return a&&trigger(u,"clear",void 0,void 0,v),y}}),["keys","values","entries",Symbol.iterator].forEach(u=>{n[u]=createIterableMethod(u,e,t)}),n}function createInstrumentationGetter(e,t){const n=createInstrumentations(e,t);return(o,u,a)=>u==="__v_isReactive"?!e:u==="__v_isReadonly"?e:u==="__v_raw"?o:Reflect.get(hasOwn$3(n,u)&&u in o?n:o,u,a)}const mutableCollectionHandlers={get:createInstrumentationGetter(!1,!1)},shallowCollectionHandlers={get:createInstrumentationGetter(!1,!0)},readonlyCollectionHandlers={get:createInstrumentationGetter(!0,!1)},shallowReadonlyCollectionHandlers={get:createInstrumentationGetter(!0,!0)};function checkIdentityKeys(e,t,n){const o=toRaw(n);if(o!==n&&t.call(e,o)){const u=toRawType(e);warn$3(`Reactive ${u} contains both the raw and reactive versions of the same object${u==="Map"?" as keys":""}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`)}}const reactiveMap=new WeakMap,shallowReactiveMap=new WeakMap,readonlyMap=new WeakMap,shallowReadonlyMap=new WeakMap;function targetTypeMap(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function getTargetType(e){return e.__v_skip||!Object.isExtensible(e)?0:targetTypeMap(toRawType(e))}function reactive(e){return isReadonly(e)?e:createReactiveObject(e,!1,mutableHandlers,mutableCollectionHandlers,reactiveMap)}function shallowReactive(e){return createReactiveObject(e,!1,shallowReactiveHandlers,shallowCollectionHandlers,shallowReactiveMap)}function readonly(e){return createReactiveObject(e,!0,readonlyHandlers,readonlyCollectionHandlers,readonlyMap)}function shallowReadonly(e){return createReactiveObject(e,!0,shallowReadonlyHandlers,shallowReadonlyCollectionHandlers,shallowReadonlyMap)}function createReactiveObject(e,t,n,o,u){if(!isObject$2(e))return warn$3(`value cannot be made ${t?"readonly":"reactive"}: ${String(e)}`),e;if(e.__v_raw&&!(t&&e.__v_isReactive))return e;const a=u.get(e);if(a)return a;const v=getTargetType(e);if(v===0)return e;const y=new Proxy(e,v===2?o:n);return u.set(e,y),y}function isReactive(e){return isReadonly(e)?isReactive(e.__v_raw):!!(e&&e.__v_isReactive)}function isReadonly(e){return!!(e&&e.__v_isReadonly)}function isShallow(e){return!!(e&&e.__v_isShallow)}function isProxy(e){return e?!!e.__v_raw:!1}function toRaw(e){const t=e&&e.__v_raw;return t?toRaw(t):e}function markRaw(e){return!hasOwn$3(e,"__v_skip")&&Object.isExtensible(e)&&def(e,"__v_skip",!0),e}const toReactive=e=>isObject$2(e)?reactive(e):e,toReadonly=e=>isObject$2(e)?readonly(e):e;function isRef(e){return e?e.__v_isRef===!0:!1}function ref$1(e){return createRef(e,!1)}function shallowRef(e){return createRef(e,!0)}function createRef(e,t){return isRef(e)?e:new RefImpl(e,t)}class RefImpl{constructor(t,n){this.dep=new Dep,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:toRaw(t),this._value=n?t:toReactive(t),this.__v_isShallow=n}get value(){return this.dep.track({target:this,type:"get",key:"value"}),this._value}set value(t){const n=this._rawValue,o=this.__v_isShallow||isShallow(t)||isReadonly(t);t=o?t:toRaw(t),hasChanged(t,n)&&(this._rawValue=t,this._value=o?t:toReactive(t),this.dep.trigger({target:this,type:"set",key:"value",newValue:t,oldValue:n}))}}function triggerRef(e){e.dep&&e.dep.trigger({target:e,type:"set",key:"value",newValue:e._value})}function unref(e){return isRef(e)?e.value:e}function toValue$1(e){return isFunction$2(e)?e():unref(e)}const shallowUnwrapHandlers={get:(e,t,n)=>t==="__v_raw"?e:unref(Reflect.get(e,t,n)),set:(e,t,n,o)=>{const u=e[t];return isRef(u)&&!isRef(n)?(u.value=n,!0):Reflect.set(e,t,n,o)}};function proxyRefs(e){return isReactive(e)?e:new Proxy(e,shallowUnwrapHandlers)}class CustomRefImpl{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new Dep,{get:o,set:u}=t(n.track.bind(n),n.trigger.bind(n));this._get=o,this._set=u}get value(){return this._value=this._get()}set value(t){this._set(t)}}function customRef(e){return new CustomRefImpl(e)}function toRefs(e){isProxy(e)||warn$3("toRefs() expects a reactive object but received a plain one.");const t=isArray$8(e)?new Array(e.length):{};for(const n in e)t[n]=propertyToRef(e,n);return t}class ObjectRefImpl{constructor(t,n,o){this._object=t,this._key=n,this._defaultValue=o,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return getDepFromReactive(toRaw(this._object),this._key)}}class GetterRefImpl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function toRef(e,t,n){return isRef(e)?e:isFunction$2(e)?new GetterRefImpl(e):isObject$2(e)&&arguments.length>1?propertyToRef(e,t,n):ref$1(e)}function propertyToRef(e,t,n){const o=e[t];return isRef(o)?o:new ObjectRefImpl(e,t,n)}class ComputedRefImpl{constructor(t,n,o){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Dep(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=globalVersion-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=o}notify(){if(this.flags|=16,!(this.flags&8)&&activeSub!==this)return batch(this,!0),!0}get value(){const t=this.dep.track({target:this,type:"get",key:"value"});return refreshComputed(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter?this.setter(t):warn$3("Write operation failed: computed value is readonly")}}function computed$1(e,t,n=!1){let o,u;isFunction$2(e)?o=e:(o=e.get,u=e.set);const a=new ComputedRefImpl(o,u,n);return t&&!n&&(a.onTrack=t.onTrack,a.onTrigger=t.onTrigger),a}const TrackOpTypes={GET:"get",HAS:"has",ITERATE:"iterate"},TriggerOpTypes={SET:"set",ADD:"add",DELETE:"delete",CLEAR:"clear"},INITIAL_WATCHER_VALUE={},cleanupMap=new WeakMap;let activeWatcher;function getCurrentWatcher(){return activeWatcher}function onWatcherCleanup(e,t=!1,n=activeWatcher){if(n){let o=cleanupMap.get(n);o||cleanupMap.set(n,o=[]),o.push(e)}else t||warn$3("onWatcherCleanup() was called when there was no active watcher to associate with.")}function watch$1(e,t,n=EMPTY_OBJ){const{immediate:o,deep:u,once:a,scheduler:v,augmentJob:y,call:w}=n,$=re=>{(n.onWarn||warn$3)("Invalid watch source: ",re,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},x=re=>u?re:isShallow(re)||u===!1||u===0?traverse(re,1):traverse(re);let E,B,I,L,D=!1,V=!1;if(isRef(e)?(B=()=>e.value,D=isShallow(e)):isReactive(e)?(B=()=>x(e),D=!0):isArray$8(e)?(V=!0,D=e.some(re=>isReactive(re)||isShallow(re)),B=()=>e.map(re=>{if(isRef(re))return re.value;if(isReactive(re))return x(re);if(isFunction$2(re))return w?w(re,2):re();$(re)})):isFunction$2(e)?t?B=w?()=>w(e,2):e:B=()=>{if(I){pauseTracking();try{I()}finally{resetTracking()}}const re=activeWatcher;activeWatcher=E;try{return w?w(e,3,[L]):e(L)}finally{activeWatcher=re}}:(B=NOOP,$(e)),t&&u){const re=B,ae=u===!0?1/0:u;B=()=>traverse(re(),ae)}const H=getCurrentScope(),j=()=>{E.stop(),H&&H.active&&remove(H.effects,E)};if(a&&t){const re=t;t=(...ae)=>{re(...ae),j()}}let z=V?new Array(e.length).fill(INITIAL_WATCHER_VALUE):INITIAL_WATCHER_VALUE;const J=re=>{if(!(!(E.flags&1)||!E.dirty&&!re))if(t){const ae=E.run();if(u||D||(V?ae.some((me,ue)=>hasChanged(me,z[ue])):hasChanged(ae,z))){I&&I();const me=activeWatcher;activeWatcher=E;try{const ue=[ae,z===INITIAL_WATCHER_VALUE?void 0:V&&z[0]===INITIAL_WATCHER_VALUE?[]:z,L];w?w(t,3,ue):t(...ue),z=ae}finally{activeWatcher=me}}}else E.run()};return y&&y(J),E=new ReactiveEffect(B),E.scheduler=v?()=>v(J,!1):J,L=re=>onWatcherCleanup(re,!1,E),I=E.onStop=()=>{const re=cleanupMap.get(E);if(re){if(w)w(re,4);else for(const ae of re)ae();cleanupMap.delete(E)}},E.onTrack=n.onTrack,E.onTrigger=n.onTrigger,t?o?J(!0):z=E.run():v?v(J.bind(null,!0),!0):E.run(),j.pause=E.pause.bind(E),j.resume=E.resume.bind(E),j.stop=j,j}function traverse(e,t=1/0,n){if(t<=0||!isObject$2(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,isRef(e))traverse(e.value,t,n);else if(isArray$8(e))for(let o=0;o{traverse(o,t,n)});else if(isPlainObject(e)){for(const o in e)traverse(e[o],t,n);for(const o of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,o)&&traverse(e[o],t,n)}return e}/** +**/function warn$3(e,...t){console.warn(`[Vue warn] ${e}`,...t)}let activeEffectScope;class EffectScope{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=activeEffectScope,!t&&activeEffectScope&&(this.index=(activeEffectScope.scopes||(activeEffectScope.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0)return;if(batchedComputed){let t=batchedComputed;for(batchedComputed=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;batchedSub;){let t=batchedSub;for(batchedSub=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(o){e||(e=o)}t=n}}if(e)throw e}function prepareDeps(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function cleanupDeps(e){let t,n=e.depsTail,o=n;for(;o;){const u=o.prevDep;o.version===-1?(o===n&&(n=u),removeSub(o),removeDep(o)):t=o,o.dep.activeLink=o.prevActiveLink,o.prevActiveLink=void 0,o=u}e.deps=t,e.depsTail=n}function isDirty(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(refreshComputed(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function refreshComputed(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===globalVersion))return;e.globalVersion=globalVersion;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!isDirty(e)){e.flags&=-3;return}const n=activeSub,o=shouldTrack;activeSub=e,shouldTrack=!0;try{prepareDeps(e);const u=e.fn(e._value);(t.version===0||hasChanged(u,e._value))&&(e._value=u,t.version++)}catch(u){throw t.version++,u}finally{activeSub=n,shouldTrack=o,cleanupDeps(e),e.flags&=-3}}function removeSub(e,t=!1){const{dep:n,prevSub:o,nextSub:u}=e;if(o&&(o.nextSub=u,e.prevSub=void 0),u&&(u.prevSub=o,e.nextSub=void 0),n.subsHead===e&&(n.subsHead=u),n.subs===e&&(n.subs=o,!o&&n.computed)){n.computed.flags&=-5;for(let a=n.computed.deps;a;a=a.nextDep)removeSub(a,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function removeDep(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}function effect(e,t){e.effect instanceof ReactiveEffect&&(e=e.effect.fn);const n=new ReactiveEffect(e);t&&extend$1(n,t);try{n.run()}catch(u){throw n.stop(),u}const o=n.run.bind(n);return o.effect=n,o}function stop(e){e.effect.stop()}let shouldTrack=!0;const trackStack=[];function pauseTracking(){trackStack.push(shouldTrack),shouldTrack=!1}function resetTracking(){const e=trackStack.pop();shouldTrack=e===void 0?!0:e}function cleanupEffect(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=activeSub;activeSub=void 0;try{t()}finally{activeSub=n}}}let globalVersion=0;class Link{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Dep{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.subsHead=void 0}track(t){if(!activeSub||!shouldTrack||activeSub===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==activeSub)n=this.activeLink=new Link(activeSub,this),activeSub.deps?(n.prevDep=activeSub.depsTail,activeSub.depsTail.nextDep=n,activeSub.depsTail=n):activeSub.deps=activeSub.depsTail=n,addSub(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const o=n.nextDep;o.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=o),n.prevDep=activeSub.depsTail,n.nextDep=void 0,activeSub.depsTail.nextDep=n,activeSub.depsTail=n,activeSub.deps===n&&(activeSub.deps=o)}return activeSub.onTrack&&activeSub.onTrack(extend$1({effect:activeSub},t)),n}trigger(t){this.version++,globalVersion++,this.notify(t)}notify(t){startBatch();try{for(let n=this.subsHead;n;n=n.nextSub)n.sub.onTrigger&&!(n.sub.flags&8)&&n.sub.onTrigger(extend$1({effect:n.sub},t));for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{endBatch()}}}function addSub(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let o=t.deps;o;o=o.nextDep)addSub(o)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subsHead===void 0&&(e.dep.subsHead=e),e.dep.subs=e}}const targetMap=new WeakMap,ITERATE_KEY=Symbol("Object iterate"),MAP_KEY_ITERATE_KEY=Symbol("Map keys iterate"),ARRAY_ITERATE_KEY=Symbol("Array iterate");function track(e,t,n){if(shouldTrack&&activeSub){let o=targetMap.get(e);o||targetMap.set(e,o=new Map);let u=o.get(n);u||(o.set(n,u=new Dep),u.map=o,u.key=n),u.track({target:e,type:t,key:n})}}function trigger(e,t,n,o,u,a){const v=targetMap.get(e);if(!v){globalVersion++;return}const y=w=>{w&&w.trigger({target:e,type:t,key:n,newValue:o,oldValue:u,oldTarget:a})};if(startBatch(),t==="clear")v.forEach(y);else{const w=isArray$8(e),$=w&&isIntegerKey(n);if(w&&n==="length"){const x=Number(o);v.forEach((E,P)=>{(P==="length"||P===ARRAY_ITERATE_KEY||!isSymbol$4(P)&&P>=x)&&y(E)})}else switch((n!==void 0||v.has(void 0))&&y(v.get(n)),$&&y(v.get(ARRAY_ITERATE_KEY)),t){case"add":w?$&&y(v.get("length")):(y(v.get(ITERATE_KEY)),isMap$1(e)&&y(v.get(MAP_KEY_ITERATE_KEY)));break;case"delete":w||(y(v.get(ITERATE_KEY)),isMap$1(e)&&y(v.get(MAP_KEY_ITERATE_KEY)));break;case"set":isMap$1(e)&&y(v.get(ITERATE_KEY));break}}endBatch()}function getDepFromReactive(e,t){const n=targetMap.get(e);return n&&n.get(t)}function reactiveReadArray(e){const t=toRaw(e);return t===e?t:(track(t,"iterate",ARRAY_ITERATE_KEY),isShallow(e)?t:t.map(toReactive))}function shallowReadArray(e){return track(e=toRaw(e),"iterate",ARRAY_ITERATE_KEY),e}const arrayInstrumentations={__proto__:null,[Symbol.iterator](){return iterator$1(this,Symbol.iterator,toReactive)},concat(...e){return reactiveReadArray(this).concat(...e.map(t=>isArray$8(t)?reactiveReadArray(t):t))},entries(){return iterator$1(this,"entries",e=>(e[1]=toReactive(e[1]),e))},every(e,t){return apply(this,"every",e,t,void 0,arguments)},filter(e,t){return apply(this,"filter",e,t,n=>n.map(toReactive),arguments)},find(e,t){return apply(this,"find",e,t,toReactive,arguments)},findIndex(e,t){return apply(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return apply(this,"findLast",e,t,toReactive,arguments)},findLastIndex(e,t){return apply(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return apply(this,"forEach",e,t,void 0,arguments)},includes(...e){return searchProxy(this,"includes",e)},indexOf(...e){return searchProxy(this,"indexOf",e)},join(e){return reactiveReadArray(this).join(e)},lastIndexOf(...e){return searchProxy(this,"lastIndexOf",e)},map(e,t){return apply(this,"map",e,t,void 0,arguments)},pop(){return noTracking(this,"pop")},push(...e){return noTracking(this,"push",e)},reduce(e,...t){return reduce(this,"reduce",e,t)},reduceRight(e,...t){return reduce(this,"reduceRight",e,t)},shift(){return noTracking(this,"shift")},some(e,t){return apply(this,"some",e,t,void 0,arguments)},splice(...e){return noTracking(this,"splice",e)},toReversed(){return reactiveReadArray(this).toReversed()},toSorted(e){return reactiveReadArray(this).toSorted(e)},toSpliced(...e){return reactiveReadArray(this).toSpliced(...e)},unshift(...e){return noTracking(this,"unshift",e)},values(){return iterator$1(this,"values",toReactive)}};function iterator$1(e,t,n){const o=shallowReadArray(e),u=o[t]();return o!==e&&!isShallow(e)&&(u._next=u.next,u.next=()=>{const a=u._next();return a.value&&(a.value=n(a.value)),a}),u}const arrayProto=Array.prototype;function apply(e,t,n,o,u,a){const v=shallowReadArray(e),y=v!==e&&!isShallow(e),w=v[t];if(w!==arrayProto[t]){const E=w.apply(e,a);return y?toReactive(E):E}let $=n;v!==e&&(y?$=function(E,P){return n.call(this,toReactive(E),P,e)}:n.length>2&&($=function(E,P){return n.call(this,E,P,e)}));const x=w.call(v,$,o);return y&&u?u(x):x}function reduce(e,t,n,o){const u=shallowReadArray(e);let a=n;return u!==e&&(isShallow(e)?n.length>3&&(a=function(v,y,w){return n.call(this,v,y,w,e)}):a=function(v,y,w){return n.call(this,v,toReactive(y),w,e)}),u[t](a,...o)}function searchProxy(e,t,n){const o=toRaw(e);track(o,"iterate",ARRAY_ITERATE_KEY);const u=o[t](...n);return(u===-1||u===!1)&&isProxy(n[0])?(n[0]=toRaw(n[0]),o[t](...n)):u}function noTracking(e,t,n=[]){pauseTracking(),startBatch();const o=toRaw(e)[t].apply(e,n);return endBatch(),resetTracking(),o}const isNonTrackableKeys=makeMap("__proto__,__v_isRef,__isVue"),builtInSymbols=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(isSymbol$4));function hasOwnProperty$3(e){isSymbol$4(e)||(e=String(e));const t=toRaw(this);return track(t,"has",e),t.hasOwnProperty(e)}class BaseReactiveHandler{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,o){if(n==="__v_skip")return t.__v_skip;const u=this._isReadonly,a=this._isShallow;if(n==="__v_isReactive")return!u;if(n==="__v_isReadonly")return u;if(n==="__v_isShallow")return a;if(n==="__v_raw")return o===(u?a?shallowReadonlyMap:readonlyMap:a?shallowReactiveMap:reactiveMap).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(o)?t:void 0;const v=isArray$8(t);if(!u){let w;if(v&&(w=arrayInstrumentations[n]))return w;if(n==="hasOwnProperty")return hasOwnProperty$3}const y=Reflect.get(t,n,isRef(t)?t:o);return(isSymbol$4(n)?builtInSymbols.has(n):isNonTrackableKeys(n))||(u||track(t,"get",n),a)?y:isRef(y)?v&&isIntegerKey(n)?y:y.value:isObject$2(y)?u?readonly(y):reactive(y):y}}class MutableReactiveHandler extends BaseReactiveHandler{constructor(t=!1){super(!1,t)}set(t,n,o,u){let a=t[n];if(!this._isShallow){const w=isReadonly(a);if(!isShallow(o)&&!isReadonly(o)&&(a=toRaw(a),o=toRaw(o)),!isArray$8(t)&&isRef(a)&&!isRef(o))return w?!1:(a.value=o,!0)}const v=isArray$8(t)&&isIntegerKey(n)?Number(n)e,getProto$3=e=>Reflect.getPrototypeOf(e);function createIterableMethod(e,t,n){return function(...o){const u=this.__v_raw,a=toRaw(u),v=isMap$1(a),y=e==="entries"||e===Symbol.iterator&&v,w=e==="keys"&&v,$=u[e](...o),x=n?toShallow:t?toReadonly:toReactive;return!t&&track(a,"iterate",w?MAP_KEY_ITERATE_KEY:ITERATE_KEY),{next(){const{value:E,done:P}=$.next();return P?{value:E,done:P}:{value:y?[x(E[0]),x(E[1])]:x(E),done:P}},[Symbol.iterator](){return this}}}}function createReadonlyMethod(e){return function(...t){{const n=t[0]?`on key "${t[0]}" `:"";warn$3(`${capitalize$2(e)} operation ${n}failed: target is readonly.`,toRaw(this))}return e==="delete"?!1:e==="clear"?void 0:this}}function createInstrumentations(e,t){const n={get(u){const a=this.__v_raw,v=toRaw(a),y=toRaw(u);e||(hasChanged(u,y)&&track(v,"get",u),track(v,"get",y));const{has:w}=getProto$3(v),$=t?toShallow:e?toReadonly:toReactive;if(w.call(v,u))return $(a.get(u));if(w.call(v,y))return $(a.get(y));a!==v&&a.get(u)},get size(){const u=this.__v_raw;return!e&&track(toRaw(u),"iterate",ITERATE_KEY),Reflect.get(u,"size",u)},has(u){const a=this.__v_raw,v=toRaw(a),y=toRaw(u);return e||(hasChanged(u,y)&&track(v,"has",u),track(v,"has",y)),u===y?a.has(u):a.has(u)||a.has(y)},forEach(u,a){const v=this,y=v.__v_raw,w=toRaw(y),$=t?toShallow:e?toReadonly:toReactive;return!e&&track(w,"iterate",ITERATE_KEY),y.forEach((x,E)=>u.call(a,$(x),$(E),v))}};return extend$1(n,e?{add:createReadonlyMethod("add"),set:createReadonlyMethod("set"),delete:createReadonlyMethod("delete"),clear:createReadonlyMethod("clear")}:{add(u){!t&&!isShallow(u)&&!isReadonly(u)&&(u=toRaw(u));const a=toRaw(this);return getProto$3(a).has.call(a,u)||(a.add(u),trigger(a,"add",u,u)),this},set(u,a){!t&&!isShallow(a)&&!isReadonly(a)&&(a=toRaw(a));const v=toRaw(this),{has:y,get:w}=getProto$3(v);let $=y.call(v,u);$?checkIdentityKeys(v,y,u):(u=toRaw(u),$=y.call(v,u));const x=w.call(v,u);return v.set(u,a),$?hasChanged(a,x)&&trigger(v,"set",u,a,x):trigger(v,"add",u,a),this},delete(u){const a=toRaw(this),{has:v,get:y}=getProto$3(a);let w=v.call(a,u);w?checkIdentityKeys(a,v,u):(u=toRaw(u),w=v.call(a,u));const $=y?y.call(a,u):void 0,x=a.delete(u);return w&&trigger(a,"delete",u,void 0,$),x},clear(){const u=toRaw(this),a=u.size!==0,v=isMap$1(u)?new Map(u):new Set(u),y=u.clear();return a&&trigger(u,"clear",void 0,void 0,v),y}}),["keys","values","entries",Symbol.iterator].forEach(u=>{n[u]=createIterableMethod(u,e,t)}),n}function createInstrumentationGetter(e,t){const n=createInstrumentations(e,t);return(o,u,a)=>u==="__v_isReactive"?!e:u==="__v_isReadonly"?e:u==="__v_raw"?o:Reflect.get(hasOwn$3(n,u)&&u in o?n:o,u,a)}const mutableCollectionHandlers={get:createInstrumentationGetter(!1,!1)},shallowCollectionHandlers={get:createInstrumentationGetter(!1,!0)},readonlyCollectionHandlers={get:createInstrumentationGetter(!0,!1)},shallowReadonlyCollectionHandlers={get:createInstrumentationGetter(!0,!0)};function checkIdentityKeys(e,t,n){const o=toRaw(n);if(o!==n&&t.call(e,o)){const u=toRawType(e);warn$3(`Reactive ${u} contains both the raw and reactive versions of the same object${u==="Map"?" as keys":""}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`)}}const reactiveMap=new WeakMap,shallowReactiveMap=new WeakMap,readonlyMap=new WeakMap,shallowReadonlyMap=new WeakMap;function targetTypeMap(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function getTargetType(e){return e.__v_skip||!Object.isExtensible(e)?0:targetTypeMap(toRawType(e))}function reactive(e){return isReadonly(e)?e:createReactiveObject(e,!1,mutableHandlers,mutableCollectionHandlers,reactiveMap)}function shallowReactive(e){return createReactiveObject(e,!1,shallowReactiveHandlers,shallowCollectionHandlers,shallowReactiveMap)}function readonly(e){return createReactiveObject(e,!0,readonlyHandlers,readonlyCollectionHandlers,readonlyMap)}function shallowReadonly(e){return createReactiveObject(e,!0,shallowReadonlyHandlers,shallowReadonlyCollectionHandlers,shallowReadonlyMap)}function createReactiveObject(e,t,n,o,u){if(!isObject$2(e))return warn$3(`value cannot be made ${t?"readonly":"reactive"}: ${String(e)}`),e;if(e.__v_raw&&!(t&&e.__v_isReactive))return e;const a=u.get(e);if(a)return a;const v=getTargetType(e);if(v===0)return e;const y=new Proxy(e,v===2?o:n);return u.set(e,y),y}function isReactive(e){return isReadonly(e)?isReactive(e.__v_raw):!!(e&&e.__v_isReactive)}function isReadonly(e){return!!(e&&e.__v_isReadonly)}function isShallow(e){return!!(e&&e.__v_isShallow)}function isProxy(e){return e?!!e.__v_raw:!1}function toRaw(e){const t=e&&e.__v_raw;return t?toRaw(t):e}function markRaw(e){return!hasOwn$3(e,"__v_skip")&&Object.isExtensible(e)&&def(e,"__v_skip",!0),e}const toReactive=e=>isObject$2(e)?reactive(e):e,toReadonly=e=>isObject$2(e)?readonly(e):e;function isRef(e){return e?e.__v_isRef===!0:!1}function ref$1(e){return createRef(e,!1)}function shallowRef(e){return createRef(e,!0)}function createRef(e,t){return isRef(e)?e:new RefImpl(e,t)}class RefImpl{constructor(t,n){this.dep=new Dep,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:toRaw(t),this._value=n?t:toReactive(t),this.__v_isShallow=n}get value(){return this.dep.track({target:this,type:"get",key:"value"}),this._value}set value(t){const n=this._rawValue,o=this.__v_isShallow||isShallow(t)||isReadonly(t);t=o?t:toRaw(t),hasChanged(t,n)&&(this._rawValue=t,this._value=o?t:toReactive(t),this.dep.trigger({target:this,type:"set",key:"value",newValue:t,oldValue:n}))}}function triggerRef(e){e.dep&&e.dep.trigger({target:e,type:"set",key:"value",newValue:e._value})}function unref(e){return isRef(e)?e.value:e}function toValue$1(e){return isFunction$2(e)?e():unref(e)}const shallowUnwrapHandlers={get:(e,t,n)=>t==="__v_raw"?e:unref(Reflect.get(e,t,n)),set:(e,t,n,o)=>{const u=e[t];return isRef(u)&&!isRef(n)?(u.value=n,!0):Reflect.set(e,t,n,o)}};function proxyRefs(e){return isReactive(e)?e:new Proxy(e,shallowUnwrapHandlers)}class CustomRefImpl{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new Dep,{get:o,set:u}=t(n.track.bind(n),n.trigger.bind(n));this._get=o,this._set=u}get value(){return this._value=this._get()}set value(t){this._set(t)}}function customRef(e){return new CustomRefImpl(e)}function toRefs(e){isProxy(e)||warn$3("toRefs() expects a reactive object but received a plain one.");const t=isArray$8(e)?new Array(e.length):{};for(const n in e)t[n]=propertyToRef(e,n);return t}class ObjectRefImpl{constructor(t,n,o){this._object=t,this._key=n,this._defaultValue=o,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return getDepFromReactive(toRaw(this._object),this._key)}}class GetterRefImpl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function toRef(e,t,n){return isRef(e)?e:isFunction$2(e)?new GetterRefImpl(e):isObject$2(e)&&arguments.length>1?propertyToRef(e,t,n):ref$1(e)}function propertyToRef(e,t,n){const o=e[t];return isRef(o)?o:new ObjectRefImpl(e,t,n)}class ComputedRefImpl{constructor(t,n,o){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Dep(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=globalVersion-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=o}notify(){if(this.flags|=16,!(this.flags&8)&&activeSub!==this)return batch(this,!0),!0}get value(){const t=this.dep.track({target:this,type:"get",key:"value"});return refreshComputed(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter?this.setter(t):warn$3("Write operation failed: computed value is readonly")}}function computed$1(e,t,n=!1){let o,u;isFunction$2(e)?o=e:(o=e.get,u=e.set);const a=new ComputedRefImpl(o,u,n);return t&&!n&&(a.onTrack=t.onTrack,a.onTrigger=t.onTrigger),a}const TrackOpTypes={GET:"get",HAS:"has",ITERATE:"iterate"},TriggerOpTypes={SET:"set",ADD:"add",DELETE:"delete",CLEAR:"clear"},INITIAL_WATCHER_VALUE={},cleanupMap=new WeakMap;let activeWatcher;function getCurrentWatcher(){return activeWatcher}function onWatcherCleanup(e,t=!1,n=activeWatcher){if(n){let o=cleanupMap.get(n);o||cleanupMap.set(n,o=[]),o.push(e)}else t||warn$3("onWatcherCleanup() was called when there was no active watcher to associate with.")}function watch$1(e,t,n=EMPTY_OBJ){const{immediate:o,deep:u,once:a,scheduler:v,augmentJob:y,call:w}=n,$=re=>{(n.onWarn||warn$3)("Invalid watch source: ",re,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},x=re=>u?re:isShallow(re)||u===!1||u===0?traverse(re,1):traverse(re);let E,P,I,L,D=!1,V=!1;if(isRef(e)?(P=()=>e.value,D=isShallow(e)):isReactive(e)?(P=()=>x(e),D=!0):isArray$8(e)?(V=!0,D=e.some(re=>isReactive(re)||isShallow(re)),P=()=>e.map(re=>{if(isRef(re))return re.value;if(isReactive(re))return x(re);if(isFunction$2(re))return w?w(re,2):re();$(re)})):isFunction$2(e)?t?P=w?()=>w(e,2):e:P=()=>{if(I){pauseTracking();try{I()}finally{resetTracking()}}const re=activeWatcher;activeWatcher=E;try{return w?w(e,3,[L]):e(L)}finally{activeWatcher=re}}:(P=NOOP,$(e)),t&&u){const re=P,ae=u===!0?1/0:u;P=()=>traverse(re(),ae)}const H=getCurrentScope(),j=()=>{E.stop(),H&&H.active&&remove(H.effects,E)};if(a&&t){const re=t;t=(...ae)=>{re(...ae),j()}}let z=V?new Array(e.length).fill(INITIAL_WATCHER_VALUE):INITIAL_WATCHER_VALUE;const J=re=>{if(!(!(E.flags&1)||!E.dirty&&!re))if(t){const ae=E.run();if(u||D||(V?ae.some((me,ue)=>hasChanged(me,z[ue])):hasChanged(ae,z))){I&&I();const me=activeWatcher;activeWatcher=E;try{const ue=[ae,z===INITIAL_WATCHER_VALUE?void 0:V&&z[0]===INITIAL_WATCHER_VALUE?[]:z,L];w?w(t,3,ue):t(...ue),z=ae}finally{activeWatcher=me}}}else E.run()};return y&&y(J),E=new ReactiveEffect(P),E.scheduler=v?()=>v(J,!1):J,L=re=>onWatcherCleanup(re,!1,E),I=E.onStop=()=>{const re=cleanupMap.get(E);if(re){if(w)w(re,4);else for(const ae of re)ae();cleanupMap.delete(E)}},E.onTrack=n.onTrack,E.onTrigger=n.onTrigger,t?o?J(!0):z=E.run():v?v(J.bind(null,!0),!0):E.run(),j.pause=E.pause.bind(E),j.resume=E.resume.bind(E),j.stop=j,j}function traverse(e,t=1/0,n){if(t<=0||!isObject$2(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,isRef(e))traverse(e.value,t,n);else if(isArray$8(e))for(let o=0;o{traverse(o,t,n)});else if(isPlainObject(e)){for(const o in e)traverse(e[o],t,n);for(const o of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,o)&&traverse(e[o],t,n)}return e}/** * @vue/runtime-core v3.5.13 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/const stack=[];function pushWarningContext(e){stack.push(e)}function popWarningContext(){stack.pop()}let isWarning=!1;function warn$1(e,...t){if(isWarning)return;isWarning=!0,pauseTracking();const n=stack.length?stack[stack.length-1].component:null,o=n&&n.appContext.config.warnHandler,u=getComponentTrace();if(o)callWithErrorHandling(o,n,11,[e+t.map(a=>{var v,y;return(y=(v=a.toString)==null?void 0:v.call(a))!=null?y:JSON.stringify(a)}).join(""),n&&n.proxy,u.map(({vnode:a})=>`at <${formatComponentName(n,a.type)}>`).join(` `),u]);else{const a=[`[Vue warn]: ${e}`,...t];u.length&&a.push(` `,...formatTrace(u)),console.warn(...a)}resetTracking(),isWarning=!1}function getComponentTrace(){let e=stack[stack.length-1];if(!e)return[];const t=[];for(;e;){const n=t[0];n&&n.vnode===e?n.recurseCount++:t.push({vnode:e,recurseCount:0});const o=e.component&&e.component.parent;e=o&&o.vnode}return t}function formatTrace(e){const t=[];return e.forEach((n,o)=>{t.push(...o===0?[]:[` -`],...formatTraceEntry(n))}),t}function formatTraceEntry({vnode:e,recurseCount:t}){const n=t>0?`... (${t} recursive calls)`:"",o=e.component?e.component.parent==null:!1,u=` at <${formatComponentName(e.component,e.type,o)}`,a=">"+n;return e.props?[u,...formatProps(e.props),a]:[u+a]}function formatProps(e){const t=[],n=Object.keys(e);return n.slice(0,3).forEach(o=>{t.push(...formatProp(o,e[o]))}),n.length>3&&t.push(" ..."),t}function formatProp(e,t,n){return isString$2(t)?(t=JSON.stringify(t),n?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?n?t:[`${e}=${t}`]:isRef(t)?(t=formatProp(e,toRaw(t.value),!0),n?t:[`${e}=Ref<`,t,">"]):isFunction$2(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=toRaw(t),n?t:[`${e}=`,t])}function assertNumber(e,t){e!==void 0&&(typeof e!="number"?warn$1(`${t} is not a valid number - got ${JSON.stringify(e)}.`):isNaN(e)&&warn$1(`${t} is NaN - the duration expression might be incorrect.`))}const ErrorCodes={SETUP_FUNCTION:0,0:"SETUP_FUNCTION",RENDER_FUNCTION:1,1:"RENDER_FUNCTION",NATIVE_EVENT_HANDLER:5,5:"NATIVE_EVENT_HANDLER",COMPONENT_EVENT_HANDLER:6,6:"COMPONENT_EVENT_HANDLER",VNODE_HOOK:7,7:"VNODE_HOOK",DIRECTIVE_HOOK:8,8:"DIRECTIVE_HOOK",TRANSITION_HOOK:9,9:"TRANSITION_HOOK",APP_ERROR_HANDLER:10,10:"APP_ERROR_HANDLER",APP_WARN_HANDLER:11,11:"APP_WARN_HANDLER",FUNCTION_REF:12,12:"FUNCTION_REF",ASYNC_COMPONENT_LOADER:13,13:"ASYNC_COMPONENT_LOADER",SCHEDULER:14,14:"SCHEDULER",COMPONENT_UPDATE:15,15:"COMPONENT_UPDATE",APP_UNMOUNT_CLEANUP:16,16:"APP_UNMOUNT_CLEANUP"},ErrorTypeStrings$1={sp:"serverPrefetch hook",bc:"beforeCreate hook",c:"created hook",bm:"beforeMount hook",m:"mounted hook",bu:"beforeUpdate hook",u:"updated",bum:"beforeUnmount hook",um:"unmounted hook",a:"activated hook",da:"deactivated hook",ec:"errorCaptured hook",rtc:"renderTracked hook",rtg:"renderTriggered hook",0:"setup function",1:"render function",2:"watcher getter",3:"watcher callback",4:"watcher cleanup function",5:"native event handler",6:"component event handler",7:"vnode hook",8:"directive hook",9:"transition hook",10:"app errorHandler",11:"app warnHandler",12:"ref function",13:"async component loader",14:"scheduler flush",15:"component update",16:"app unmount cleanup function"};function callWithErrorHandling(e,t,n,o){try{return o?e(...o):e()}catch(u){handleError(u,t,n)}}function callWithAsyncErrorHandling(e,t,n,o){if(isFunction$2(e)){const u=callWithErrorHandling(e,t,n,o);return u&&isPromise$1(u)&&u.catch(a=>{handleError(a,t,n)}),u}if(isArray$8(e)){const u=[];for(let a=0;a>>1,u=queue[o],a=getId(u);a=getId(n)?queue.push(e):queue.splice(findInsertionIndex$1(t),0,e),e.flags|=1,queueFlush()}}function queueFlush(){currentFlushPromise||(currentFlushPromise=resolvedPromise.then(flushJobs))}function queuePostFlushCb(e){isArray$8(e)?pendingPostFlushCbs.push(...e):activePostFlushCbs&&e.id===-1?activePostFlushCbs.splice(postFlushIndex+1,0,e):e.flags&1||(pendingPostFlushCbs.push(e),e.flags|=1),queueFlush()}function flushPreFlushCbs(e,t,n=flushIndex+1){for(t=t||new Map;ngetId(n)-getId(o));if(pendingPostFlushCbs.length=0,activePostFlushCbs){activePostFlushCbs.push(...t);return}for(activePostFlushCbs=t,e=e||new Map,postFlushIndex=0;postFlushIndexe.id==null?e.flags&2?-1:1/0:e.id;function flushJobs(e){e=e||new Map;const t=n=>checkRecursiveUpdates(e,n);try{for(flushIndex=0;flushIndexRECURSION_LIMIT){const o=t.i,u=o&&getComponentName(o.type);return handleError(`Maximum recursive updates exceeded${u?` in component <${u}>`:""}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,null,10),!0}return e.set(t,n+1),!1}let isHmrUpdating=!1;const hmrDirtyComponents=new Map;getGlobalThis().__VUE_HMR_RUNTIME__={createRecord:tryWrap(createRecord),rerender:tryWrap(rerender),reload:tryWrap(reload)};const map$2=new Map;function registerHMR(e){const t=e.type.__hmrId;let n=map$2.get(t);n||(createRecord(t,e.type),n=map$2.get(t)),n.instances.add(e)}function unregisterHMR(e){map$2.get(e.type.__hmrId).instances.delete(e)}function createRecord(e,t){return map$2.has(e)?!1:(map$2.set(e,{initialDef:normalizeClassComponent(t),instances:new Set}),!0)}function normalizeClassComponent(e){return isClassComponent(e)?e.__vccOpts:e}function rerender(e,t){const n=map$2.get(e);n&&(n.initialDef.render=t,[...n.instances].forEach(o=>{t&&(o.render=t,normalizeClassComponent(o.type).render=t),o.renderCache=[],isHmrUpdating=!0,o.update(),isHmrUpdating=!1}))}function reload(e,t){const n=map$2.get(e);if(!n)return;t=normalizeClassComponent(t),updateComponentDef(n.initialDef,t);const o=[...n.instances];for(let u=0;u{isHmrUpdating=!0,a.parent.update(),isHmrUpdating=!1,y.delete(a)}):a.appContext.reload?a.appContext.reload():typeof window<"u"?window.location.reload():console.warn("[HMR] Root or manually mounted instance modified. Full reload required."),a.root.ce&&a!==a.root&&a.root.ce._removeChildStyle(v)}queuePostFlushCb(()=>{hmrDirtyComponents.clear()})}function updateComponentDef(e,t){extend$1(e,t);for(const n in e)n!=="__file"&&!(n in t)&&delete e[n]}function tryWrap(e){return(t,n)=>{try{return e(t,n)}catch(o){console.error(o),console.warn("[HMR] Something went wrong during Vue component hot-reload. Full reload required.")}}}let devtools$1,buffer$1=[],devtoolsNotInstalled=!1;function emit$1(e,...t){devtools$1?devtools$1.emit(e,...t):devtoolsNotInstalled||buffer$1.push({event:e,args:t})}function setDevtoolsHook$1(e,t){var n,o;devtools$1=e,devtools$1?(devtools$1.enabled=!0,buffer$1.forEach(({event:u,args:a})=>devtools$1.emit(u,...a)),buffer$1=[]):typeof window<"u"&&window.HTMLElement&&!((o=(n=window.navigator)==null?void 0:n.userAgent)!=null&&o.includes("jsdom"))?((t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push(a=>{setDevtoolsHook$1(a,t)}),setTimeout(()=>{devtools$1||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,devtoolsNotInstalled=!0,buffer$1=[])},3e3)):(devtoolsNotInstalled=!0,buffer$1=[])}function devtoolsInitApp(e,t){emit$1("app:init",e,t,{Fragment,Text,Comment,Static})}function devtoolsUnmountApp(e){emit$1("app:unmount",e)}const devtoolsComponentAdded=createDevtoolsComponentHook("component:added"),devtoolsComponentUpdated=createDevtoolsComponentHook("component:updated"),_devtoolsComponentRemoved=createDevtoolsComponentHook("component:removed"),devtoolsComponentRemoved=e=>{devtools$1&&typeof devtools$1.cleanupBuffer=="function"&&!devtools$1.cleanupBuffer(e)&&_devtoolsComponentRemoved(e)};/*! #__NO_SIDE_EFFECTS__ */function createDevtoolsComponentHook(e){return t=>{emit$1(e,t.appContext.app,t.uid,t.parent?t.parent.uid:void 0,t)}}const devtoolsPerfStart=createDevtoolsPerformanceHook("perf:start"),devtoolsPerfEnd=createDevtoolsPerformanceHook("perf:end");function createDevtoolsPerformanceHook(e){return(t,n,o)=>{emit$1(e,t.appContext.app,t.uid,t,n,o)}}function devtoolsComponentEmit(e,t,n){emit$1("component:emit",e.appContext.app,e,t,n)}let currentRenderingInstance=null,currentScopeId=null;function setCurrentRenderingInstance(e){const t=currentRenderingInstance;return currentRenderingInstance=e,currentScopeId=e&&e.type.__scopeId||null,t}function pushScopeId(e){currentScopeId=e}function popScopeId(){currentScopeId=null}const withScopeId=e=>withCtx;function withCtx(e,t=currentRenderingInstance,n){if(!t||e._n)return e;const o=(...u)=>{o._d&&setBlockTracking(-1);const a=setCurrentRenderingInstance(t);let v;try{v=e(...u)}finally{setCurrentRenderingInstance(a),o._d&&setBlockTracking(1)}return devtoolsComponentUpdated(t),v};return o._n=!0,o._c=!0,o._d=!0,o}function validateDirectiveName(e){isBuiltInDirective(e)&&warn$1("Do not use built-in directive ids as custom directive id: "+e)}function withDirectives(e,t){if(currentRenderingInstance===null)return warn$1("withDirectives can only be used inside render functions."),e;const n=getComponentPublicInstance(currentRenderingInstance),o=e.dirs||(e.dirs=[]);for(let u=0;ue.__isTeleport,isTeleportDisabled=e=>e&&(e.disabled||e.disabled===""),isTeleportDeferred=e=>e&&(e.defer||e.defer===""),isTargetSVG=e=>typeof SVGElement<"u"&&e instanceof SVGElement,isTargetMathML=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,resolveTarget=(e,t)=>{const n=e&&e.to;if(isString$2(n))if(t){const o=t(n);return!o&&!isTeleportDisabled(e)&&warn$1(`Failed to locate Teleport target with selector "${n}". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.`),o}else return warn$1("Current renderer does not support string target for Teleports. (missing querySelector renderer option)"),null;else return!n&&!isTeleportDisabled(e)&&warn$1(`Invalid Teleport target: ${n}`),n},TeleportImpl={name:"Teleport",__isTeleport:!0,process(e,t,n,o,u,a,v,y,w,$){const{mc:x,pc:E,pbc:B,o:{insert:I,querySelector:L,createText:D,createComment:V}}=$,H=isTeleportDisabled(t.props);let{shapeFlag:j,children:z,dynamicChildren:J}=t;if(isHmrUpdating&&(w=!1,J=null),e==null){const re=t.el=V("teleport start"),ae=t.anchor=V("teleport end");I(re,n,o),I(ae,n,o);const me=(ne,ye)=>{j&16&&(u&&u.isCE&&(u.ce._teleportTarget=ne),x(z,ne,ye,u,a,v,y,w))},ue=()=>{const ne=t.target=resolveTarget(t.props,L),ye=prepareAnchor(ne,t,D,I);ne?(v!=="svg"&&isTargetSVG(ne)?v="svg":v!=="mathml"&&isTargetMathML(ne)&&(v="mathml"),H||(me(ne,ye),updateCssVars(t,!1))):H||warn$1("Invalid Teleport target on mount:",ne,`(${typeof ne})`)};H&&(me(n,ae),updateCssVars(t,!0)),isTeleportDeferred(t.props)?queuePostRenderEffect(()=>{ue(),t.el.__isMounted=!0},a):ue()}else{if(isTeleportDeferred(t.props)&&!e.el.__isMounted){queuePostRenderEffect(()=>{TeleportImpl.process(e,t,n,o,u,a,v,y,w,$),delete e.el.__isMounted},a);return}t.el=e.el,t.targetStart=e.targetStart;const re=t.anchor=e.anchor,ae=t.target=e.target,me=t.targetAnchor=e.targetAnchor,ue=isTeleportDisabled(e.props),ne=ue?n:ae,ye=ue?re:me;if(v==="svg"||isTargetSVG(ae)?v="svg":(v==="mathml"||isTargetMathML(ae))&&(v="mathml"),J?(B(e.dynamicChildren,J,ne,u,a,v,y),traverseStaticChildren(e,t,!0)):w||E(e,t,ne,ye,u,a,v,y,!1),H)ue?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):moveTeleport(t,n,re,$,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const T=t.target=resolveTarget(t.props,L);T?moveTeleport(t,T,null,$,0):warn$1("Invalid Teleport target on update:",ae,`(${typeof ae})`)}else ue&&moveTeleport(t,ae,me,$,1);updateCssVars(t,H)}},remove(e,t,n,{um:o,o:{remove:u}},a){const{shapeFlag:v,children:y,anchor:w,targetStart:$,targetAnchor:x,target:E,props:B}=e;if(E&&(u($),u(x)),a&&u(w),v&16){const I=a||!isTeleportDisabled(B);for(let L=0;L{e.isMounted=!0}),onBeforeUnmount(()=>{e.isUnmounting=!0}),e}const TransitionHookValidator=[Function,Array],BaseTransitionPropsValidators={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:TransitionHookValidator,onEnter:TransitionHookValidator,onAfterEnter:TransitionHookValidator,onEnterCancelled:TransitionHookValidator,onBeforeLeave:TransitionHookValidator,onLeave:TransitionHookValidator,onAfterLeave:TransitionHookValidator,onLeaveCancelled:TransitionHookValidator,onBeforeAppear:TransitionHookValidator,onAppear:TransitionHookValidator,onAfterAppear:TransitionHookValidator,onAppearCancelled:TransitionHookValidator},recursiveGetSubtree=e=>{const t=e.subTree;return t.component?recursiveGetSubtree(t.component):t},BaseTransitionImpl={name:"BaseTransition",props:BaseTransitionPropsValidators,setup(e,{slots:t}){const n=getCurrentInstance(),o=useTransitionState();return()=>{const u=t.default&&getTransitionRawChildren(t.default(),!0);if(!u||!u.length)return;const a=findNonCommentChild(u),v=toRaw(e),{mode:y}=v;if(y&&y!=="in-out"&&y!=="out-in"&&y!=="default"&&warn$1(`invalid mode: ${y}`),o.isLeaving)return emptyPlaceholder(a);const w=getInnerChild$1(a);if(!w)return emptyPlaceholder(a);let $=resolveTransitionHooks(w,v,o,n,E=>$=E);w.type!==Comment&&setTransitionHooks(w,$);let x=n.subTree&&getInnerChild$1(n.subTree);if(x&&x.type!==Comment&&!isSameVNodeType(w,x)&&recursiveGetSubtree(n).type!==Comment){let E=resolveTransitionHooks(x,v,o,n);if(setTransitionHooks(x,E),y==="out-in"&&w.type!==Comment)return o.isLeaving=!0,E.afterLeave=()=>{o.isLeaving=!1,n.job.flags&8||n.update(),delete E.afterLeave,x=void 0},emptyPlaceholder(a);y==="in-out"&&w.type!==Comment?E.delayLeave=(B,I,L)=>{const D=getLeavingNodesForType(o,x);D[String(x.key)]=x,B[leaveCbKey]=()=>{I(),B[leaveCbKey]=void 0,delete $.delayedLeave,x=void 0},$.delayedLeave=()=>{L(),delete $.delayedLeave,x=void 0}}:x=void 0}else x&&(x=void 0);return a}}};function findNonCommentChild(e){let t=e[0];if(e.length>1){let n=!1;for(const o of e)if(o.type!==Comment){if(n){warn$1(" can only be used on a single element or component. Use for lists.");break}t=o,n=!0}}return t}const BaseTransition=BaseTransitionImpl;function getLeavingNodesForType(e,t){const{leavingVNodes:n}=e;let o=n.get(t.type);return o||(o=Object.create(null),n.set(t.type,o)),o}function resolveTransitionHooks(e,t,n,o,u){const{appear:a,mode:v,persisted:y=!1,onBeforeEnter:w,onEnter:$,onAfterEnter:x,onEnterCancelled:E,onBeforeLeave:B,onLeave:I,onAfterLeave:L,onLeaveCancelled:D,onBeforeAppear:V,onAppear:H,onAfterAppear:j,onAppearCancelled:z}=t,J=String(e.key),re=getLeavingNodesForType(n,e),ae=(ne,ye)=>{ne&&callWithAsyncErrorHandling(ne,o,9,ye)},me=(ne,ye)=>{const T=ye[1];ae(ne,ye),isArray$8(ne)?ne.every(l=>l.length<=1)&&T():ne.length<=1&&T()},ue={mode:v,persisted:y,beforeEnter(ne){let ye=w;if(!n.isMounted)if(a)ye=V||w;else return;ne[leaveCbKey]&&ne[leaveCbKey](!0);const T=re[J];T&&isSameVNodeType(e,T)&&T.el[leaveCbKey]&&T.el[leaveCbKey](),ae(ye,[ne])},enter(ne){let ye=$,T=x,l=E;if(!n.isMounted)if(a)ye=H||$,T=j||x,l=z||E;else return;let d=!1;const m=ne[enterCbKey$1]=b=>{d||(d=!0,b?ae(l,[ne]):ae(T,[ne]),ue.delayedLeave&&ue.delayedLeave(),ne[enterCbKey$1]=void 0)};ye?me(ye,[ne,m]):m()},leave(ne,ye){const T=String(e.key);if(ne[enterCbKey$1]&&ne[enterCbKey$1](!0),n.isUnmounting)return ye();ae(B,[ne]);let l=!1;const d=ne[leaveCbKey]=m=>{l||(l=!0,ye(),m?ae(D,[ne]):ae(L,[ne]),ne[leaveCbKey]=void 0,re[T]===e&&delete re[T])};re[T]=e,I?me(I,[ne,d]):d()},clone(ne){const ye=resolveTransitionHooks(ne,t,n,o,u);return u&&u(ye),ye}};return ue}function emptyPlaceholder(e){if(isKeepAlive(e))return e=cloneVNode(e),e.children=null,e}function getInnerChild$1(e){if(!isKeepAlive(e))return isTeleport(e.type)&&e.children?findNonCommentChild(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&isFunction$2(n.default))return n.default()}}function setTransitionHooks(e,t){e.shapeFlag&6&&e.component?(e.transition=t,setTransitionHooks(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function getTransitionRawChildren(e,t=!1,n){let o=[],u=0;for(let a=0;a1)for(let a=0;aextend$1({name:e.name},t,{setup:e}))():e}function useId(){const e=getCurrentInstance();return e?(e.appContext.config.idPrefix||"v")+"-"+e.ids[0]+e.ids[1]++:(warn$1("useId() is called when there is no active component instance to be associated with."),"")}function markAsyncBoundary(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}const knownTemplateRefs=new WeakSet;function useTemplateRef(e){const t=getCurrentInstance(),n=shallowRef(null);if(t){const u=t.refs===EMPTY_OBJ?t.refs={}:t.refs;let a;(a=Object.getOwnPropertyDescriptor(u,e))&&!a.configurable?warn$1(`useTemplateRef('${e}') already exists.`):Object.defineProperty(u,e,{enumerable:!0,get:()=>n.value,set:v=>n.value=v})}else warn$1("useTemplateRef() is called when there is no active component instance to be associated with.");const o=readonly(n);return knownTemplateRefs.add(o),o}function setRef(e,t,n,o,u=!1){if(isArray$8(e)){e.forEach((L,D)=>setRef(L,t&&(isArray$8(t)?t[D]:t),n,o,u));return}if(isAsyncWrapper(o)&&!u){o.shapeFlag&512&&o.type.__asyncResolved&&o.component.subTree.component&&setRef(e,t,n,o.component.subTree);return}const a=o.shapeFlag&4?getComponentPublicInstance(o.component):o.el,v=u?null:a,{i:y,r:w}=e;if(!y){warn$1("Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.");return}const $=t&&t.r,x=y.refs===EMPTY_OBJ?y.refs={}:y.refs,E=y.setupState,B=toRaw(E),I=E===EMPTY_OBJ?()=>!1:L=>(hasOwn$3(B,L)&&!isRef(B[L])&&warn$1(`Template ref "${L}" used on a non-ref value. It will not work in the production build.`),knownTemplateRefs.has(B[L])?!1:hasOwn$3(B,L));if($!=null&&$!==w&&(isString$2($)?(x[$]=null,I($)&&(E[$]=null)):isRef($)&&($.value=null)),isFunction$2(w))callWithErrorHandling(w,y,12,[v,x]);else{const L=isString$2(w),D=isRef(w);if(L||D){const V=()=>{if(e.f){const H=L?I(w)?E[w]:x[w]:w.value;u?isArray$8(H)&&remove(H,a):isArray$8(H)?H.includes(a)||H.push(a):L?(x[w]=[a],I(w)&&(E[w]=x[w])):(w.value=[a],e.k&&(x[e.k]=w.value))}else L?(x[w]=v,I(w)&&(E[w]=v)):D?(w.value=v,e.k&&(x[e.k]=v)):warn$1("Invalid template ref type:",w,`(${typeof w})`)};v?(V.id=-1,queuePostRenderEffect(V,n)):V()}else warn$1("Invalid template ref type:",w,`(${typeof w})`)}}let hasLoggedMismatchError=!1;const logMismatchError=()=>{hasLoggedMismatchError||(console.error("Hydration completed but contains mismatches."),hasLoggedMismatchError=!0)},isSVGContainer=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",isMathMLContainer=e=>e.namespaceURI.includes("MathML"),getContainerType=e=>{if(e.nodeType===1){if(isSVGContainer(e))return"svg";if(isMathMLContainer(e))return"mathml"}},isComment=e=>e.nodeType===8;function createHydrationFunctions(e){const{mt:t,p:n,o:{patchProp:o,createText:u,nextSibling:a,parentNode:v,remove:y,insert:w,createComment:$}}=e,x=(z,J)=>{if(!J.hasChildNodes()){warn$1("Attempting to hydrate existing markup but container is empty. Performing full mount instead."),n(null,z,J),flushPostFlushCbs(),J._vnode=z;return}E(J.firstChild,z,null,null,null),flushPostFlushCbs(),J._vnode=z},E=(z,J,re,ae,me,ue=!1)=>{ue=ue||!!J.dynamicChildren;const ne=isComment(z)&&z.data==="[",ye=()=>D(z,J,re,ae,me,ne),{type:T,ref:l,shapeFlag:d,patchFlag:m}=J;let b=z.nodeType;J.el=z,def(z,"__vnode",J,!0),def(z,"__vueParentComponent",re,!0),m===-2&&(ue=!1,J.dynamicChildren=null);let _=null;switch(T){case Text:b!==3?J.children===""?(w(J.el=u(""),v(z),z),_=z):_=ye():(z.data!==J.children&&(warn$1("Hydration text mismatch in",z.parentNode,` +`],...formatTraceEntry(n))}),t}function formatTraceEntry({vnode:e,recurseCount:t}){const n=t>0?`... (${t} recursive calls)`:"",o=e.component?e.component.parent==null:!1,u=` at <${formatComponentName(e.component,e.type,o)}`,a=">"+n;return e.props?[u,...formatProps(e.props),a]:[u+a]}function formatProps(e){const t=[],n=Object.keys(e);return n.slice(0,3).forEach(o=>{t.push(...formatProp(o,e[o]))}),n.length>3&&t.push(" ..."),t}function formatProp(e,t,n){return isString$2(t)?(t=JSON.stringify(t),n?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?n?t:[`${e}=${t}`]:isRef(t)?(t=formatProp(e,toRaw(t.value),!0),n?t:[`${e}=Ref<`,t,">"]):isFunction$2(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=toRaw(t),n?t:[`${e}=`,t])}function assertNumber(e,t){e!==void 0&&(typeof e!="number"?warn$1(`${t} is not a valid number - got ${JSON.stringify(e)}.`):isNaN(e)&&warn$1(`${t} is NaN - the duration expression might be incorrect.`))}const ErrorCodes={SETUP_FUNCTION:0,0:"SETUP_FUNCTION",RENDER_FUNCTION:1,1:"RENDER_FUNCTION",NATIVE_EVENT_HANDLER:5,5:"NATIVE_EVENT_HANDLER",COMPONENT_EVENT_HANDLER:6,6:"COMPONENT_EVENT_HANDLER",VNODE_HOOK:7,7:"VNODE_HOOK",DIRECTIVE_HOOK:8,8:"DIRECTIVE_HOOK",TRANSITION_HOOK:9,9:"TRANSITION_HOOK",APP_ERROR_HANDLER:10,10:"APP_ERROR_HANDLER",APP_WARN_HANDLER:11,11:"APP_WARN_HANDLER",FUNCTION_REF:12,12:"FUNCTION_REF",ASYNC_COMPONENT_LOADER:13,13:"ASYNC_COMPONENT_LOADER",SCHEDULER:14,14:"SCHEDULER",COMPONENT_UPDATE:15,15:"COMPONENT_UPDATE",APP_UNMOUNT_CLEANUP:16,16:"APP_UNMOUNT_CLEANUP"},ErrorTypeStrings$1={sp:"serverPrefetch hook",bc:"beforeCreate hook",c:"created hook",bm:"beforeMount hook",m:"mounted hook",bu:"beforeUpdate hook",u:"updated",bum:"beforeUnmount hook",um:"unmounted hook",a:"activated hook",da:"deactivated hook",ec:"errorCaptured hook",rtc:"renderTracked hook",rtg:"renderTriggered hook",0:"setup function",1:"render function",2:"watcher getter",3:"watcher callback",4:"watcher cleanup function",5:"native event handler",6:"component event handler",7:"vnode hook",8:"directive hook",9:"transition hook",10:"app errorHandler",11:"app warnHandler",12:"ref function",13:"async component loader",14:"scheduler flush",15:"component update",16:"app unmount cleanup function"};function callWithErrorHandling(e,t,n,o){try{return o?e(...o):e()}catch(u){handleError(u,t,n)}}function callWithAsyncErrorHandling(e,t,n,o){if(isFunction$2(e)){const u=callWithErrorHandling(e,t,n,o);return u&&isPromise$1(u)&&u.catch(a=>{handleError(a,t,n)}),u}if(isArray$8(e)){const u=[];for(let a=0;a>>1,u=queue[o],a=getId(u);a=getId(n)?queue.push(e):queue.splice(findInsertionIndex$1(t),0,e),e.flags|=1,queueFlush()}}function queueFlush(){currentFlushPromise||(currentFlushPromise=resolvedPromise.then(flushJobs))}function queuePostFlushCb(e){isArray$8(e)?pendingPostFlushCbs.push(...e):activePostFlushCbs&&e.id===-1?activePostFlushCbs.splice(postFlushIndex+1,0,e):e.flags&1||(pendingPostFlushCbs.push(e),e.flags|=1),queueFlush()}function flushPreFlushCbs(e,t,n=flushIndex+1){for(t=t||new Map;ngetId(n)-getId(o));if(pendingPostFlushCbs.length=0,activePostFlushCbs){activePostFlushCbs.push(...t);return}for(activePostFlushCbs=t,e=e||new Map,postFlushIndex=0;postFlushIndexe.id==null?e.flags&2?-1:1/0:e.id;function flushJobs(e){e=e||new Map;const t=n=>checkRecursiveUpdates(e,n);try{for(flushIndex=0;flushIndexRECURSION_LIMIT){const o=t.i,u=o&&getComponentName(o.type);return handleError(`Maximum recursive updates exceeded${u?` in component <${u}>`:""}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,null,10),!0}return e.set(t,n+1),!1}let isHmrUpdating=!1;const hmrDirtyComponents=new Map;getGlobalThis().__VUE_HMR_RUNTIME__={createRecord:tryWrap(createRecord),rerender:tryWrap(rerender),reload:tryWrap(reload)};const map$2=new Map;function registerHMR(e){const t=e.type.__hmrId;let n=map$2.get(t);n||(createRecord(t,e.type),n=map$2.get(t)),n.instances.add(e)}function unregisterHMR(e){map$2.get(e.type.__hmrId).instances.delete(e)}function createRecord(e,t){return map$2.has(e)?!1:(map$2.set(e,{initialDef:normalizeClassComponent(t),instances:new Set}),!0)}function normalizeClassComponent(e){return isClassComponent(e)?e.__vccOpts:e}function rerender(e,t){const n=map$2.get(e);n&&(n.initialDef.render=t,[...n.instances].forEach(o=>{t&&(o.render=t,normalizeClassComponent(o.type).render=t),o.renderCache=[],isHmrUpdating=!0,o.update(),isHmrUpdating=!1}))}function reload(e,t){const n=map$2.get(e);if(!n)return;t=normalizeClassComponent(t),updateComponentDef(n.initialDef,t);const o=[...n.instances];for(let u=0;u{isHmrUpdating=!0,a.parent.update(),isHmrUpdating=!1,y.delete(a)}):a.appContext.reload?a.appContext.reload():typeof window<"u"?window.location.reload():console.warn("[HMR] Root or manually mounted instance modified. Full reload required."),a.root.ce&&a!==a.root&&a.root.ce._removeChildStyle(v)}queuePostFlushCb(()=>{hmrDirtyComponents.clear()})}function updateComponentDef(e,t){extend$1(e,t);for(const n in e)n!=="__file"&&!(n in t)&&delete e[n]}function tryWrap(e){return(t,n)=>{try{return e(t,n)}catch(o){console.error(o),console.warn("[HMR] Something went wrong during Vue component hot-reload. Full reload required.")}}}let devtools$1,buffer$1=[],devtoolsNotInstalled=!1;function emit$1(e,...t){devtools$1?devtools$1.emit(e,...t):devtoolsNotInstalled||buffer$1.push({event:e,args:t})}function setDevtoolsHook$1(e,t){var n,o;devtools$1=e,devtools$1?(devtools$1.enabled=!0,buffer$1.forEach(({event:u,args:a})=>devtools$1.emit(u,...a)),buffer$1=[]):typeof window<"u"&&window.HTMLElement&&!((o=(n=window.navigator)==null?void 0:n.userAgent)!=null&&o.includes("jsdom"))?((t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push(a=>{setDevtoolsHook$1(a,t)}),setTimeout(()=>{devtools$1||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,devtoolsNotInstalled=!0,buffer$1=[])},3e3)):(devtoolsNotInstalled=!0,buffer$1=[])}function devtoolsInitApp(e,t){emit$1("app:init",e,t,{Fragment,Text,Comment,Static})}function devtoolsUnmountApp(e){emit$1("app:unmount",e)}const devtoolsComponentAdded=createDevtoolsComponentHook("component:added"),devtoolsComponentUpdated=createDevtoolsComponentHook("component:updated"),_devtoolsComponentRemoved=createDevtoolsComponentHook("component:removed"),devtoolsComponentRemoved=e=>{devtools$1&&typeof devtools$1.cleanupBuffer=="function"&&!devtools$1.cleanupBuffer(e)&&_devtoolsComponentRemoved(e)};/*! #__NO_SIDE_EFFECTS__ */function createDevtoolsComponentHook(e){return t=>{emit$1(e,t.appContext.app,t.uid,t.parent?t.parent.uid:void 0,t)}}const devtoolsPerfStart=createDevtoolsPerformanceHook("perf:start"),devtoolsPerfEnd=createDevtoolsPerformanceHook("perf:end");function createDevtoolsPerformanceHook(e){return(t,n,o)=>{emit$1(e,t.appContext.app,t.uid,t,n,o)}}function devtoolsComponentEmit(e,t,n){emit$1("component:emit",e.appContext.app,e,t,n)}let currentRenderingInstance=null,currentScopeId=null;function setCurrentRenderingInstance(e){const t=currentRenderingInstance;return currentRenderingInstance=e,currentScopeId=e&&e.type.__scopeId||null,t}function pushScopeId(e){currentScopeId=e}function popScopeId(){currentScopeId=null}const withScopeId=e=>withCtx;function withCtx(e,t=currentRenderingInstance,n){if(!t||e._n)return e;const o=(...u)=>{o._d&&setBlockTracking(-1);const a=setCurrentRenderingInstance(t);let v;try{v=e(...u)}finally{setCurrentRenderingInstance(a),o._d&&setBlockTracking(1)}return devtoolsComponentUpdated(t),v};return o._n=!0,o._c=!0,o._d=!0,o}function validateDirectiveName(e){isBuiltInDirective(e)&&warn$1("Do not use built-in directive ids as custom directive id: "+e)}function withDirectives(e,t){if(currentRenderingInstance===null)return warn$1("withDirectives can only be used inside render functions."),e;const n=getComponentPublicInstance(currentRenderingInstance),o=e.dirs||(e.dirs=[]);for(let u=0;ue.__isTeleport,isTeleportDisabled=e=>e&&(e.disabled||e.disabled===""),isTeleportDeferred=e=>e&&(e.defer||e.defer===""),isTargetSVG=e=>typeof SVGElement<"u"&&e instanceof SVGElement,isTargetMathML=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,resolveTarget=(e,t)=>{const n=e&&e.to;if(isString$2(n))if(t){const o=t(n);return!o&&!isTeleportDisabled(e)&&warn$1(`Failed to locate Teleport target with selector "${n}". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.`),o}else return warn$1("Current renderer does not support string target for Teleports. (missing querySelector renderer option)"),null;else return!n&&!isTeleportDisabled(e)&&warn$1(`Invalid Teleport target: ${n}`),n},TeleportImpl={name:"Teleport",__isTeleport:!0,process(e,t,n,o,u,a,v,y,w,$){const{mc:x,pc:E,pbc:P,o:{insert:I,querySelector:L,createText:D,createComment:V}}=$,H=isTeleportDisabled(t.props);let{shapeFlag:j,children:z,dynamicChildren:J}=t;if(isHmrUpdating&&(w=!1,J=null),e==null){const re=t.el=V("teleport start"),ae=t.anchor=V("teleport end");I(re,n,o),I(ae,n,o);const me=(ne,ye)=>{j&16&&(u&&u.isCE&&(u.ce._teleportTarget=ne),x(z,ne,ye,u,a,v,y,w))},ue=()=>{const ne=t.target=resolveTarget(t.props,L),ye=prepareAnchor(ne,t,D,I);ne?(v!=="svg"&&isTargetSVG(ne)?v="svg":v!=="mathml"&&isTargetMathML(ne)&&(v="mathml"),H||(me(ne,ye),updateCssVars(t,!1))):H||warn$1("Invalid Teleport target on mount:",ne,`(${typeof ne})`)};H&&(me(n,ae),updateCssVars(t,!0)),isTeleportDeferred(t.props)?queuePostRenderEffect(()=>{ue(),t.el.__isMounted=!0},a):ue()}else{if(isTeleportDeferred(t.props)&&!e.el.__isMounted){queuePostRenderEffect(()=>{TeleportImpl.process(e,t,n,o,u,a,v,y,w,$),delete e.el.__isMounted},a);return}t.el=e.el,t.targetStart=e.targetStart;const re=t.anchor=e.anchor,ae=t.target=e.target,me=t.targetAnchor=e.targetAnchor,ue=isTeleportDisabled(e.props),ne=ue?n:ae,ye=ue?re:me;if(v==="svg"||isTargetSVG(ae)?v="svg":(v==="mathml"||isTargetMathML(ae))&&(v="mathml"),J?(P(e.dynamicChildren,J,ne,u,a,v,y),traverseStaticChildren(e,t,!0)):w||E(e,t,ne,ye,u,a,v,y,!1),H)ue?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):moveTeleport(t,n,re,$,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const T=t.target=resolveTarget(t.props,L);T?moveTeleport(t,T,null,$,0):warn$1("Invalid Teleport target on update:",ae,`(${typeof ae})`)}else ue&&moveTeleport(t,ae,me,$,1);updateCssVars(t,H)}},remove(e,t,n,{um:o,o:{remove:u}},a){const{shapeFlag:v,children:y,anchor:w,targetStart:$,targetAnchor:x,target:E,props:P}=e;if(E&&(u($),u(x)),a&&u(w),v&16){const I=a||!isTeleportDisabled(P);for(let L=0;L{e.isMounted=!0}),onBeforeUnmount(()=>{e.isUnmounting=!0}),e}const TransitionHookValidator=[Function,Array],BaseTransitionPropsValidators={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:TransitionHookValidator,onEnter:TransitionHookValidator,onAfterEnter:TransitionHookValidator,onEnterCancelled:TransitionHookValidator,onBeforeLeave:TransitionHookValidator,onLeave:TransitionHookValidator,onAfterLeave:TransitionHookValidator,onLeaveCancelled:TransitionHookValidator,onBeforeAppear:TransitionHookValidator,onAppear:TransitionHookValidator,onAfterAppear:TransitionHookValidator,onAppearCancelled:TransitionHookValidator},recursiveGetSubtree=e=>{const t=e.subTree;return t.component?recursiveGetSubtree(t.component):t},BaseTransitionImpl={name:"BaseTransition",props:BaseTransitionPropsValidators,setup(e,{slots:t}){const n=getCurrentInstance(),o=useTransitionState();return()=>{const u=t.default&&getTransitionRawChildren(t.default(),!0);if(!u||!u.length)return;const a=findNonCommentChild(u),v=toRaw(e),{mode:y}=v;if(y&&y!=="in-out"&&y!=="out-in"&&y!=="default"&&warn$1(`invalid mode: ${y}`),o.isLeaving)return emptyPlaceholder(a);const w=getInnerChild$1(a);if(!w)return emptyPlaceholder(a);let $=resolveTransitionHooks(w,v,o,n,E=>$=E);w.type!==Comment&&setTransitionHooks(w,$);let x=n.subTree&&getInnerChild$1(n.subTree);if(x&&x.type!==Comment&&!isSameVNodeType(w,x)&&recursiveGetSubtree(n).type!==Comment){let E=resolveTransitionHooks(x,v,o,n);if(setTransitionHooks(x,E),y==="out-in"&&w.type!==Comment)return o.isLeaving=!0,E.afterLeave=()=>{o.isLeaving=!1,n.job.flags&8||n.update(),delete E.afterLeave,x=void 0},emptyPlaceholder(a);y==="in-out"&&w.type!==Comment?E.delayLeave=(P,I,L)=>{const D=getLeavingNodesForType(o,x);D[String(x.key)]=x,P[leaveCbKey]=()=>{I(),P[leaveCbKey]=void 0,delete $.delayedLeave,x=void 0},$.delayedLeave=()=>{L(),delete $.delayedLeave,x=void 0}}:x=void 0}else x&&(x=void 0);return a}}};function findNonCommentChild(e){let t=e[0];if(e.length>1){let n=!1;for(const o of e)if(o.type!==Comment){if(n){warn$1(" can only be used on a single element or component. Use for lists.");break}t=o,n=!0}}return t}const BaseTransition=BaseTransitionImpl;function getLeavingNodesForType(e,t){const{leavingVNodes:n}=e;let o=n.get(t.type);return o||(o=Object.create(null),n.set(t.type,o)),o}function resolveTransitionHooks(e,t,n,o,u){const{appear:a,mode:v,persisted:y=!1,onBeforeEnter:w,onEnter:$,onAfterEnter:x,onEnterCancelled:E,onBeforeLeave:P,onLeave:I,onAfterLeave:L,onLeaveCancelled:D,onBeforeAppear:V,onAppear:H,onAfterAppear:j,onAppearCancelled:z}=t,J=String(e.key),re=getLeavingNodesForType(n,e),ae=(ne,ye)=>{ne&&callWithAsyncErrorHandling(ne,o,9,ye)},me=(ne,ye)=>{const T=ye[1];ae(ne,ye),isArray$8(ne)?ne.every(l=>l.length<=1)&&T():ne.length<=1&&T()},ue={mode:v,persisted:y,beforeEnter(ne){let ye=w;if(!n.isMounted)if(a)ye=V||w;else return;ne[leaveCbKey]&&ne[leaveCbKey](!0);const T=re[J];T&&isSameVNodeType(e,T)&&T.el[leaveCbKey]&&T.el[leaveCbKey](),ae(ye,[ne])},enter(ne){let ye=$,T=x,l=E;if(!n.isMounted)if(a)ye=H||$,T=j||x,l=z||E;else return;let d=!1;const m=ne[enterCbKey$1]=b=>{d||(d=!0,b?ae(l,[ne]):ae(T,[ne]),ue.delayedLeave&&ue.delayedLeave(),ne[enterCbKey$1]=void 0)};ye?me(ye,[ne,m]):m()},leave(ne,ye){const T=String(e.key);if(ne[enterCbKey$1]&&ne[enterCbKey$1](!0),n.isUnmounting)return ye();ae(P,[ne]);let l=!1;const d=ne[leaveCbKey]=m=>{l||(l=!0,ye(),m?ae(D,[ne]):ae(L,[ne]),ne[leaveCbKey]=void 0,re[T]===e&&delete re[T])};re[T]=e,I?me(I,[ne,d]):d()},clone(ne){const ye=resolveTransitionHooks(ne,t,n,o,u);return u&&u(ye),ye}};return ue}function emptyPlaceholder(e){if(isKeepAlive(e))return e=cloneVNode(e),e.children=null,e}function getInnerChild$1(e){if(!isKeepAlive(e))return isTeleport(e.type)&&e.children?findNonCommentChild(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&isFunction$2(n.default))return n.default()}}function setTransitionHooks(e,t){e.shapeFlag&6&&e.component?(e.transition=t,setTransitionHooks(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function getTransitionRawChildren(e,t=!1,n){let o=[],u=0;for(let a=0;a1)for(let a=0;aextend$1({name:e.name},t,{setup:e}))():e}function useId(){const e=getCurrentInstance();return e?(e.appContext.config.idPrefix||"v")+"-"+e.ids[0]+e.ids[1]++:(warn$1("useId() is called when there is no active component instance to be associated with."),"")}function markAsyncBoundary(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}const knownTemplateRefs=new WeakSet;function useTemplateRef(e){const t=getCurrentInstance(),n=shallowRef(null);if(t){const u=t.refs===EMPTY_OBJ?t.refs={}:t.refs;let a;(a=Object.getOwnPropertyDescriptor(u,e))&&!a.configurable?warn$1(`useTemplateRef('${e}') already exists.`):Object.defineProperty(u,e,{enumerable:!0,get:()=>n.value,set:v=>n.value=v})}else warn$1("useTemplateRef() is called when there is no active component instance to be associated with.");const o=readonly(n);return knownTemplateRefs.add(o),o}function setRef(e,t,n,o,u=!1){if(isArray$8(e)){e.forEach((L,D)=>setRef(L,t&&(isArray$8(t)?t[D]:t),n,o,u));return}if(isAsyncWrapper(o)&&!u){o.shapeFlag&512&&o.type.__asyncResolved&&o.component.subTree.component&&setRef(e,t,n,o.component.subTree);return}const a=o.shapeFlag&4?getComponentPublicInstance(o.component):o.el,v=u?null:a,{i:y,r:w}=e;if(!y){warn$1("Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.");return}const $=t&&t.r,x=y.refs===EMPTY_OBJ?y.refs={}:y.refs,E=y.setupState,P=toRaw(E),I=E===EMPTY_OBJ?()=>!1:L=>(hasOwn$3(P,L)&&!isRef(P[L])&&warn$1(`Template ref "${L}" used on a non-ref value. It will not work in the production build.`),knownTemplateRefs.has(P[L])?!1:hasOwn$3(P,L));if($!=null&&$!==w&&(isString$2($)?(x[$]=null,I($)&&(E[$]=null)):isRef($)&&($.value=null)),isFunction$2(w))callWithErrorHandling(w,y,12,[v,x]);else{const L=isString$2(w),D=isRef(w);if(L||D){const V=()=>{if(e.f){const H=L?I(w)?E[w]:x[w]:w.value;u?isArray$8(H)&&remove(H,a):isArray$8(H)?H.includes(a)||H.push(a):L?(x[w]=[a],I(w)&&(E[w]=x[w])):(w.value=[a],e.k&&(x[e.k]=w.value))}else L?(x[w]=v,I(w)&&(E[w]=v)):D?(w.value=v,e.k&&(x[e.k]=v)):warn$1("Invalid template ref type:",w,`(${typeof w})`)};v?(V.id=-1,queuePostRenderEffect(V,n)):V()}else warn$1("Invalid template ref type:",w,`(${typeof w})`)}}let hasLoggedMismatchError=!1;const logMismatchError=()=>{hasLoggedMismatchError||(console.error("Hydration completed but contains mismatches."),hasLoggedMismatchError=!0)},isSVGContainer=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",isMathMLContainer=e=>e.namespaceURI.includes("MathML"),getContainerType=e=>{if(e.nodeType===1){if(isSVGContainer(e))return"svg";if(isMathMLContainer(e))return"mathml"}},isComment=e=>e.nodeType===8;function createHydrationFunctions(e){const{mt:t,p:n,o:{patchProp:o,createText:u,nextSibling:a,parentNode:v,remove:y,insert:w,createComment:$}}=e,x=(z,J)=>{if(!J.hasChildNodes()){warn$1("Attempting to hydrate existing markup but container is empty. Performing full mount instead."),n(null,z,J),flushPostFlushCbs(),J._vnode=z;return}E(J.firstChild,z,null,null,null),flushPostFlushCbs(),J._vnode=z},E=(z,J,re,ae,me,ue=!1)=>{ue=ue||!!J.dynamicChildren;const ne=isComment(z)&&z.data==="[",ye=()=>D(z,J,re,ae,me,ne),{type:T,ref:l,shapeFlag:d,patchFlag:m}=J;let b=z.nodeType;J.el=z,def(z,"__vnode",J,!0),def(z,"__vueParentComponent",re,!0),m===-2&&(ue=!1,J.dynamicChildren=null);let _=null;switch(T){case Text:b!==3?J.children===""?(w(J.el=u(""),v(z),z),_=z):_=ye():(z.data!==J.children&&(warn$1("Hydration text mismatch in",z.parentNode,` - rendered on server: ${JSON.stringify(z.data)} - - expected on client: ${JSON.stringify(J.children)}`),logMismatchError(),z.data=J.children),_=a(z));break;case Comment:j(z)?(_=a(z),H(J.el=z.content.firstChild,z,re)):b!==8||ne?_=ye():_=a(z);break;case Static:if(ne&&(z=a(z),b=z.nodeType),b===1||b===3){_=z;const A=!J.children.length;for(let C=0;C{ue=ue||!!J.dynamicChildren;const{type:ne,props:ye,patchFlag:T,shapeFlag:l,dirs:d,transition:m}=J,b=ne==="input"||ne==="option";{d&&invokeDirectiveHook(J,null,re,"created");let _=!1;if(j(z)){_=needTransition(null,m)&&re&&re.vnode.props&&re.vnode.props.appear;const C=z.content.firstChild;_&&m.beforeEnter(C),H(C,z,re),J.el=z=C}if(l&16&&!(ye&&(ye.innerHTML||ye.textContent))){let C=I(z.firstChild,J,z,re,ae,me,ue),S=!1;for(;C;){isMismatchAllowed(z,1)||(S||(warn$1("Hydration children mismatch on",z,` + - expected on client: ${JSON.stringify(J.children)}`),logMismatchError(),z.data=J.children),_=a(z));break;case Comment:j(z)?(_=a(z),H(J.el=z.content.firstChild,z,re)):b!==8||ne?_=ye():_=a(z);break;case Static:if(ne&&(z=a(z),b=z.nodeType),b===1||b===3){_=z;const A=!J.children.length;for(let C=0;C{ue=ue||!!J.dynamicChildren;const{type:ne,props:ye,patchFlag:T,shapeFlag:l,dirs:d,transition:m}=J,b=ne==="input"||ne==="option";{d&&invokeDirectiveHook(J,null,re,"created");let _=!1;if(j(z)){_=needTransition(null,m)&&re&&re.vnode.props&&re.vnode.props.appear;const C=z.content.firstChild;_&&m.beforeEnter(C),H(C,z,re),J.el=z=C}if(l&16&&!(ye&&(ye.innerHTML||ye.textContent))){let C=I(z.firstChild,J,z,re,ae,me,ue),S=!1;for(;C;){isMismatchAllowed(z,1)||(S||(warn$1("Hydration children mismatch on",z,` Server rendered element contains more child nodes than client vdom.`),S=!0),logMismatchError());const c=C;C=C.nextSibling,y(c)}}else if(l&8){let C=J.children;C[0]===` `&&(z.tagName==="PRE"||z.tagName==="TEXTAREA")&&(C=C.slice(1)),z.textContent!==C&&(isMismatchAllowed(z,0)||(warn$1("Hydration text content mismatch on",z,` - rendered on server: ${z.textContent} - expected on client: ${J.children}`),logMismatchError()),z.textContent=J.children)}if(ye){const C=z.tagName.includes("-");for(const S in ye)!(d&&d.some(c=>c.dir.created))&&propHasMismatch(z,S,ye[S],J,re)&&logMismatchError(),(b&&(S.endsWith("value")||S==="indeterminate")||isOn(S)&&!isReservedProp(S)||S[0]==="."||C)&&o(z,S,null,ye[S],void 0,re)}let A;(A=ye&&ye.onVnodeBeforeMount)&&invokeVNodeHook(A,re,J),d&&invokeDirectiveHook(J,null,re,"beforeMount"),((A=ye&&ye.onVnodeMounted)||d||_)&&queueEffectWithSuspense(()=>{A&&invokeVNodeHook(A,re,J),_&&m.enter(z),d&&invokeDirectiveHook(J,null,re,"mounted")},ae)}return z.nextSibling},I=(z,J,re,ae,me,ue,ne)=>{ne=ne||!!J.dynamicChildren;const ye=J.children,T=ye.length;let l=!1;for(let d=0;d{const{slotScopeIds:ne}=J;ne&&(me=me?me.concat(ne):ne);const ye=v(z),T=I(a(z),J,ye,re,ae,me,ue);return T&&isComment(T)&&T.data==="]"?a(J.anchor=T):(logMismatchError(),w(J.anchor=$("]"),ye,T),T)},D=(z,J,re,ae,me,ue)=>{if(isMismatchAllowed(z.parentElement,1)||(warn$1(`Hydration node mismatch: - rendered on server:`,z,z.nodeType===3?"(text)":isComment(z)&&z.data==="["?"(start of fragment)":"",` -- expected on client:`,J.type),logMismatchError()),J.el=null,ue){const T=V(z);for(;;){const l=a(z);if(l&&l!==T)y(l);else break}}const ne=a(z),ye=v(z);return y(z),n(null,J,ye,ne,re,ae,getContainerType(ye),me),re&&(re.vnode.el=J.el,updateHOCHostEl(re,J.el)),ne},V=(z,J="[",re="]")=>{let ae=0;for(;z;)if(z=a(z),z&&isComment(z)&&(z.data===J&&ae++,z.data===re)){if(ae===0)return a(z);ae--}return z},H=(z,J,re)=>{const ae=J.parentNode;ae&&ae.replaceChild(z,J);let me=re;for(;me;)me.vnode.el===J&&(me.vnode.el=me.subTree.el=z),me=me.parent},j=z=>z.nodeType===1&&z.tagName==="TEMPLATE";return[x,E]}function propHasMismatch(e,t,n,o,u){let a,v,y,w;if(t==="class")y=e.getAttribute("class"),w=normalizeClass(n),isSetEqual(toClassSet(y||""),toClassSet(w))||(a=2,v="class");else if(t==="style"){y=e.getAttribute("style")||"",w=isString$2(n)?n:stringifyStyle(normalizeStyle(n));const $=toStyleMap(y),x=toStyleMap(w);if(o.dirs)for(const{dir:E,value:B}of o.dirs)E.name==="show"&&!B&&x.set("display","none");u&&resolveCssVars(u,o,x),isMapEqual($,x)||(a=3,v="style")}else(e instanceof SVGElement&&isKnownSvgAttr(t)||e instanceof HTMLElement&&(isBooleanAttr(t)||isKnownHtmlAttr(t)))&&(isBooleanAttr(t)?(y=e.hasAttribute(t),w=includeBooleanAttr(n)):n==null?(y=e.hasAttribute(t),w=!1):(e.hasAttribute(t)?y=e.getAttribute(t):t==="value"&&e.tagName==="TEXTAREA"?y=e.value:y=!1,w=isRenderableAttrValue(n)?String(n):!1),y!==w&&(a=4,v=t));if(a!=null&&!isMismatchAllowed(e,a)){const $=B=>B===!1?"(not rendered)":`${v}="${B}"`,x=`Hydration ${MismatchTypeString[a]} mismatch on`,E=` +- expected on client:`,J.type),logMismatchError()),J.el=null,ue){const T=V(z);for(;;){const l=a(z);if(l&&l!==T)y(l);else break}}const ne=a(z),ye=v(z);return y(z),n(null,J,ye,ne,re,ae,getContainerType(ye),me),re&&(re.vnode.el=J.el,updateHOCHostEl(re,J.el)),ne},V=(z,J="[",re="]")=>{let ae=0;for(;z;)if(z=a(z),z&&isComment(z)&&(z.data===J&&ae++,z.data===re)){if(ae===0)return a(z);ae--}return z},H=(z,J,re)=>{const ae=J.parentNode;ae&&ae.replaceChild(z,J);let me=re;for(;me;)me.vnode.el===J&&(me.vnode.el=me.subTree.el=z),me=me.parent},j=z=>z.nodeType===1&&z.tagName==="TEMPLATE";return[x,E]}function propHasMismatch(e,t,n,o,u){let a,v,y,w;if(t==="class")y=e.getAttribute("class"),w=normalizeClass(n),isSetEqual(toClassSet(y||""),toClassSet(w))||(a=2,v="class");else if(t==="style"){y=e.getAttribute("style")||"",w=isString$2(n)?n:stringifyStyle(normalizeStyle(n));const $=toStyleMap(y),x=toStyleMap(w);if(o.dirs)for(const{dir:E,value:P}of o.dirs)E.name==="show"&&!P&&x.set("display","none");u&&resolveCssVars(u,o,x),isMapEqual($,x)||(a=3,v="style")}else(e instanceof SVGElement&&isKnownSvgAttr(t)||e instanceof HTMLElement&&(isBooleanAttr(t)||isKnownHtmlAttr(t)))&&(isBooleanAttr(t)?(y=e.hasAttribute(t),w=includeBooleanAttr(n)):n==null?(y=e.hasAttribute(t),w=!1):(e.hasAttribute(t)?y=e.getAttribute(t):t==="value"&&e.tagName==="TEXTAREA"?y=e.value:y=!1,w=isRenderableAttrValue(n)?String(n):!1),y!==w&&(a=4,v=t));if(a!=null&&!isMismatchAllowed(e,a)){const $=P=>P===!1?"(not rendered)":`${v}="${P}"`,x=`Hydration ${MismatchTypeString[a]} mismatch on`,E=` - rendered on server: ${$(y)} - expected on client: ${$(w)} Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead. - You should fix the source of the mismatch.`;return warn$1(x,e,E),!0}return!1}function toClassSet(e){return new Set(e.trim().split(/\s+/))}function isSetEqual(e,t){if(e.size!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0}function toStyleMap(e){const t=new Map;for(const n of e.split(";")){let[o,u]=n.split(":");o=o.trim(),u=u&&u.trim(),o&&u&&t.set(o,u)}return t}function isMapEqual(e,t){if(e.size!==t.size)return!1;for(const[n,o]of e)if(o!==t.get(n))return!1;return!0}function resolveCssVars(e,t,n){const o=e.subTree;if(e.getCssVars&&(t===o||o&&o.type===Fragment&&o.children.includes(t))){const u=e.getCssVars();for(const a in u)n.set(`--${getEscapedCssVarName(a,!1)}`,String(u[a]))}t===o&&e.parent&&resolveCssVars(e.parent,e.vnode,n)}const allowMismatchAttr="data-allow-mismatch",MismatchTypeString={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function isMismatchAllowed(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(allowMismatchAttr);)e=e.parentElement;const n=e&&e.getAttribute(allowMismatchAttr);if(n==null)return!1;if(n==="")return!0;{const o=n.split(",");return t===0&&o.includes("children")?!0:n.split(",").includes(MismatchTypeString[t])}}const requestIdleCallback=getGlobalThis().requestIdleCallback||(e=>setTimeout(e,1)),cancelIdleCallback=getGlobalThis().cancelIdleCallback||(e=>clearTimeout(e)),hydrateOnIdle=(e=1e4)=>t=>{const n=requestIdleCallback(t,{timeout:e});return()=>cancelIdleCallback(n)};function elementIsVisibleInViewport(e){const{top:t,left:n,bottom:o,right:u}=e.getBoundingClientRect(),{innerHeight:a,innerWidth:v}=window;return(t>0&&t0&&o0&&n0&&u(t,n)=>{const o=new IntersectionObserver(u=>{for(const a of u)if(a.isIntersecting){o.disconnect(),t();break}},e);return n(u=>{if(u instanceof Element){if(elementIsVisibleInViewport(u))return t(),o.disconnect(),!1;o.observe(u)}}),()=>o.disconnect()},hydrateOnMediaQuery=e=>t=>{if(e){const n=matchMedia(e);if(n.matches)t();else return n.addEventListener("change",t,{once:!0}),()=>n.removeEventListener("change",t)}},hydrateOnInteraction=(e=[])=>(t,n)=>{isString$2(e)&&(e=[e]);let o=!1;const u=v=>{o||(o=!0,a(),t(),v.target.dispatchEvent(new v.constructor(v.type,v)))},a=()=>{n(v=>{for(const y of e)v.removeEventListener(y,u)})};return n(v=>{for(const y of e)v.addEventListener(y,u,{once:!0})}),a};function forEachElement(e,t){if(isComment(e)&&e.data==="["){let n=1,o=e.nextSibling;for(;o;){if(o.nodeType===1){if(t(o)===!1)break}else if(isComment(o))if(o.data==="]"){if(--n===0)break}else o.data==="["&&n++;o=o.nextSibling}}else t(e)}const isAsyncWrapper=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function defineAsyncComponent(e){isFunction$2(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:o,delay:u=200,hydrate:a,timeout:v,suspensible:y=!0,onError:w}=e;let $=null,x,E=0;const B=()=>(E++,$=null,I()),I=()=>{let L;return $||(L=$=t().catch(D=>{if(D=D instanceof Error?D:new Error(String(D)),w)return new Promise((V,H)=>{w(D,()=>V(B()),()=>H(D),E+1)});throw D}).then(D=>{if(L!==$&&$)return $;if(D||warn$1("Async component loader resolved to undefined. If you are using retry(), make sure to return its return value."),D&&(D.__esModule||D[Symbol.toStringTag]==="Module")&&(D=D.default),D&&!isObject$2(D)&&!isFunction$2(D))throw new Error(`Invalid async component load result: ${D}`);return x=D,D}))};return defineComponent({name:"AsyncComponentWrapper",__asyncLoader:I,__asyncHydrate(L,D,V){const H=a?()=>{const j=a(V,z=>forEachElement(L,z));j&&(D.bum||(D.bum=[])).push(j)}:V;x?H():I().then(()=>!D.isUnmounted&&H())},get __asyncResolved(){return x},setup(){const L=currentInstance;if(markAsyncBoundary(L),x)return()=>createInnerComp(x,L);const D=z=>{$=null,handleError(z,L,13,!o)};if(y&&L.suspense||isInSSRComponentSetup)return I().then(z=>()=>createInnerComp(z,L)).catch(z=>(D(z),()=>o?createVNode(o,{error:z}):null));const V=ref$1(!1),H=ref$1(),j=ref$1(!!u);return u&&setTimeout(()=>{j.value=!1},u),v!=null&&setTimeout(()=>{if(!V.value&&!H.value){const z=new Error(`Async component timed out after ${v}ms.`);D(z),H.value=z}},v),I().then(()=>{V.value=!0,L.parent&&isKeepAlive(L.parent.vnode)&&L.parent.update()}).catch(z=>{D(z),H.value=z}),()=>{if(V.value&&x)return createInnerComp(x,L);if(H.value&&o)return createVNode(o,{error:H.value});if(n&&!j.value)return createVNode(n)}}})}function createInnerComp(e,t){const{ref:n,props:o,children:u,ce:a}=t.vnode,v=createVNode(e,o,u);return v.ref=n,v.ce=a,delete t.vnode.ce,v}const isKeepAlive=e=>e.type.__isKeepAlive,KeepAliveImpl={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const n=getCurrentInstance(),o=n.ctx;if(!o.renderer)return()=>{const j=t.default&&t.default();return j&&j.length===1?j[0]:j};const u=new Map,a=new Set;let v=null;n.__v_cache=u;const y=n.suspense,{renderer:{p:w,m:$,um:x,o:{createElement:E}}}=o,B=E("div");o.activate=(j,z,J,re,ae)=>{const me=j.component;$(j,z,J,0,y),w(me.vnode,j,z,J,me,y,re,j.slotScopeIds,ae),queuePostRenderEffect(()=>{me.isDeactivated=!1,me.a&&invokeArrayFns(me.a);const ue=j.props&&j.props.onVnodeMounted;ue&&invokeVNodeHook(ue,me.parent,j)},y),devtoolsComponentAdded(me)},o.deactivate=j=>{const z=j.component;invalidateMount(z.m),invalidateMount(z.a),$(j,B,null,1,y),queuePostRenderEffect(()=>{z.da&&invokeArrayFns(z.da);const J=j.props&&j.props.onVnodeUnmounted;J&&invokeVNodeHook(J,z.parent,j),z.isDeactivated=!0},y),devtoolsComponentAdded(z)};function I(j){resetShapeFlag(j),x(j,n,y,!0)}function L(j){u.forEach((z,J)=>{const re=getComponentName(z.type);re&&!j(re)&&D(J)})}function D(j){const z=u.get(j);z&&(!v||!isSameVNodeType(z,v))?I(z):v&&resetShapeFlag(v),u.delete(j),a.delete(j)}watch(()=>[e.include,e.exclude],([j,z])=>{j&&L(J=>matches(j,J)),z&&L(J=>!matches(z,J))},{flush:"post",deep:!0});let V=null;const H=()=>{V!=null&&(isSuspense(n.subTree.type)?queuePostRenderEffect(()=>{u.set(V,getInnerChild(n.subTree))},n.subTree.suspense):u.set(V,getInnerChild(n.subTree)))};return onMounted(H),onUpdated(H),onBeforeUnmount(()=>{u.forEach(j=>{const{subTree:z,suspense:J}=n,re=getInnerChild(z);if(j.type===re.type&&j.key===re.key){resetShapeFlag(re);const ae=re.component.da;ae&&queuePostRenderEffect(ae,J);return}I(j)})}),()=>{if(V=null,!t.default)return v=null;const j=t.default(),z=j[0];if(j.length>1)return warn$1("KeepAlive should contain exactly one component child."),v=null,j;if(!isVNode(z)||!(z.shapeFlag&4)&&!(z.shapeFlag&128))return v=null,z;let J=getInnerChild(z);if(J.type===Comment)return v=null,J;const re=J.type,ae=getComponentName(isAsyncWrapper(J)?J.type.__asyncResolved||{}:re),{include:me,exclude:ue,max:ne}=e;if(me&&(!ae||!matches(me,ae))||ue&&ae&&matches(ue,ae))return J.shapeFlag&=-257,v=J,z;const ye=J.key==null?re:J.key,T=u.get(ye);return J.el&&(J=cloneVNode(J),z.shapeFlag&128&&(z.ssContent=J)),V=ye,T?(J.el=T.el,J.component=T.component,J.transition&&setTransitionHooks(J,J.transition),J.shapeFlag|=512,a.delete(ye),a.add(ye)):(a.add(ye),ne&&a.size>parseInt(ne,10)&&D(a.values().next().value)),J.shapeFlag|=256,v=J,isSuspense(z.type)?z:J}}},KeepAlive=KeepAliveImpl;function matches(e,t){return isArray$8(e)?e.some(n=>matches(n,t)):isString$2(e)?e.split(",").includes(t):isRegExp$3(e)?(e.lastIndex=0,e.test(t)):!1}function onActivated(e,t){registerKeepAliveHook(e,"a",t)}function onDeactivated(e,t){registerKeepAliveHook(e,"da",t)}function registerKeepAliveHook(e,t,n=currentInstance){const o=e.__wdc||(e.__wdc=()=>{let u=n;for(;u;){if(u.isDeactivated)return;u=u.parent}return e()});if(injectHook(t,o,n),n){let u=n.parent;for(;u&&u.parent;)isKeepAlive(u.parent.vnode)&&injectToKeepAliveRoot(o,t,n,u),u=u.parent}}function injectToKeepAliveRoot(e,t,n,o){const u=injectHook(t,e,o,!0);onUnmounted(()=>{remove(o[t],u)},n)}function resetShapeFlag(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function getInnerChild(e){return e.shapeFlag&128?e.ssContent:e}function injectHook(e,t,n=currentInstance,o=!1){if(n){const u=n[e]||(n[e]=[]),a=t.__weh||(t.__weh=(...v)=>{pauseTracking();const y=setCurrentInstance(n),w=callWithAsyncErrorHandling(t,n,e,v);return y(),resetTracking(),w});return o?u.unshift(a):u.push(a),a}else{const u=toHandlerKey(ErrorTypeStrings$1[e].replace(/ hook$/,""));warn$1(`${u} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup(). If you are using async setup(), make sure to register lifecycle hooks before the first await statement.`)}}const createHook=e=>(t,n=currentInstance)=>{(!isInSSRComponentSetup||e==="sp")&&injectHook(e,(...o)=>t(...o),n)},onBeforeMount=createHook("bm"),onMounted=createHook("m"),onBeforeUpdate=createHook("bu"),onUpdated=createHook("u"),onBeforeUnmount=createHook("bum"),onUnmounted=createHook("um"),onServerPrefetch=createHook("sp"),onRenderTriggered=createHook("rtg"),onRenderTracked=createHook("rtc");function onErrorCaptured(e,t=currentInstance){injectHook("ec",e,t)}const COMPONENTS="components",DIRECTIVES="directives";function resolveComponent(e,t){return resolveAsset(COMPONENTS,e,!0,t)||e}const NULL_DYNAMIC_COMPONENT=Symbol.for("v-ndc");function resolveDynamicComponent(e){return isString$2(e)?resolveAsset(COMPONENTS,e,!1)||e:e||NULL_DYNAMIC_COMPONENT}function resolveDirective(e){return resolveAsset(DIRECTIVES,e)}function resolveAsset(e,t,n=!0,o=!1){const u=currentRenderingInstance||currentInstance;if(u){const a=u.type;if(e===COMPONENTS){const y=getComponentName(a,!1);if(y&&(y===t||y===camelize(t)||y===capitalize$2(camelize(t))))return a}const v=resolve$2(u[e]||a[e],t)||resolve$2(u.appContext[e],t);if(!v&&o)return a;if(n&&!v){const y=e===COMPONENTS?` -If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.`:"";warn$1(`Failed to resolve ${e.slice(0,-1)}: ${t}${y}`)}return v}else warn$1(`resolve${capitalize$2(e.slice(0,-1))} can only be used in render() or setup().`)}function resolve$2(e,t){return e&&(e[t]||e[camelize(t)]||e[capitalize$2(camelize(t))])}function renderList(e,t,n,o){let u;const a=n&&n[o],v=isArray$8(e);if(v||isString$2(e)){const y=v&&isReactive(e);let w=!1;y&&(w=!isShallow(e),e=shallowReadArray(e)),u=new Array(e.length);for(let $=0,x=e.length;$t(y,w,void 0,a&&a[w]));else{const y=Object.keys(e);u=new Array(y.length);for(let w=0,$=y.length;w<$;w++){const x=y[w];u[w]=t(e[x],x,w,a&&a[w])}}else u=[];return n&&(n[o]=u),u}function createSlots(e,t){for(let n=0;n{const a=o.fn(...u);return a&&(a.key=o.key),a}:o.fn)}return e}function renderSlot(e,t,n={},o,u){if(currentRenderingInstance.ce||currentRenderingInstance.parent&&isAsyncWrapper(currentRenderingInstance.parent)&¤tRenderingInstance.parent.ce)return t!=="default"&&(n.name=t),openBlock(),createBlock(Fragment,null,[createVNode("slot",n,o&&o())],64);let a=e[t];a&&a.length>1&&(warn$1("SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template."),a=()=>[]),a&&a._c&&(a._d=!1),openBlock();const v=a&&ensureValidVNode(a(n)),y=n.key||v&&v.key,w=createBlock(Fragment,{key:(y&&!isSymbol$4(y)?y:`_${t}`)+(!v&&o?"_fb":"")},v||(o?o():[]),v&&e._===1?64:-2);return!u&&w.scopeId&&(w.slotScopeIds=[w.scopeId+"-s"]),a&&a._c&&(a._d=!0),w}function ensureValidVNode(e){return e.some(t=>isVNode(t)?!(t.type===Comment||t.type===Fragment&&!ensureValidVNode(t.children)):!0)?e:null}function toHandlers(e,t){const n={};if(!isObject$2(e))return warn$1("v-on with no argument expects an object value."),n;for(const o in e)n[t&&/[A-Z]/.test(o)?`on:${o}`:toHandlerKey(o)]=e[o];return n}const getPublicInstance=e=>e?isStatefulComponent(e)?getComponentPublicInstance(e):getPublicInstance(e.parent):null,publicPropertiesMap=extend$1(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>shallowReadonly(e.props),$attrs:e=>shallowReadonly(e.attrs),$slots:e=>shallowReadonly(e.slots),$refs:e=>shallowReadonly(e.refs),$parent:e=>getPublicInstance(e.parent),$root:e=>getPublicInstance(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>resolveMergedOptions(e),$forceUpdate:e=>e.f||(e.f=()=>{queueJob(e.update)}),$nextTick:e=>e.n||(e.n=nextTick$4.bind(e.proxy)),$watch:e=>instanceWatch.bind(e)}),isReservedPrefix=e=>e==="_"||e==="$",hasSetupBinding=(e,t)=>e!==EMPTY_OBJ&&!e.__isScriptSetup&&hasOwn$3(e,t),PublicInstanceProxyHandlers={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:o,data:u,props:a,accessCache:v,type:y,appContext:w}=e;if(t==="__isVue")return!0;let $;if(t[0]!=="$"){const I=v[t];if(I!==void 0)switch(I){case 1:return o[t];case 2:return u[t];case 4:return n[t];case 3:return a[t]}else{if(hasSetupBinding(o,t))return v[t]=1,o[t];if(u!==EMPTY_OBJ&&hasOwn$3(u,t))return v[t]=2,u[t];if(($=e.propsOptions[0])&&hasOwn$3($,t))return v[t]=3,a[t];if(n!==EMPTY_OBJ&&hasOwn$3(n,t))return v[t]=4,n[t];shouldCacheAccess&&(v[t]=0)}}const x=publicPropertiesMap[t];let E,B;if(x)return t==="$attrs"?(track(e.attrs,"get",""),markAttrsAccessed()):t==="$slots"&&track(e,"get",t),x(e);if((E=y.__cssModules)&&(E=E[t]))return E;if(n!==EMPTY_OBJ&&hasOwn$3(n,t))return v[t]=4,n[t];if(B=w.config.globalProperties,hasOwn$3(B,t))return B[t];currentRenderingInstance&&(!isString$2(t)||t.indexOf("__v")!==0)&&(u!==EMPTY_OBJ&&isReservedPrefix(t[0])&&hasOwn$3(u,t)?warn$1(`Property ${JSON.stringify(t)} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.`):e===currentRenderingInstance&&warn$1(`Property ${JSON.stringify(t)} was accessed during render but is not defined on instance.`))},set({_:e},t,n){const{data:o,setupState:u,ctx:a}=e;return hasSetupBinding(u,t)?(u[t]=n,!0):u.__isScriptSetup&&hasOwn$3(u,t)?(warn$1(`Cannot mutate - - - - - - - + + + + + + + + From edad2e88b373daadce29b55473454061dece9aeb Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Mon, 17 Mar 2025 11:09:29 +0100 Subject: [PATCH 73/75] fixes --- ...euerbare Verbrauchseinrichtungen nach \302\247 14a.md" | 2 +- packages/control/process.py | 4 ++-- packages/modules/common/store/_io.py | 2 ++ .../modules/internal_chargepoint_handler/add_on/api.py | 2 +- .../io_actions/controllable_consumers/dimming/api.py | 8 +++++--- .../controllable_consumers/dimming_direct_control/api.py | 2 +- 6 files changed, 12 insertions(+), 8 deletions(-) diff --git "a/docs/Steuerbare Verbrauchseinrichtungen nach \302\247 14a.md" "b/docs/Steuerbare Verbrauchseinrichtungen nach \302\247 14a.md" index f89b5b6aaf..66f0e63bfc 100644 --- "a/docs/Steuerbare Verbrauchseinrichtungen nach \302\247 14a.md" +++ "b/docs/Steuerbare Verbrauchseinrichtungen nach \302\247 14a.md" @@ -1,7 +1,7 @@ Der Gesetzgeber sieht verschiedene Möglichkeiten für steuerbare Verbrauchseinrichtungen vor. Für jede steuerbare Verbrauchseinrichtung kann eine andere Option angemeldet werden. Bei der Konfiguration muss deshalb auch immer der/die Ladepunkte angegeben werden, für die die IO-Aktion angewendet werden soll. ### Dimmen -Beim Dimmen wird eine maximale Bezugsleistung für alle steuerbaren Verbrauchseinrichtungen nach einer vorgegebene Formel ermittelt. Das Ergebnis dieser Formel muss bei der IO-Aktion `Dimmen` in der Einstellung `maximale Bezugsleistung` eingetragen werden. ACHTUNG: Die openWB kann aktuell nur die Ladepunkte berücksichtigen. Sind noch weitere steuerbare Verbraucher angemeldet, können diese über einen digitalen Ausgang angebunden werden. Da openWB die Leistung dieser Geräte nicht kennt, werden 4,2kW angenommen. Für die korrekte Ermittlung der maximalen Bezugsleistung ist der Betreiber, nicht openWB oder die software2 verantwortlich. +Beim Dimmen wird eine maximale Bezugsleistung für alle steuerbaren Verbrauchseinrichtungen nach einer vorgegebene Formel ermittelt. Das Ergebnis dieser Formel muss bei der IO-Aktion `Dimmen` in der Einstellung `maximale Bezugsleistung` eingetragen werden. ACHTUNG: Die openWB kann aktuell nur die Ladepunkte berücksichtigen. Sind noch weitere steuerbare Verbraucher angemeldet, können diese über einen digitalen Ausgang angebunden werden. Da openWB die Leistung dieser Geräte nicht kennt, werden 4,2kW angenommen. Muss der Verbraucher seine Leistung begrenzen, wird der Ausgang auf 0V gesetzt. Für die korrekte Ermittlung der maximalen Bezugsleistung ist der Betreiber, nicht openWB oder die software2 verantwortlich. Vorhandener Überschuss kann zusätzlich zur maximalen Bezugsleistung verwendet werden. ### Dimmung per Direkt-Steuerung diff --git a/packages/control/process.py b/packages/control/process.py index cdfd32d3ce..955aad06d5 100644 --- a/packages/control/process.py +++ b/packages/control/process.py @@ -74,13 +74,13 @@ def process_algorithm_results(self) -> None: if isinstance(action, DimmingDirectControl): for d in action.config.configuration.devices: if d["type"] == "io": - data.data.system_data[f"io{d['id']}"].data.set.digital_output[d["digital_output"]] = ( + data.data.io_states[f"io_states{d['id']}"].data.set.digital_output[d["digital_output"]] = ( action.dimming_via_direct_control() is not None ) if isinstance(action, Dimming): for d in action.config.configuration.devices: if d["type"] == "io": - data.data.system_data[f"io{d['id']}"].data.set.digital_output[d["digital_output"]] = ( + data.data.io_states[f"io_states{d['id']}"].data.set.digital_output[d["digital_output"]] = ( action.dimming_active() ) for io in data.data.system_data.values(): diff --git a/packages/modules/common/store/_io.py b/packages/modules/common/store/_io.py index 46200dfe11..7872e64275 100644 --- a/packages/modules/common/store/_io.py +++ b/packages/modules/common/store/_io.py @@ -20,8 +20,10 @@ def update(self): pub_to_broker(f"openWB/set/io/states/{self.num}/get/analog_input", self.state.analog_input) if self.state.digital_output: pub_to_broker(f"openWB/set/io/states/{self.num}/get/digital_output", self.state.digital_output) + pub_to_broker(f"openWB/set/io/states/{self.num}/set/digital_output", self.state.digital_output) if self.state.analog_output: pub_to_broker(f"openWB/set/io/states/{self.num}/get/analog_output", self.state.analog_output) + pub_to_broker(f"openWB/set/io/states/{self.num}/set/analog_output", self.state.analog_output) except Exception as e: raise FaultState.from_exception(e) diff --git a/packages/modules/internal_chargepoint_handler/add_on/api.py b/packages/modules/internal_chargepoint_handler/add_on/api.py index c4caa0f506..1f84777242 100644 --- a/packages/modules/internal_chargepoint_handler/add_on/api.py +++ b/packages/modules/internal_chargepoint_handler/add_on/api.py @@ -31,7 +31,7 @@ def read() -> Tuple[bool, bool]: def write(analog_output: Optional[Dict[str, int]], digital_output: Optional[Dict[str, bool]]): if has_gpio: for pin, value in digital_output.items(): - GPIO.output(DigitalOutputMapping[pin].value, GPIO.LOW if value else GPIO.HIGH) + GPIO.output(DigitalOutputMapping[pin].value, GPIO.HIGH if value else GPIO.LOW) if has_gpio: GPIO.setmode(GPIO.BOARD) diff --git a/packages/modules/io_actions/controllable_consumers/dimming/api.py b/packages/modules/io_actions/controllable_consumers/dimming/api.py index d6fd2c7968..14d7e9008b 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming/api.py @@ -3,6 +3,7 @@ from helpermodules.logger import ModifyLoglevelContext from helpermodules.pub import Pub from helpermodules.timecheck import create_timestamp +from dataclass_utils import asdict from modules.common.abstract_device import DeviceDescriptor from modules.common.abstract_io import AbstractIoAction from modules.io_actions.controllable_consumers.dimming.config import DimmingSetup @@ -30,9 +31,10 @@ def __init__(self, config: DimmingSetup): for device in self.config.configuration.devices: if device["type"] != "cp": fixed_import_power += 4200 - self.config.configuration.fixed_import_power = fixed_import_power log.debug(f"Dimmen per HEMS: Fest vergebene Mindestleistung: {fixed_import_power}W") - Pub().pub(f"openWB/set/io/action/{self.config.id}/config", self.config) + if fixed_import_power != self.config.configuration.fixed_import_power: + self.config.configuration.fixed_import_power = fixed_import_power + Pub().pub(f"openWB/set/io/action/{self.config.id}/config", asdict(self.config)) super().__init__() @@ -62,7 +64,7 @@ def setup(self) -> None: f"{data.data.cp_data[cp].data.get.powers}W") if device["type"] == "io": io = f"io{device['id']}" - msg += (f", {data.data.io_data[io].data.config.name}: " + msg += (f", {data.data.system_data[io].config.name}: " "Leistung unbekannt") control_command_log.info(msg) elif self.timestamp: diff --git a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py index d53c57b83d..cbeaea3fde 100644 --- a/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py +++ b/packages/modules/io_actions/controllable_consumers/dimming_direct_control/api.py @@ -48,7 +48,7 @@ def setup(self) -> None: f"{data.data.cp_data[cp].data.get.powers}W") if device["type"] == "io": io = f"io{device['id']}" - msg += (f", IO-Gerät {data.data.io_data[io].data.config.name}: " + msg += (f", IO-Gerät {data.data.system_data[io].config.name}: " "Leistung unbekannt") control_command_log.info(msg) elif self.timestamp: From 540c417c3ade46db677cd97ef669af58d8b48646 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Mon, 17 Mar 2025 11:13:03 +0100 Subject: [PATCH 74/75] fixes --- data/config/mosquitto/openwb_local.conf | 2 +- "docs/IO-Ger\303\244te & -Aktionen.md" | 4 +--- .../Steuerbare Verbrauchseinrichtungen nach \302\247 14a.md" | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/data/config/mosquitto/openwb_local.conf b/data/config/mosquitto/openwb_local.conf index 53cec77b5f..8f03b56f6c 100644 --- a/data/config/mosquitto/openwb_local.conf +++ b/data/config/mosquitto/openwb_local.conf @@ -1,4 +1,4 @@ -# openwb-version:18 +# openwb-version:17 listener 1886 localhost allow_anonymous true diff --git "a/docs/IO-Ger\303\244te & -Aktionen.md" "b/docs/IO-Ger\303\244te & -Aktionen.md" index 8133b4db27..57186c772f 100644 --- "a/docs/IO-Ger\303\244te & -Aktionen.md" +++ "b/docs/IO-Ger\303\244te & -Aktionen.md" @@ -22,7 +22,5 @@ Die AddOn-Platine stellt 7 Eingänge und 3 Ausgänge zur Verfügung. WICHTIG: In ### IO-Aktionen -#### Steuerbare Verbrauchseinrichtungen: Dimmen, Dimmung per Direkt-Steuerung, RSE +#### Steuerbare Verbrauchseinrichtungen: Dimmen per HEMS, Dimmung per Direkt-Steuerung, RSE Ausführliche Informationen findest Du im gesonderten Wiki-Beitrag [Steuerbare Verbrauchseinrichtungen](https://github.com/openWB/core/wiki/Steuerbare-Verbrauchseinrichtungen) - -Weitere IO-Aktionen sind in Arbeit. \ No newline at end of file diff --git "a/docs/Steuerbare Verbrauchseinrichtungen nach \302\247 14a.md" "b/docs/Steuerbare Verbrauchseinrichtungen nach \302\247 14a.md" index 66f0e63bfc..e19f35df9b 100644 --- "a/docs/Steuerbare Verbrauchseinrichtungen nach \302\247 14a.md" +++ "b/docs/Steuerbare Verbrauchseinrichtungen nach \302\247 14a.md" @@ -1,6 +1,6 @@ Der Gesetzgeber sieht verschiedene Möglichkeiten für steuerbare Verbrauchseinrichtungen vor. Für jede steuerbare Verbrauchseinrichtung kann eine andere Option angemeldet werden. Bei der Konfiguration muss deshalb auch immer der/die Ladepunkte angegeben werden, für die die IO-Aktion angewendet werden soll. -### Dimmen +### Dimmen per HEMS Beim Dimmen wird eine maximale Bezugsleistung für alle steuerbaren Verbrauchseinrichtungen nach einer vorgegebene Formel ermittelt. Das Ergebnis dieser Formel muss bei der IO-Aktion `Dimmen` in der Einstellung `maximale Bezugsleistung` eingetragen werden. ACHTUNG: Die openWB kann aktuell nur die Ladepunkte berücksichtigen. Sind noch weitere steuerbare Verbraucher angemeldet, können diese über einen digitalen Ausgang angebunden werden. Da openWB die Leistung dieser Geräte nicht kennt, werden 4,2kW angenommen. Muss der Verbraucher seine Leistung begrenzen, wird der Ausgang auf 0V gesetzt. Für die korrekte Ermittlung der maximalen Bezugsleistung ist der Betreiber, nicht openWB oder die software2 verantwortlich. Vorhandener Überschuss kann zusätzlich zur maximalen Bezugsleistung verwendet werden. From 69322762e7e547b00124a28cdf8c2ffa3d69128f Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Wed, 19 Mar 2025 08:33:33 +0100 Subject: [PATCH 75/75] Revert "build UI" This reverts commit 71e05d09b738bf4d74a48654b3ca403e6e9a1c4e. --- ...eLog-b1c57fa6.js => ChargeLog-7f7c5fe2.js} | 4 +- .../ChargePointInstallation-408ee2ed.js | 1 + .../ChargePointInstallation-7e51ce35.js | 1 - web/settings/assets/Chart-bf602480.js | 1 + web/settings/assets/Chart-cfe16b91.js | 1 - ...ig-9ce250e8.js => CloudConfig-c17b71a6.js} | 2 +- ...714df651.js => DataManagement-f14600c5.js} | 2 +- web/settings/assets/DebugConfig-8637145c.js | 2 - web/settings/assets/DebugConfig-ee93cd2f.js | 2 + ...a0e.js => GeneralChargeConfig-401ab7d4.js} | 2 +- web/settings/assets/GeneralConfig-b0e93144.js | 1 + web/settings/assets/GeneralConfig-bc70f34a.js | 1 - .../assets/HardwareInstallation-3a644290.js | 1 + .../assets/HardwareInstallation-727b5962.js | 1 - .../assets/InstallAssistant-01649aee.js | 1 - .../assets/InstallAssistant-06ef733c.js | 1 + ...3.js => InstallAssistantStep0-e773f28e.js} | 2 +- ...d.js => InstallAssistantStep1-e0d32a00.js} | 2 +- ....js => InstallAssistantStep10-1b3e0f38.js} | 2 +- ...1.js => InstallAssistantStep2-50ad5d87.js} | 2 +- .../assets/InstallAssistantStep3-ac7124e1.js | 1 + .../assets/InstallAssistantStep3-d28da6cc.js | 1 - ...d.js => InstallAssistantStep4-b1f7c847.js} | 2 +- ...9.js => InstallAssistantStep5-133577c4.js} | 2 +- ...d.js => InstallAssistantStep6-fe6bd91e.js} | 2 +- ...a.js => InstallAssistantStep7-51125106.js} | 2 +- ...f.js => InstallAssistantStep8-1047f636.js} | 2 +- ...1.js => InstallAssistantStep9-bd70c725.js} | 2 +- ... InstallAssistantStepTemplate-3bdc8973.js} | 2 +- ...188.js => InstantChargeConfig-8da1d692.js} | 2 +- web/settings/assets/IoConfig-bc616ac4.js | 1 - ...-0d86ce7f.js => LegalSettings-0ab5ea05.js} | 2 +- ...f9.js => LoadManagementConfig-c15dfafe.js} | 2 +- ...ff6fb3.js => MqttBridgeConfig-74fa4482.js} | 2 +- .../assets/OpenwbIoPattern-278f5a90.js | 1 - .../assets/OpenwbIoPattern-a1d251cc.css | 1 - .../assets/OpenwbIoSinglePattern-83dbc24c.js | 1 - .../assets/OpenwbIoSinglePattern-e689840a.css | 1 - ...7a4b.js => OpenwbSortableList-bde71f66.js} | 2 +- ...b9a1.js => OptionalComponents-f79f9835.js} | 2 +- .../assets/PVChargeConfig-2c281c8b.js | 1 - .../assets/PVChargeConfig-c750b618.js | 1 + ...5.js => ScheduledChargeConfig-85a95906.js} | 2 +- web/settings/assets/Status-255f6f61.css | 1 - web/settings/assets/Status-3484f650.js | 1 + web/settings/assets/Status-9ecf39ed.css | 1 + web/settings/assets/Status-ae50cd10.js | 1 - ...upport-cb0a82f9.js => Support-aeee7674.js} | 4 +- web/settings/assets/System-20e6cb5e.js | 1 + web/settings/assets/System-71b2e67e.js | 1 - web/settings/assets/TestingStore-96106450.js | 1 + web/settings/assets/TestingStore-e8ef24a7.js | 1 - ...5d2dde.js => TimeChargeConfig-d3210f64.js} | 2 +- ...-e49e5ddc.js => VehicleConfig-a49bda81.js} | 2 +- ...d-42fd7d1e.js => backup_cloud-30cf5664.js} | 2 +- ...d-cbe0285e.js => backup_cloud-30fea215.js} | 2 +- ...d-b4673e75.js => backup_cloud-b39f2e48.js} | 2 +- ...d-36fc78b8.js => backup_cloud-c3181aad.js} | 2 +- .../{bat-e525273f.js => bat-09e11c39.js} | 2 +- .../{bat-53f2b2dc.js => bat-13f506c4.js} | 2 +- .../{bat-8276d217.js => bat-1c531740.js} | 2 +- .../{bat-515bb8b9.js => bat-434d0404.js} | 2 +- .../{bat-96814af1.js => bat-47aea623.js} | 2 +- .../{bat-7e2bb1f0.js => bat-508dda8e.js} | 2 +- .../{bat-46ed5214.js => bat-5bcb481a.js} | 2 +- .../{bat-b0b74fda.js => bat-5d80d1b1.js} | 2 +- .../{bat-00ee042f.js => bat-5d86d2d0.js} | 2 +- .../{bat-8ecd087b.js => bat-655f55cd.js} | 2 +- .../{bat-41f81d7c.js => bat-6ae70208.js} | 2 +- .../{bat-161a0b3f.js => bat-845b945a.js} | 2 +- .../{bat-b13c576b.js => bat-8885d269.js} | 2 +- .../{bat-500fac88.js => bat-a09a1026.js} | 2 +- .../{bat-b04f324c.js => bat-b459c554.js} | 2 +- .../{bat-09618e87.js => bat-ba97b9ec.js} | 2 +- .../{bat-177cd510.js => bat-c05ee012.js} | 2 +- .../{bat-386b6a71.js => bat-d47d1fd1.js} | 2 +- .../{bat-575ac984.js => bat-d9cdd38d.js} | 2 +- .../{bat-8eeb809e.js => bat-e36a210d.js} | 2 +- ...926987.js => bat_smart_energy-8db62ce9.js} | 2 +- ...nt-5487f7d8.js => chargePoint-542a9664.js} | 2 +- ...nt-f1ddcbb4.js => chargePoint-6c271d6b.js} | 2 +- ...nt-3eb75766.js => chargePoint-776647d8.js} | 2 +- ...nt-57970a5b.js => chargePoint-84c8e28d.js} | 2 +- ...nt-e13a3df6.js => chargePoint-ba464cf4.js} | 2 +- ...nt-d73403a3.js => chargePoint-e230a14a.js} | 2 +- ...nt-61378497.js => chargePoint-f16b10ce.js} | 2 +- ...mands-f10e74ce.js => commands-38fd7ea5.js} | 2 +- ...mands-ae4d3051.js => commands-b3575711.js} | 2 +- ...159.js => consumption_counter-704c01f7.js} | 2 +- ...ounter-40260f20.js => counter-00141858.js} | 2 +- web/settings/assets/counter-01848dd0.js | 1 - ...ounter-b5c55995.js => counter-018e7196.js} | 2 +- ...ounter-70674361.js => counter-19e7f139.js} | 2 +- web/settings/assets/counter-1b273ac4.js | 1 + web/settings/assets/counter-32cca269.js | 1 - ...ounter-021c90c7.js => counter-3492fd19.js} | 2 +- ...ounter-11d67ba8.js => counter-394e8014.js} | 2 +- ...ounter-ffe6f59d.js => counter-40d2f2a6.js} | 2 +- ...ounter-c4ea528f.js => counter-48217739.js} | 2 +- ...ounter-0e51da5e.js => counter-55c27daf.js} | 2 +- ...ounter-f257201f.js => counter-5a3251ce.js} | 2 +- web/settings/assets/counter-5bbed3f1.js | 1 - ...ounter-c0fbd699.js => counter-7311f96b.js} | 2 +- ...ounter-48702b69.js => counter-75e3d92e.js} | 2 +- ...ounter-1306a4c6.js => counter-7668209b.js} | 2 +- web/settings/assets/counter-76ed3a15.js | 1 - ...ounter-de0030ac.js => counter-76eff543.js} | 2 +- web/settings/assets/counter-7a033879.js | 1 + ...ounter-986853af.js => counter-8520ea8e.js} | 2 +- ...ounter-dd217c03.js => counter-8b96457f.js} | 2 +- ...ounter-28bcfaac.js => counter-8d45ef9c.js} | 2 +- ...ounter-2d03ca61.js => counter-958da48c.js} | 2 +- ...ounter-6c87b676.js => counter-95bdcdb7.js} | 2 +- ...ounter-9e94ca6b.js => counter-a31f5e7d.js} | 2 +- ...ounter-7680421b.js => counter-ab315ba3.js} | 2 +- web/settings/assets/counter-aed75c81.js | 1 + web/settings/assets/counter-b03c0db9.js | 1 + ...ounter-d04c382b.js => counter-bef0b821.js} | 2 +- ...ounter-a6252054.js => counter-ccad25ea.js} | 2 +- ...ounter-dddfcee5.js => counter-cfb2a7aa.js} | 2 +- ...ounter-d193f9cd.js => counter-d1809224.js} | 2 +- ...ounter-09ee9f20.js => counter-d5ce341d.js} | 2 +- ...ounter-fea14072.js => counter-f0638cd4.js} | 2 +- ...ounter-b7f323cc.js => counter-fa232f15.js} | 2 +- ..._sm-dd8aa57c.js => counter_sm-66058b82.js} | 2 +- ...{device-6dfe8cd8.js => device-04b7418e.js} | 2 +- ...{device-82bb06d6.js => device-123cfe52.js} | 2 +- ...{device-72bc8ff3.js => device-1565347a.js} | 2 +- ...{device-6dd461c4.js => device-1830d04b.js} | 2 +- ...{device-ee4fe242.js => device-1b11a3ea.js} | 2 +- ...{device-d74725ec.js => device-23e00b31.js} | 2 +- ...{device-b9b6be03.js => device-249da548.js} | 2 +- ...{device-2c344b3e.js => device-264114d8.js} | 2 +- ...{device-0d49a26c.js => device-2f945435.js} | 2 +- ...{device-342a235f.js => device-30d7c2e0.js} | 2 +- ...{device-45cfa872.js => device-31e5797e.js} | 2 +- ...{device-d32f448c.js => device-3435a852.js} | 2 +- ...{device-e80c7a1a.js => device-354918a0.js} | 2 +- ...{device-8b9db644.js => device-357d44c6.js} | 2 +- ...{device-fec30c56.js => device-3be14789.js} | 2 +- ...{device-429cae7c.js => device-3d86bc85.js} | 2 +- ...{device-9eedaff7.js => device-3e5adae7.js} | 2 +- ...{device-93509dc9.js => device-3f9eff90.js} | 2 +- ...{device-1497b5e4.js => device-45df0691.js} | 2 +- ...{device-5a5c2204.js => device-4c55f797.js} | 2 +- ...{device-9684db49.js => device-4e960663.js} | 2 +- ...{device-aa0e176c.js => device-4f5bf65a.js} | 2 +- ...{device-240bbfb8.js => device-4f7aad98.js} | 2 +- ...{device-13f0437c.js => device-509a4ac4.js} | 2 +- ...{device-e6d1ff67.js => device-52c218d2.js} | 2 +- ...{device-e3878572.js => device-54f1a203.js} | 2 +- ...{device-21c38268.js => device-5cc2cdfa.js} | 2 +- ...{device-1e200cbf.js => device-5ceb63e9.js} | 2 +- ...{device-1ad34ad2.js => device-653a19f8.js} | 2 +- ...{device-45781f1b.js => device-6656b07f.js} | 2 +- ...{device-35241d4e.js => device-6659803e.js} | 2 +- ...{device-5fd78306.js => device-67811713.js} | 2 +- ...{device-eaa956ad.js => device-7075a0a8.js} | 2 +- ...{device-8c80f180.js => device-716c4065.js} | 2 +- ...{device-55bb825c.js => device-7f7452f2.js} | 2 +- ...{device-55249d75.js => device-88e6829b.js} | 2 +- ...{device-e7442473.js => device-8c5dabb3.js} | 2 +- ...{device-11f6d869.js => device-8c6a7cd7.js} | 2 +- ...{device-1950c8ef.js => device-8de467ac.js} | 2 +- ...{device-e51f6a05.js => device-906beffa.js} | 2 +- ...{device-8a67a9ec.js => device-968183c7.js} | 2 +- ...{device-5e15f44e.js => device-9749c9e1.js} | 2 +- ...{device-e89043ef.js => device-99900f00.js} | 2 +- ...{device-1cc75082.js => device-99e093c0.js} | 2 +- ...{device-92ff8214.js => device-9befb1d4.js} | 2 +- ...{device-f7b12563.js => device-a0c4f59d.js} | 2 +- ...{device-dc895585.js => device-a319d4b6.js} | 2 +- ...{device-2144978c.js => device-a9846396.js} | 2 +- ...{device-86f7621f.js => device-aacbf2a5.js} | 2 +- ...{device-cc6d1d33.js => device-ae68eae2.js} | 2 +- ...{device-d1bfd3f3.js => device-b21c21f9.js} | 2 +- ...{device-6dfeff1b.js => device-c61fae76.js} | 2 +- ...{device-8dcea009.js => device-c8cf6368.js} | 2 +- ...{device-ebfe2885.js => device-d1c48c2c.js} | 2 +- ...{device-e6a31e33.js => device-dbe167d8.js} | 2 +- ...{device-d85f27a1.js => device-dd9fc66e.js} | 2 +- ...{device-8bba052a.js => device-e29a0ff7.js} | 2 +- ...{device-94d6b50f.js => device-e44ec84b.js} | 2 +- ...{device-961ae78d.js => device-eb9518f3.js} | 2 +- ...{device-f71805ce.js => device-f0eb9f12.js} | 2 +- ...{device-9a79e89c.js => device-f1c2a7a5.js} | 2 +- ...{device-f82ddafe.js => device-f3f81832.js} | 2 +- ...{device-68b75b5b.js => device-fcda5bd2.js} | 2 +- ...{device-69185b02.js => device-fd0ed77c.js} | 2 +- ...e-575345bd.js => displayTheme-1e1ee4eb.js} | 2 +- ...e-95f1ddf2.js => displayTheme-64a8b4a0.js} | 2 +- ...7f9b.js => electricity_tariff-0c46c1ec.js} | 2 +- ...a4e9.js => electricity_tariff-0d285d7d.js} | 2 +- ...646b.js => electricity_tariff-4d29c538.js} | 2 +- ...76a3.js => electricity_tariff-8330f492.js} | 2 +- ...88df.js => electricity_tariff-a0cf3a14.js} | 2 +- ...b5192.js => external_inverter-19cf6472.js} | 2 +- web/settings/assets/index-b236cee5.js | 1 - web/settings/assets/index-cc8f65ba.js | 1 + ...erter-66844342.js => inverter-0931beee.js} | 2 +- ...erter-c852411a.js => inverter-0dee4ab1.js} | 2 +- ...erter-1a290548.js => inverter-1e549543.js} | 2 +- ...erter-ff72f261.js => inverter-1eaedb65.js} | 2 +- ...erter-fb891ee4.js => inverter-25109ec8.js} | 2 +- ...erter-e972f9b7.js => inverter-2d9123ee.js} | 2 +- ...erter-a66b9919.js => inverter-30cf9ccf.js} | 2 +- ...erter-62f3baf9.js => inverter-39ce3cb1.js} | 2 +- ...erter-b8e6f7ca.js => inverter-456adc79.js} | 2 +- ...erter-dddc65f7.js => inverter-498c1656.js} | 2 +- ...erter-1632a4b1.js => inverter-4a2cdfd9.js} | 2 +- web/settings/assets/inverter-50a72e83.js | 1 - web/settings/assets/inverter-5571eba7.js | 1 + ...erter-cbcef859.js => inverter-6157a590.js} | 2 +- ...erter-2e18bb9f.js => inverter-617b5e4a.js} | 2 +- ...erter-4cc98b34.js => inverter-62de90f4.js} | 2 +- ...erter-29c8bc0a.js => inverter-68f31134.js} | 2 +- ...erter-1170f457.js => inverter-82378537.js} | 2 +- ...erter-387e64b9.js => inverter-896676a9.js} | 2 +- ...erter-b76a9fda.js => inverter-997c828c.js} | 2 +- web/settings/assets/inverter-9c2adc35.js | 1 - ...erter-f5f1a5c8.js => inverter-a427739c.js} | 2 +- ...erter-407f4ad4.js => inverter-c0d3b643.js} | 2 +- ...erter-5009ea23.js => inverter-c1990994.js} | 2 +- ...erter-8ea576fa.js => inverter-cad24111.js} | 2 +- ...erter-6cea7a86.js => inverter-d75d32f1.js} | 2 +- ...erter-a8875bde.js => inverter-db7c45b0.js} | 2 +- ...erter-ce8f0bd6.js => inverter-e8d6d647.js} | 2 +- ...erter-6dedf2c0.js => inverter-f287a1d4.js} | 2 +- ...erter-e9bb7891.js => inverter-f413f2e1.js} | 2 +- web/settings/assets/inverter-f447aa74.js | 1 + ...erter-991c91e3.js => inverter-f9eaf59e.js} | 2 +- ...40b8.js => inverter_secondary-daf65789.js} | 2 +- web/settings/assets/io_action-15f350b8.js | 1 - web/settings/assets/io_action-465b927d.js | 1 - web/settings/assets/io_action-def63b3b.js | 1 - web/settings/assets/io_action-f16988cb.js | 1 - web/settings/assets/io_device-6aded7c0.js | 1 - web/settings/assets/io_device-a553d2c1.js | 1 - ...ing-df87d8aa.js => monitoring-f3474b05.js} | 2 +- .../ripple_control_receiver-14c898b9.js | 1 + .../ripple_control_receiver-cd0099ce.js | 1 + ...ehicle-9213f7f9.js => vehicle-0951b87d.js} | 2 +- ...ehicle-0cab1a3e.js => vehicle-0f1f6912.js} | 2 +- web/settings/assets/vehicle-18edee3a.js | 1 - ...ehicle-711a16c0.js => vehicle-1c25409c.js} | 2 +- web/settings/assets/vehicle-1fd068b4.js | 1 + ...ehicle-d5f5aff5.js => vehicle-28d453ca.js} | 2 +- ...ehicle-048a17cd.js => vehicle-2da6d3ec.js} | 2 +- ...ehicle-5227ffda.js => vehicle-47a5b0e6.js} | 2 +- ...ehicle-3f811862.js => vehicle-47f7fadf.js} | 2 +- ...ehicle-e12b30b1.js => vehicle-561e20d5.js} | 2 +- ...ehicle-d18e5ce2.js => vehicle-56b45282.js} | 2 +- ...ehicle-865f01e8.js => vehicle-5cb1a571.js} | 2 +- ...ehicle-c305e7fc.js => vehicle-5d229e55.js} | 2 +- ...ehicle-7ee8a745.js => vehicle-74dc0824.js} | 2 +- ...ehicle-dfe6b66d.js => vehicle-837ef917.js} | 2 +- ...ehicle-14a72276.js => vehicle-9a78a8ba.js} | 2 +- ...ehicle-6006f37f.js => vehicle-9fdd28f6.js} | 2 +- ...ehicle-b63b1879.js => vehicle-b464d124.js} | 2 +- ...ehicle-2530ac78.js => vehicle-da54a31e.js} | 2 +- ...ehicle-94956e80.js => vehicle-f595aaa1.js} | 2 +- web/settings/assets/vendor-3a7c342f.css | 1 + web/settings/assets/vendor-aab9f734.css | 1 - ...s-8313efad.js => vendor-axios-1f03ee31.js} | 2 +- ...1a47ba.js => vendor-bootstrap-038cab7c.js} | 2 +- ...6a6474b3.js => vendor-chartjs-1398beb1.js} | 2 +- ...{vendor-ad7c30fd.js => vendor-ea36120f.js} | 72 +-- .../assets/vendor-fortawesome-433470db.js | 569 ++++++++++++++++++ .../assets/vendor-fortawesome-9d7cfdfb.js | 569 ------------------ ...-f04b6372.js => vendor-jquery-48e02303.js} | 2 +- ...a8ac2.js => vendor-sortablejs-c6aaccb3.js} | 2 +- web/settings/index.html | 16 +- 272 files changed, 852 insertions(+), 861 deletions(-) rename web/settings/assets/{ChargeLog-b1c57fa6.js => ChargeLog-7f7c5fe2.js} (60%) create mode 100644 web/settings/assets/ChargePointInstallation-408ee2ed.js delete mode 100644 web/settings/assets/ChargePointInstallation-7e51ce35.js create mode 100644 web/settings/assets/Chart-bf602480.js delete mode 100644 web/settings/assets/Chart-cfe16b91.js rename web/settings/assets/{CloudConfig-9ce250e8.js => CloudConfig-c17b71a6.js} (93%) rename web/settings/assets/{DataManagement-714df651.js => DataManagement-f14600c5.js} (88%) delete mode 100644 web/settings/assets/DebugConfig-8637145c.js create mode 100644 web/settings/assets/DebugConfig-ee93cd2f.js rename web/settings/assets/{GeneralChargeConfig-5075da0e.js => GeneralChargeConfig-401ab7d4.js} (88%) create mode 100644 web/settings/assets/GeneralConfig-b0e93144.js delete mode 100644 web/settings/assets/GeneralConfig-bc70f34a.js create mode 100644 web/settings/assets/HardwareInstallation-3a644290.js delete mode 100644 web/settings/assets/HardwareInstallation-727b5962.js delete mode 100644 web/settings/assets/InstallAssistant-01649aee.js create mode 100644 web/settings/assets/InstallAssistant-06ef733c.js rename web/settings/assets/{InstallAssistantStep0-4eb59c03.js => InstallAssistantStep0-e773f28e.js} (85%) rename web/settings/assets/{InstallAssistantStep1-7532f4ad.js => InstallAssistantStep1-e0d32a00.js} (75%) rename web/settings/assets/{InstallAssistantStep10-b5154c47.js => InstallAssistantStep10-1b3e0f38.js} (75%) rename web/settings/assets/{InstallAssistantStep2-97ea4181.js => InstallAssistantStep2-50ad5d87.js} (68%) create mode 100644 web/settings/assets/InstallAssistantStep3-ac7124e1.js delete mode 100644 web/settings/assets/InstallAssistantStep3-d28da6cc.js rename web/settings/assets/{InstallAssistantStep4-b80669cd.js => InstallAssistantStep4-b1f7c847.js} (83%) rename web/settings/assets/{InstallAssistantStep5-f3c200c9.js => InstallAssistantStep5-133577c4.js} (82%) rename web/settings/assets/{InstallAssistantStep6-0eab35fd.js => InstallAssistantStep6-fe6bd91e.js} (86%) rename web/settings/assets/{InstallAssistantStep7-8b2d70ea.js => InstallAssistantStep7-51125106.js} (83%) rename web/settings/assets/{InstallAssistantStep8-d0a57c9f.js => InstallAssistantStep8-1047f636.js} (77%) rename web/settings/assets/{InstallAssistantStep9-26ed6631.js => InstallAssistantStep9-bd70c725.js} (77%) rename web/settings/assets/{InstallAssistantStepTemplate-d8d588b6.js => InstallAssistantStepTemplate-3bdc8973.js} (78%) rename web/settings/assets/{InstantChargeConfig-bb769188.js => InstantChargeConfig-8da1d692.js} (78%) delete mode 100644 web/settings/assets/IoConfig-bc616ac4.js rename web/settings/assets/{LegalSettings-0d86ce7f.js => LegalSettings-0ab5ea05.js} (83%) rename web/settings/assets/{LoadManagementConfig-d6d290f9.js => LoadManagementConfig-c15dfafe.js} (93%) rename web/settings/assets/{MqttBridgeConfig-80ff6fb3.js => MqttBridgeConfig-74fa4482.js} (90%) delete mode 100644 web/settings/assets/OpenwbIoPattern-278f5a90.js delete mode 100644 web/settings/assets/OpenwbIoPattern-a1d251cc.css delete mode 100644 web/settings/assets/OpenwbIoSinglePattern-83dbc24c.js delete mode 100644 web/settings/assets/OpenwbIoSinglePattern-e689840a.css rename web/settings/assets/{OpenwbSortableList-13147a4b.js => OpenwbSortableList-bde71f66.js} (65%) rename web/settings/assets/{OptionalComponents-8819b9a1.js => OptionalComponents-f79f9835.js} (92%) delete mode 100644 web/settings/assets/PVChargeConfig-2c281c8b.js create mode 100644 web/settings/assets/PVChargeConfig-c750b618.js rename web/settings/assets/{ScheduledChargeConfig-9a450d65.js => ScheduledChargeConfig-85a95906.js} (90%) delete mode 100644 web/settings/assets/Status-255f6f61.css create mode 100644 web/settings/assets/Status-3484f650.js create mode 100644 web/settings/assets/Status-9ecf39ed.css delete mode 100644 web/settings/assets/Status-ae50cd10.js rename web/settings/assets/{Support-cb0a82f9.js => Support-aeee7674.js} (89%) create mode 100644 web/settings/assets/System-20e6cb5e.js delete mode 100644 web/settings/assets/System-71b2e67e.js create mode 100644 web/settings/assets/TestingStore-96106450.js delete mode 100644 web/settings/assets/TestingStore-e8ef24a7.js rename web/settings/assets/{TimeChargeConfig-1a5d2dde.js => TimeChargeConfig-d3210f64.js} (84%) rename web/settings/assets/{VehicleConfig-e49e5ddc.js => VehicleConfig-a49bda81.js} (85%) rename web/settings/assets/{backup_cloud-42fd7d1e.js => backup_cloud-30cf5664.js} (70%) rename web/settings/assets/{backup_cloud-cbe0285e.js => backup_cloud-30fea215.js} (89%) rename web/settings/assets/{backup_cloud-b4673e75.js => backup_cloud-b39f2e48.js} (64%) rename web/settings/assets/{backup_cloud-36fc78b8.js => backup_cloud-c3181aad.js} (81%) rename web/settings/assets/{bat-e525273f.js => bat-09e11c39.js} (60%) rename web/settings/assets/{bat-53f2b2dc.js => bat-13f506c4.js} (63%) rename web/settings/assets/{bat-8276d217.js => bat-1c531740.js} (64%) rename web/settings/assets/{bat-515bb8b9.js => bat-434d0404.js} (63%) rename web/settings/assets/{bat-96814af1.js => bat-47aea623.js} (58%) rename web/settings/assets/{bat-7e2bb1f0.js => bat-508dda8e.js} (67%) rename web/settings/assets/{bat-46ed5214.js => bat-5bcb481a.js} (83%) rename web/settings/assets/{bat-b0b74fda.js => bat-5d80d1b1.js} (63%) rename web/settings/assets/{bat-00ee042f.js => bat-5d86d2d0.js} (84%) rename web/settings/assets/{bat-8ecd087b.js => bat-655f55cd.js} (59%) rename web/settings/assets/{bat-41f81d7c.js => bat-6ae70208.js} (64%) rename web/settings/assets/{bat-161a0b3f.js => bat-845b945a.js} (63%) rename web/settings/assets/{bat-b13c576b.js => bat-8885d269.js} (72%) rename web/settings/assets/{bat-500fac88.js => bat-a09a1026.js} (61%) rename web/settings/assets/{bat-b04f324c.js => bat-b459c554.js} (68%) rename web/settings/assets/{bat-09618e87.js => bat-ba97b9ec.js} (64%) rename web/settings/assets/{bat-177cd510.js => bat-c05ee012.js} (63%) rename web/settings/assets/{bat-386b6a71.js => bat-d47d1fd1.js} (64%) rename web/settings/assets/{bat-575ac984.js => bat-d9cdd38d.js} (80%) rename web/settings/assets/{bat-8eeb809e.js => bat-e36a210d.js} (62%) rename web/settings/assets/{bat_smart_energy-99926987.js => bat_smart_energy-8db62ce9.js} (59%) rename web/settings/assets/{chargePoint-5487f7d8.js => chargePoint-542a9664.js} (59%) rename web/settings/assets/{chargePoint-f1ddcbb4.js => chargePoint-6c271d6b.js} (72%) rename web/settings/assets/{chargePoint-3eb75766.js => chargePoint-776647d8.js} (94%) rename web/settings/assets/{chargePoint-57970a5b.js => chargePoint-84c8e28d.js} (59%) rename web/settings/assets/{chargePoint-e13a3df6.js => chargePoint-ba464cf4.js} (78%) rename web/settings/assets/{chargePoint-d73403a3.js => chargePoint-e230a14a.js} (72%) rename web/settings/assets/{chargePoint-61378497.js => chargePoint-f16b10ce.js} (72%) rename web/settings/assets/{commands-f10e74ce.js => commands-38fd7ea5.js} (86%) rename web/settings/assets/{commands-ae4d3051.js => commands-b3575711.js} (84%) rename web/settings/assets/{consumption_counter-d132c159.js => consumption_counter-704c01f7.js} (75%) rename web/settings/assets/{counter-40260f20.js => counter-00141858.js} (60%) delete mode 100644 web/settings/assets/counter-01848dd0.js rename web/settings/assets/{counter-b5c55995.js => counter-018e7196.js} (64%) rename web/settings/assets/{counter-70674361.js => counter-19e7f139.js} (64%) create mode 100644 web/settings/assets/counter-1b273ac4.js delete mode 100644 web/settings/assets/counter-32cca269.js rename web/settings/assets/{counter-021c90c7.js => counter-3492fd19.js} (71%) rename web/settings/assets/{counter-11d67ba8.js => counter-394e8014.js} (63%) rename web/settings/assets/{counter-ffe6f59d.js => counter-40d2f2a6.js} (90%) rename web/settings/assets/{counter-c4ea528f.js => counter-48217739.js} (61%) rename web/settings/assets/{counter-0e51da5e.js => counter-55c27daf.js} (65%) rename web/settings/assets/{counter-f257201f.js => counter-5a3251ce.js} (57%) delete mode 100644 web/settings/assets/counter-5bbed3f1.js rename web/settings/assets/{counter-c0fbd699.js => counter-7311f96b.js} (92%) rename web/settings/assets/{counter-48702b69.js => counter-75e3d92e.js} (72%) rename web/settings/assets/{counter-1306a4c6.js => counter-7668209b.js} (63%) delete mode 100644 web/settings/assets/counter-76ed3a15.js rename web/settings/assets/{counter-de0030ac.js => counter-76eff543.js} (58%) create mode 100644 web/settings/assets/counter-7a033879.js rename web/settings/assets/{counter-986853af.js => counter-8520ea8e.js} (62%) rename web/settings/assets/{counter-dd217c03.js => counter-8b96457f.js} (63%) rename web/settings/assets/{counter-28bcfaac.js => counter-8d45ef9c.js} (87%) rename web/settings/assets/{counter-2d03ca61.js => counter-958da48c.js} (78%) rename web/settings/assets/{counter-6c87b676.js => counter-95bdcdb7.js} (71%) rename web/settings/assets/{counter-9e94ca6b.js => counter-a31f5e7d.js} (75%) rename web/settings/assets/{counter-7680421b.js => counter-ab315ba3.js} (59%) create mode 100644 web/settings/assets/counter-aed75c81.js create mode 100644 web/settings/assets/counter-b03c0db9.js rename web/settings/assets/{counter-d04c382b.js => counter-bef0b821.js} (64%) rename web/settings/assets/{counter-a6252054.js => counter-ccad25ea.js} (65%) rename web/settings/assets/{counter-dddfcee5.js => counter-cfb2a7aa.js} (72%) rename web/settings/assets/{counter-d193f9cd.js => counter-d1809224.js} (67%) rename web/settings/assets/{counter-09ee9f20.js => counter-d5ce341d.js} (53%) rename web/settings/assets/{counter-fea14072.js => counter-f0638cd4.js} (77%) rename web/settings/assets/{counter-b7f323cc.js => counter-fa232f15.js} (62%) rename web/settings/assets/{counter_sm-dd8aa57c.js => counter_sm-66058b82.js} (81%) rename web/settings/assets/{device-6dfe8cd8.js => device-04b7418e.js} (71%) rename web/settings/assets/{device-82bb06d6.js => device-123cfe52.js} (61%) rename web/settings/assets/{device-72bc8ff3.js => device-1565347a.js} (74%) rename web/settings/assets/{device-6dd461c4.js => device-1830d04b.js} (58%) rename web/settings/assets/{device-ee4fe242.js => device-1b11a3ea.js} (79%) rename web/settings/assets/{device-d74725ec.js => device-23e00b31.js} (79%) rename web/settings/assets/{device-b9b6be03.js => device-249da548.js} (50%) rename web/settings/assets/{device-2c344b3e.js => device-264114d8.js} (50%) rename web/settings/assets/{device-0d49a26c.js => device-2f945435.js} (65%) rename web/settings/assets/{device-342a235f.js => device-30d7c2e0.js} (64%) rename web/settings/assets/{device-45cfa872.js => device-31e5797e.js} (65%) rename web/settings/assets/{device-d32f448c.js => device-3435a852.js} (61%) rename web/settings/assets/{device-e80c7a1a.js => device-354918a0.js} (69%) rename web/settings/assets/{device-8b9db644.js => device-357d44c6.js} (77%) rename web/settings/assets/{device-fec30c56.js => device-3be14789.js} (65%) rename web/settings/assets/{device-429cae7c.js => device-3d86bc85.js} (70%) rename web/settings/assets/{device-9eedaff7.js => device-3e5adae7.js} (62%) rename web/settings/assets/{device-93509dc9.js => device-3f9eff90.js} (65%) rename web/settings/assets/{device-1497b5e4.js => device-45df0691.js} (71%) rename web/settings/assets/{device-5a5c2204.js => device-4c55f797.js} (70%) rename web/settings/assets/{device-9684db49.js => device-4e960663.js} (69%) rename web/settings/assets/{device-aa0e176c.js => device-4f5bf65a.js} (60%) rename web/settings/assets/{device-240bbfb8.js => device-4f7aad98.js} (63%) rename web/settings/assets/{device-13f0437c.js => device-509a4ac4.js} (73%) rename web/settings/assets/{device-e6d1ff67.js => device-52c218d2.js} (66%) rename web/settings/assets/{device-e3878572.js => device-54f1a203.js} (69%) rename web/settings/assets/{device-21c38268.js => device-5cc2cdfa.js} (66%) rename web/settings/assets/{device-1e200cbf.js => device-5ceb63e9.js} (63%) rename web/settings/assets/{device-1ad34ad2.js => device-653a19f8.js} (80%) rename web/settings/assets/{device-45781f1b.js => device-6656b07f.js} (58%) rename web/settings/assets/{device-35241d4e.js => device-6659803e.js} (68%) rename web/settings/assets/{device-5fd78306.js => device-67811713.js} (74%) rename web/settings/assets/{device-eaa956ad.js => device-7075a0a8.js} (50%) rename web/settings/assets/{device-8c80f180.js => device-716c4065.js} (88%) rename web/settings/assets/{device-55bb825c.js => device-7f7452f2.js} (61%) rename web/settings/assets/{device-55249d75.js => device-88e6829b.js} (73%) rename web/settings/assets/{device-e7442473.js => device-8c5dabb3.js} (61%) rename web/settings/assets/{device-11f6d869.js => device-8c6a7cd7.js} (69%) rename web/settings/assets/{device-1950c8ef.js => device-8de467ac.js} (78%) rename web/settings/assets/{device-e51f6a05.js => device-906beffa.js} (64%) rename web/settings/assets/{device-8a67a9ec.js => device-968183c7.js} (61%) rename web/settings/assets/{device-5e15f44e.js => device-9749c9e1.js} (63%) rename web/settings/assets/{device-e89043ef.js => device-99900f00.js} (80%) rename web/settings/assets/{device-1cc75082.js => device-99e093c0.js} (80%) rename web/settings/assets/{device-92ff8214.js => device-9befb1d4.js} (67%) rename web/settings/assets/{device-f7b12563.js => device-a0c4f59d.js} (62%) rename web/settings/assets/{device-dc895585.js => device-a319d4b6.js} (88%) rename web/settings/assets/{device-2144978c.js => device-a9846396.js} (72%) rename web/settings/assets/{device-86f7621f.js => device-aacbf2a5.js} (73%) rename web/settings/assets/{device-cc6d1d33.js => device-ae68eae2.js} (86%) rename web/settings/assets/{device-d1bfd3f3.js => device-b21c21f9.js} (80%) rename web/settings/assets/{device-6dfeff1b.js => device-c61fae76.js} (74%) rename web/settings/assets/{device-8dcea009.js => device-c8cf6368.js} (68%) rename web/settings/assets/{device-ebfe2885.js => device-d1c48c2c.js} (74%) rename web/settings/assets/{device-e6a31e33.js => device-dbe167d8.js} (73%) rename web/settings/assets/{device-d85f27a1.js => device-dd9fc66e.js} (50%) rename web/settings/assets/{device-8bba052a.js => device-e29a0ff7.js} (76%) rename web/settings/assets/{device-94d6b50f.js => device-e44ec84b.js} (83%) rename web/settings/assets/{device-961ae78d.js => device-eb9518f3.js} (69%) rename web/settings/assets/{device-f71805ce.js => device-f0eb9f12.js} (62%) rename web/settings/assets/{device-9a79e89c.js => device-f1c2a7a5.js} (69%) rename web/settings/assets/{device-f82ddafe.js => device-f3f81832.js} (70%) rename web/settings/assets/{device-68b75b5b.js => device-fcda5bd2.js} (65%) rename web/settings/assets/{device-69185b02.js => device-fd0ed77c.js} (78%) rename web/settings/assets/{displayTheme-575345bd.js => displayTheme-1e1ee4eb.js} (77%) rename web/settings/assets/{displayTheme-95f1ddf2.js => displayTheme-64a8b4a0.js} (92%) rename web/settings/assets/{electricity_tariff-6bcc7f9b.js => electricity_tariff-0c46c1ec.js} (66%) rename web/settings/assets/{electricity_tariff-5e7da4e9.js => electricity_tariff-0d285d7d.js} (70%) rename web/settings/assets/{electricity_tariff-5562646b.js => electricity_tariff-4d29c538.js} (86%) rename web/settings/assets/{electricity_tariff-388476a3.js => electricity_tariff-8330f492.js} (57%) rename web/settings/assets/{electricity_tariff-91c588df.js => electricity_tariff-a0cf3a14.js} (74%) rename web/settings/assets/{external_inverter-e76b5192.js => external_inverter-19cf6472.js} (82%) delete mode 100644 web/settings/assets/index-b236cee5.js create mode 100644 web/settings/assets/index-cc8f65ba.js rename web/settings/assets/{inverter-66844342.js => inverter-0931beee.js} (73%) rename web/settings/assets/{inverter-c852411a.js => inverter-0dee4ab1.js} (66%) rename web/settings/assets/{inverter-1a290548.js => inverter-1e549543.js} (63%) rename web/settings/assets/{inverter-ff72f261.js => inverter-1eaedb65.js} (67%) rename web/settings/assets/{inverter-fb891ee4.js => inverter-25109ec8.js} (61%) rename web/settings/assets/{inverter-e972f9b7.js => inverter-2d9123ee.js} (65%) rename web/settings/assets/{inverter-a66b9919.js => inverter-30cf9ccf.js} (68%) rename web/settings/assets/{inverter-62f3baf9.js => inverter-39ce3cb1.js} (63%) rename web/settings/assets/{inverter-b8e6f7ca.js => inverter-456adc79.js} (58%) rename web/settings/assets/{inverter-dddc65f7.js => inverter-498c1656.js} (62%) rename web/settings/assets/{inverter-1632a4b1.js => inverter-4a2cdfd9.js} (65%) delete mode 100644 web/settings/assets/inverter-50a72e83.js create mode 100644 web/settings/assets/inverter-5571eba7.js rename web/settings/assets/{inverter-cbcef859.js => inverter-6157a590.js} (76%) rename web/settings/assets/{inverter-2e18bb9f.js => inverter-617b5e4a.js} (75%) rename web/settings/assets/{inverter-4cc98b34.js => inverter-62de90f4.js} (63%) rename web/settings/assets/{inverter-29c8bc0a.js => inverter-68f31134.js} (64%) rename web/settings/assets/{inverter-1170f457.js => inverter-82378537.js} (67%) rename web/settings/assets/{inverter-387e64b9.js => inverter-896676a9.js} (67%) rename web/settings/assets/{inverter-b76a9fda.js => inverter-997c828c.js} (64%) delete mode 100644 web/settings/assets/inverter-9c2adc35.js rename web/settings/assets/{inverter-f5f1a5c8.js => inverter-a427739c.js} (82%) rename web/settings/assets/{inverter-407f4ad4.js => inverter-c0d3b643.js} (78%) rename web/settings/assets/{inverter-5009ea23.js => inverter-c1990994.js} (65%) rename web/settings/assets/{inverter-8ea576fa.js => inverter-cad24111.js} (72%) rename web/settings/assets/{inverter-6cea7a86.js => inverter-d75d32f1.js} (68%) rename web/settings/assets/{inverter-a8875bde.js => inverter-db7c45b0.js} (78%) rename web/settings/assets/{inverter-ce8f0bd6.js => inverter-e8d6d647.js} (66%) rename web/settings/assets/{inverter-6dedf2c0.js => inverter-f287a1d4.js} (71%) rename web/settings/assets/{inverter-e9bb7891.js => inverter-f413f2e1.js} (60%) create mode 100644 web/settings/assets/inverter-f447aa74.js rename web/settings/assets/{inverter-991c91e3.js => inverter-f9eaf59e.js} (53%) rename web/settings/assets/{inverter_secondary-987240b8.js => inverter_secondary-daf65789.js} (78%) delete mode 100644 web/settings/assets/io_action-15f350b8.js delete mode 100644 web/settings/assets/io_action-465b927d.js delete mode 100644 web/settings/assets/io_action-def63b3b.js delete mode 100644 web/settings/assets/io_action-f16988cb.js delete mode 100644 web/settings/assets/io_device-6aded7c0.js delete mode 100644 web/settings/assets/io_device-a553d2c1.js rename web/settings/assets/{monitoring-df87d8aa.js => monitoring-f3474b05.js} (81%) create mode 100644 web/settings/assets/ripple_control_receiver-14c898b9.js create mode 100644 web/settings/assets/ripple_control_receiver-cd0099ce.js rename web/settings/assets/{vehicle-9213f7f9.js => vehicle-0951b87d.js} (68%) rename web/settings/assets/{vehicle-0cab1a3e.js => vehicle-0f1f6912.js} (84%) delete mode 100644 web/settings/assets/vehicle-18edee3a.js rename web/settings/assets/{vehicle-711a16c0.js => vehicle-1c25409c.js} (82%) create mode 100644 web/settings/assets/vehicle-1fd068b4.js rename web/settings/assets/{vehicle-d5f5aff5.js => vehicle-28d453ca.js} (75%) rename web/settings/assets/{vehicle-048a17cd.js => vehicle-2da6d3ec.js} (90%) rename web/settings/assets/{vehicle-5227ffda.js => vehicle-47a5b0e6.js} (75%) rename web/settings/assets/{vehicle-3f811862.js => vehicle-47f7fadf.js} (64%) rename web/settings/assets/{vehicle-e12b30b1.js => vehicle-561e20d5.js} (74%) rename web/settings/assets/{vehicle-d18e5ce2.js => vehicle-56b45282.js} (81%) rename web/settings/assets/{vehicle-865f01e8.js => vehicle-5cb1a571.js} (66%) rename web/settings/assets/{vehicle-c305e7fc.js => vehicle-5d229e55.js} (65%) rename web/settings/assets/{vehicle-7ee8a745.js => vehicle-74dc0824.js} (84%) rename web/settings/assets/{vehicle-dfe6b66d.js => vehicle-837ef917.js} (87%) rename web/settings/assets/{vehicle-14a72276.js => vehicle-9a78a8ba.js} (64%) rename web/settings/assets/{vehicle-6006f37f.js => vehicle-9fdd28f6.js} (91%) rename web/settings/assets/{vehicle-b63b1879.js => vehicle-b464d124.js} (79%) rename web/settings/assets/{vehicle-2530ac78.js => vehicle-da54a31e.js} (69%) rename web/settings/assets/{vehicle-94956e80.js => vehicle-f595aaa1.js} (77%) create mode 100644 web/settings/assets/vendor-3a7c342f.css delete mode 100644 web/settings/assets/vendor-aab9f734.css rename web/settings/assets/{vendor-axios-8313efad.js => vendor-axios-1f03ee31.js} (99%) rename web/settings/assets/{vendor-bootstrap-a61a47ba.js => vendor-bootstrap-038cab7c.js} (99%) rename web/settings/assets/{vendor-chartjs-6a6474b3.js => vendor-chartjs-1398beb1.js} (99%) rename web/settings/assets/{vendor-ad7c30fd.js => vendor-ea36120f.js} (89%) create mode 100644 web/settings/assets/vendor-fortawesome-433470db.js delete mode 100644 web/settings/assets/vendor-fortawesome-9d7cfdfb.js rename web/settings/assets/{vendor-jquery-f04b6372.js => vendor-jquery-48e02303.js} (99%) rename web/settings/assets/{vendor-sortablejs-20ba8ac2.js => vendor-sortablejs-c6aaccb3.js} (99%) diff --git a/web/settings/assets/ChargeLog-b1c57fa6.js b/web/settings/assets/ChargeLog-7f7c5fe2.js similarity index 60% rename from web/settings/assets/ChargeLog-b1c57fa6.js rename to web/settings/assets/ChargeLog-7f7c5fe2.js index 203d9b0adc..cd5bb5a5e7 100644 --- a/web/settings/assets/ChargeLog-b1c57fa6.js +++ b/web/settings/assets/ChargeLog-7f7c5fe2.js @@ -1,3 +1,3 @@ -import{l as N,a1 as k,a2 as x,F as B}from"./vendor-fortawesome-9d7cfdfb.js";import{_ as E,a0 as S,u as h,l as u,m as c,G as g,E as s,A as i,x as V,z as I,B as d,F as n,P as _,q as w}from"./vendor-ad7c30fd.js";import{C as W}from"./index-b236cee5.js";import"./vendor-sortablejs-20ba8ac2.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";N.add(k,x);const F={name:"OpenwbChargeLogView",components:{Vue3TableLite:S,FontAwesomeIcon:B},mixins:[W],emits:["sendCommand"],data(){return{dateTimeFormat:new Intl.DateTimeFormat("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/charge_log_data_config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],tag:[],chargemode:[],prio:void 0}}},downloadFile:null,table:{messages:{pagingInfo:"Einträge {0}-{1} von {2}",pageSizeChangeLabel:"Einträge:",gotoPageLabel:" Gehe zu:",noDataAvailable:"Keine Einträge gefunden."},pageOptions:[{value:5,text:"5"},{value:10,text:"10"},{value:25,text:"25"},{value:50,text:"50"},{value:100,text:"100"}],columns:[{label:"Beginn",field:"time_begin",sortable:!0},{label:"Ende",field:"time_end",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0},{label:"Kosten",field:"data_costs",sortable:!0},{label:"Energieaufteilung",field:"data_power_source",sortable:!1},{label:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0},{label:"Priorität",field:"vehicle_prio",sortable:!0},{label:"ID-Tag",field:"vehicle_rfid",sortable:!0},{label:"SoC Beginn",field:"vehicle_soc_at_start",sortable:!0},{label:"SoC Ende",field:"vehicle_soc_at_end",sortable:!0},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Seriennummer",field:"chargepoint_serial_number",sortable:!0},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0},{label:"Zähler Beginn",field:"chargepoint_imported_at_start",sortable:!0},{label:"Zähler Ende",field:"chargepoint_imported_at_end",sortable:!0}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1},{label:"Energie",field:"imported_since_mode_switch",sortable:!1},{label:"Reichweite",field:"range_charged",sortable:!1},{label:"Kosten",field:"costs",sortable:!1}]}}},computed:{mqttClientId(){return this.$root.mqttClientId},baseUrl(){const t=parseInt(location.port)||(location.protocol==="https:"?443:80);return`${location.protocol}//${location.hostname}:${t}/openWB/web/settings/downloadChargeLog.php`},downloadUrlMonth(){return!this.chargeLogRequestData.year||!this.chargeLogRequestData.month?(console.error("Fehlende Parameter für Monat oder Jahr"),null):`${this.baseUrl}?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},downloadUrlYear(){return this.chargeLogRequestData.year?`${this.baseUrl}?year=${this.chargeLogRequestData.year}`:(console.error("Fehlendes Jahr"),null)},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(t){let e=t.split("-");this.chargeLogRequestData.year=e[0],this.chargeLogRequestData.month=e[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogColumns(){return this.table.columns.map(t=>({...t,headerClasses:this.addClasses(t.field),columnClasses:this.addClasses(t.field)}))},chargeLogDataset:{get(){if(this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]==null)return[];try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(t=>{var e=Date.parse(t.time.begin),o=Date.parse(t.time.end);return{chargepoint_id:t.chargepoint.id,chargepoint_name:t.chargepoint.name,chargepoint_imported_at_start:t.chargepoint.imported_at_start,chargepoint_imported_at_end:t.chargepoint.imported_at_end,chargepoint_serial_number:t.chargepoint.serial_number,vehicle_id:t.vehicle.id,vehicle_name:t.vehicle.name,vehicle_chargemode:this.translateChargeMode(t.vehicle.chargemode),vehicle_rfid:t.vehicle.rfid,vehicle_prio:t.vehicle.prio,vehicle_soc_at_start:t.vehicle.soc_at_start,vehicle_soc_at_end:t.vehicle.soc_at_end,vehicle_range_at_start:t.vehicle.range_at_start,vehicle_range_at_end:t.vehicle.range_at_end,timestamp_begin:e/1e3,time_begin:isNaN(e)?null:this.dateTimeFormat.format(new Date(e)),timestamp_end:o/1e3,time_end:isNaN(o)?null:this.dateTimeFormat.format(new Date(o)),time_time_charged:t.time.time_charged,data_power_source:t.data.power_source?{pv:t.data.power_source.pv*100,grid:t.data.power_source.grid*100,bat:t.data.power_source.bat*100,cp:t.data.power_source.cp*100}:void 0,data_range_charged:t.data.range_charged,data_costs:t.data.costs,data_imported_since_plugged:t.data.imported_since_plugged,data_imported_since_mode_switch:t.data.imported_since_mode_switch}})}catch(t){return console.error(t),[]}}},chargeLogCsv:{get(){return[['"Beginn"','"Ende"','"Zeitstempel Beginn"','"Zeitstempel Ende"','"Dauer"','"Kosten"','"Energieanteil Netz"','"Energieanteil Ladepunkte"','"Energieanteil Speicher"','"Energieanteil PV"','"Fahrzeug"','"Fahrzeug-ID"','"Lademodus"','"Priorität"','"ID-Tag"','"SoC Beginn"','"SoC Ende"','"Reichweite Beginn"','"Reichweite Ende"','"Ladepunkt"','"Ladepunkt-ID"','"Zähler Seriennummer"','"Energie"','"Reichweite"','"Zählerstand Beginn"','"Zählerstand Ende"','"Energie seit Anstecken"'],...this.chargeLogDataset.map(e=>[e.time_begin==null?"":'"'+e.time_begin+'"',e.time_end==null?"":'"'+e.time_end+'"',e.timestamp_begin==null||isNaN(e.timestamp_begin)?"":e.timestamp_begin,e.timestamp_end==null||isNaN(e.timestamp_end)?"":e.timestamp_end,'"'+e.time_time_charged+'"',this.formatCosts(e.data_costs,!1),e.data_power_source==null?"":this.formatNumber(e.data_power_source.grid,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.cp,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.bat,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.pv,2),'"'+e.vehicle_name+'"',e.vehicle_id,'"'+e.vehicle_chargemode+'"','"'+this.formatBool(e.vehicle_prio)+'"',e.vehicle_rfid==null?"":'"'+e.vehicle_rfid+'"',e.vehicle_soc_at_start==null?"":this.formatNumber(e.vehicle_soc_at_start,0),e.vehicle_soc_at_end==null?"":this.formatNumber(e.vehicle_soc_at_end,0),e.vehicle_range_at_start==null?"":this.formatNumber(e.vehicle_range_at_start,0),e.vehicle_range_at_end==null?"":this.formatNumber(e.vehicle_range_at_end,0),'"'+e.chargepoint_name+'"',e.chargepoint_id,e.chargepoint_serial_number==null?"":'"'+e.chargepoint_serial_number+'"',this.formatNumber(e.data_imported_since_mode_switch/1e3,2),this.formatNumber(e.data_range_charged,0),this.formatNumber(e.chargepoint_imported_at_start/1e3,2),this.formatNumber(e.chargepoint_imported_at_end/1e3,2),this.formatNumber(e.data_imported_since_plugged/1e3,2)])].map(e=>e.join(";")).join(` +import{l as N,Z as k,_ as x,F as B}from"./vendor-fortawesome-433470db.js";import{_ as E,a0 as S,u as h,l as u,m as c,G as g,E as s,x as i,z as V,B as I,y as d,F as n,P as _,q as w}from"./vendor-ea36120f.js";import{C as W}from"./index-cc8f65ba.js";import"./vendor-sortablejs-c6aaccb3.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";N.add(k,x);const F={name:"OpenwbChargeLogView",components:{Vue3TableLite:S,FontAwesomeIcon:B},mixins:[W],emits:["sendCommand"],data(){return{dateTimeFormat:new Intl.DateTimeFormat("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/charge_log_data_config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],tag:[],chargemode:[],prio:void 0}}},downloadFile:null,table:{messages:{pagingInfo:"Einträge {0}-{1} von {2}",pageSizeChangeLabel:"Einträge:",gotoPageLabel:" Gehe zu:",noDataAvailable:"Keine Einträge gefunden."},pageOptions:[{value:5,text:"5"},{value:10,text:"10"},{value:25,text:"25"},{value:50,text:"50"},{value:100,text:"100"}],columns:[{label:"Beginn",field:"time_begin",sortable:!0},{label:"Ende",field:"time_end",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0},{label:"Kosten",field:"data_costs",sortable:!0},{label:"Energieaufteilung",field:"data_power_source",sortable:!1},{label:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0},{label:"Priorität",field:"vehicle_prio",sortable:!0},{label:"ID-Tag",field:"vehicle_rfid",sortable:!0},{label:"SoC Beginn",field:"vehicle_soc_at_start",sortable:!0},{label:"SoC Ende",field:"vehicle_soc_at_end",sortable:!0},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Seriennummer",field:"chargepoint_serial_number",sortable:!0},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0},{label:"Zähler Beginn",field:"chargepoint_imported_at_start",sortable:!0},{label:"Zähler Ende",field:"chargepoint_imported_at_end",sortable:!0}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1},{label:"Energie",field:"imported_since_mode_switch",sortable:!1},{label:"Reichweite",field:"range_charged",sortable:!1},{label:"Kosten",field:"costs",sortable:!1}]}}},computed:{mqttClientId(){return this.$root.mqttClientId},baseUrl(){const t=parseInt(location.port)||(location.protocol==="https:"?443:80);return`${location.protocol}//${location.hostname}:${t}/openWB/web/settings/downloadChargeLog.php`},downloadUrlMonth(){return!this.chargeLogRequestData.year||!this.chargeLogRequestData.month?(console.error("Fehlende Parameter für Monat oder Jahr"),null):`${this.baseUrl}?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},downloadUrlYear(){return this.chargeLogRequestData.year?`${this.baseUrl}?year=${this.chargeLogRequestData.year}`:(console.error("Fehlendes Jahr"),null)},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(t){let e=t.split("-");this.chargeLogRequestData.year=e[0],this.chargeLogRequestData.month=e[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogColumns(){return this.table.columns.map(t=>({...t,headerClasses:this.addClasses(t.field),columnClasses:this.addClasses(t.field)}))},chargeLogDataset:{get(){if(this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]==null)return[];try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(t=>{var e=Date.parse(t.time.begin),o=Date.parse(t.time.end);return{chargepoint_id:t.chargepoint.id,chargepoint_name:t.chargepoint.name,chargepoint_imported_at_start:t.chargepoint.imported_at_start,chargepoint_imported_at_end:t.chargepoint.imported_at_end,chargepoint_serial_number:t.chargepoint.serial_number,vehicle_id:t.vehicle.id,vehicle_name:t.vehicle.name,vehicle_chargemode:this.translateChargeMode(t.vehicle.chargemode),vehicle_rfid:t.vehicle.rfid,vehicle_prio:t.vehicle.prio,vehicle_soc_at_start:t.vehicle.soc_at_start,vehicle_soc_at_end:t.vehicle.soc_at_end,vehicle_range_at_start:t.vehicle.range_at_start,vehicle_range_at_end:t.vehicle.range_at_end,timestamp_begin:e/1e3,time_begin:isNaN(e)?null:this.dateTimeFormat.format(new Date(e)),timestamp_end:o/1e3,time_end:isNaN(o)?null:this.dateTimeFormat.format(new Date(o)),time_time_charged:t.time.time_charged,data_power_source:t.data.power_source?{pv:t.data.power_source.pv*100,grid:t.data.power_source.grid*100,bat:t.data.power_source.bat*100,cp:t.data.power_source.cp*100}:void 0,data_range_charged:t.data.range_charged,data_costs:t.data.costs,data_imported_since_plugged:t.data.imported_since_plugged,data_imported_since_mode_switch:t.data.imported_since_mode_switch}})}catch(t){return console.error(t),[]}}},chargeLogCsv:{get(){return[['"Beginn"','"Ende"','"Zeitstempel Beginn"','"Zeitstempel Ende"','"Dauer"','"Kosten"','"Energieanteil Netz"','"Energieanteil Ladepunkte"','"Energieanteil Speicher"','"Energieanteil PV"','"Fahrzeug"','"Fahrzeug-ID"','"Lademodus"','"Priorität"','"ID-Tag"','"SoC Beginn"','"SoC Ende"','"Reichweite Beginn"','"Reichweite Ende"','"Ladepunkt"','"Ladepunkt-ID"','"Zähler Seriennummer"','"Energie"','"Reichweite"','"Zählerstand Beginn"','"Zählerstand Ende"','"Energie seit Anstecken"'],...this.chargeLogDataset.map(e=>[e.time_begin==null?"":'"'+e.time_begin+'"',e.time_end==null?"":'"'+e.time_end+'"',e.timestamp_begin==null||isNaN(e.timestamp_begin)?"":e.timestamp_begin,e.timestamp_end==null||isNaN(e.timestamp_end)?"":e.timestamp_end,'"'+e.time_time_charged+'"',this.formatCosts(e.data_costs,!1),e.data_power_source==null?"":this.formatNumber(e.data_power_source.grid,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.cp,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.bat,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.pv,2),'"'+e.vehicle_name+'"',e.vehicle_id,'"'+e.vehicle_chargemode+'"','"'+this.formatBool(e.vehicle_prio)+'"',e.vehicle_rfid==null?"":'"'+e.vehicle_rfid+'"',e.vehicle_soc_at_start==null?"":this.formatNumber(e.vehicle_soc_at_start,0),e.vehicle_soc_at_end==null?"":this.formatNumber(e.vehicle_soc_at_end,0),e.vehicle_range_at_start==null?"":this.formatNumber(e.vehicle_range_at_start,0),e.vehicle_range_at_end==null?"":this.formatNumber(e.vehicle_range_at_end,0),'"'+e.chargepoint_name+'"',e.chargepoint_id,e.chargepoint_serial_number==null?"":'"'+e.chargepoint_serial_number+'"',this.formatNumber(e.data_imported_since_mode_switch/1e3,2),this.formatNumber(e.data_range_charged,0),this.formatNumber(e.chargepoint_imported_at_start/1e3,2),this.formatNumber(e.chargepoint_imported_at_end/1e3,2),this.formatNumber(e.data_imported_since_plugged/1e3,2)])].map(e=>e.join(";")).join(` `)+` -`}},chargeLogRead:{get(){return this.chargeLogDataset!=null}},chargeLogHasEntries:{get(){return this.chargeLogDataset==null?!1:this.chargeLogDataset.length>0}},totalRecordCount(){return this.chargeLogDataset.length},chargeModeList(){let t=this.chargeModes.map(e=>({value:e,text:this.translateChargeMode(e)}));return t.unshift({value:void 0,text:"Alle"}),t},chargePointList(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[{value:void 0,text:"Alle"}];for(const[,o]of Object.entries(t))e.push({value:o.id,text:o.name});return e},vehicleList(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[{value:void 0,text:"Alle"}];for(const[o,f]of Object.entries(t)){let l=parseInt(o.match(/\/([0-9]+)\/name$/)[1]);e.push({value:l,text:f})}return e}},beforeMount(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data")},mounted(){const t=new Date;this.currentMonth=this.chargeLogDate=t.getFullYear()+"-"+String(t.getMonth()+1).padStart(2,"0"),this.requestChargeLog()},methods:{cleanRequestData(){"id"in this.chargeLogRequestData.filter.chargepoint&&(this.chargeLogRequestData.filter.chargepoint.id=this.chargeLogRequestData.filter.chargepoint.id.filter(t=>t!=null)),"chargemode"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.chargemode=this.chargeLogRequestData.filter.vehicle.chargemode.filter(t=>t!=null)),"id"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.id=this.chargeLogRequestData.filter.vehicle.id.filter(t=>t!=null))},requestChargeLog(){if(document.forms.chargeLogForm.reportValidity())this.cleanRequestData(),this.$emit("sendCommand",{command:"getChargeLog",data:this.chargeLogRequestData});else{console.warn("form invalid");return}},makeTextFile(t){var e=new Blob([t],{type:"text/csv"});return this.downloadFile!==null&&window.URL.revokeObjectURL(this.downloadFile),this.downloadFile=window.URL.createObjectURL(e),this.downloadFile},downloadChargeLog(){this.$refs.downloadChargeLogLink.setAttribute("download","Ladeprotokoll-"+this.chargeLogDate+".csv"),this.$refs.downloadChargeLogLink.href=this.makeTextFile(this.chargeLogCsv),this.$refs.downloadChargeLogLink.dispatchEvent(new MouseEvent("click"))},addClasses(t){return this.$store.state.mqtt["openWB/general/charge_log_data_config"]!==void 0&&Object.hasOwn(this.$store.state.mqtt["openWB/general/charge_log_data_config"],t)?this.$store.state.mqtt["openWB/general/charge_log_data_config"][t]?[]:["d-none"]:[]},getProgressTitle(t){return`Netz: ${this.formatNumber(t.grid,0,0)}%, Ladepunkte: ${this.formatNumber(t.cp,0,0)}%, Speicher: ${this.formatNumber(t.bat,0,0)}%, PV: ${this.formatNumber(t.pv,0,0)}%`},formatBool(t){return t?"Ja":"Nein"},formatW(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kW":o},formatWh(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kWh":o},formatRange(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"km":o},formatSoc(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"%":o},formatCosts(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,2));return e?o+"€":o},dashIfNotSet(t){return t==null||t==""||t==null?"-":t},getChargeModeClass(t){switch(t){case"Sofort":return"bg-danger";case"PV":return"bg-success";case"Zielladen":return"bg-primary";case"Zeitladen":return"bg-warning";case"Standby":return"bg-secondary";case"Stop":return"bg-dark";default:return console.warn("unknown charge mode:",t),"bg-light"}}}},y={class:"chargeLog"},T={key:0},U={key:1},M={name:"chargeLogForm"},P=["href"],z=["href"],O={key:1},A={class:"td-end"},Z={class:"td-end"},j=["title"],J=["aria-valuenow"],K=["aria-valuenow"],Y=["aria-valuenow"],G=["aria-valuenow"],H={key:1,class:"td-center"},Q={class:"td-end"},X={class:"no-wrap"},$={class:"no-wrap"},ee={class:"td-end"},te={class:"no-wrap"},ae={class:"no-wrap"},re={class:"td-end"},ie={class:"no-wrap"},se={class:"no-wrap"},oe={class:"td-end"},ne={class:"td-end"},le={key:0},de={class:"row justify-content-center"},ge={ref:"downloadChargeLogLink",class:"hide"},he={class:"td-end"},ue={class:"td-end"},ce={class:"td-end"},_e={class:"td-end"};function me(t,e,o,f,l,r){const m=h("openwb-base-alert"),D=h("openwb-base-text-input"),b=h("font-awesome-icon"),C=h("openwb-base-button-group-input"),p=h("openwb-base-select-input"),q=h("openwb-base-array-input"),v=h("openwb-base-card"),L=h("vue3-table-lite"),R=h("openwb-base-click-button");return u(),c("div",y,[t.$store.state.mqtt["openWB/general/extern"]===!0?(u(),c("div",T,[g(m,{subtype:"info"},{default:s(()=>e[13]||(e[13]=[d(' Das Ladeprotokoll ist nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. Du findest alle Ladevorgänge in der openWB, die sich im Steuerungsmodus "primary" befindet. ')])),_:1})])):(u(),c("div",U,[i("form",M,[g(v,{title:"Filter"},{default:s(()=>[g(D,{modelValue:r.chargeLogDate,"onUpdate:modelValue":[e[0]||(e[0]=a=>r.chargeLogDate=a),e[1]||(e[1]=a=>r.requestChargeLog())],title:"Zeitraum",subtype:"month",min:"2018-01","show-quick-buttons":!0,max:l.currentMonth},null,8,["modelValue","max"]),g(v,{title:"Erweiterte Optionen",collapsible:!0,collapsed:!0},{header:s(()=>[g(b,{"fixed-width":"",icon:["fas","filter"]}),e[14]||(e[14]=d(" Erweiterte Optionen "))]),default:s(()=>[g(C,{modelValue:l.chargeLogRequestData.filter.vehicle.prio,"onUpdate:modelValue":[e[2]||(e[2]=a=>l.chargeLogRequestData.filter.vehicle.prio=a),e[3]||(e[3]=a=>r.requestChargeLog())],title:"Priorität",buttons:[{buttonValue:void 0,text:"Alle"},{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"]),g(p,{modelValue:l.chargeLogRequestData.filter.vehicle.chargemode,"onUpdate:modelValue":[e[4]||(e[4]=a=>l.chargeLogRequestData.filter.vehicle.chargemode=a),e[5]||(e[5]=a=>r.requestChargeLog())],title:"Lademodus",multiple:"",options:r.chargeModeList},{help:s(()=>e[15]||(e[15]=[d(" Es können mehrere Elemente ausgewählt werden. ")])),_:1},8,["modelValue","options"]),g(p,{modelValue:l.chargeLogRequestData.filter.chargepoint.id,"onUpdate:modelValue":[e[6]||(e[6]=a=>l.chargeLogRequestData.filter.chargepoint.id=a),e[7]||(e[7]=a=>r.requestChargeLog())],title:"Ladepunkt",multiple:"",options:r.chargePointList},{help:s(()=>e[16]||(e[16]=[d(" Es können mehrere Elemente ausgewählt werden. ")])),_:1},8,["modelValue","options"]),g(p,{modelValue:l.chargeLogRequestData.filter.vehicle.id,"onUpdate:modelValue":[e[8]||(e[8]=a=>l.chargeLogRequestData.filter.vehicle.id=a),e[9]||(e[9]=a=>r.requestChargeLog())],title:"Fahrzeug",multiple:"",options:r.vehicleList},{help:s(()=>e[17]||(e[17]=[d(" Es können mehrere Elemente ausgewählt werden. ")])),_:1},8,["modelValue","options"]),g(q,{modelValue:l.chargeLogRequestData.filter.vehicle.tag,"onUpdate:modelValue":[e[10]||(e[10]=a=>l.chargeLogRequestData.filter.vehicle.tag=a),e[11]||(e[11]=a=>r.requestChargeLog())],title:"ID-Tags"},{help:s(()=>e[18]||(e[18]=[d(" Es können mehrere Tags als Filter verwendet werden. ")])),_:1},8,["modelValue"])]),_:1})]),_:1}),g(m,{subtype:"info"},{default:s(()=>[e[19]||(e[19]=d(" Das Ladeprotokoll kann monatsweise automatisiert über folgende URL abgerufen werden: ")),i("a",{href:r.downloadUrlMonth},n(r.downloadUrlMonth),9,P),e[20]||(e[20]=d()),e[21]||(e[21]=i("br",null,null,-1)),e[22]||(e[22]=d(" Das komplette Ladeprotokoll für das gesamte Jahr kann automatisiert über folgende URL abgerufen werden: ")),i("a",{href:r.downloadUrlYear},n(r.downloadUrlYear),9,z)]),_:1}),r.chargeLogRead?(u(),c("div",O,[g(L,{class:"charge-log-table","is-static-mode":!0,columns:r.chargeLogColumns,rows:r.chargeLogDataset,total:r.totalRecordCount,sortable:l.table.sortable,messages:l.table.messages,"page-options":l.table.pageOptions,limit:25,"is-slot-mode":!0},{time_begin:s(a=>[d(n(r.dashIfNotSet(a.value.time_begin)),1)]),time_end:s(a=>[d(n(r.dashIfNotSet(a.value.time_end)),1)]),time_time_charged:s(a=>[i("div",A,n(a.value.time_time_charged),1)]),data_costs:s(a=>[i("div",Z,n(r.formatCosts(a.value.data_costs)),1)]),data_power_source:s(a=>[a.value.data_power_source?(u(),c("div",{key:0,class:"progress td-center",title:r.getProgressTitle(a.value.data_power_source)},[i("div",{class:"progress-bar bg-danger",role:"progressbar",style:_({width:a.value.data_power_source.grid+"%"}),"aria-valuenow":a.value.data_power_source.grid,"aria-valuemin":"0","aria-valuemax":"100"},null,12,J),i("div",{class:"progress-bar bg-primary",role:"progressbar",style:_({width:a.value.data_power_source.cp+"%"}),"aria-valuenow":a.value.data_power_source.cp,"aria-valuemin":"0","aria-valuemax":"100"},null,12,K),i("div",{class:"progress-bar bg-warning",role:"progressbar",style:_({width:a.value.data_power_source.bat+"%"}),"aria-valuenow":a.value.data_power_source.bat,"aria-valuemin":"0","aria-valuemax":"100"},null,12,Y),i("div",{class:"progress-bar bg-success",role:"progressbar",style:_({width:a.value.data_power_source.pv+"%"}),"aria-valuenow":a.value.data_power_source.pv,"aria-valuemin":"0","aria-valuemax":"100"},null,12,G)],8,j)):(u(),c("div",H," - "))]),vehicle_chargemode:s(a=>[i("div",{class:w(["td-center tag",r.getChargeModeClass(a.value.vehicle_chargemode)])},n(a.value.vehicle_chargemode),3)]),vehicle_prio:s(a=>[i("div",{class:w(["td-center tag",a.value.vehicle_prio?"bg-success":"bg-danger"])},n(r.formatBool(a.value.vehicle_prio)),3)]),vehicle_rfid:s(a=>[d(n(r.dashIfNotSet(a.value.vehicle_rfid)),1)]),vehicle_soc_at_start:s(a=>[i("div",Q,[i("span",X,n(r.formatSoc(a.value.vehicle_soc_at_start)),1),i("span",$," ("+n(r.formatRange(a.value.vehicle_range_at_start))+") ",1)])]),vehicle_soc_at_end:s(a=>[i("div",ee,[i("span",te,n(r.formatSoc(a.value.vehicle_soc_at_end)),1),i("span",ae," ("+n(r.formatRange(a.value.vehicle_range_at_end))+") ",1)])]),chargepoint_name:s(a=>[d(n(r.dashIfNotSet(a.value.chargepoint_name)),1)]),chargepoint_serial_number:s(a=>[d(n(r.dashIfNotSet(a.value.chargepoint_serial_number)),1)]),data_imported_since_mode_switch:s(a=>[i("div",re,[i("span",ie,n(r.formatWh(a.value.data_imported_since_mode_switch)),1),i("span",se," ("+n(r.formatRange(a.value.data_range_charged))+") ",1)])]),chargepoint_imported_at_start:s(a=>[i("div",oe,n(r.formatWh(a.value.chargepoint_imported_at_start)),1)]),chargepoint_imported_at_end:s(a=>[i("div",ne,n(r.formatWh(a.value.chargepoint_imported_at_end)),1)]),_:1},8,["columns","rows","total","sortable","messages","page-options"]),r.totalRecordCount>0?(u(),c("div",le,[i("div",de,[g(R,{class:"col-4 btn-success",onButtonClicked:e[12]||(e[12]=a=>r.downloadChargeLog())},{default:s(()=>[e[24]||(e[24]=d(" Als CSV exportieren ")),g(b,{"fixed-width":"",icon:["fas","download"]})]),_:1}),i("a",ge,null,512)]),e[25]||(e[25]=i("div",{class:"row"},[i("div",{class:"col"},[i("h2",null,"Summe")])],-1)),g(L,{class:"charge-log-totals","is-static-mode":!0,"is-hide-paging":!0,columns:l.totals.columns,rows:r.chargeLogTotals,total:1,"is-slot-mode":!0},{time_charged:s(a=>[i("div",he,n(a.value.time_charged),1)]),imported_since_mode_switch:s(a=>[i("div",ue,n(r.formatWh(a.value.imported_since_mode_switch)),1)]),range_charged:s(a=>[i("div",ce,n(r.formatRange(a.value.range_charged)),1)]),costs:s(a=>[i("div",_e,n(r.formatCosts(a.value.costs)),1)]),_:1},8,["columns","rows"])])):I("",!0)])):(u(),V(m,{key:0,subtype:"info"},{default:s(()=>e[23]||(e[23]=[d(" Es wurden noch keine Daten abgerufen. ")])),_:1}))])]))])}const Ce=E(F,[["render",me],["__scopeId","data-v-8607e7e7"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargeLog.vue"]]);export{Ce as default}; +`}},chargeLogRead:{get(){return this.chargeLogDataset!=null}},chargeLogHasEntries:{get(){return this.chargeLogDataset==null?!1:this.chargeLogDataset.length>0}},totalRecordCount(){return this.chargeLogDataset.length},chargeModeList(){let t=this.chargeModes.map(e=>({value:e,text:this.translateChargeMode(e)}));return t.unshift({value:void 0,text:"Alle"}),t},chargePointList(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[{value:void 0,text:"Alle"}];for(const[,o]of Object.entries(t))e.push({value:o.id,text:o.name});return e},vehicleList(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[{value:void 0,text:"Alle"}];for(const[o,f]of Object.entries(t)){let l=parseInt(o.match(/\/([0-9]+)\/name$/)[1]);e.push({value:l,text:f})}return e}},beforeMount(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data")},mounted(){const t=new Date;this.currentMonth=this.chargeLogDate=t.getFullYear()+"-"+String(t.getMonth()+1).padStart(2,"0"),this.requestChargeLog()},methods:{cleanRequestData(){"id"in this.chargeLogRequestData.filter.chargepoint&&(this.chargeLogRequestData.filter.chargepoint.id=this.chargeLogRequestData.filter.chargepoint.id.filter(t=>t!=null)),"chargemode"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.chargemode=this.chargeLogRequestData.filter.vehicle.chargemode.filter(t=>t!=null)),"id"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.id=this.chargeLogRequestData.filter.vehicle.id.filter(t=>t!=null))},requestChargeLog(){if(document.forms.chargeLogForm.reportValidity())this.cleanRequestData(),this.$emit("sendCommand",{command:"getChargeLog",data:this.chargeLogRequestData});else{console.warn("form invalid");return}},makeTextFile(t){var e=new Blob([t],{type:"text/csv"});return this.downloadFile!==null&&window.URL.revokeObjectURL(this.downloadFile),this.downloadFile=window.URL.createObjectURL(e),this.downloadFile},downloadChargeLog(){this.$refs.downloadChargeLogLink.setAttribute("download","Ladeprotokoll-"+this.chargeLogDate+".csv"),this.$refs.downloadChargeLogLink.href=this.makeTextFile(this.chargeLogCsv),this.$refs.downloadChargeLogLink.dispatchEvent(new MouseEvent("click"))},addClasses(t){return this.$store.state.mqtt["openWB/general/charge_log_data_config"]!==void 0&&Object.hasOwn(this.$store.state.mqtt["openWB/general/charge_log_data_config"],t)?this.$store.state.mqtt["openWB/general/charge_log_data_config"][t]?[]:["d-none"]:[]},getProgressTitle(t){return`Netz: ${this.formatNumber(t.grid,0,0)}%, Ladepunkte: ${this.formatNumber(t.cp,0,0)}%, Speicher: ${this.formatNumber(t.bat,0,0)}%, PV: ${this.formatNumber(t.pv,0,0)}%`},formatBool(t){return t?"Ja":"Nein"},formatW(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kW":o},formatWh(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kWh":o},formatRange(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"km":o},formatSoc(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"%":o},formatCosts(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,2));return e?o+"€":o},dashIfNotSet(t){return t==null||t==""||t==null?"-":t},getChargeModeClass(t){switch(t){case"Sofort":return"bg-danger";case"PV":return"bg-success";case"Zielladen":return"bg-primary";case"Zeitladen":return"bg-warning";case"Standby":return"bg-secondary";case"Stop":return"bg-dark";default:return console.warn("unknown charge mode:",t),"bg-light"}}}},y={class:"chargeLog"},T={key:0},U={key:1},M={name:"chargeLogForm"},P=["href"],z=["href"],O={key:1},Z={class:"td-end"},A={class:"td-end"},j=["title"],J=["aria-valuenow"],K=["aria-valuenow"],Y=["aria-valuenow"],G=["aria-valuenow"],H={key:1,class:"td-center"},Q={class:"td-end"},X={class:"no-wrap"},$={class:"no-wrap"},ee={class:"td-end"},te={class:"no-wrap"},ae={class:"no-wrap"},re={class:"td-end"},ie={class:"no-wrap"},se={class:"no-wrap"},oe={class:"td-end"},ne={class:"td-end"},le={key:0},de={class:"row justify-content-center"},ge={ref:"downloadChargeLogLink",class:"hide"},he={class:"td-end"},ue={class:"td-end"},ce={class:"td-end"},_e={class:"td-end"};function me(t,e,o,f,l,r){const m=h("openwb-base-alert"),D=h("openwb-base-text-input"),b=h("font-awesome-icon"),C=h("openwb-base-button-group-input"),p=h("openwb-base-select-input"),q=h("openwb-base-array-input"),v=h("openwb-base-card"),L=h("vue3-table-lite"),R=h("openwb-base-click-button");return u(),c("div",y,[t.$store.state.mqtt["openWB/general/extern"]===!0?(u(),c("div",T,[g(m,{subtype:"info"},{default:s(()=>e[13]||(e[13]=[d(' Das Ladeprotokoll ist nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. Du findest alle Ladevorgänge in der openWB, die sich im Steuerungsmodus "primary" befindet. ')])),_:1})])):(u(),c("div",U,[i("form",M,[g(v,{title:"Filter"},{default:s(()=>[g(D,{modelValue:r.chargeLogDate,"onUpdate:modelValue":[e[0]||(e[0]=a=>r.chargeLogDate=a),e[1]||(e[1]=a=>r.requestChargeLog())],title:"Zeitraum",subtype:"month",min:"2018-01","show-quick-buttons":!0,max:l.currentMonth},null,8,["modelValue","max"]),g(v,{title:"Erweiterte Optionen",collapsible:!0,collapsed:!0},{header:s(()=>[g(b,{"fixed-width":"",icon:["fas","filter"]}),e[14]||(e[14]=d(" Erweiterte Optionen "))]),default:s(()=>[g(C,{modelValue:l.chargeLogRequestData.filter.vehicle.prio,"onUpdate:modelValue":[e[2]||(e[2]=a=>l.chargeLogRequestData.filter.vehicle.prio=a),e[3]||(e[3]=a=>r.requestChargeLog())],title:"Priorität",buttons:[{buttonValue:void 0,text:"Alle"},{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"]),g(p,{modelValue:l.chargeLogRequestData.filter.vehicle.chargemode,"onUpdate:modelValue":[e[4]||(e[4]=a=>l.chargeLogRequestData.filter.vehicle.chargemode=a),e[5]||(e[5]=a=>r.requestChargeLog())],title:"Lademodus",multiple:"",options:r.chargeModeList},{help:s(()=>e[15]||(e[15]=[d(" Es können mehrere Elemente ausgewählt werden. ")])),_:1},8,["modelValue","options"]),g(p,{modelValue:l.chargeLogRequestData.filter.chargepoint.id,"onUpdate:modelValue":[e[6]||(e[6]=a=>l.chargeLogRequestData.filter.chargepoint.id=a),e[7]||(e[7]=a=>r.requestChargeLog())],title:"Ladepunkt",multiple:"",options:r.chargePointList},{help:s(()=>e[16]||(e[16]=[d(" Es können mehrere Elemente ausgewählt werden. ")])),_:1},8,["modelValue","options"]),g(p,{modelValue:l.chargeLogRequestData.filter.vehicle.id,"onUpdate:modelValue":[e[8]||(e[8]=a=>l.chargeLogRequestData.filter.vehicle.id=a),e[9]||(e[9]=a=>r.requestChargeLog())],title:"Fahrzeug",multiple:"",options:r.vehicleList},{help:s(()=>e[17]||(e[17]=[d(" Es können mehrere Elemente ausgewählt werden. ")])),_:1},8,["modelValue","options"]),g(q,{modelValue:l.chargeLogRequestData.filter.vehicle.tag,"onUpdate:modelValue":[e[10]||(e[10]=a=>l.chargeLogRequestData.filter.vehicle.tag=a),e[11]||(e[11]=a=>r.requestChargeLog())],title:"ID-Tags"},{help:s(()=>e[18]||(e[18]=[d(" Es können mehrere Tags als Filter verwendet werden. ")])),_:1},8,["modelValue"])]),_:1})]),_:1}),g(m,{subtype:"info"},{default:s(()=>[e[19]||(e[19]=d(" Das Ladeprotokoll kann monatsweise automatisiert über folgende URL abgerufen werden: ")),i("a",{href:r.downloadUrlMonth},n(r.downloadUrlMonth),9,P),e[20]||(e[20]=d()),e[21]||(e[21]=i("br",null,null,-1)),e[22]||(e[22]=d(" Das komplette Ladeprotokoll für das gesamte Jahr kann automatisiert über folgende URL abgerufen werden: ")),i("a",{href:r.downloadUrlYear},n(r.downloadUrlYear),9,z)]),_:1}),r.chargeLogRead?(u(),c("div",O,[g(L,{class:"charge-log-table","is-static-mode":!0,columns:r.chargeLogColumns,rows:r.chargeLogDataset,total:r.totalRecordCount,sortable:l.table.sortable,messages:l.table.messages,"page-options":l.table.pageOptions,limit:25,"is-slot-mode":!0},{time_begin:s(a=>[d(n(r.dashIfNotSet(a.value.time_begin)),1)]),time_end:s(a=>[d(n(r.dashIfNotSet(a.value.time_end)),1)]),time_time_charged:s(a=>[i("div",Z,n(a.value.time_time_charged),1)]),data_costs:s(a=>[i("div",A,n(r.formatCosts(a.value.data_costs)),1)]),data_power_source:s(a=>[a.value.data_power_source?(u(),c("div",{key:0,class:"progress td-center",title:r.getProgressTitle(a.value.data_power_source)},[i("div",{class:"progress-bar bg-danger",role:"progressbar",style:_({width:a.value.data_power_source.grid+"%"}),"aria-valuenow":a.value.data_power_source.grid,"aria-valuemin":"0","aria-valuemax":"100"},null,12,J),i("div",{class:"progress-bar bg-primary",role:"progressbar",style:_({width:a.value.data_power_source.cp+"%"}),"aria-valuenow":a.value.data_power_source.cp,"aria-valuemin":"0","aria-valuemax":"100"},null,12,K),i("div",{class:"progress-bar bg-warning",role:"progressbar",style:_({width:a.value.data_power_source.bat+"%"}),"aria-valuenow":a.value.data_power_source.bat,"aria-valuemin":"0","aria-valuemax":"100"},null,12,Y),i("div",{class:"progress-bar bg-success",role:"progressbar",style:_({width:a.value.data_power_source.pv+"%"}),"aria-valuenow":a.value.data_power_source.pv,"aria-valuemin":"0","aria-valuemax":"100"},null,12,G)],8,j)):(u(),c("div",H," - "))]),vehicle_chargemode:s(a=>[i("div",{class:w(["td-center tag",r.getChargeModeClass(a.value.vehicle_chargemode)])},n(a.value.vehicle_chargemode),3)]),vehicle_prio:s(a=>[i("div",{class:w(["td-center tag",a.value.vehicle_prio?"bg-success":"bg-danger"])},n(r.formatBool(a.value.vehicle_prio)),3)]),vehicle_rfid:s(a=>[d(n(r.dashIfNotSet(a.value.vehicle_rfid)),1)]),vehicle_soc_at_start:s(a=>[i("div",Q,[i("span",X,n(r.formatSoc(a.value.vehicle_soc_at_start)),1),i("span",$," ("+n(r.formatRange(a.value.vehicle_range_at_start))+") ",1)])]),vehicle_soc_at_end:s(a=>[i("div",ee,[i("span",te,n(r.formatSoc(a.value.vehicle_soc_at_end)),1),i("span",ae," ("+n(r.formatRange(a.value.vehicle_range_at_end))+") ",1)])]),chargepoint_name:s(a=>[d(n(r.dashIfNotSet(a.value.chargepoint_name)),1)]),chargepoint_serial_number:s(a=>[d(n(r.dashIfNotSet(a.value.chargepoint_serial_number)),1)]),data_imported_since_mode_switch:s(a=>[i("div",re,[i("span",ie,n(r.formatWh(a.value.data_imported_since_mode_switch)),1),i("span",se," ("+n(r.formatRange(a.value.data_range_charged))+") ",1)])]),chargepoint_imported_at_start:s(a=>[i("div",oe,n(r.formatWh(a.value.chargepoint_imported_at_start)),1)]),chargepoint_imported_at_end:s(a=>[i("div",ne,n(r.formatWh(a.value.chargepoint_imported_at_end)),1)]),_:1},8,["columns","rows","total","sortable","messages","page-options"]),r.totalRecordCount>0?(u(),c("div",le,[i("div",de,[g(R,{class:"col-4 btn-success",onButtonClicked:e[12]||(e[12]=a=>r.downloadChargeLog())},{default:s(()=>[e[24]||(e[24]=d(" Als CSV exportieren ")),g(b,{"fixed-width":"",icon:["fas","download"]})]),_:1}),i("a",ge,null,512)]),e[25]||(e[25]=i("div",{class:"row"},[i("div",{class:"col"},[i("h2",null,"Summe")])],-1)),g(L,{class:"charge-log-totals","is-static-mode":!0,"is-hide-paging":!0,columns:l.totals.columns,rows:r.chargeLogTotals,total:1,"is-slot-mode":!0},{time_charged:s(a=>[i("div",he,n(a.value.time_charged),1)]),imported_since_mode_switch:s(a=>[i("div",ue,n(r.formatWh(a.value.imported_since_mode_switch)),1)]),range_charged:s(a=>[i("div",ce,n(r.formatRange(a.value.range_charged)),1)]),costs:s(a=>[i("div",_e,n(r.formatCosts(a.value.costs)),1)]),_:1},8,["columns","rows"])])):I("",!0)])):(u(),V(m,{key:0,subtype:"info"},{default:s(()=>e[23]||(e[23]=[d(" Es wurden noch keine Daten abgerufen. ")])),_:1}))])]))])}const Ce=E(F,[["render",me],["__scopeId","data-v-8607e7e7"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargeLog.vue"]]);export{Ce as default}; diff --git a/web/settings/assets/ChargePointInstallation-408ee2ed.js b/web/settings/assets/ChargePointInstallation-408ee2ed.js new file mode 100644 index 0000000000..49552759b1 --- /dev/null +++ b/web/settings/assets/ChargePointInstallation-408ee2ed.js @@ -0,0 +1 @@ +import{l as Z,d as J,a6 as H,A as G,af as Q,ag as X,L as Y,ah as K,F as ee,H as te}from"./vendor-fortawesome-433470db.js";import{_ as P,C as ne}from"./index-cc8f65ba.js";import{_ as D}from"./dynamic-import-helper-be004503.js";import{_ as S,u as h,l as i,m as p,z as f,E as o,y as r,F as w,G as a,x as d,a1 as E,a2 as q,N as A,M as x,B as g,D as F,q as ae,A as oe}from"./vendor-ea36120f.js";const ie={props:{chargePoint:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},le=S(ie,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/ChargePointConfigMixin.vue"]]),re={name:"ChargePointConfigFallback",mixins:[le]},se={class:"charge-point-config-fallback"},ue={key:1};function de(t,e,m,V,c,u){const k=h("openwb-base-alert"),_=h("openwb-base-textarea");return i(),p("div",se,[Object.keys(t.chargePoint.configuration).length==0?(i(),f(k,{key:0,subtype:"info"},{default:o(()=>[r(' Der Ladepunkt-Typ "'+w(t.chargePoint.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(i(),p("div",ue,[a(k,{subtype:"warning"},{default:o(()=>[r(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+w(t.chargePoint.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(_,{title:"Konfiguration",subtype:"json","model-value":t.chargePoint.configuration,"onUpdate:modelValue":e[0]||(e[0]=L=>t.updateConfiguration(L,"configuration"))},{help:o(()=>e[1]||(e[1]=[r(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),a(k,{subtype:"info"},{default:o(()=>[d("pre",null,w(JSON.stringify(t.chargePoint.configuration,void 0,2)),1)]),_:1})]))])}const pe=S(re,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),me={props:{chargePoint:{type:Object,required:!0}}},ge=S(me,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/ChargePointCommandsMixin.vue"]]),he={name:"ChargePointCommandsFallback",mixins:[ge]},ce={class:"charge-point-commands-fallback"};function be(t,e,m,V,c,u){const k=h("openwb-base-alert");return i(),p("div",ce,[a(k,{subtype:"secondary"},{default:o(()=>[r(' Der Ladepunkt-Typ "'+w(t.chargePoint.type)+'" bietet keine Befehle an. ',1)]),_:1})])}const fe=S(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),_e={name:"OpenwbChargePointProxy",props:{chargePoint:{required:!0,type:Object}},emits:["update:configuration"],methods:{getChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePoint.type}`),E({loader:()=>D(Object.assign({"./external_openwb/chargePoint.vue":()=>P(()=>import("./chargePoint-6c271d6b.js"),["assets/chargePoint-6c271d6b.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./internal_openwb/chargePoint.vue":()=>P(()=>import("./chargePoint-ba464cf4.js"),["assets/chargePoint-ba464cf4.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mqtt/chargePoint.vue":()=>P(()=>import("./chargePoint-776647d8.js"),["assets/chargePoint-776647d8.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_dc_adapter/chargePoint.vue":()=>P(()=>import("./chargePoint-84c8e28d.js"),["assets/chargePoint-84c8e28d.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_pro/chargePoint.vue":()=>P(()=>import("./chargePoint-542a9664.js"),["assets/chargePoint-542a9664.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_series2_satellit/chargePoint.vue":()=>P(()=>import("./chargePoint-f16b10ce.js"),["assets/chargePoint-f16b10ce.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smartwb/chargePoint.vue":()=>P(()=>import("./chargePoint-e230a14a.js"),["assets/chargePoint-e230a14a.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.chargePoint.type}/chargePoint.vue`),errorComponent:pe})},getChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePoint.type}`),E({loader:()=>D(Object.assign({"./internal_openwb/commands.vue":()=>P(()=>import("./commands-38fd7ea5.js"),["assets/commands-38fd7ea5.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_pro/commands.vue":()=>P(()=>import("./commands-b3575711.js"),["assets/commands-b3575711.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.chargePoint.type}/commands.vue`),errorComponent:fe})},updateConfiguration(t){this.$emit("update:configuration",t)}}};function ve(t,e,m,V,c,u){const k=h("openwb-base-heading");return i(),p(A,null,[a(k,null,{default:o(()=>[r(' Einstellungen für Ladepunkt Typ "'+w(m.chargePoint.type)+'" ',1)]),_:1}),(i(),f(q(u.getChargePointSettingsComponent()),{"charge-point":m.chargePoint,"onUpdate:configuration":e[0]||(e[0]=_=>u.updateConfiguration(_))},null,40,["charge-point"])),e[1]||(e[1]=d("hr",null,null,-1)),a(k,null,{default:o(()=>[r(' Befehle für Ladepunkt Typ "'+w(m.chargePoint.type)+'" ',1)]),_:1}),(i(),f(q(u.getChargePointCommandsComponent()),{"charge-point":m.chargePoint},null,8,["charge-point"]))],64)}const we=S(_e,[["render",ve],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);Z.add(J,H,G,Q,X,Y,K);const ke={name:"OpenwbChargePointInstallationView",components:{FontAwesomeIcon:ee,FontAwesomeLayers:te,OpenwbChargePointProxy:we},mixins:[ne],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/ocpp/config","openWB/optional/rfid/active","openWB/chargepoint/+/config","openWB/chargepoint/template/+","openWB/chargepoint/template/+/autolock/+","openWB/system/configurable/chargepoints","openWB/system/configurable/chargepoints_internal"],chargePointToAdd:void 0,showChargePointModal:!1,modalChargePointIndex:void 0,showChargePointTemplateModal:!1,modalChargePointTemplateIndex:void 0,showChargePointTemplateAutolockPlanModal:!1,modalChargePointTemplateAutolockPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},installedChargePoints:{get(){let t=this.getWildcardTopics("openWB/chargepoint/+/config"),e={};for(const[m,V]of Object.entries(t))(V.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(e[m]=V);return e}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let t=[];return Object.keys(this.chargePointTemplates).forEach(e=>{let m=parseInt(e.match(/([0-9]+)/g)[0]),V=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;t.push({value:m,text:V})}),t}}},methods:{addChargePoint(){this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(t,e){e.stopPropagation(),this.modalChargePointIndex=parseInt(t.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(t,e){this.showChargePointModal=!1,e=="confirm"&&this.$emit("sendCommand",{command:"removeChargepoint",data:{id:t}})},getChargePointList(){return this.$store.state.mqtt["openWB/general/extern"]===!1?this.$store.state.mqtt["openWB/system/configurable/chargepoints"]:this.$store.state.mqtt["openWB/system/configurable/chargepoints_internal"]},getChargePointName(t){return this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"].name:"Ladepunkt "+t},getChargePointTemplateName(t){return this.$store.state.mqtt["openWB/chargepoint/template/"+t]?this.$store.state.mqtt["openWB/chargepoint/template/"+t].name:"Profil "+t},addChargePointTemplate(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(t){return parseInt(t.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(t,e){e.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(t),this.showChargePointTemplateModal=!0},removeChargePointTemplate(t,e){this.showChargePointTemplateModal=!1,e=="confirm"&&this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:t}})},addChargePointTemplateAutolockPlan(t,e){e.stopPropagation();let m=this.getChargePointTemplateIndex(t);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:m}})},removeChargePointTemplateAutolockPlanModal(t,e,m){m.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(t),this.modalChargePointTemplateAutolockPlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(t,e,m){this.showChargePointTemplateAutolockPlanModal=!1,m=="confirm"&&this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:t,plan:e}})},getChargePointTemplateAutolockPlanName(t,e){return this.$store.state.mqtt["openWB/chargepoint/template/"+t+"/autolock/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+t+"/autolock/"+e].name:"Autolock Zeitplan "+t+"/"+e},getChargePointTemplateAutolockPlans(t){let e=this.getChargePointTemplateIndex(t);return this.getWildcardTopics("openWB/chargepoint/template/"+e+"/autolock/+")},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},Ce={class:"chargePointInstallation"},ye={name:"chargePointInstallationForm"},Pe={key:0},Ve={key:2},Le={key:0},Be={key:0},We={key:1},Ae={key:1},Se={key:0},Ue={key:2},xe={key:4},Ie=["onClick"],Te={key:0},ze={key:1},De={key:2},Ee={key:2};function qe(t,e,m,V,c,u){const k=h("openwb-base-modal-dialog"),_=h("font-awesome-icon"),L=h("openwb-base-avatar"),y=h("openwb-base-text-input"),I=h("openwb-base-select-input"),M=h("openwb-charge-point-proxy"),B=h("openwb-base-heading"),C=h("openwb-base-button-group-input"),U=h("openwb-base-card"),O=h("font-awesome-layers"),T=h("openwb-base-alert"),N=h("openwb-base-array-input"),z=h("openwb-base-range-input"),$=h("openwb-base-number-input"),R=h("openwb-base-submit-buttons");return i(),p(A,null,[a(k,{show:c.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=l=>u.removeChargePoint(c.modalChargePointIndex,l))},{default:o(()=>[r(' Wollen Sie den Ladepunkt "'+w(u.getChargePointName(c.modalChargePointIndex))+'" (ID: '+w(c.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),a(k,{show:c.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[1]||(e[1]=l=>u.removeChargePointTemplate(c.modalChargePointTemplateIndex,l))},{default:o(()=>[r(' Wollen Sie das Ladepunkt-Profil "'+w(u.getChargePointTemplateName(c.modalChargePointTemplateIndex))+'" (ID: '+w(c.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),a(k,{show:c.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[2]||(e[2]=l=>u.removeChargePointTemplateAutolockPlan(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex,l))},{default:o(()=>[r(' Wollen Sie den Autolock Zeitplan "'+w(u.getChargePointTemplateAutolockPlanName(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),d("div",Ce,[d("form",ye,[a(U,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!m.installAssistantActive},{header:o(()=>[a(_,{"fixed-width":"",icon:["fas","charging-station"]}),e[7]||(e[7]=r(" Ladepunkte "))]),default:o(()=>[(i(!0),p(A,null,x(u.installedChargePoints,(l,s)=>(i(),f(U,{key:s,title:l.name+" (ID: "+l.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(n=>[n.collapsed?g("",!0):(i(),f(L,{key:0,class:"bg-danger clickable",onClick:v=>u.removeChargePointModal(s,v)},{default:o(()=>[a(_,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[a(y,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":n=>t.updateState(s,n,"name")},null,8,["model-value","onUpdate:modelValue"]),a(y,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":t.$store.state.mqtt[s].type},null,8,["model-value"]),l.type!=="internal_openwb"||t.$store.state.mqtt["openWB/general/extern"]===!1?(i(),p("span",Pe,[a(I,{title:"Ladepunkt-Profil",options:u.chargePointTemplateList,"model-value":t.$store.state.mqtt[s].template,"onUpdate:modelValue":n=>t.updateState(s,n,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):g("",!0),t.$store.state.mqtt["openWB/optional/ocpp/config"].active===!0?(i(),f(y,{key:1,title:"OCPP-Chargebox ID","model-value":l.ocpp_chargebox_id,"onUpdate:modelValue":n=>t.updateState(s,n,"ocpp_chargebox_id")},{help:o(()=>[...e[8]||(e[8]=[r(" Bitte geben Sie hier die Chargebox ID ein, die im OCPP-Backend für diesen Ladepunkt verwendet wird. Sollen die Daten dieses Ladepunktes nicht an ein OCPP-Backend übertragen werden, lasse dieses Feld leer. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):g("",!0),e[14]||(e[14]=d("hr",null,null,-1)),a(M,{"charge-point":l,"onUpdate:configuration":n=>u.updateConfiguration(s,n)},null,8,["charge-point","onUpdate:configuration"]),(l.type!=="internal_openwb"||t.$store.state.mqtt["openWB/general/extern"]===!1)&&l.charging_type!=="DC"?(i(),p("div",Ve,[e[13]||(e[13]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[9]||(e[9]=[r(" Hardware-Optionen ")])]),_:1}),a(C,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.auto_phase_switch_hw,"onUpdate:modelValue":n=>t.updateState(s,n,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.control_pilot_interruption_hw,"onUpdate:modelValue":n=>t.updateState(s,n,"control_pilot_interruption_hw")},{help:o(()=>[...e[10]||(e[10]=[r(' Die Control-Pilot-Leitung ist im Ladekabel integriert und dient der Steuerung der Fahrzeugladung (An/Aus/Stromvorgaben). Bei einigen Fahrzeugen können durch die Regelung erzwungene, längere Ladestopps (z.B. beim PV-Laden) zu unerwünschten "Einschlaf"-Effekten des Fahrzeuges führen. Mit diesem Feature, welches hardwareseitig verbaut sein muss, kann ein Abstecken des Ladesteckers simuliert werden, um ein Aufwecken des Fahrzeuges zu ermöglichen. Die Funktion hängt immer auch vom Fahrzeugtyp ab. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(B,null,{default:o(()=>[...e[11]||(e[11]=[r(" Elektrischer Anschluss ")])]),_:1}),a(C,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":l.connected_phases,"onUpdate:modelValue":n=>t.updateState(s,n,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:1,text:"EVU L1"},{buttonValue:2,text:"EVU L2"},{buttonValue:3,text:"EVU L3"}],"model-value":l.phase_1,"onUpdate:modelValue":n=>t.updateState(s,n,"phase_1")},{help:o(()=>[...e[12]||(e[12]=[r(" Hier ist anzugeben, an welcher Phase des Hausanschlusses (EVU-Punkt) die Phase 1 dieses Ladepunktes angeschlossen ist. Diese Information wird für das Lastmanagement benötigt, um bei einer Schieflast gezielt einzelne Ladepunkte zu drosseln."),d("br",null,null,-1),r(' Bei mehreren Ladepunkten macht es Sinn, die Phasen der LP rotierend anzuschließen, damit mehrere "nicht-dreiphasig" ladende Fahrzeuge mit optimaler Leistung laden können, bevor das Lastmanagement eingreift.'),d("br",null,null,-1),r(" Es wird vorausgesetzt, dass das Drehfeld innerhalb der Installation gleich bleibt. Wenn z.B. L1 des Ladepunktes auf EVU-L2 liegt, muss L2 des Ladepunktes auf EVU-L3 aufgelegt sein (und L3 des Ladepunktes auf EVU-L1)."),d("br",null,null,-1),r(" Eine Möglichkeit, die zur Ladepunktphase L1 zugehörige EVU-Phase zu ermitteln, ist eine einphasige Ladung zu starten und die Phasenströme am EVU-Zähler zu beobachten. Mit einem zweiphasig ladenden Fahrzeug kann danach auch der Anschluss von L2 ermittelt und so das Drehfeld kontrolliert werden."),d("br",null,null,-1),r(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])])):g("",!0)]),_:2},1032,["title"]))),128)),Object.keys(u.installedChargePoints).length>0?(i(),p("hr",Le)):g("",!0),a(I,{title:"Verfügbare Ladepunkte","not-selected":"Bitte auswählen",options:u.getChargePointList(),"model-value":c.chargePointToAdd,"add-button":!0,"onUpdate:modelValue":e[3]||(e[3]=l=>c.chargePointToAdd=l),"onInput:add":u.addChargePoint},{help:o(()=>e[15]||(e[15]=[r(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),d("br",null,null,-1),d("ul",null,[d("li",null," Interne openWB - wenn diese openWB über einen verbauten Ladepunkt mit Regelcontroller verfügt (z.B. Standard(+), Custom, Duo, Buchse, NICHT Standalone); ansonsten immer anlegen, egal ob diese openWB steuert = primary oder ferngesteuert wird = secondary "),d("li",null," Secondary openWB - wenn diese openWB (primary) die Fernsteuerung von weiteren openWB (secondary) übernimmt "),d("li",null,"MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen"),d("li",null,"openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt"),d("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),d("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)])),_:1},8,["options","model-value","onInput:add"])]),_:1},8,["collapsed"]),e[37]||(e[37]=d("hr",{class:"border-secondary"},null,-1)),a(U,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[a(O,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[a(_,{"fixed-width":"",icon:["far","file"]}),a(_,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),e[16]||(e[16]=r(" Ladepunkt-Profile "))]),actions:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(i(),f(L,{key:0,class:"bg-success clickable",onClick:u.addChargePointTemplate},{default:o(()=>[a(_,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):g("",!0)]),default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),p("div",Be,[a(T,{subtype:"info"},{default:o(()=>e[17]||(e[17]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),p("div",We,[(i(!0),p(A,null,x(u.chargePointTemplates,(l,s)=>(i(),f(U,{key:s,title:l.name+" (ID: "+u.getChargePointTemplateIndex(s)+")",collapsible:!0,collapsed:!0},F({default:o(()=>[a(y,{title:"Bezeichnung",subtype:"text","model-value":l.name,disabled:s.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(s,n,"name")},F({_:2},[s.endsWith("/0")?{name:"help",fn:o(()=>[e[18]||(e[18]=r(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),u.dcChargingEnabled===!0?(i(),f(C,{key:0,title:"Typ des Ladeprofils",buttons:[{buttonValue:"AC",text:"AC"},{buttonValue:"DC",text:"DC"}],"model-value":l.charging_type,"onUpdate:modelValue":n=>t.updateState(s,n,"charging_type")},null,8,["model-value","onUpdate:modelValue"])):g("",!0),e[35]||(e[35]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[19]||(e[19]=[r(" Zugangskontrolle ")])]),_:1}),a(C,{title:"Sperre nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.disable_after_unplug,"onUpdate:modelValue":n=>t.updateState(s,n,"disable_after_unplug")},{help:o(()=>[...e[20]||(e[20]=[r(" Sperrt den Ladepunkt nach Abstecken eines Fahrzeuges. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!m.installAssistantActive?(i(),p("div",Ae,[l.disable_after_unplug?(i(),f(N,{key:0,title:"Zugeordnete ID-Tags","no-elements-message":"Keine ID-Tags zugeordnet.","model-value":l.valid_tags,"onUpdate:modelValue":n=>t.updateState(s,n,"valid_tags")},{help:o(()=>[...e[21]||(e[21]=[r(" Die hier eingetragenen ID-Tags dienen ausschließlich zum Entsperren des Ladepunktes. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):g("",!0)])):g("",!0),e[36]||(e[36]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[22]||(e[22]=[r(" Angaben zum konfigurierten Ladestrom der openWB ")])]),_:1}),a(T,{subtype:"info"},{default:o(()=>[e[23]||(e[23]=r(" Hier werden die maximalen Ladeströme entsprechend der in dem zugeordneten Ladepunkt genutzten Phasen eingestellt.")),e[24]||(e[24]=d("br",null,null,-1)),e[25]||(e[25]=r(" Generell gilt, dass diese Werte in Übereinstimmung mit der Ausführung des Ladepunktes und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. ")),l.charging_type==="AC"?(i(),p("span",Se," Bei einer openWB mit 22kW Maximalleistung sind hier jeweils 32A einzustellen. Ist die openWB beispielsweise auf 11kW begrenzt (KfW-Förderung oder die Zuleitung ist mit 16A abgesichert), dann sind hier jeweils 16A einzustellen. ")):g("",!0),e[26]||(e[26]=d("br",null,null,-1)),e[27]||(e[27]=r(" Komplexere Installationen mit mehreren Ladepunkten werden im ")),e[28]||(e[28]=d("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),e[29]||(e[29]=r(" beschrieben. "))]),_:2},1024),l.charging_type==="AC"||u.dcChargingEnabled!==!0?(i(),p("div",Ue,[a(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":l.max_current_single_phase,"onUpdate:modelValue":n=>t.updateState(s,n,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":l.max_current_multi_phases,"onUpdate:modelValue":n=>t.updateState(s,n,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"])])):(i(),f($,{key:3,title:"Maximalleistung",min:22,max:420,step:1,unit:"kW",precision:5,"model-value":t.ac_current2dc_power(l.dc_max_current),"onUpdate:modelValue":n=>t.updateState(s,t.dc_power2ac_current(n),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])),m.installAssistantActive?g("",!0):(i(),p("div",xe,[e[34]||(e[34]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[30]||(e[30]=[r(" Sperren nach Uhrzeit (Komplettsperrung - keine Freischaltung per ID-Tag möglich) ")])]),_:1}),a(C,{title:"Sperren nach Uhrzeit aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.active,"onUpdate:modelValue":n=>t.updateState(s,n,"autolock.active")},{help:o(()=>[...e[31]||(e[31]=[r(" WirdSperren nach Uhrzeit aktiviert, können Fahrzeugladungen mittels Zeitplan auf gewünschte Zeitbereiche eingeschränkt werden. Dies kann z.B. bei Zugänglichkeiten zu Ladepunkten in öffentlichen oder halb-öffentlichen Bereichen sinnvoll sein. In dieser Zeit ist keine Freischaltung per RFID, Fahrzeugerkennung oder Pin möglich. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(C,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.wait_for_charging_end,"onUpdate:modelValue":n=>t.updateState(s,n,"autolock.wait_for_charging_end")},{help:o(()=>[...e[32]||(e[32]=[r(' Wenn ein Zeitplan Sperren nach Uhrzeit aktiviert, werden alle Ladepunkte direkt gesperrt und laufende Ladevorgänge beendet. Wird hier "Ja" ausgewählt, dann werden laufende Ladevorgänge NICHT beendet und diese Ladepunkte erst nach abgeschlossener Ladung gesperrt. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(B,null,{actions:o(()=>[a(L,{class:"bg-success clickable",onClick:n=>u.addChargePointTemplateAutolockPlan(s,n)},{default:o(()=>[a(_,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[e[33]||(e[33]=r(" Zeitpläne für Sperren nach Uhrzeit "))]),_:2},1024)])),(i(!0),p(A,null,x(u.getChargePointTemplateAutolockPlans(s),(n,v)=>(i(),f(U,{key:v,title:n.name,collapsible:!0,collapsed:!0},{actions:o(b=>[b.collapsed==!0?(i(),p("span",{key:0,class:ae(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:oe(W=>t.updateState(v,!n.active,"active"),["stop"])},[a(_,{"fixed-width":"",icon:["fas","clock"]}),r(" "+w(n.time[0])+" - "+w(n.time[1])+" ",1),n.frequency.selected=="once"?(i(),p("span",Te,[a(_,{"fixed-width":"",icon:["fas","calendar-day"]}),r(" "+w(t.formatDate(n.frequency.once[0])==t.formatDate(n.frequency.once[1])?t.formatDate(n.frequency.once[0]):t.formatDate(n.frequency.once[0])+" - "+t.formatDate(n.frequency.once[1])),1)])):g("",!0),n.frequency.selected=="daily"?(i(),p("span",ze,[a(_,{"fixed-width":"",icon:["fas","calendar-week"]})])):g("",!0),n.frequency.selected=="weekly"?(i(),p("span",De,[a(_,{"fixed-width":"",icon:["fas","calendar-alt"]})])):g("",!0)],10,Ie)):g("",!0),b.collapsed==!1?(i(),f(L,{key:1,class:"bg-danger clickable",onClick:W=>u.removeChargePointTemplateAutolockPlanModal(s,v,W)},{default:o(()=>[a(_,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):g("",!0)]),default:o(()=>[a(y,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":b=>t.updateState(v,b,"name")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":b=>t.updateState(v,b,"active")},null,8,["model-value","onUpdate:modelValue"]),a(y,{title:"Sperren um",subtype:"time","model-value":n.time[0],"onUpdate:modelValue":b=>t.updateState(v,b,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(y,{title:"Freigeben um",subtype:"time","model-value":n.time[1],"onUpdate:modelValue":b=>t.updateState(v,b,"time.1")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(i(),f(y,{key:0,title:"Sperren ab ...",subtype:"date","model-value":n.frequency.once[0],"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):g("",!0),n.frequency.selected=="once"?(i(),f(y,{key:1,title:"... bis",subtype:"date",min:n.frequency.once[0],"model-value":n.frequency.once[1],"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):g("",!0),n.frequency.selected=="weekly"?(i(),p("div",Ee,[(i(!0),p(A,null,x(t.weekdays,(b,W)=>(i(),f(C,{key:W,title:b,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[W],"onUpdate:modelValue":j=>t.updateState(v,j,"frequency.weekly."+W)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):g("",!0)]),_:2},1032,["title"]))),128))]),_:2},[s.endsWith("/0")?void 0:{name:"actions",fn:o(n=>[n.collapsed?g("",!0):(i(),f(L,{key:0,class:"bg-danger clickable",onClick:v=>u.removeChargePointTemplateModal(s,v)},{default:o(()=>[a(_,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),a(R,{"form-name":"chargePointInstallationForm",onSave:e[4]||(e[4]=l=>t.$emit("save")),onReset:e[5]||(e[5]=l=>t.$emit("reset")),onDefaults:e[6]||(e[6]=l=>t.$emit("defaults"))})])])],64)}const Fe=S(ke,[["render",qe],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]),Re=Object.freeze(Object.defineProperty({__proto__:null,default:Fe},Symbol.toStringTag,{value:"Module"}));export{le as C,ge as a,Fe as b,Re as c}; diff --git a/web/settings/assets/ChargePointInstallation-7e51ce35.js b/web/settings/assets/ChargePointInstallation-7e51ce35.js deleted file mode 100644 index cf02943b95..0000000000 --- a/web/settings/assets/ChargePointInstallation-7e51ce35.js +++ /dev/null @@ -1 +0,0 @@ -import{l as Z,d as J,a9 as H,E as G,aj as Q,ak as X,P as Y,al as K,F as ee,L as te}from"./vendor-fortawesome-9d7cfdfb.js";import{_ as P,C as ne}from"./index-b236cee5.js";import{_ as D}from"./dynamic-import-helper-be004503.js";import{_ as S,u as h,l,m as p,x as f,E as o,B as r,F as w,G as a,A as d,a1 as E,a2 as q,N as A,M as x,z as g,D as F,q as ae,y as oe}from"./vendor-ad7c30fd.js";const le={props:{chargePoint:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},ie=S(le,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/ChargePointConfigMixin.vue"]]),re={name:"ChargePointConfigFallback",mixins:[ie]},se={class:"charge-point-config-fallback"},ue={key:1};function de(t,e,m,V,c,u){const k=h("openwb-base-alert"),_=h("openwb-base-textarea");return l(),p("div",se,[Object.keys(t.chargePoint.configuration).length==0?(l(),f(k,{key:0,subtype:"info"},{default:o(()=>[r(' Der Ladepunkt-Typ "'+w(t.chargePoint.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),p("div",ue,[a(k,{subtype:"warning"},{default:o(()=>[r(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+w(t.chargePoint.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(_,{title:"Konfiguration",subtype:"json","model-value":t.chargePoint.configuration,"onUpdate:modelValue":e[0]||(e[0]=L=>t.updateConfiguration(L,"configuration"))},{help:o(()=>e[1]||(e[1]=[r(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),a(k,{subtype:"info"},{default:o(()=>[d("pre",null,w(JSON.stringify(t.chargePoint.configuration,void 0,2)),1)]),_:1})]))])}const pe=S(re,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),me={props:{chargePoint:{type:Object,required:!0}}},ge=S(me,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/ChargePointCommandsMixin.vue"]]),he={name:"ChargePointCommandsFallback",mixins:[ge]},ce={class:"charge-point-commands-fallback"};function be(t,e,m,V,c,u){const k=h("openwb-base-alert");return l(),p("div",ce,[a(k,{subtype:"secondary"},{default:o(()=>[r(' Der Ladepunkt-Typ "'+w(t.chargePoint.type)+'" bietet keine Befehle an. ',1)]),_:1})])}const fe=S(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),_e={name:"OpenwbChargePointProxy",props:{chargePoint:{required:!0,type:Object}},emits:["update:configuration"],methods:{getChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePoint.type}`),E({loader:()=>D(Object.assign({"./external_openwb/chargePoint.vue":()=>P(()=>import("./chargePoint-f1ddcbb4.js"),["assets/chargePoint-f1ddcbb4.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./internal_openwb/chargePoint.vue":()=>P(()=>import("./chargePoint-e13a3df6.js"),["assets/chargePoint-e13a3df6.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mqtt/chargePoint.vue":()=>P(()=>import("./chargePoint-3eb75766.js"),["assets/chargePoint-3eb75766.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_dc_adapter/chargePoint.vue":()=>P(()=>import("./chargePoint-57970a5b.js"),["assets/chargePoint-57970a5b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_pro/chargePoint.vue":()=>P(()=>import("./chargePoint-5487f7d8.js"),["assets/chargePoint-5487f7d8.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_series2_satellit/chargePoint.vue":()=>P(()=>import("./chargePoint-61378497.js"),["assets/chargePoint-61378497.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smartwb/chargePoint.vue":()=>P(()=>import("./chargePoint-d73403a3.js"),["assets/chargePoint-d73403a3.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.chargePoint.type}/chargePoint.vue`),errorComponent:pe})},getChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePoint.type}`),E({loader:()=>D(Object.assign({"./internal_openwb/commands.vue":()=>P(()=>import("./commands-f10e74ce.js"),["assets/commands-f10e74ce.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_pro/commands.vue":()=>P(()=>import("./commands-ae4d3051.js"),["assets/commands-ae4d3051.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.chargePoint.type}/commands.vue`),errorComponent:fe})},updateConfiguration(t){this.$emit("update:configuration",t)}}};function ve(t,e,m,V,c,u){const k=h("openwb-base-heading");return l(),p(A,null,[a(k,null,{default:o(()=>[r(' Einstellungen für Ladepunkt Typ "'+w(m.chargePoint.type)+'" ',1)]),_:1}),(l(),f(q(u.getChargePointSettingsComponent()),{"charge-point":m.chargePoint,"onUpdate:configuration":e[0]||(e[0]=_=>u.updateConfiguration(_))},null,40,["charge-point"])),e[1]||(e[1]=d("hr",null,null,-1)),a(k,null,{default:o(()=>[r(' Befehle für Ladepunkt Typ "'+w(m.chargePoint.type)+'" ',1)]),_:1}),(l(),f(q(u.getChargePointCommandsComponent()),{"charge-point":m.chargePoint},null,8,["charge-point"]))],64)}const we=S(_e,[["render",ve],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);Z.add(J,H,G,Q,X,Y,K);const ke={name:"OpenwbChargePointInstallationView",components:{FontAwesomeIcon:ee,FontAwesomeLayers:te,OpenwbChargePointProxy:we},mixins:[ne],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/ocpp/config","openWB/optional/rfid/active","openWB/chargepoint/+/config","openWB/chargepoint/template/+","openWB/chargepoint/template/+/autolock/+","openWB/system/configurable/chargepoints","openWB/system/configurable/chargepoints_internal"],chargePointToAdd:void 0,showChargePointModal:!1,modalChargePointIndex:void 0,showChargePointTemplateModal:!1,modalChargePointTemplateIndex:void 0,showChargePointTemplateAutolockPlanModal:!1,modalChargePointTemplateAutolockPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},installedChargePoints:{get(){let t=this.getWildcardTopics("openWB/chargepoint/+/config"),e={};for(const[m,V]of Object.entries(t))(V.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(e[m]=V);return e}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let t=[];return Object.keys(this.chargePointTemplates).forEach(e=>{let m=parseInt(e.match(/([0-9]+)/g)[0]),V=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;t.push({value:m,text:V})}),t}}},methods:{addChargePoint(){this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(t,e){e.stopPropagation(),this.modalChargePointIndex=parseInt(t.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(t,e){this.showChargePointModal=!1,e=="confirm"&&this.$emit("sendCommand",{command:"removeChargepoint",data:{id:t}})},getChargePointList(){return this.$store.state.mqtt["openWB/general/extern"]===!1?this.$store.state.mqtt["openWB/system/configurable/chargepoints"]:this.$store.state.mqtt["openWB/system/configurable/chargepoints_internal"]},getChargePointName(t){return this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"].name:"Ladepunkt "+t},getChargePointTemplateName(t){return this.$store.state.mqtt["openWB/chargepoint/template/"+t]?this.$store.state.mqtt["openWB/chargepoint/template/"+t].name:"Profil "+t},addChargePointTemplate(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(t){return parseInt(t.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(t,e){e.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(t),this.showChargePointTemplateModal=!0},removeChargePointTemplate(t,e){this.showChargePointTemplateModal=!1,e=="confirm"&&this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:t}})},addChargePointTemplateAutolockPlan(t,e){e.stopPropagation();let m=this.getChargePointTemplateIndex(t);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:m}})},removeChargePointTemplateAutolockPlanModal(t,e,m){m.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(t),this.modalChargePointTemplateAutolockPlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(t,e,m){this.showChargePointTemplateAutolockPlanModal=!1,m=="confirm"&&this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:t,plan:e}})},getChargePointTemplateAutolockPlanName(t,e){return this.$store.state.mqtt["openWB/chargepoint/template/"+t+"/autolock/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+t+"/autolock/"+e].name:"Autolock Zeitplan "+t+"/"+e},getChargePointTemplateAutolockPlans(t){let e=this.getChargePointTemplateIndex(t);return this.getWildcardTopics("openWB/chargepoint/template/"+e+"/autolock/+")},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},Ce={class:"chargePointInstallation"},ye={name:"chargePointInstallationForm"},Pe={key:0},Ve={key:2},Le={key:0},Be={key:0},We={key:1},Ae={key:1},Se={key:0},Ue={key:2},xe={key:4},Ie=["onClick"],Te={key:0},ze={key:1},De={key:2},Ee={key:2};function qe(t,e,m,V,c,u){const k=h("openwb-base-modal-dialog"),_=h("font-awesome-icon"),L=h("openwb-base-avatar"),y=h("openwb-base-text-input"),I=h("openwb-base-select-input"),M=h("openwb-charge-point-proxy"),B=h("openwb-base-heading"),C=h("openwb-base-button-group-input"),U=h("openwb-base-card"),O=h("font-awesome-layers"),T=h("openwb-base-alert"),N=h("openwb-base-array-input"),z=h("openwb-base-range-input"),$=h("openwb-base-number-input"),j=h("openwb-base-submit-buttons");return l(),p(A,null,[a(k,{show:c.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=i=>u.removeChargePoint(c.modalChargePointIndex,i))},{default:o(()=>[r(' Wollen Sie den Ladepunkt "'+w(u.getChargePointName(c.modalChargePointIndex))+'" (ID: '+w(c.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),a(k,{show:c.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[1]||(e[1]=i=>u.removeChargePointTemplate(c.modalChargePointTemplateIndex,i))},{default:o(()=>[r(' Wollen Sie das Ladepunkt-Profil "'+w(u.getChargePointTemplateName(c.modalChargePointTemplateIndex))+'" (ID: '+w(c.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),a(k,{show:c.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[2]||(e[2]=i=>u.removeChargePointTemplateAutolockPlan(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex,i))},{default:o(()=>[r(' Wollen Sie den Autolock Zeitplan "'+w(u.getChargePointTemplateAutolockPlanName(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),d("div",Ce,[d("form",ye,[a(U,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!m.installAssistantActive},{header:o(()=>[a(_,{"fixed-width":"",icon:["fas","charging-station"]}),e[7]||(e[7]=r(" Ladepunkte "))]),default:o(()=>[(l(!0),p(A,null,x(u.installedChargePoints,(i,s)=>(l(),f(U,{key:s,title:i.name+" (ID: "+i.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(n=>[n.collapsed?g("",!0):(l(),f(L,{key:0,class:"bg-danger clickable",onClick:v=>u.removeChargePointModal(s,v)},{default:o(()=>[a(_,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[a(y,{title:"Bezeichnung",subtype:"text","model-value":i.name,"onUpdate:modelValue":n=>t.updateState(s,n,"name")},null,8,["model-value","onUpdate:modelValue"]),a(y,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":t.$store.state.mqtt[s].type},null,8,["model-value"]),i.type!=="internal_openwb"||t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),p("span",Pe,[a(I,{title:"Ladepunkt-Profil",options:u.chargePointTemplateList,"model-value":t.$store.state.mqtt[s].template,"onUpdate:modelValue":n=>t.updateState(s,n,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):g("",!0),t.$store.state.mqtt["openWB/optional/ocpp/config"].active===!0?(l(),f(y,{key:1,title:"OCPP-Chargebox ID","model-value":i.ocpp_chargebox_id,"onUpdate:modelValue":n=>t.updateState(s,n,"ocpp_chargebox_id")},{help:o(()=>[...e[8]||(e[8]=[r(" Bitte geben Sie hier die Chargebox ID ein, die im OCPP-Backend für diesen Ladepunkt verwendet wird. Sollen die Daten dieses Ladepunktes nicht an ein OCPP-Backend übertragen werden, lasse dieses Feld leer. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):g("",!0),e[14]||(e[14]=d("hr",null,null,-1)),a(M,{"charge-point":i,"onUpdate:configuration":n=>u.updateConfiguration(s,n)},null,8,["charge-point","onUpdate:configuration"]),(i.type!=="internal_openwb"||t.$store.state.mqtt["openWB/general/extern"]===!1)&&i.charging_type!=="DC"?(l(),p("div",Ve,[e[13]||(e[13]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[9]||(e[9]=[r(" Hardware-Optionen ")])]),_:1}),a(C,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.auto_phase_switch_hw,"onUpdate:modelValue":n=>t.updateState(s,n,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.control_pilot_interruption_hw,"onUpdate:modelValue":n=>t.updateState(s,n,"control_pilot_interruption_hw")},{help:o(()=>[...e[10]||(e[10]=[r(' Die Control-Pilot-Leitung ist im Ladekabel integriert und dient der Steuerung der Fahrzeugladung (An/Aus/Stromvorgaben). Bei einigen Fahrzeugen können durch die Regelung erzwungene, längere Ladestopps (z.B. beim PV-Laden) zu unerwünschten "Einschlaf"-Effekten des Fahrzeuges führen. Mit diesem Feature, welches hardwareseitig verbaut sein muss, kann ein Abstecken des Ladesteckers simuliert werden, um ein Aufwecken des Fahrzeuges zu ermöglichen. Die Funktion hängt immer auch vom Fahrzeugtyp ab. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(B,null,{default:o(()=>[...e[11]||(e[11]=[r(" Elektrischer Anschluss ")])]),_:1}),a(C,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.connected_phases,"onUpdate:modelValue":n=>t.updateState(s,n,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:1,text:"EVU L1"},{buttonValue:2,text:"EVU L2"},{buttonValue:3,text:"EVU L3"}],"model-value":i.phase_1,"onUpdate:modelValue":n=>t.updateState(s,n,"phase_1")},{help:o(()=>[...e[12]||(e[12]=[r(" Hier ist anzugeben, an welcher Phase des Hausanschlusses (EVU-Punkt) die Phase 1 dieses Ladepunktes angeschlossen ist. Diese Information wird für das Lastmanagement benötigt, um bei einer Schieflast gezielt einzelne Ladepunkte zu drosseln."),d("br",null,null,-1),r(' Bei mehreren Ladepunkten macht es Sinn, die Phasen der LP rotierend anzuschließen, damit mehrere "nicht-dreiphasig" ladende Fahrzeuge mit optimaler Leistung laden können, bevor das Lastmanagement eingreift.'),d("br",null,null,-1),r(" Es wird vorausgesetzt, dass das Drehfeld innerhalb der Installation gleich bleibt. Wenn z.B. L1 des Ladepunktes auf EVU-L2 liegt, muss L2 des Ladepunktes auf EVU-L3 aufgelegt sein (und L3 des Ladepunktes auf EVU-L1)."),d("br",null,null,-1),r(" Eine Möglichkeit, die zur Ladepunktphase L1 zugehörige EVU-Phase zu ermitteln, ist eine einphasige Ladung zu starten und die Phasenströme am EVU-Zähler zu beobachten. Mit einem zweiphasig ladenden Fahrzeug kann danach auch der Anschluss von L2 ermittelt und so das Drehfeld kontrolliert werden."),d("br",null,null,-1),r(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])])):g("",!0)]),_:2},1032,["title"]))),128)),Object.keys(u.installedChargePoints).length>0?(l(),p("hr",Le)):g("",!0),a(I,{title:"Verfügbare Ladepunkte","not-selected":"Bitte auswählen",options:u.getChargePointList(),"model-value":c.chargePointToAdd,"add-button":!0,"onUpdate:modelValue":e[3]||(e[3]=i=>c.chargePointToAdd=i),"onInput:add":u.addChargePoint},{help:o(()=>e[15]||(e[15]=[r(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),d("br",null,null,-1),d("ul",null,[d("li",null," Interne openWB - wenn diese openWB über einen verbauten Ladepunkt mit Regelcontroller verfügt (z.B. Standard(+), Custom, Duo, Buchse, NICHT Standalone); ansonsten immer anlegen, egal ob diese openWB steuert = primary oder ferngesteuert wird = secondary "),d("li",null," Secondary openWB - wenn diese openWB (primary) die Fernsteuerung von weiteren openWB (secondary) übernimmt "),d("li",null,"MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen"),d("li",null,"openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt"),d("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),d("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)])),_:1},8,["options","model-value","onInput:add"])]),_:1},8,["collapsed"]),e[37]||(e[37]=d("hr",{class:"border-secondary"},null,-1)),a(U,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[a(O,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[a(_,{"fixed-width":"",icon:["far","file"]}),a(_,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),e[16]||(e[16]=r(" Ladepunkt-Profile "))]),actions:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),f(L,{key:0,class:"bg-success clickable",onClick:u.addChargePointTemplate},{default:o(()=>[a(_,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):g("",!0)]),default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),p("div",Be,[a(T,{subtype:"info"},{default:o(()=>e[17]||(e[17]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),p("div",We,[(l(!0),p(A,null,x(u.chargePointTemplates,(i,s)=>(l(),f(U,{key:s,title:i.name+" (ID: "+u.getChargePointTemplateIndex(s)+")",collapsible:!0,collapsed:!0},F({default:o(()=>[a(y,{title:"Bezeichnung",subtype:"text","model-value":i.name,disabled:s.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(s,n,"name")},F({_:2},[s.endsWith("/0")?{name:"help",fn:o(()=>[e[18]||(e[18]=r(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),u.dcChargingEnabled===!0?(l(),f(C,{key:0,title:"Typ des Ladeprofils",buttons:[{buttonValue:"AC",text:"AC"},{buttonValue:"DC",text:"DC"}],"model-value":i.charging_type,"onUpdate:modelValue":n=>t.updateState(s,n,"charging_type")},null,8,["model-value","onUpdate:modelValue"])):g("",!0),e[35]||(e[35]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[19]||(e[19]=[r(" Zugangskontrolle ")])]),_:1}),a(C,{title:"Sperre nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.disable_after_unplug,"onUpdate:modelValue":n=>t.updateState(s,n,"disable_after_unplug")},{help:o(()=>[...e[20]||(e[20]=[r(" Sperrt den Ladepunkt nach Abstecken eines Fahrzeuges. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!m.installAssistantActive?(l(),p("div",Ae,[i.disable_after_unplug?(l(),f(N,{key:0,title:"Zugeordnete ID-Tags","no-elements-message":"Keine ID-Tags zugeordnet.","model-value":i.valid_tags,"onUpdate:modelValue":n=>t.updateState(s,n,"valid_tags")},{help:o(()=>[...e[21]||(e[21]=[r(" Die hier eingetragenen ID-Tags dienen ausschließlich zum Entsperren des Ladepunktes. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):g("",!0)])):g("",!0),e[36]||(e[36]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[22]||(e[22]=[r(" Angaben zum konfigurierten Ladestrom der openWB ")])]),_:1}),a(T,{subtype:"info"},{default:o(()=>[e[23]||(e[23]=r(" Hier werden die maximalen Ladeströme entsprechend der in dem zugeordneten Ladepunkt genutzten Phasen eingestellt.")),e[24]||(e[24]=d("br",null,null,-1)),e[25]||(e[25]=r(" Generell gilt, dass diese Werte in Übereinstimmung mit der Ausführung des Ladepunktes und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. ")),i.charging_type==="AC"?(l(),p("span",Se," Bei einer openWB mit 22kW Maximalleistung sind hier jeweils 32A einzustellen. Ist die openWB beispielsweise auf 11kW begrenzt (KfW-Förderung oder die Zuleitung ist mit 16A abgesichert), dann sind hier jeweils 16A einzustellen. ")):g("",!0),e[26]||(e[26]=d("br",null,null,-1)),e[27]||(e[27]=r(" Komplexere Installationen mit mehreren Ladepunkten werden im ")),e[28]||(e[28]=d("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),e[29]||(e[29]=r(" beschrieben. "))]),_:2},1024),i.charging_type==="AC"||u.dcChargingEnabled!==!0?(l(),p("div",Ue,[a(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":n=>t.updateState(s,n,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":n=>t.updateState(s,n,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"])])):(l(),f($,{key:3,title:"Maximalleistung",min:22,max:420,step:1,unit:"kW",precision:5,"model-value":t.ac_current2dc_power(i.dc_max_current),"onUpdate:modelValue":n=>t.updateState(s,t.dc_power2ac_current(n),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])),m.installAssistantActive?g("",!0):(l(),p("div",xe,[e[34]||(e[34]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[30]||(e[30]=[r(" Sperren nach Uhrzeit (Komplettsperrung - keine Freischaltung per ID-Tag möglich) ")])]),_:1}),a(C,{title:"Sperren nach Uhrzeit aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.autolock.active,"onUpdate:modelValue":n=>t.updateState(s,n,"autolock.active")},{help:o(()=>[...e[31]||(e[31]=[r(" WirdSperren nach Uhrzeit aktiviert, können Fahrzeugladungen mittels Zeitplan auf gewünschte Zeitbereiche eingeschränkt werden. Dies kann z.B. bei Zugänglichkeiten zu Ladepunkten in öffentlichen oder halb-öffentlichen Bereichen sinnvoll sein. In dieser Zeit ist keine Freischaltung per RFID, Fahrzeugerkennung oder Pin möglich. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(C,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.autolock.wait_for_charging_end,"onUpdate:modelValue":n=>t.updateState(s,n,"autolock.wait_for_charging_end")},{help:o(()=>[...e[32]||(e[32]=[r(' Wenn ein Zeitplan Sperren nach Uhrzeit aktiviert, werden alle Ladepunkte direkt gesperrt und laufende Ladevorgänge beendet. Wird hier "Ja" ausgewählt, dann werden laufende Ladevorgänge NICHT beendet und diese Ladepunkte erst nach abgeschlossener Ladung gesperrt. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(B,null,{actions:o(()=>[a(L,{class:"bg-success clickable",onClick:n=>u.addChargePointTemplateAutolockPlan(s,n)},{default:o(()=>[a(_,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[e[33]||(e[33]=r(" Zeitpläne für Sperren nach Uhrzeit "))]),_:2},1024)])),(l(!0),p(A,null,x(u.getChargePointTemplateAutolockPlans(s),(n,v)=>(l(),f(U,{key:v,title:n.name,collapsible:!0,collapsed:!0},{actions:o(b=>[b.collapsed==!0?(l(),p("span",{key:0,class:ae(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:oe(W=>t.updateState(v,!n.active,"active"),["stop"])},[a(_,{"fixed-width":"",icon:["fas","clock"]}),r(" "+w(n.time[0])+" - "+w(n.time[1])+" ",1),n.frequency.selected=="once"?(l(),p("span",Te,[a(_,{"fixed-width":"",icon:["fas","calendar-day"]}),r(" "+w(t.formatDate(n.frequency.once[0])==t.formatDate(n.frequency.once[1])?t.formatDate(n.frequency.once[0]):t.formatDate(n.frequency.once[0])+" - "+t.formatDate(n.frequency.once[1])),1)])):g("",!0),n.frequency.selected=="daily"?(l(),p("span",ze,[a(_,{"fixed-width":"",icon:["fas","calendar-week"]})])):g("",!0),n.frequency.selected=="weekly"?(l(),p("span",De,[a(_,{"fixed-width":"",icon:["fas","calendar-alt"]})])):g("",!0)],10,Ie)):g("",!0),b.collapsed==!1?(l(),f(L,{key:1,class:"bg-danger clickable",onClick:W=>u.removeChargePointTemplateAutolockPlanModal(s,v,W)},{default:o(()=>[a(_,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):g("",!0)]),default:o(()=>[a(y,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":b=>t.updateState(v,b,"name")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":b=>t.updateState(v,b,"active")},null,8,["model-value","onUpdate:modelValue"]),a(y,{title:"Sperren um",subtype:"time","model-value":n.time[0],"onUpdate:modelValue":b=>t.updateState(v,b,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(y,{title:"Freigeben um",subtype:"time","model-value":n.time[1],"onUpdate:modelValue":b=>t.updateState(v,b,"time.1")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(l(),f(y,{key:0,title:"Sperren ab ...",subtype:"date","model-value":n.frequency.once[0],"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):g("",!0),n.frequency.selected=="once"?(l(),f(y,{key:1,title:"... bis",subtype:"date",min:n.frequency.once[0],"model-value":n.frequency.once[1],"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):g("",!0),n.frequency.selected=="weekly"?(l(),p("div",Ee,[(l(!0),p(A,null,x(t.weekdays,(b,W)=>(l(),f(C,{key:W,title:b,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[W],"onUpdate:modelValue":R=>t.updateState(v,R,"frequency.weekly."+W)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):g("",!0)]),_:2},1032,["title"]))),128))]),_:2},[s.endsWith("/0")?void 0:{name:"actions",fn:o(n=>[n.collapsed?g("",!0):(l(),f(L,{key:0,class:"bg-danger clickable",onClick:v=>u.removeChargePointTemplateModal(s,v)},{default:o(()=>[a(_,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),a(j,{"form-name":"chargePointInstallationForm",onSave:e[4]||(e[4]=i=>t.$emit("save")),onReset:e[5]||(e[5]=i=>t.$emit("reset")),onDefaults:e[6]||(e[6]=i=>t.$emit("defaults"))})])])],64)}const Fe=S(ke,[["render",qe],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]),je=Object.freeze(Object.defineProperty({__proto__:null,default:Fe},Symbol.toStringTag,{value:"Module"}));export{ie as C,ge as a,Fe as b,je as c}; diff --git a/web/settings/assets/Chart-bf602480.js b/web/settings/assets/Chart-bf602480.js new file mode 100644 index 0000000000..4a9ab03c2e --- /dev/null +++ b/web/settings/assets/Chart-bf602480.js @@ -0,0 +1 @@ +import{l as L,L as T,V as H,U as q,T as O,$ as j,a0 as M,F as V}from"./vendor-fortawesome-433470db.js";import{C as z}from"./index-cc8f65ba.js";import{C as P,p as E,a as B,L as N,b as F,B as K,f as $,P as J,c as X,T as Z,i as G,d as U,e as Y,g as Q}from"./vendor-chartjs-1398beb1.js";import{_ as ee,u as h,l as s,m as o,G as l,E as d,x as A,z as f,y as b,N as k,M as x,F as C,B as _}from"./vendor-ea36120f.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./vendor-luxon-8ddd27a0.js";L.add(T,H,q,O,j,M);P.register(E,B,N,F,K,$,J,X,Z,G,U);const te={name:"OpenwbChartView",components:{ChartjsLine:Y,FontAwesomeIcon:V},mixins:[z],props:{initialChartRange:{type:String,required:!1,validator:function(e){return["day","month","year"].indexOf(e)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(e){return e.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/log/yearly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",blockChartInit:!1,chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power_average":{label:"Zähler",unit:"kW",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_imported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_exported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 255, 105, 0.7)",backgroundColor:"rgba(0, 255, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-power_exported":{label:"PV",unit:"kW",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"inverter-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energy_exported":{label:"PV",unit:"kWh",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"inverter-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power_average":{label:"Speicher",unit:"kW",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"battery-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_imported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_exported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-soc":{label:"Speicher SoC",unit:"%",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power_average":{label:"Ladepunkt",unit:"kW",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"charge-point-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported":{label:"Ladepunkt",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"charge-point-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_grid":{label:"Ladepunkt (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_pv":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_bat":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"ev-soc":{label:"Fahrzeug SoC",unit:"%",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-power_average":{label:"SmartHome",unit:"kW",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_imported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_exported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-power_imported":{label:"Hausverbrauch",unit:"kW",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported":{label:"Hausverbrauch",unit:"kWh",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_grid":{label:"Hausverbrauch (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_pv":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_bat":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:e=>`${e.dataset.label}: ${e.formattedValue} ${e.dataset.unit}`}},legend:{display:!0},zoom:{pan:{enabled:!0,mode:"x",threshold:5},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},mode:"x"}}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"",tooltipFormat:""},display:!0,title:{display:!0,text:""},ticks:{source:"timestamp",font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Leistung [kW]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y2:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Energie [kWh]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y3:{position:"right",type:"linear",display:"auto",suggestedMin:0,suggestedMax:100,title:{font:{size:12},display:!0,text:"SoC [%]"},grid:{display:!1},ticks:{font:{size:12},stepSize:10,maxTicksLimit:11}}}},chartDatasets:{datasets:[]}}},computed:{dateInput(){var e={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":e={title:"Monat",type:"month",min:"2018-01"};break;case"year":e={title:"Jahr",type:"year",min:"2018"};break}return e},chartDate:{get(){var e=this.chartRequestDate.year;return this.chartRange!="year"&&(e=e+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(e=e+"-"+this.chartRequestDate.day),e},set(e){let t=e.split("-");this.chartRequestDate.year=t[0],t.length>1?this.chartRequestDate.month=t[1]:this.chartRequestDate.month="",t.length>2?this.chartRequestDate.day=t[2]:this.chartRequestDate.day=""}},chartScaleX(){var e={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":e={unit:"day",tooltipFormat:"DD",text:"Tag",maxTicksLimit:31};break;case"year":e={unit:"month",tooltipFormat:"LLLL yyyy",text:"Monat",maxTicksLimit:12};break}return e},commandData(){var e={date:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day,day:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day};switch(this.chartRange){case"month":e={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":e={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return e},baseTopic(){var e="openWB/log/";switch(this.chartRange){case"day":e=e+"daily/";break;case"month":e=e+"monthly/";break;case"year":e=e+"yearly/";break}return e},chartDataRead(){return this.chartDataObject!=null},chartDataHasEntries(){return this.chartDataObject?this.chartDataObject.length>0:!1},chartTotals(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals")){var e=JSON.parse(JSON.stringify(this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals));return delete e.energy_source,Object.keys(e.counter).forEach(t=>{Object.prototype.hasOwnProperty.call(e.counter[t],"grid")&&delete e.counter[t].grid}),Object.keys(e).forEach(t=>{Object.prototype.hasOwnProperty.call(e[t],"all")&&(Object.keys(e[t]).length<=2&&["bat","pv"].includes(t)?delete e[t].all:e[t]={all:e[t].all,...e[t]})}),e}},chartDataObject(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var e=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(e,"entries")&&(e=e.entries);var t=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return t}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const t=this.chartDataObject[this.chartDataObject.length-1];return t&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(t,r)&&(Object.prototype.hasOwnProperty.call(t[r],"all")&&(["bat","pv"].includes(r)&&Object.keys(t[r]).length<=2?delete t[r].all:t[r]={all:t[r].all,...t[r]}),Object.entries(t[r]).forEach(([n,i])=>{Object.keys(i).forEach(a=>{this.initDataset(r,n,a)})}))}),this.chartDatasets}}},watch:{chartRange(){this.init()}},mounted(){this.init()},methods:{handleChartClick(e){if(this.chartRange=="day")return;const t=this.$refs.myChart.chart;if(!t)return;const r=Q(t,e);if(!r.length)return;const{datasetIndex:n,index:i}=r[0],a=this.chartData.datasets[n].data[i].date;var u="",y="";switch(this.chartRange){case"month":u=a.substring(0,4)+"-"+a.substring(4,6)+"-"+a.substring(6),y="day";break;case"year":u=a.substring(0,4)+"-"+a.substring(4,6),y="month";break}this.blockChartInit=!0,this.chartDate=u,this.chartRange=y},getCardSubtype(e){switch(e){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(e){switch(e){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"pv":return["fas","solar-panel"];case"sh":return["fas","house-signal"];case"hc":return["fas","house"];default:return}},hideDataset(e,t,r){return!!(["bat","pv","cp"].includes(e)&&Object.prototype.hasOwnProperty.call(this.chartTotals[e],"all")&&t!="all"||["grid","bat","pv","cp"].includes(r.split("_").pop()))},getTotalsLabel(e,t=void 0,r=void 0){var n="*test*";if(!t&&!r){switch(e){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";case"hc":return"Hausverbrauch";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(t&&!r){if(t=="all")return"Summe";if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]}if(t&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";case"energy_imported_grid":return"Ladung (Netz-Anteil)";case"energy_imported_pv":return"Ladung (PV-Anteil)";case"energy_imported_bat":return"Ladung (Speicher-Anteil)";case"energy_imported_cp":return"Ladung (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;case"counter":switch(r){case"imported":case"energy_imported":return"Bezug/Verbrauch";case"exported":case"energy_exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"pv":switch(r){case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"sh":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"hc":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"energy_imported_grid":return"Verbrauch (Netz-Anteil)";case"energy_imported_pv":return"Verbrauch (PV-Anteil)";case"energy_imported_bat":return"Verbrauch (Speicher-Anteil)";case"energy_imported_cp":return"Verbrauch (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+t+"+"+r+"*"}return n},getDatasetLabel(e,t,r,n){var i=["*"+n],a=[];if(t=="all")switch(e!=="hc"&&a.push("Summe"),e){case"pv":i=["PV"];break;case"bat":switch(i=["Speicher"],r){case"soc":i.push("SoC");break}break;case"cp":i=["Ladepunkte"];break;case"hc":i=["Hausverbrauch"]}else Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names")&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date].names,t)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":a.push("SoC");break;case"energy_imported":a.push("Ladung");break;case"energy_exported":a.push("Entladung");break;case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break;case"counter":switch(r){case"energy_imported":a.push("Bezug/Verbrauch");break;case"energy_exported":a.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":a.push("Verbrauch");break;case"energy_exported":a.push("Erzeugung");break}break;case"hc":switch(r){case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break}return`${i.join(" ")}${a.length?" ("+a.join(", ")+")":""}`},getDatasetIndex(e){let t=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(t!=-1)return t},addDataset(e,t,r,n){if(!(Object.prototype.hasOwnProperty.call(this.chartTotals,e)&&!Object.prototype.hasOwnProperty.call(this.chartTotals[e],t))){var i=e+"-"+r;if(this.datasetTemplates[i]){var a=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return a.parsing.yAxisKey=n,a.jsonKey=n,a.data=this.chartDataObject,a.label=this.getDatasetLabel(e,t,r,n),a.labelSuffix!=null&&(a.label=a.label+a.labelSuffix),a.hidden=this.hideDataset(e,t,r),t=="all"&&(["grid","pv","bat","cp"].includes(r.split("_").slice(-1)[0])||delete a.stack),this.chartDatasets.datasets.push(a)-1}else console.warn("no matching template found for: "+n+" with template: "+i)}},initDataset(e,t,r){var n=[];this.chartRange=="day"?n={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:n={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"]};const i=e+"."+t+"."+r;if(n[e].includes(r)){var a=this.getDatasetIndex(i);a==null&&(a=this.addDataset(e,t,r,i))}else console.debug("skipping dataset:",i)},setupScaleX(){this.chartOptions.scales.x.time.unit=this.chartScaleX.unit,this.chartOptions.scales.x.time.tooltipFormat=this.chartScaleX.tooltipFormat,this.chartOptions.scales.x.title.text=this.chartScaleX.text,this.chartOptions.scales.x.ticks.maxTicksLimit=this.chartScaleX.maxTicksLimit},requestChart(){if(document.forms.chartForm.reportValidity()){this.setupScaleX(),this.chartDatasets.datasets=[];var t="";switch(this.chartRange){case"day":t="getDailyLog";break;case"month":t="getMonthlyLog";break;case"year":t="getYearlyLog";break}this.$emit("sendCommand",{command:t,data:this.commandData})}else{console.warn("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(e=>{this.$store.commit("removeTopic",`${this.baseTopic}${e}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const e=new Date;this.currentDate=String(e.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(e.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(e.getDate()).padStart(2,"0")),this.blockChartInit?this.blockChartInit=!1:this.initialDate==null||this.initialDate==""?this.chartDate=this.currentDate:this.chartDate=this.initialDate,this.updateChart()}}},ae={class:"chart"},re={key:0},ie={key:1},ne={name:"chartForm"},se={key:1},oe={key:1},le={class:"openwb-chart"},de={key:1};function ce(e,t,r,n,i,a){const u=h("openwb-base-alert"),y=h("openwb-base-select-input"),v=h("openwb-base-text-input"),g=h("openwb-base-card"),R=h("chartjs-line"),w=h("font-awesome-icon"),S=h("openwb-base-heading");return s(),o("div",ae,[e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),o("div",re,[l(u,{subtype:"info"},{default:d(()=>t[3]||(t[3]=[b(' Die Auswertungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. Du findest alle Auswertungen in der openWB, welche sich im Steuerungsmodus "primary" befindet. ')])),_:1})])):(s(),o("div",ie,[A("form",ne,[l(g,{title:"Filter",collapsible:!0,collapsed:!1},{default:d(()=>[l(y,{modelValue:i.chartRange,"onUpdate:modelValue":t[0]||(t[0]=p=>i.chartRange=p),title:"Zeitraum",options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),l(v,{modelValue:a.chartDate,"onUpdate:modelValue":[t[1]||(t[1]=p=>a.chartDate=p),t[2]||(t[2]=p=>a.updateChart())],title:a.dateInput.title,subtype:a.dateInput.type,min:a.dateInput.min,max:i.currentDate,"show-quick-buttons":!0},null,8,["modelValue","title","subtype","min","max"])]),_:1}),a.chartDataRead?(s(),o("div",se,[a.chartDataHasEntries?(s(),o("div",oe,[l(g,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:d(()=>[A("div",le,[l(R,{ref:"myChart",data:a.chartData,options:i.chartOptions,onClick:a.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),l(g,{title:"Summen",collapsible:!0,collapsed:!0},{default:d(()=>[(s(!0),o(k,null,x(a.chartTotals,(p,c)=>(s(),o("div",{key:c},[Object.keys(p).length>0?(s(),f(g,{key:0,collapsible:!0,collapsed:!0,subtype:a.getCardSubtype(c)},{header:d(()=>[l(w,{"fixed-width":"",icon:a.getCardIcon(c)},null,8,["icon"]),b(" "+C(a.getTotalsLabel(c)),1)]),default:d(()=>[(s(!0),o(k,null,x(p,(I,m)=>(s(),o("div",{key:m},[c!=="hc"?(s(),f(S,{key:0},{default:d(()=>[b(C(a.getTotalsLabel(c,m)),1)]),_:2},1024)):_("",!0),(s(!0),o(k,null,x(I,(W,D)=>(s(),o("div",{key:D},[l(v,{title:a.getTotalsLabel(c,m,D),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128)),m=="all"&&c!="hc"?(s(),o("hr",de)):_("",!0)]))),128))]),_:2},1032,["subtype"])):_("",!0)]))),128))]),_:1})])):(s(),f(u,{key:0,subtype:"info"},{default:d(()=>t[5]||(t[5]=[b(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")])),_:1}))])):(s(),f(u,{key:0,subtype:"info"},{default:d(()=>t[4]||(t[4]=[b(" Es wurden noch keine Daten abgerufen. ")])),_:1}))])]))])}const xe=ee(te,[["render",ce],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{xe as default}; diff --git a/web/settings/assets/Chart-cfe16b91.js b/web/settings/assets/Chart-cfe16b91.js deleted file mode 100644 index 5099ebb454..0000000000 --- a/web/settings/assets/Chart-cfe16b91.js +++ /dev/null @@ -1 +0,0 @@ -import{l as L,P as T,Z as H,Y as q,X as O,a3 as j,a4 as M,F as V}from"./vendor-fortawesome-9d7cfdfb.js";import{C as z}from"./index-b236cee5.js";import{C as P,p as E,a as B,L as N,b as F,B as K,f as $,P as J,c as X,T as Z,i as G,d as Y,e as U,g as Q}from"./vendor-chartjs-6a6474b3.js";import{_ as ee,u as h,l as s,m as o,G as l,E as d,A,x as f,B as b,N as k,M as x,F as C,z as _}from"./vendor-ad7c30fd.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./vendor-luxon-8ddd27a0.js";L.add(T,H,q,O,j,M);P.register(E,B,N,F,K,$,J,X,Z,G,Y);const te={name:"OpenwbChartView",components:{ChartjsLine:U,FontAwesomeIcon:V},mixins:[z],props:{initialChartRange:{type:String,required:!1,validator:function(e){return["day","month","year"].indexOf(e)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(e){return e.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/log/yearly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",blockChartInit:!1,chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power_average":{label:"Zähler",unit:"kW",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_imported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_exported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 255, 105, 0.7)",backgroundColor:"rgba(0, 255, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-power_exported":{label:"PV",unit:"kW",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"inverter-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energy_exported":{label:"PV",unit:"kWh",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"inverter-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power_average":{label:"Speicher",unit:"kW",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"battery-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_imported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_exported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-soc":{label:"Speicher SoC",unit:"%",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power_average":{label:"Ladepunkt",unit:"kW",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"charge-point-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported":{label:"Ladepunkt",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"charge-point-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_grid":{label:"Ladepunkt (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_pv":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_bat":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"ev-soc":{label:"Fahrzeug SoC",unit:"%",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-power_average":{label:"SmartHome",unit:"kW",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_imported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_exported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-power_imported":{label:"Hausverbrauch",unit:"kW",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported":{label:"Hausverbrauch",unit:"kWh",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_grid":{label:"Hausverbrauch (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_pv":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_bat":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:e=>`${e.dataset.label}: ${e.formattedValue} ${e.dataset.unit}`}},legend:{display:!0},zoom:{pan:{enabled:!0,mode:"x",threshold:5},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},mode:"x"}}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"",tooltipFormat:""},display:!0,title:{display:!0,text:""},ticks:{source:"timestamp",font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Leistung [kW]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y2:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Energie [kWh]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y3:{position:"right",type:"linear",display:"auto",suggestedMin:0,suggestedMax:100,title:{font:{size:12},display:!0,text:"SoC [%]"},grid:{display:!1},ticks:{font:{size:12},stepSize:10,maxTicksLimit:11}}}},chartDatasets:{datasets:[]}}},computed:{dateInput(){var e={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":e={title:"Monat",type:"month",min:"2018-01"};break;case"year":e={title:"Jahr",type:"year",min:"2018"};break}return e},chartDate:{get(){var e=this.chartRequestDate.year;return this.chartRange!="year"&&(e=e+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(e=e+"-"+this.chartRequestDate.day),e},set(e){let t=e.split("-");this.chartRequestDate.year=t[0],t.length>1?this.chartRequestDate.month=t[1]:this.chartRequestDate.month="",t.length>2?this.chartRequestDate.day=t[2]:this.chartRequestDate.day=""}},chartScaleX(){var e={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":e={unit:"day",tooltipFormat:"DD",text:"Tag",maxTicksLimit:31};break;case"year":e={unit:"month",tooltipFormat:"LLLL yyyy",text:"Monat",maxTicksLimit:12};break}return e},commandData(){var e={date:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day,day:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day};switch(this.chartRange){case"month":e={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":e={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return e},baseTopic(){var e="openWB/log/";switch(this.chartRange){case"day":e=e+"daily/";break;case"month":e=e+"monthly/";break;case"year":e=e+"yearly/";break}return e},chartDataRead(){return this.chartDataObject!=null},chartDataHasEntries(){return this.chartDataObject?this.chartDataObject.length>0:!1},chartTotals(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals")){var e=JSON.parse(JSON.stringify(this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals));return delete e.energy_source,Object.keys(e.counter).forEach(t=>{Object.prototype.hasOwnProperty.call(e.counter[t],"grid")&&delete e.counter[t].grid}),Object.keys(e).forEach(t=>{Object.prototype.hasOwnProperty.call(e[t],"all")&&(Object.keys(e[t]).length<=2&&["bat","pv"].includes(t)?delete e[t].all:e[t]={all:e[t].all,...e[t]})}),e}},chartDataObject(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var e=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(e,"entries")&&(e=e.entries);var t=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return t}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const t=this.chartDataObject[this.chartDataObject.length-1];return t&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(t,r)&&(Object.prototype.hasOwnProperty.call(t[r],"all")&&(["bat","pv"].includes(r)&&Object.keys(t[r]).length<=2?delete t[r].all:t[r]={all:t[r].all,...t[r]}),Object.entries(t[r]).forEach(([n,i])=>{Object.keys(i).forEach(a=>{this.initDataset(r,n,a)})}))}),this.chartDatasets}}},watch:{chartRange(){this.init()}},mounted(){this.init()},methods:{handleChartClick(e){if(this.chartRange=="day")return;const t=this.$refs.myChart.chart;if(!t)return;const r=Q(t,e);if(!r.length)return;const{datasetIndex:n,index:i}=r[0],a=this.chartData.datasets[n].data[i].date;var u="",y="";switch(this.chartRange){case"month":u=a.substring(0,4)+"-"+a.substring(4,6)+"-"+a.substring(6),y="day";break;case"year":u=a.substring(0,4)+"-"+a.substring(4,6),y="month";break}this.blockChartInit=!0,this.chartDate=u,this.chartRange=y},getCardSubtype(e){switch(e){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(e){switch(e){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"pv":return["fas","solar-panel"];case"sh":return["fas","house-signal"];case"hc":return["fas","house"];default:return}},hideDataset(e,t,r){return!!(["bat","pv","cp"].includes(e)&&Object.prototype.hasOwnProperty.call(this.chartTotals[e],"all")&&t!="all"||["grid","bat","pv","cp"].includes(r.split("_").pop()))},getTotalsLabel(e,t=void 0,r=void 0){var n="*test*";if(!t&&!r){switch(e){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";case"hc":return"Hausverbrauch";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(t&&!r){if(t=="all")return"Summe";if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]}if(t&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";case"energy_imported_grid":return"Ladung (Netz-Anteil)";case"energy_imported_pv":return"Ladung (PV-Anteil)";case"energy_imported_bat":return"Ladung (Speicher-Anteil)";case"energy_imported_cp":return"Ladung (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;case"counter":switch(r){case"imported":case"energy_imported":return"Bezug/Verbrauch";case"exported":case"energy_exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"pv":switch(r){case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"sh":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"hc":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"energy_imported_grid":return"Verbrauch (Netz-Anteil)";case"energy_imported_pv":return"Verbrauch (PV-Anteil)";case"energy_imported_bat":return"Verbrauch (Speicher-Anteil)";case"energy_imported_cp":return"Verbrauch (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+t+"+"+r+"*"}return n},getDatasetLabel(e,t,r,n){var i=["*"+n],a=[];if(t=="all")switch(e!=="hc"&&a.push("Summe"),e){case"pv":i=["PV"];break;case"bat":switch(i=["Speicher"],r){case"soc":i.push("SoC");break}break;case"cp":i=["Ladepunkte"];break;case"hc":i=["Hausverbrauch"]}else Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names")&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date].names,t)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":a.push("SoC");break;case"energy_imported":a.push("Ladung");break;case"energy_exported":a.push("Entladung");break;case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break;case"counter":switch(r){case"energy_imported":a.push("Bezug/Verbrauch");break;case"energy_exported":a.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":a.push("Verbrauch");break;case"energy_exported":a.push("Erzeugung");break}break;case"hc":switch(r){case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break}return`${i.join(" ")}${a.length?" ("+a.join(", ")+")":""}`},getDatasetIndex(e){let t=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(t!=-1)return t},addDataset(e,t,r,n){if(!(Object.prototype.hasOwnProperty.call(this.chartTotals,e)&&!Object.prototype.hasOwnProperty.call(this.chartTotals[e],t))){var i=e+"-"+r;if(this.datasetTemplates[i]){var a=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return a.parsing.yAxisKey=n,a.jsonKey=n,a.data=this.chartDataObject,a.label=this.getDatasetLabel(e,t,r,n),a.labelSuffix!=null&&(a.label=a.label+a.labelSuffix),a.hidden=this.hideDataset(e,t,r),t=="all"&&(["grid","pv","bat","cp"].includes(r.split("_").slice(-1)[0])||delete a.stack),this.chartDatasets.datasets.push(a)-1}else console.warn("no matching template found for: "+n+" with template: "+i)}},initDataset(e,t,r){var n=[];this.chartRange=="day"?n={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:n={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"]};const i=e+"."+t+"."+r;if(n[e].includes(r)){var a=this.getDatasetIndex(i);a==null&&(a=this.addDataset(e,t,r,i))}else console.debug("skipping dataset:",i)},setupScaleX(){this.chartOptions.scales.x.time.unit=this.chartScaleX.unit,this.chartOptions.scales.x.time.tooltipFormat=this.chartScaleX.tooltipFormat,this.chartOptions.scales.x.title.text=this.chartScaleX.text,this.chartOptions.scales.x.ticks.maxTicksLimit=this.chartScaleX.maxTicksLimit},requestChart(){if(document.forms.chartForm.reportValidity()){this.setupScaleX(),this.chartDatasets.datasets=[];var t="";switch(this.chartRange){case"day":t="getDailyLog";break;case"month":t="getMonthlyLog";break;case"year":t="getYearlyLog";break}this.$emit("sendCommand",{command:t,data:this.commandData})}else{console.warn("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(e=>{this.$store.commit("removeTopic",`${this.baseTopic}${e}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const e=new Date;this.currentDate=String(e.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(e.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(e.getDate()).padStart(2,"0")),this.blockChartInit?this.blockChartInit=!1:this.initialDate==null||this.initialDate==""?this.chartDate=this.currentDate:this.chartDate=this.initialDate,this.updateChart()}}},ae={class:"chart"},re={key:0},ie={key:1},ne={name:"chartForm"},se={key:1},oe={key:1},le={class:"openwb-chart"},de={key:1};function ce(e,t,r,n,i,a){const u=h("openwb-base-alert"),y=h("openwb-base-select-input"),v=h("openwb-base-text-input"),g=h("openwb-base-card"),R=h("chartjs-line"),w=h("font-awesome-icon"),S=h("openwb-base-heading");return s(),o("div",ae,[e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),o("div",re,[l(u,{subtype:"info"},{default:d(()=>t[3]||(t[3]=[b(' Die Auswertungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. Du findest alle Auswertungen in der openWB, welche sich im Steuerungsmodus "primary" befindet. ')])),_:1})])):(s(),o("div",ie,[A("form",ne,[l(g,{title:"Filter",collapsible:!0,collapsed:!1},{default:d(()=>[l(y,{modelValue:i.chartRange,"onUpdate:modelValue":t[0]||(t[0]=p=>i.chartRange=p),title:"Zeitraum",options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),l(v,{modelValue:a.chartDate,"onUpdate:modelValue":[t[1]||(t[1]=p=>a.chartDate=p),t[2]||(t[2]=p=>a.updateChart())],title:a.dateInput.title,subtype:a.dateInput.type,min:a.dateInput.min,max:i.currentDate,"show-quick-buttons":!0},null,8,["modelValue","title","subtype","min","max"])]),_:1}),a.chartDataRead?(s(),o("div",se,[a.chartDataHasEntries?(s(),o("div",oe,[l(g,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:d(()=>[A("div",le,[l(R,{ref:"myChart",data:a.chartData,options:i.chartOptions,onClick:a.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),l(g,{title:"Summen",collapsible:!0,collapsed:!0},{default:d(()=>[(s(!0),o(k,null,x(a.chartTotals,(p,c)=>(s(),o("div",{key:c},[Object.keys(p).length>0?(s(),f(g,{key:0,collapsible:!0,collapsed:!0,subtype:a.getCardSubtype(c)},{header:d(()=>[l(w,{"fixed-width":"",icon:a.getCardIcon(c)},null,8,["icon"]),b(" "+C(a.getTotalsLabel(c)),1)]),default:d(()=>[(s(!0),o(k,null,x(p,(I,m)=>(s(),o("div",{key:m},[c!=="hc"?(s(),f(S,{key:0},{default:d(()=>[b(C(a.getTotalsLabel(c,m)),1)]),_:2},1024)):_("",!0),(s(!0),o(k,null,x(I,(W,D)=>(s(),o("div",{key:D},[l(v,{title:a.getTotalsLabel(c,m,D),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128)),m=="all"&&c!="hc"?(s(),o("hr",de)):_("",!0)]))),128))]),_:2},1032,["subtype"])):_("",!0)]))),128))]),_:1})])):(s(),f(u,{key:0,subtype:"info"},{default:d(()=>t[5]||(t[5]=[b(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")])),_:1}))])):(s(),f(u,{key:0,subtype:"info"},{default:d(()=>t[4]||(t[4]=[b(" Es wurden noch keine Daten abgerufen. ")])),_:1}))])]))])}const xe=ee(te,[["render",ce],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{xe as default}; diff --git a/web/settings/assets/CloudConfig-9ce250e8.js b/web/settings/assets/CloudConfig-c17b71a6.js similarity index 93% rename from web/settings/assets/CloudConfig-9ce250e8.js rename to web/settings/assets/CloudConfig-c17b71a6.js index 4ae9118372..f11306c7a0 100644 --- a/web/settings/assets/CloudConfig-9ce250e8.js +++ b/web/settings/assets/CloudConfig-c17b71a6.js @@ -1 +1 @@ -import{l as S,aa as q,F as z}from"./vendor-fortawesome-9d7cfdfb.js";import{C as P}from"./index-b236cee5.js";import{_ as h,u as a,l,m as b,G as r,E as t,A as m,x as p,z as i,D as Z,N as I,B as s,q as _}from"./vendor-ad7c30fd.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";S.add(q);const x={name:"OpenwbCloudConfigView",components:{FontAwesomeIcon:z},mixins:[P],emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+","openWB/system/mqtt/valid_partner_ids"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let n=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,B]of Object.entries(n))B.remote.is_openwb_cloud||delete n[e];return n}},cloudBridgeKey:{get(){for(const[n,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return n}},cloudSettings:{get(){return{username:this.cloudBridge[this.cloudBridgeKey].remote.username,password:this.cloudBridge[this.cloudBridgeKey].remote.password,partner:this.cloudBridge[this.cloudBridgeKey].access?this.cloudBridge[this.cloudBridgeKey].access.partner:!1}}}},methods:{getMqttBridgeIndex(n){return parseInt(n.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(n){n.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(n){this.showCloudRemoveModal=!1,n=="confirm"&&(this.updateState("openWB/system/mqtt/valid_partner_ids",[]),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},K={class:"cloud-config"},M={key:1},R={key:1,name:"cloudConfigCreateForm"},N={key:2,name:"cloudConfigConnectForm"},U={class:"row justify-content-center"},A={key:3,name:"cloudConfigured"},F={class:"row justify-content-center"};function j(n,e,B,G,u,d){const D=a("openwb-base-modal-dialog"),c=a("router-link"),g=a("openwb-base-alert"),w=a("openwb-base-card"),f=a("openwb-base-text-input"),y=a("openwb-base-button-group-input"),C=a("font-awesome-icon"),v=a("openwb-base-array-input"),k=a("openwb-base-click-button"),V=a("openwb-base-heading"),W=a("openwb-base-submit-buttons");return l(),b(I,null,[r(D,{show:u.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=o=>d.removeCloud(o))},{default:t(()=>e[13]||(e[13]=[s(" Willst Du den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")])),_:1},8,["show"]),m("div",K,[n.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),p(g,{key:0,subtype:"danger"},{default:t(()=>[e[15]||(e[15]=s(" Du musst der ")),r(c,{to:"/System/LegalSettings"},{default:t(()=>e[14]||(e[14]=[s(" Datenschutzerklärung ")])),_:1}),e[16]||(e[16]=s(" zustimmen, um die openWB Cloud nutzen zu können. "))]),_:1})):(l(),b("div",M,[r(g,{subtype:"success"},{default:t(()=>[e[18]||(e[18]=s(" Du hast der ")),r(c,{to:"/System/LegalSettings"},{default:t(()=>e[17]||(e[17]=[s(" Datenschutzerklärung ")])),_:1}),e[19]||(e[19]=s(" zugestimmt und kannst die openWB Cloud nutzen. "))]),_:1}),u.enableRemoveCloudButton?i("",!0):(l(),p(g,{key:0,subtype:"warning"},{default:t(()=>e[20]||(e[20]=[s(" Der Zugang wurde entfernt. Bitte starte die openWB neu, um die Änderungen anzuwenden! ")])),_:1})),d.cloudBridgeKey?i("",!0):(l(),b("form",R,[r(w,{title:"Neuen Zugang erstellen"},{default:t(()=>[r(g,{subtype:"warning"},{default:t(()=>e[21]||(e[21]=[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutze die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreibe bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),m("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),s(" . ")])),_:1})]),_:1})])),d.cloudBridgeKey?i("",!0):(l(),b("form",N,[r(w,{title:"Vorhandenen Zugang einrichten"},Z({default:t(()=>[r(f,{modelValue:u.connectCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=o=>u.connectCloudData.username=o),title:"Benutzername",required:"",subtype:"user"},null,8,["modelValue"]),r(f,{modelValue:u.connectCloudData.password,"onUpdate:modelValue":e[2]||(e[2]=o=>u.connectCloudData.password=o),title:"Passwort",required:"",subtype:"password"},null,8,["modelValue"]),r(y,{modelValue:u.connectCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=o=>u.connectCloudData.partner=o),title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:t(()=>e[22]||(e[22]=[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")])),_:1},8,["modelValue"]),u.connectCloudData.partner?(l(),p(v,{key:0,title:"Gültige Partner-IDs","no-elements-message":"Keine Partner-ID zugeordnet.","model-value":n.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[4]||(e[4]=o=>n.updateState("openWB/system/mqtt/valid_partner_ids",o))},{"input-prefix":t(()=>[r(C,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(C,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>e[23]||(e[23]=[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")])),_:1},8,["model-value"])):i("",!0)]),_:2},[n.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[m("div",U,[r(k,{class:_(["col-4",u.enableCloudConnectButton?"btn-success":"btn-outline-success"]),disabled:!u.enableCloudConnectButton,onButtonClicked:d.connectCloud},{default:t(()=>e[24]||(e[24]=[s(" Mit Cloud verbinden ")])),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024)])),d.cloudBridgeKey?(l(),b("form",A,[!u.enableCloudConnectButton||!u.enableNewCloudButton?(l(),p(g,{key:0,subtype:"warning"},{default:t(()=>e[25]||(e[25]=[s(" Der Zugang wurde eingerichtet. Bitte starte die die openWB neu, um die Änderungen anzuwenden! ")])),_:1})):i("",!0),r(w,{title:"Vorhandener Cloud Zugang"},{footer:t(()=>[m("div",F,[r(k,{class:_(["col-4",u.enableRemoveCloudButton?"btn-danger":"btn-outline-danger"]),disabled:!u.enableRemoveCloudButton,onButtonClicked:e[9]||(e[9]=o=>d.removeCloudModal(o))},{default:t(()=>e[29]||(e[29]=[s(" Zugang löschen ")])),_:1},8,["class","disabled"])])]),default:t(()=>[r(V,null,{default:t(()=>e[26]||(e[26]=[m("span",null,[s(" Mit diesen Zugangsdaten kannst Du dich in der "),m("a",{href:"https://remote.openwb.de/",target:"_blank",rel:"noopener noreferrer"}," openWB Cloud "),s(" anmelden. ")],-1)])),_:1}),r(f,{modelValue:d.cloudSettings.username,"onUpdate:modelValue":e[5]||(e[5]=o=>d.cloudSettings.username=o),title:"Benutzername",required:"",subtype:"user",disabled:""},null,8,["modelValue"]),r(f,{modelValue:d.cloudSettings.password,"onUpdate:modelValue":e[6]||(e[6]=o=>d.cloudSettings.password=o),title:"Passwort",required:"",subtype:"password",disabled:""},null,8,["modelValue"]),e[30]||(e[30]=m("hr",null,null,-1)),r(y,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":d.cloudSettings.partner,"onUpdate:modelValue":e[7]||(e[7]=o=>n.updateState(d.cloudBridgeKey,o,"access.partner"))},{help:t(()=>e[27]||(e[27]=[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")])),_:1},8,["model-value"]),d.cloudSettings.partner?(l(),p(v,{key:0,title:"Gültige Partner-IDs","no-elements-message":"Keine Partner-ID zugeordnet.","model-value":n.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[8]||(e[8]=o=>n.updateState("openWB/system/mqtt/valid_partner_ids",o))},{"input-prefix":t(()=>[r(C,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(C,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>e[28]||(e[28]=[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")])),_:1},8,["model-value"])):i("",!0)]),_:1})])):i("",!0),d.cloudBridgeKey?(l(),p(W,{key:4,"form-name":"cloudConfigured",onSave:e[10]||(e[10]=o=>n.$emit("save")),onReset:e[11]||(e[11]=o=>n.$emit("reset")),onDefaults:e[12]||(e[12]=o=>n.$emit("defaults"))})):i("",!0)]))])],64)}const X=h(x,[["render",j],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/CloudConfig.vue"]]);export{X as default}; +import{l as S,a5 as q,F as z}from"./vendor-fortawesome-433470db.js";import{C as P}from"./index-cc8f65ba.js";import{_ as h,u as a,l,m as b,G as r,E as t,x as m,z as p,B as i,D as Z,N as I,y as s,q as _}from"./vendor-ea36120f.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";S.add(q);const x={name:"OpenwbCloudConfigView",components:{FontAwesomeIcon:z},mixins:[P],emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+","openWB/system/mqtt/valid_partner_ids"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let n=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,B]of Object.entries(n))B.remote.is_openwb_cloud||delete n[e];return n}},cloudBridgeKey:{get(){for(const[n,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return n}},cloudSettings:{get(){return{username:this.cloudBridge[this.cloudBridgeKey].remote.username,password:this.cloudBridge[this.cloudBridgeKey].remote.password,partner:this.cloudBridge[this.cloudBridgeKey].access?this.cloudBridge[this.cloudBridgeKey].access.partner:!1}}}},methods:{getMqttBridgeIndex(n){return parseInt(n.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(n){n.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(n){this.showCloudRemoveModal=!1,n=="confirm"&&(this.updateState("openWB/system/mqtt/valid_partner_ids",[]),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},K={class:"cloud-config"},M={key:1},R={key:1,name:"cloudConfigCreateForm"},N={key:2,name:"cloudConfigConnectForm"},U={class:"row justify-content-center"},F={key:3,name:"cloudConfigured"},A={class:"row justify-content-center"};function j(n,e,B,G,u,d){const D=a("openwb-base-modal-dialog"),c=a("router-link"),g=a("openwb-base-alert"),w=a("openwb-base-card"),f=a("openwb-base-text-input"),y=a("openwb-base-button-group-input"),C=a("font-awesome-icon"),v=a("openwb-base-array-input"),k=a("openwb-base-click-button"),V=a("openwb-base-heading"),W=a("openwb-base-submit-buttons");return l(),b(I,null,[r(D,{show:u.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=o=>d.removeCloud(o))},{default:t(()=>e[13]||(e[13]=[s(" Willst Du den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")])),_:1},8,["show"]),m("div",K,[n.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),p(g,{key:0,subtype:"danger"},{default:t(()=>[e[15]||(e[15]=s(" Du musst der ")),r(c,{to:"/System/LegalSettings"},{default:t(()=>e[14]||(e[14]=[s(" Datenschutzerklärung ")])),_:1}),e[16]||(e[16]=s(" zustimmen, um die openWB Cloud nutzen zu können. "))]),_:1})):(l(),b("div",M,[r(g,{subtype:"success"},{default:t(()=>[e[18]||(e[18]=s(" Du hast der ")),r(c,{to:"/System/LegalSettings"},{default:t(()=>e[17]||(e[17]=[s(" Datenschutzerklärung ")])),_:1}),e[19]||(e[19]=s(" zugestimmt und kannst die openWB Cloud nutzen. "))]),_:1}),u.enableRemoveCloudButton?i("",!0):(l(),p(g,{key:0,subtype:"warning"},{default:t(()=>e[20]||(e[20]=[s(" Der Zugang wurde entfernt. Bitte starte die openWB neu, um die Änderungen anzuwenden! ")])),_:1})),d.cloudBridgeKey?i("",!0):(l(),b("form",R,[r(w,{title:"Neuen Zugang erstellen"},{default:t(()=>[r(g,{subtype:"warning"},{default:t(()=>e[21]||(e[21]=[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutze die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreibe bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),m("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),s(" . ")])),_:1})]),_:1})])),d.cloudBridgeKey?i("",!0):(l(),b("form",N,[r(w,{title:"Vorhandenen Zugang einrichten"},Z({default:t(()=>[r(f,{modelValue:u.connectCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=o=>u.connectCloudData.username=o),title:"Benutzername",required:"",subtype:"user"},null,8,["modelValue"]),r(f,{modelValue:u.connectCloudData.password,"onUpdate:modelValue":e[2]||(e[2]=o=>u.connectCloudData.password=o),title:"Passwort",required:"",subtype:"password"},null,8,["modelValue"]),r(y,{modelValue:u.connectCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=o=>u.connectCloudData.partner=o),title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:t(()=>e[22]||(e[22]=[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")])),_:1},8,["modelValue"]),u.connectCloudData.partner?(l(),p(v,{key:0,title:"Gültige Partner-IDs","no-elements-message":"Keine Partner-ID zugeordnet.","model-value":n.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[4]||(e[4]=o=>n.updateState("openWB/system/mqtt/valid_partner_ids",o))},{"input-prefix":t(()=>[r(C,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(C,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>e[23]||(e[23]=[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")])),_:1},8,["model-value"])):i("",!0)]),_:2},[n.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[m("div",U,[r(k,{class:_(["col-4",u.enableCloudConnectButton?"btn-success":"btn-outline-success"]),disabled:!u.enableCloudConnectButton,onButtonClicked:d.connectCloud},{default:t(()=>e[24]||(e[24]=[s(" Mit Cloud verbinden ")])),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024)])),d.cloudBridgeKey?(l(),b("form",F,[!u.enableCloudConnectButton||!u.enableNewCloudButton?(l(),p(g,{key:0,subtype:"warning"},{default:t(()=>e[25]||(e[25]=[s(" Der Zugang wurde eingerichtet. Bitte starte die die openWB neu, um die Änderungen anzuwenden! ")])),_:1})):i("",!0),r(w,{title:"Vorhandener Cloud Zugang"},{footer:t(()=>[m("div",A,[r(k,{class:_(["col-4",u.enableRemoveCloudButton?"btn-danger":"btn-outline-danger"]),disabled:!u.enableRemoveCloudButton,onButtonClicked:e[9]||(e[9]=o=>d.removeCloudModal(o))},{default:t(()=>e[29]||(e[29]=[s(" Zugang löschen ")])),_:1},8,["class","disabled"])])]),default:t(()=>[r(V,null,{default:t(()=>e[26]||(e[26]=[m("span",null,[s(" Mit diesen Zugangsdaten kannst Du dich in der "),m("a",{href:"https://remote.openwb.de/",target:"_blank",rel:"noopener noreferrer"}," openWB Cloud "),s(" anmelden. ")],-1)])),_:1}),r(f,{modelValue:d.cloudSettings.username,"onUpdate:modelValue":e[5]||(e[5]=o=>d.cloudSettings.username=o),title:"Benutzername",required:"",subtype:"user",disabled:""},null,8,["modelValue"]),r(f,{modelValue:d.cloudSettings.password,"onUpdate:modelValue":e[6]||(e[6]=o=>d.cloudSettings.password=o),title:"Passwort",required:"",subtype:"password",disabled:""},null,8,["modelValue"]),e[30]||(e[30]=m("hr",null,null,-1)),r(y,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":d.cloudSettings.partner,"onUpdate:modelValue":e[7]||(e[7]=o=>n.updateState(d.cloudBridgeKey,o,"access.partner"))},{help:t(()=>e[27]||(e[27]=[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")])),_:1},8,["model-value"]),d.cloudSettings.partner?(l(),p(v,{key:0,title:"Gültige Partner-IDs","no-elements-message":"Keine Partner-ID zugeordnet.","model-value":n.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[8]||(e[8]=o=>n.updateState("openWB/system/mqtt/valid_partner_ids",o))},{"input-prefix":t(()=>[r(C,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(C,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>e[28]||(e[28]=[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")])),_:1},8,["model-value"])):i("",!0)]),_:1})])):i("",!0),d.cloudBridgeKey?(l(),p(W,{key:4,"form-name":"cloudConfigured",onSave:e[10]||(e[10]=o=>n.$emit("save")),onReset:e[11]||(e[11]=o=>n.$emit("reset")),onDefaults:e[12]||(e[12]=o=>n.$emit("defaults"))})):i("",!0)]))])],64)}const X=h(x,[["render",j],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/CloudConfig.vue"]]);export{X as default}; diff --git a/web/settings/assets/DataManagement-714df651.js b/web/settings/assets/DataManagement-f14600c5.js similarity index 88% rename from web/settings/assets/DataManagement-714df651.js rename to web/settings/assets/DataManagement-f14600c5.js index ddbbf49a87..0d5db413a7 100644 --- a/web/settings/assets/DataManagement-714df651.js +++ b/web/settings/assets/DataManagement-f14600c5.js @@ -1 +1 @@ -import{l as z,an as P,ao as R,ap as $,aq as q,ar as U,F as H}from"./vendor-fortawesome-9d7cfdfb.js";import{_ as B,C as N}from"./index-b236cee5.js";import{_ as x}from"./dynamic-import-helper-be004503.js";import{_ as w,u as f,l as u,m,x as C,E as s,B as i,F as h,G as t,A as o,a1 as L,a2 as T,N as W,z as _,q as M,M as A,D as I}from"./vendor-ad7c30fd.js";const G={props:{backupCloud:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})},sendSystemCommand(n,e={}){this.$emit("sendCommand",{command:n,data:e})}}},J=w(G,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/BackupCloudConfigMixin.vue"]]),K={name:"BackupCloudConfigFallback",mixins:[J]},Z={class:"backup-cloud-fallback"},Q={key:1};function X(n,e,l,b,r,a){const g=f("openwb-base-alert"),d=f("openwb-base-textarea");return u(),m("div",Z,[Object.keys(n.backupCloud.configuration).length==0?(u(),C(g,{key:0,subtype:"info"},{default:s(()=>[i(' Die Backup-Cloud "'+h(n.backupCloud.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(u(),m("div",Q,[t(g,{subtype:"warning"},{default:s(()=>[i(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+h(n.backupCloud.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),t(d,{title:"Konfiguration",subtype:"json","model-value":n.backupCloud.configuration,"onUpdate:modelValue":e[0]||(e[0]=y=>n.updateConfiguration(y,"configuration"))},{help:s(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),t(g,{subtype:"info"},{default:s(()=>[o("pre",null,h(JSON.stringify(n.backupCloud.configuration,void 0,2)),1)]),_:1})]))])}const Y=w(K,[["render",X],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),ee={name:"OpenwbBackupCloudProxy",props:{backupCloud:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],methods:{getBackupCloudComponent(){return console.debug(`loading backup cloud: ${this.backupCloud.type}`),L({loader:()=>x(Object.assign({"./nextcloud/backup_cloud.vue":()=>B(()=>import("./backup_cloud-42fd7d1e.js"),["assets/backup_cloud-42fd7d1e.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./nfs/backup_cloud.vue":()=>B(()=>import("./backup_cloud-b4673e75.js"),["assets/backup_cloud-b4673e75.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./onedrive/backup_cloud.vue":()=>B(()=>import("./backup_cloud-cbe0285e.js"),["assets/backup_cloud-cbe0285e.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./samba/backup_cloud.vue":()=>B(()=>import("./backup_cloud-36fc78b8.js"),["assets/backup_cloud-36fc78b8.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.backupCloud.type}/backup_cloud.vue`),errorComponent:Y})},updateConfiguration(n){this.$emit("update:configuration",n)},sendCommand(n){this.$emit("sendCommand",n)}}};function ne(n,e,l,b,r,a){const g=f("openwb-base-heading");return u(),m(W,null,[t(g,null,{default:s(()=>[i(' Einstellungen für Backup-Cloud Modul "'+h(l.backupCloud.name)+'" ',1)]),_:1}),(u(),C(T(a.getBackupCloudComponent()),{"backup-cloud":l.backupCloud,"onUpdate:configuration":e[0]||(e[0]=d=>a.updateConfiguration(d)),onSendCommand:e[1]||(e[1]=d=>a.sendCommand(d))},null,40,["backup-cloud"]))],64)}const te=w(ee,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]),oe={props:{monitoring:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},ie=w(oe,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/monitoring/MonitoringConfigMixin.vue"]]),se={name:"MonitoringConfigFallback",mixins:[ie]},ae={class:"monitoring-fallback"};function re(n,e,l,b,r,a){const g=f("openwb-base-alert"),d=f("openwb-base-textarea");return u(),m("div",ae,[t(g,{subtype:"warning"},{default:s(()=>[i(' Es wurde keine Konfigurationsseite für den Anbieter "'+h(n.monitoring.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),t(d,{title:"Konfiguration",subtype:"json","model-value":n.monitoring.configuration,"onUpdate:modelValue":e[0]||(e[0]=y=>n.updateConfiguration(y,"configuration"))},{help:s(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),t(g,{subtype:"info"},{default:s(()=>[o("pre",null,h(JSON.stringify(n.monitoring.configuration,void 0,2)),1)]),_:1})])}const le=w(se,[["render",re],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/monitoring/OpenwbMonitoringConfigFallback.vue"]]),ue={name:"OpenwbMonitoringProxy",props:{monitoring:{type:Object,required:!0}},emits:["update:configuration"],methods:{getMonitoringComponent(){return console.debug(`loading monitoring: ${this.monitoring.type}`),L({loader:()=>x(Object.assign({"./zabbix/monitoring.vue":()=>B(()=>import("./monitoring-df87d8aa.js"),["assets/monitoring-df87d8aa.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.monitoring.type}/monitoring.vue`),errorComponent:le})},updateConfiguration(n){this.$emit("update:configuration",n)}}};function de(n,e,l,b,r,a){const g=f("openwb-base-heading");return u(),m(W,null,[t(g,null,{default:s(()=>[i(' Einstellungen für Modul "'+h(l.monitoring.name)+'" ',1)]),_:1}),(u(),C(T(a.getMonitoringComponent()),{monitoring:l.monitoring,"onUpdate:configuration":e[0]||(e[0]=d=>a.updateConfiguration(d))},null,40,["monitoring"]))],64)}const pe=w(ue,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/monitoring/OpenwbMonitoringProxy.vue"]]);z.add(P,R,$,q,U);const ce={name:"OpenwbDataManagementView",components:{FontAwesomeIcon:H,OpenwbBackupCloudProxy:te,OpenwbMonitoringProxy:pe},mixins:[N],props:{installAssistantActive:{type:Boolean,required:!1,default:!1},showBackupCloudSection:{type:Boolean,required:!1,default:!0}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/configurable/backup_clouds","openWB/system/configurable/monitoring","openWB/system/backup_cloud/config","openWB/system/backup_cloud/backup_before_update","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/optional/monitoring/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,showRestoreSection:!this.installAssistantActive,selectedRestoreFile:void 0,restoreUploadDone:!1,selectedDataMigrationFile:void 0,dataMigrationUploadDone:!1,dataMigrationConfig:[{sectionName:"Ladepunkte",sectionComponents:[{key:"cp1",label:"Ladepunkt 1",validTypes:["chargePoint"]},{key:"cp2",label:"Ladepunkt 2",validTypes:["chargePoint"]},{key:"cp3",label:"Ladepunkt 3",validTypes:["chargePoint"]},{key:"cp4",label:"Ladepunkt 4",validTypes:["chargePoint"]},{key:"cp5",label:"Ladepunkt 5",validTypes:["chargePoint"]},{key:"cp6",label:"Ladepunkt 6",validTypes:["chargePoint"]},{key:"cp7",label:"Ladepunkt 7",validTypes:["chargePoint"]},{key:"cp8",label:"Ladepunkt 8",validTypes:["chargePoint"]}]},{sectionName:"Zähler",sectionComponents:[{key:"evu",label:"EVU",validTypes:["counter"]},{key:"consumer1",label:"Verbraucher 1",validTypes:["counter"]},{key:"consumer2",label:"Verbraucher 2",validTypes:["counter"]},{key:"consumer3",label:"Verbraucher 3",validTypes:["counter"]}]},{sectionName:"Wechselrichter",sectionComponents:[{key:"pvAll",label:"Wechselrichter (Summe)",validTypes:["inverter"],help:"Die 1.9er Version von openWB speichert lediglich die Summen-Leistung aller Wechselrichter."}]},{sectionName:"Batteriespeicher",sectionComponents:[{key:"bat",label:"Speicher 1",validTypes:["battery"]}]},{sectionName:"Fahrzeuge",sectionComponents:[{key:"ev1",label:"Fahrzeug von Ladepunkt 1",validTypes:["vehicle"]},{key:"ev2",label:"Fahrzeug von Ladepunkt 2",validTypes:["vehicle"]}]},{sectionName:"SmartHome 2.0",sectionComponents:[{key:"sh1",label:"Gerät 1",validTypes:["smartHome"]},{key:"sh2",label:"Gerät 2",validTypes:["smartHome"]},{key:"sh3",label:"Gerät 3",validTypes:["smartHome"]},{key:"sh4",label:"Gerät 4",validTypes:["smartHome"]},{key:"sh5",label:"Gerät 5",validTypes:["smartHome"]},{key:"sh6",label:"Gerät 6",validTypes:["smartHome"]},{key:"sh7",label:"Gerät 7",validTypes:["smartHome"]},{key:"sh8",label:"Gerät 8",validTypes:["smartHome"]},{key:"sh9",label:"Gerät 9",validTypes:["smartHome"]}]}],dataMigrationMapping:{cp1:void 0,cp2:void 0,cp3:void 0,cp4:void 0,cp5:void 0,cp6:void 0,cp7:void 0,cp8:void 0,evu:void 0,pvAll:void 0,bat:void 0,consumer1:void 0,consumer2:void 0,consumer3:void 0,sh1:void 0,sh2:void 0,sh3:void 0,sh4:void 0,sh5:void 0,sh6:void 0,sh7:void 0,sh8:void 0,sh9:void 0,ev1:void 0,ev2:void 0}}},computed:{backupCloudList(){return this.$store.state.mqtt["openWB/system/configurable/backup_clouds"]},componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},chargePointOptions(){let n=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const l of Object.values(n))e.push({value:l.id,text:l.name});return e},counterOptions(){var n=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&n.push({value:e.id,text:e.name});return n},inverterOptions(){var n=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&n.push({value:e.id,text:e.name});return n},monitoringList(){return this.$store.state.mqtt["openWB/system/configurable/monitoring"]},batteryOptions(){var n=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&n.push({value:e.id,text:e.name});return n},vehicleOptions(){let n=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[l,b]of Object.entries(n)){let r=parseInt(l.match(/\/(\d\d?)\//)[1]);e.push({value:r,text:b})}return e},smartHomeOptions(){let n=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[l,b]of Object.entries(n))if(b==1){let r=parseInt(l.match(/\/(\d\d?)\//)[1]);e.push({value:r,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${r}/device_name`]})}return e}},methods:{isComponentType(n,e){return n.split("_").includes(e)},getBackupCloudDefaultConfiguration(n){const e=this.backupCloudList.find(l=>l.value==n);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for backup cloud type!",n),{})},sendSystemCommand(n,e={}){this.$emit("sendCommand",{command:n,data:e})},getMigrationOptions(n){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return n.includes("chargePoint")&&e.push(...this.chargePointOptions),n.includes("counter")&&e.push(...this.counterOptions),n.includes("inverter")&&e.push(...this.inverterOptions),n.includes("battery")&&e.push(...this.batteryOptions),n.includes("vehicle")&&e.push(...this.vehicleOptions),n.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(n,e){console.debug("updateConfiguration",n,e),this.updateState(n,e.value,e.object)},updateSelectedBackupCloud(n){this.updateState("openWB/system/backup_cloud/config",n,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(n))},updateSelectedRestoreFile(n){this.selectedRestoreFile=n.target.files[0]},updateSelectedDataMigrationFile(n){this.selectedDataMigrationFile=n.target.files[0]},uploadFile(n,e,l){return new Promise(b=>{if(e!==void 0){this.$root.postClientMessage("Hochladen der Datei gestartet.","info");let r=new FormData;r.append("file",e),r.append("target",n),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",r,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(l,"success"),b(!0)}).catch(a=>{if(a.response){console.error(a.response.status,a.response.data);var g="Hochladen der Datei fehlgeschlagen!
"+a.response.status+": "+a.response.data}else a.request?(console.error(a.request),g+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",a.message),g+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(g,"danger"),b(!1)})}else console.error("no file selected for upload"),b(!1)})},getMonitoringDefaultConfiguration(n){const e=this.monitoringList.find(l=>l.value==n);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for monitoring type!",n),{})},updateSelectedMonitoring(n){this.updateState("openWB/optional/monitoring/config",n,"type"),this.updateState("openWB/optional/monitoring/config",this.getMonitoringDefaultConfiguration(n))},async uploadRestoreFile(){const n="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,n)},async uploadDataMigrationFile(){const n="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,n)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)},factoryReset(){this.sendSystemCommand("factoryReset",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},me={class:"system"},ge={key:1},fe={name:"backupForm"},be={class:"row justify-content-center"},he={class:"col-md-4 d-flex py-1 justify-content-center"},ke={key:0,name:"restoreForm"},ye={class:"input-group"},ve={class:"input-group-prepend"},_e={class:"input-group-text"},we={class:"custom-file"},Ce={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},Be={class:"input-group-append"},De=["disabled"],Se={class:"row justify-content-center"},Me={class:"col-md-4 d-flex py-1 justify-content-center"},We={key:1,name:"cloudBackupForm"},Oe={key:0},Fe={name:"dataMigrationForm"},Ae={class:"input-group"},xe={class:"input-group-prepend"},Le={class:"input-group-text"},Te={class:"custom-file"},Ve={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Ee={class:"input-group-append"},je=["disabled"],ze={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"},Re={key:1,name:"resetForm"},$e={class:"row justify-content-center"},qe={class:"col-md-4 d-flex py-1 justify-content-center"},Ue={key:2,name:"monitoringConfigured"},He={key:0},Ne={key:1},Ie={key:0};function Ge(n,e,l,b,r,a){const g=f("openwb-base-button-group-input"),d=f("openwb-base-alert"),y=f("openwb-base-heading"),v=f("font-awesome-icon"),D=f("openwb-base-click-button"),O=f("openwb-base-select-input"),V=f("openwb-base-button-input"),E=f("openwb-backup-cloud-proxy"),F=f("openwb-base-submit-buttons"),S=f("openwb-base-card"),j=f("openwb-monitoring-proxy");return u(),m("div",me,[l.installAssistantActive?_("",!0):(u(),C(d,{key:0,subtype:"danger"},{default:s(()=>[e[21]||(e[21]=o("h2",null,"Achtung!",-1)),e[22]||(e[22]=o("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),t(g,{modelValue:r.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=p=>r.warningAcknowledged=p),title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"])]),_:1})),r.warningAcknowledged||l.installAssistantActive?(u(),m("div",ge,[t(S,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!l.installAssistantActive},{default:s(()=>{var p,k;return[o("form",fe,[t(y,null,{default:s(()=>e[23]||(e[23]=[i("Sicherung")])),_:1}),t(d,{subtype:"danger"},{default:s(()=>e[24]||(e[24]=[i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')])),_:1}),t(d,{subtype:"info"},{default:s(()=>e[25]||(e[25]=[i(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),o("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),i(" heruntergeladen werden. Beim Herunterladen bitte darauf achten, dass die Datei mit der Endung .tar.gz gespeichert wird. Ggf. das automatische Entpacken des Browsers deaktivieren. ")])),_:1}),o("div",be,[o("div",he,[t(D,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=c=>a.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:s(()=>[e[26]||(e[26]=i(" Sicherung erstellen ")),t(v,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),r.showRestoreSection?(u(),m("form",ke,[e[31]||(e[31]=o("hr",null,null,-1)),t(y,null,{default:s(()=>e[27]||(e[27]=[i("Wiederherstellung")])),_:1}),t(d,{subtype:"danger"},{default:s(()=>e[28]||(e[28]=[i(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),o("br",null,null,-1),i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')])),_:1}),o("div",ye,[o("div",ve,[o("div",_e,[t(v,{"fixed-width":"",icon:["fas","file-archive"]})])]),o("div",we,[o("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=c=>a.updateSelectedRestoreFile(c))},null,32),o("label",Ce,h(r.selectedRestoreFile?r.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),o("div",Be,[o("button",{class:M(["btn",r.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!r.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=c=>a.uploadRestoreFile())},[e[29]||(e[29]=i(" Hochladen ")),t(v,{"fixed-width":"",icon:["fas","upload"]})],10,De)])]),o("div",Se,[o("div",Me,[t(D,{class:M(r.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!r.restoreUploadDone,onButtonClicked:e[4]||(e[4]=c=>a.restoreBackup())},{default:s(()=>[e[30]||(e[30]=i(" Wiederherstellung starten ")),t(v,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])):_("",!0),l.showBackupCloudSection?(u(),m("form",We,[e[35]||(e[35]=o("hr",null,null,-1)),t(y,null,{default:s(()=>e[32]||(e[32]=[i(" Automatische Sicherung in einen Cloud-Dienst ")])),_:1}),t(d,{subtype:"info"},{default:s(()=>e[33]||(e[33]=[i(" Ist die openWB als primary konfiguriert, wird zwischen Mitternacht und 5:00 Uhr automatisch eine Sicherung erstellt und in den angegebenen Cloud-Dienst (nicht openWB Cloud!) hochgeladen. Ist kein Cloud-Dienst konfiguriert, wird keine automatische Sicherung erstellt. Die automatische Sicherung kann unabhängig von der openWB Cloud genutzt werden."),o("br",null,null,-1),i(" Die manuelle Cloud-Sicherung und -falls aktiviert- die Sicherung vor einem Update werden sowohl von einer primary als auch von einer secondary durchgeführt."),o("br",null,null,-1),i(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),o("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),i(" . ")])),_:1}),t(O,{class:"mb-2",title:"Backup-Cloud",options:a.backupCloudList,"model-value":(p=n.$store.state.mqtt["openWB/system/backup_cloud/config"])==null?void 0:p.type,"onUpdate:modelValue":e[5]||(e[5]=c=>a.updateSelectedBackupCloud(c))},null,8,["options","model-value"]),(k=n.$store.state.mqtt["openWB/system/backup_cloud/config"])!=null&&k.type?(u(),m("div",Oe,[t(g,{title:"Sicherung vor System-Update",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.$store.state.mqtt["openWB/system/backup_cloud/backup_before_update"],"onUpdate:modelValue":e[6]||(e[6]=c=>n.updateState("openWB/system/backup_cloud/backup_before_update",c))},{help:s(()=>e[34]||(e[34]=[i(" Ist diese Option aktiviert, dann wird vor jedem System-Update automatisch eine Sicherung erstellt und diese in die Backup-Cloud hochgeladen. ")])),_:1},8,["model-value"]),t(V,{title:"Manuelle Cloud-Sicherung","button-text":"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[7]||(e[7]=c=>a.sendSystemCommand("createCloudBackup",{}))}),t(E,{"backup-cloud":n.$store.state.mqtt["openWB/system/backup_cloud/config"],"onUpdate:configuration":e[8]||(e[8]=c=>a.updateConfiguration("openWB/system/backup_cloud/config",c)),onSendCommand:e[9]||(e[9]=c=>a.sendSystemCommand(c.command,c.args))},null,8,["backup-cloud"])])):_("",!0),t(F,{"form-name":"cloudBackupForm","hide-reset":!0,"hide-defaults":!0,onSave:e[10]||(e[10]=c=>n.$emit("save")),onReset:e[11]||(e[11]=c=>n.$emit("reset")),onDefaults:e[12]||(e[12]=c=>n.$emit("defaults"))})])):_("",!0)]}),_:1},8,["collapsed"]),!l.installAssistantActive&&!n.$store.state.mqtt["openWB/general/extern"]?(u(),C(S,{key:0,title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:s(()=>[o("form",Fe,[t(d,{subtype:"info"},{default:s(()=>e[36]||(e[36]=[i(" Hier kann die Sicherung aus den älteren Software Versionen 1.9.303 oder 1.9.304 hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren."),o("br",null,null,-1),i(" Ein Import aus Versionen kleiner als 1.9.303 ist nicht möglich. Falls eine Datenübernahme aus 1.9er Versionen gewünscht ist, muss erst ein Upgrade auf 1.9.303 oder 1.9.304 durchgeführt werden! Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden. ")])),_:1}),t(d,{subtype:"danger"},{default:s(()=>e[37]||(e[37]=[i(" Die Portierung kann bei vielen historischen Daten von mehreren Jahren durchaus bis zu 30 Minuten dauern. Die openWB in dieser Zeit bitte nicht herunterfahren! Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist."),o("br",null,null,-1),i(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),o("br",null,null,-1),i(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")])),_:1}),o("div",Ae,[o("div",xe,[o("div",Le,[t(v,{"fixed-width":"",icon:["fas","file-archive"]})])]),o("div",Te,[o("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[13]||(e[13]=p=>a.updateSelectedDataMigrationFile(p))},null,32),o("label",Ve,h(r.selectedDataMigrationFile?r.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),o("div",Ee,[o("button",{class:M(["btn",r.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!r.selectedDataMigrationFile,type:"button",onClick:e[14]||(e[14]=p=>a.uploadDataMigrationFile())},[e[38]||(e[38]=i(" Hochladen ")),t(v,{"fixed-width":"",icon:["fas","upload"]})],10,je)])]),t(y,null,{default:s(()=>e[39]||(e[39]=[i(" Zuordnung der Komponenten ")])),_:1}),(u(!0),m(W,null,A(r.dataMigrationConfig,p=>(u(),m("div",{key:p.sectionName},[t(y,null,{default:s(()=>[i(h(p.sectionName),1)]),_:2},1024),(u(!0),m(W,null,A(p.sectionComponents,k=>(u(),C(O,{key:k.key,modelValue:r.dataMigrationMapping[k.key],"onUpdate:modelValue":c=>r.dataMigrationMapping[k.key]=c,title:k.label,options:a.getMigrationOptions(k.validTypes)},I({_:2},[k.help?{name:"help",fn:s(()=>[i(h(k.help),1)]),key:"0"}:void 0]),1032,["modelValue","onUpdate:modelValue","title","options"]))),128))]))),128)),o("div",ze,[o("div",Pe,[t(D,{class:M(r.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!r.dataMigrationUploadDone,onButtonClicked:e[15]||(e[15]=p=>a.dataMigration())},{default:s(()=>[e[40]||(e[40]=i(" Datenübernahme starten ")),t(v,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1})):_("",!0),l.installAssistantActive?_("",!0):(u(),m("form",Re,[t(S,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:s(()=>[o("div",$e,[o("div",qe,[t(D,{class:"btn-danger clickable",onButtonClicked:e[16]||(e[16]=p=>a.factoryReset())},{default:s(()=>[t(v,{"fixed-width":"",icon:["fas","skull-crossbones"]}),e[42]||(e[42]=i(" Zurücksetzen ")),t(v,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:s(()=>[t(d,{subtype:"danger"},{default:s(()=>e[41]||(e[41]=[i(" Alle Einstellungen, angelegte Geräte/Komponenten, Ladepunkte und Fahrzeuge, etc., Tages-, Monats- und Jahresauswertungen sowie das Ladeprotokoll werden unwiederbringlich gelöscht. Auch die Vorkonfiguration im Auslieferungszustand wird gelöscht. Die openWB muss danach komplett neu eingerichtet werden. Die openWB wird hierfür automatisch neu gestartet. Bitte erstelle vor dem Zurücksetzen eine Sicherung! ")])),_:1})]),_:1})])),l.installAssistantActive?_("",!0):(u(),m("form",Ue,[t(S,{title:"Monitoring",subtype:"success",collapsible:!0,collapsed:!0},{footer:s(()=>[t(F,{"form-name":n.monitoringConfigured,"hide-defaults":!0,onSave:e[19]||(e[19]=p=>n.$emit("save")),onReset:e[20]||(e[20]=p=>n.$emit("reset"))},null,8,["form-name"])]),default:s(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",He,[t(d,{subtype:"info"},{default:s(()=>e[43]||(e[43]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(u(),m("div",Ne,[t(d,{subtype:"info"},{default:s(()=>e[44]||(e[44]=[i(" Das Monitoring informiert Dich sofort per E-Mail, wenn eine Deiner Komponenten oder Ladepunkte ein Problem hat oder die openWB nicht mehr erreichbar ist. ")])),_:1}),t(O,{class:"mb-2",title:"Anbieter",options:a.monitoringList,"model-value":n.$store.state.mqtt["openWB/optional/monitoring/config"]?n.$store.state.mqtt["openWB/optional/monitoring/config"].type:"","onUpdate:modelValue":e[17]||(e[17]=p=>a.updateSelectedMonitoring(p))},null,8,["options","model-value"]),n.$store.state.mqtt["openWB/optional/monitoring/config"]&&n.$store.state.mqtt["openWB/optional/monitoring/config"].type?(u(),m("div",Ie,[t(j,{monitoring:n.$store.state.mqtt["openWB/optional/monitoring/config"],"onUpdate:configuration":e[18]||(e[18]=p=>a.updateConfiguration("openWB/optional/monitoring/config",p))},null,8,["monitoring"])])):_("",!0)]))]),_:1})]))])):_("",!0)])}const Je=w(ce,[["render",Ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]),Ye=Object.freeze(Object.defineProperty({__proto__:null,default:Je},Symbol.toStringTag,{value:"Module"}));export{J as B,Je as D,ie as M,Ye as a}; +import{l as z,aj as P,ak as R,al as $,am as U,an as q,F as H}from"./vendor-fortawesome-433470db.js";import{_ as B,C as N}from"./index-cc8f65ba.js";import{_ as x}from"./dynamic-import-helper-be004503.js";import{_ as w,u as f,l as u,m,z as C,E as s,y as i,F as h,G as t,x as o,a1 as L,a2 as T,N as W,B as _,q as M,M as A,D as I}from"./vendor-ea36120f.js";const G={props:{backupCloud:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})},sendSystemCommand(n,e={}){this.$emit("sendCommand",{command:n,data:e})}}},J=w(G,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/BackupCloudConfigMixin.vue"]]),K={name:"BackupCloudConfigFallback",mixins:[J]},Z={class:"backup-cloud-fallback"},Q={key:1};function X(n,e,l,b,r,a){const g=f("openwb-base-alert"),d=f("openwb-base-textarea");return u(),m("div",Z,[Object.keys(n.backupCloud.configuration).length==0?(u(),C(g,{key:0,subtype:"info"},{default:s(()=>[i(' Die Backup-Cloud "'+h(n.backupCloud.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(u(),m("div",Q,[t(g,{subtype:"warning"},{default:s(()=>[i(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+h(n.backupCloud.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),t(d,{title:"Konfiguration",subtype:"json","model-value":n.backupCloud.configuration,"onUpdate:modelValue":e[0]||(e[0]=y=>n.updateConfiguration(y,"configuration"))},{help:s(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),t(g,{subtype:"info"},{default:s(()=>[o("pre",null,h(JSON.stringify(n.backupCloud.configuration,void 0,2)),1)]),_:1})]))])}const Y=w(K,[["render",X],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),ee={name:"OpenwbBackupCloudProxy",props:{backupCloud:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],methods:{getBackupCloudComponent(){return console.debug(`loading backup cloud: ${this.backupCloud.type}`),L({loader:()=>x(Object.assign({"./nextcloud/backup_cloud.vue":()=>B(()=>import("./backup_cloud-30cf5664.js"),["assets/backup_cloud-30cf5664.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./nfs/backup_cloud.vue":()=>B(()=>import("./backup_cloud-b39f2e48.js"),["assets/backup_cloud-b39f2e48.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./onedrive/backup_cloud.vue":()=>B(()=>import("./backup_cloud-30fea215.js"),["assets/backup_cloud-30fea215.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./samba/backup_cloud.vue":()=>B(()=>import("./backup_cloud-c3181aad.js"),["assets/backup_cloud-c3181aad.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.backupCloud.type}/backup_cloud.vue`),errorComponent:Y})},updateConfiguration(n){this.$emit("update:configuration",n)},sendCommand(n){this.$emit("sendCommand",n)}}};function ne(n,e,l,b,r,a){const g=f("openwb-base-heading");return u(),m(W,null,[t(g,null,{default:s(()=>[i(' Einstellungen für Backup-Cloud Modul "'+h(l.backupCloud.name)+'" ',1)]),_:1}),(u(),C(T(a.getBackupCloudComponent()),{"backup-cloud":l.backupCloud,"onUpdate:configuration":e[0]||(e[0]=d=>a.updateConfiguration(d)),onSendCommand:e[1]||(e[1]=d=>a.sendCommand(d))},null,40,["backup-cloud"]))],64)}const te=w(ee,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]),oe={props:{monitoring:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},ie=w(oe,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/monitoring/MonitoringConfigMixin.vue"]]),se={name:"MonitoringConfigFallback",mixins:[ie]},ae={class:"monitoring-fallback"};function re(n,e,l,b,r,a){const g=f("openwb-base-alert"),d=f("openwb-base-textarea");return u(),m("div",ae,[t(g,{subtype:"warning"},{default:s(()=>[i(' Es wurde keine Konfigurationsseite für den Anbieter "'+h(n.monitoring.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),t(d,{title:"Konfiguration",subtype:"json","model-value":n.monitoring.configuration,"onUpdate:modelValue":e[0]||(e[0]=y=>n.updateConfiguration(y,"configuration"))},{help:s(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),t(g,{subtype:"info"},{default:s(()=>[o("pre",null,h(JSON.stringify(n.monitoring.configuration,void 0,2)),1)]),_:1})])}const le=w(se,[["render",re],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/monitoring/OpenwbMonitoringConfigFallback.vue"]]),ue={name:"OpenwbMonitoringProxy",props:{monitoring:{type:Object,required:!0}},emits:["update:configuration"],methods:{getMonitoringComponent(){return console.debug(`loading monitoring: ${this.monitoring.type}`),L({loader:()=>x(Object.assign({"./zabbix/monitoring.vue":()=>B(()=>import("./monitoring-f3474b05.js"),["assets/monitoring-f3474b05.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.monitoring.type}/monitoring.vue`),errorComponent:le})},updateConfiguration(n){this.$emit("update:configuration",n)}}};function de(n,e,l,b,r,a){const g=f("openwb-base-heading");return u(),m(W,null,[t(g,null,{default:s(()=>[i(' Einstellungen für Modul "'+h(l.monitoring.name)+'" ',1)]),_:1}),(u(),C(T(a.getMonitoringComponent()),{monitoring:l.monitoring,"onUpdate:configuration":e[0]||(e[0]=d=>a.updateConfiguration(d))},null,40,["monitoring"]))],64)}const pe=w(ue,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/monitoring/OpenwbMonitoringProxy.vue"]]);z.add(P,R,$,U,q);const ce={name:"OpenwbDataManagementView",components:{FontAwesomeIcon:H,OpenwbBackupCloudProxy:te,OpenwbMonitoringProxy:pe},mixins:[N],props:{installAssistantActive:{type:Boolean,required:!1,default:!1},showBackupCloudSection:{type:Boolean,required:!1,default:!0}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/configurable/backup_clouds","openWB/system/configurable/monitoring","openWB/system/backup_cloud/config","openWB/system/backup_cloud/backup_before_update","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/optional/monitoring/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,showRestoreSection:!this.installAssistantActive,selectedRestoreFile:void 0,restoreUploadDone:!1,selectedDataMigrationFile:void 0,dataMigrationUploadDone:!1,dataMigrationConfig:[{sectionName:"Ladepunkte",sectionComponents:[{key:"cp1",label:"Ladepunkt 1",validTypes:["chargePoint"]},{key:"cp2",label:"Ladepunkt 2",validTypes:["chargePoint"]},{key:"cp3",label:"Ladepunkt 3",validTypes:["chargePoint"]},{key:"cp4",label:"Ladepunkt 4",validTypes:["chargePoint"]},{key:"cp5",label:"Ladepunkt 5",validTypes:["chargePoint"]},{key:"cp6",label:"Ladepunkt 6",validTypes:["chargePoint"]},{key:"cp7",label:"Ladepunkt 7",validTypes:["chargePoint"]},{key:"cp8",label:"Ladepunkt 8",validTypes:["chargePoint"]}]},{sectionName:"Zähler",sectionComponents:[{key:"evu",label:"EVU",validTypes:["counter"]},{key:"consumer1",label:"Verbraucher 1",validTypes:["counter"]},{key:"consumer2",label:"Verbraucher 2",validTypes:["counter"]},{key:"consumer3",label:"Verbraucher 3",validTypes:["counter"]}]},{sectionName:"Wechselrichter",sectionComponents:[{key:"pvAll",label:"Wechselrichter (Summe)",validTypes:["inverter"],help:"Die 1.9er Version von openWB speichert lediglich die Summen-Leistung aller Wechselrichter."}]},{sectionName:"Batteriespeicher",sectionComponents:[{key:"bat",label:"Speicher 1",validTypes:["battery"]}]},{sectionName:"Fahrzeuge",sectionComponents:[{key:"ev1",label:"Fahrzeug von Ladepunkt 1",validTypes:["vehicle"]},{key:"ev2",label:"Fahrzeug von Ladepunkt 2",validTypes:["vehicle"]}]},{sectionName:"SmartHome 2.0",sectionComponents:[{key:"sh1",label:"Gerät 1",validTypes:["smartHome"]},{key:"sh2",label:"Gerät 2",validTypes:["smartHome"]},{key:"sh3",label:"Gerät 3",validTypes:["smartHome"]},{key:"sh4",label:"Gerät 4",validTypes:["smartHome"]},{key:"sh5",label:"Gerät 5",validTypes:["smartHome"]},{key:"sh6",label:"Gerät 6",validTypes:["smartHome"]},{key:"sh7",label:"Gerät 7",validTypes:["smartHome"]},{key:"sh8",label:"Gerät 8",validTypes:["smartHome"]},{key:"sh9",label:"Gerät 9",validTypes:["smartHome"]}]}],dataMigrationMapping:{cp1:void 0,cp2:void 0,cp3:void 0,cp4:void 0,cp5:void 0,cp6:void 0,cp7:void 0,cp8:void 0,evu:void 0,pvAll:void 0,bat:void 0,consumer1:void 0,consumer2:void 0,consumer3:void 0,sh1:void 0,sh2:void 0,sh3:void 0,sh4:void 0,sh5:void 0,sh6:void 0,sh7:void 0,sh8:void 0,sh9:void 0,ev1:void 0,ev2:void 0}}},computed:{backupCloudList(){return this.$store.state.mqtt["openWB/system/configurable/backup_clouds"]},componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},chargePointOptions(){let n=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const l of Object.values(n))e.push({value:l.id,text:l.name});return e},counterOptions(){var n=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&n.push({value:e.id,text:e.name});return n},inverterOptions(){var n=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&n.push({value:e.id,text:e.name});return n},monitoringList(){return this.$store.state.mqtt["openWB/system/configurable/monitoring"]},batteryOptions(){var n=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&n.push({value:e.id,text:e.name});return n},vehicleOptions(){let n=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[l,b]of Object.entries(n)){let r=parseInt(l.match(/\/(\d\d?)\//)[1]);e.push({value:r,text:b})}return e},smartHomeOptions(){let n=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[l,b]of Object.entries(n))if(b==1){let r=parseInt(l.match(/\/(\d\d?)\//)[1]);e.push({value:r,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${r}/device_name`]})}return e}},methods:{isComponentType(n,e){return n.split("_").includes(e)},getBackupCloudDefaultConfiguration(n){const e=this.backupCloudList.find(l=>l.value==n);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for backup cloud type!",n),{})},sendSystemCommand(n,e={}){this.$emit("sendCommand",{command:n,data:e})},getMigrationOptions(n){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return n.includes("chargePoint")&&e.push(...this.chargePointOptions),n.includes("counter")&&e.push(...this.counterOptions),n.includes("inverter")&&e.push(...this.inverterOptions),n.includes("battery")&&e.push(...this.batteryOptions),n.includes("vehicle")&&e.push(...this.vehicleOptions),n.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(n,e){console.debug("updateConfiguration",n,e),this.updateState(n,e.value,e.object)},updateSelectedBackupCloud(n){this.updateState("openWB/system/backup_cloud/config",n,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(n))},updateSelectedRestoreFile(n){this.selectedRestoreFile=n.target.files[0]},updateSelectedDataMigrationFile(n){this.selectedDataMigrationFile=n.target.files[0]},uploadFile(n,e,l){return new Promise(b=>{if(e!==void 0){this.$root.postClientMessage("Hochladen der Datei gestartet.","info");let r=new FormData;r.append("file",e),r.append("target",n),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",r,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(l,"success"),b(!0)}).catch(a=>{if(a.response){console.error(a.response.status,a.response.data);var g="Hochladen der Datei fehlgeschlagen!
"+a.response.status+": "+a.response.data}else a.request?(console.error(a.request),g+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",a.message),g+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(g,"danger"),b(!1)})}else console.error("no file selected for upload"),b(!1)})},getMonitoringDefaultConfiguration(n){const e=this.monitoringList.find(l=>l.value==n);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for monitoring type!",n),{})},updateSelectedMonitoring(n){this.updateState("openWB/optional/monitoring/config",n,"type"),this.updateState("openWB/optional/monitoring/config",this.getMonitoringDefaultConfiguration(n))},async uploadRestoreFile(){const n="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,n)},async uploadDataMigrationFile(){const n="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,n)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)},factoryReset(){this.sendSystemCommand("factoryReset",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},me={class:"system"},ge={key:1},fe={name:"backupForm"},be={class:"row justify-content-center"},he={class:"col-md-4 d-flex py-1 justify-content-center"},ke={key:0,name:"restoreForm"},ye={class:"input-group"},ve={class:"input-group-prepend"},_e={class:"input-group-text"},we={class:"custom-file"},Ce={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},Be={class:"input-group-append"},De=["disabled"],Se={class:"row justify-content-center"},Me={class:"col-md-4 d-flex py-1 justify-content-center"},We={key:1,name:"cloudBackupForm"},Oe={key:0},Fe={name:"dataMigrationForm"},Ae={class:"input-group"},xe={class:"input-group-prepend"},Le={class:"input-group-text"},Te={class:"custom-file"},Ve={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},je={class:"input-group-append"},Ee=["disabled"],ze={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"},Re={key:1,name:"resetForm"},$e={class:"row justify-content-center"},Ue={class:"col-md-4 d-flex py-1 justify-content-center"},qe={key:2,name:"monitoringConfigured"},He={key:0},Ne={key:1},Ie={key:0};function Ge(n,e,l,b,r,a){const g=f("openwb-base-button-group-input"),d=f("openwb-base-alert"),y=f("openwb-base-heading"),v=f("font-awesome-icon"),D=f("openwb-base-click-button"),O=f("openwb-base-select-input"),V=f("openwb-base-button-input"),j=f("openwb-backup-cloud-proxy"),F=f("openwb-base-submit-buttons"),S=f("openwb-base-card"),E=f("openwb-monitoring-proxy");return u(),m("div",me,[l.installAssistantActive?_("",!0):(u(),C(d,{key:0,subtype:"danger"},{default:s(()=>[e[21]||(e[21]=o("h2",null,"Achtung!",-1)),e[22]||(e[22]=o("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),t(g,{modelValue:r.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=p=>r.warningAcknowledged=p),title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"])]),_:1})),r.warningAcknowledged||l.installAssistantActive?(u(),m("div",ge,[t(S,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!l.installAssistantActive},{default:s(()=>{var p,k;return[o("form",fe,[t(y,null,{default:s(()=>e[23]||(e[23]=[i("Sicherung")])),_:1}),t(d,{subtype:"danger"},{default:s(()=>e[24]||(e[24]=[i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')])),_:1}),t(d,{subtype:"info"},{default:s(()=>e[25]||(e[25]=[i(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),o("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),i(" heruntergeladen werden. Beim Herunterladen bitte darauf achten, dass die Datei mit der Endung .tar.gz gespeichert wird. Ggf. das automatische Entpacken des Browsers deaktivieren. ")])),_:1}),o("div",be,[o("div",he,[t(D,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=c=>a.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:s(()=>[e[26]||(e[26]=i(" Sicherung erstellen ")),t(v,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),r.showRestoreSection?(u(),m("form",ke,[e[31]||(e[31]=o("hr",null,null,-1)),t(y,null,{default:s(()=>e[27]||(e[27]=[i("Wiederherstellung")])),_:1}),t(d,{subtype:"danger"},{default:s(()=>e[28]||(e[28]=[i(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),o("br",null,null,-1),i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')])),_:1}),o("div",ye,[o("div",ve,[o("div",_e,[t(v,{"fixed-width":"",icon:["fas","file-archive"]})])]),o("div",we,[o("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=c=>a.updateSelectedRestoreFile(c))},null,32),o("label",Ce,h(r.selectedRestoreFile?r.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),o("div",Be,[o("button",{class:M(["btn",r.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!r.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=c=>a.uploadRestoreFile())},[e[29]||(e[29]=i(" Hochladen ")),t(v,{"fixed-width":"",icon:["fas","upload"]})],10,De)])]),o("div",Se,[o("div",Me,[t(D,{class:M(r.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!r.restoreUploadDone,onButtonClicked:e[4]||(e[4]=c=>a.restoreBackup())},{default:s(()=>[e[30]||(e[30]=i(" Wiederherstellung starten ")),t(v,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])):_("",!0),l.showBackupCloudSection?(u(),m("form",We,[e[35]||(e[35]=o("hr",null,null,-1)),t(y,null,{default:s(()=>e[32]||(e[32]=[i(" Automatische Sicherung in einen Cloud-Dienst ")])),_:1}),t(d,{subtype:"info"},{default:s(()=>e[33]||(e[33]=[i(" Ist die openWB als primary konfiguriert, wird zwischen Mitternacht und 5:00 Uhr automatisch eine Sicherung erstellt und in den angegebenen Cloud-Dienst (nicht openWB Cloud!) hochgeladen. Ist kein Cloud-Dienst konfiguriert, wird keine automatische Sicherung erstellt. Die automatische Sicherung kann unabhängig von der openWB Cloud genutzt werden."),o("br",null,null,-1),i(" Die manuelle Cloud-Sicherung und -falls aktiviert- die Sicherung vor einem Update werden sowohl von einer primary als auch von einer secondary durchgeführt."),o("br",null,null,-1),i(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),o("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),i(" . ")])),_:1}),t(O,{class:"mb-2",title:"Backup-Cloud",options:a.backupCloudList,"model-value":(p=n.$store.state.mqtt["openWB/system/backup_cloud/config"])==null?void 0:p.type,"onUpdate:modelValue":e[5]||(e[5]=c=>a.updateSelectedBackupCloud(c))},null,8,["options","model-value"]),(k=n.$store.state.mqtt["openWB/system/backup_cloud/config"])!=null&&k.type?(u(),m("div",Oe,[t(g,{title:"Sicherung vor System-Update",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.$store.state.mqtt["openWB/system/backup_cloud/backup_before_update"],"onUpdate:modelValue":e[6]||(e[6]=c=>n.updateState("openWB/system/backup_cloud/backup_before_update",c))},{help:s(()=>e[34]||(e[34]=[i(" Ist diese Option aktiviert, dann wird vor jedem System-Update automatisch eine Sicherung erstellt und diese in die Backup-Cloud hochgeladen. ")])),_:1},8,["model-value"]),t(V,{title:"Manuelle Cloud-Sicherung","button-text":"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[7]||(e[7]=c=>a.sendSystemCommand("createCloudBackup",{}))}),t(j,{"backup-cloud":n.$store.state.mqtt["openWB/system/backup_cloud/config"],"onUpdate:configuration":e[8]||(e[8]=c=>a.updateConfiguration("openWB/system/backup_cloud/config",c)),onSendCommand:e[9]||(e[9]=c=>a.sendSystemCommand(c.command,c.args))},null,8,["backup-cloud"])])):_("",!0),t(F,{"form-name":"cloudBackupForm","hide-reset":!0,"hide-defaults":!0,onSave:e[10]||(e[10]=c=>n.$emit("save")),onReset:e[11]||(e[11]=c=>n.$emit("reset")),onDefaults:e[12]||(e[12]=c=>n.$emit("defaults"))})])):_("",!0)]}),_:1},8,["collapsed"]),!l.installAssistantActive&&!n.$store.state.mqtt["openWB/general/extern"]?(u(),C(S,{key:0,title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:s(()=>[o("form",Fe,[t(d,{subtype:"info"},{default:s(()=>e[36]||(e[36]=[i(" Hier kann die Sicherung aus den älteren Software Versionen 1.9.303 oder 1.9.304 hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren."),o("br",null,null,-1),i(" Ein Import aus Versionen kleiner als 1.9.303 ist nicht möglich. Falls eine Datenübernahme aus 1.9er Versionen gewünscht ist, muss erst ein Upgrade auf 1.9.303 oder 1.9.304 durchgeführt werden! Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden. ")])),_:1}),t(d,{subtype:"danger"},{default:s(()=>e[37]||(e[37]=[i(" Die Portierung kann bei vielen historischen Daten von mehreren Jahren durchaus bis zu 30 Minuten dauern. Die openWB in dieser Zeit bitte nicht herunterfahren! Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist."),o("br",null,null,-1),i(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),o("br",null,null,-1),i(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")])),_:1}),o("div",Ae,[o("div",xe,[o("div",Le,[t(v,{"fixed-width":"",icon:["fas","file-archive"]})])]),o("div",Te,[o("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[13]||(e[13]=p=>a.updateSelectedDataMigrationFile(p))},null,32),o("label",Ve,h(r.selectedDataMigrationFile?r.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),o("div",je,[o("button",{class:M(["btn",r.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!r.selectedDataMigrationFile,type:"button",onClick:e[14]||(e[14]=p=>a.uploadDataMigrationFile())},[e[38]||(e[38]=i(" Hochladen ")),t(v,{"fixed-width":"",icon:["fas","upload"]})],10,Ee)])]),t(y,null,{default:s(()=>e[39]||(e[39]=[i(" Zuordnung der Komponenten ")])),_:1}),(u(!0),m(W,null,A(r.dataMigrationConfig,p=>(u(),m("div",{key:p.sectionName},[t(y,null,{default:s(()=>[i(h(p.sectionName),1)]),_:2},1024),(u(!0),m(W,null,A(p.sectionComponents,k=>(u(),C(O,{key:k.key,modelValue:r.dataMigrationMapping[k.key],"onUpdate:modelValue":c=>r.dataMigrationMapping[k.key]=c,title:k.label,options:a.getMigrationOptions(k.validTypes)},I({_:2},[k.help?{name:"help",fn:s(()=>[i(h(k.help),1)]),key:"0"}:void 0]),1032,["modelValue","onUpdate:modelValue","title","options"]))),128))]))),128)),o("div",ze,[o("div",Pe,[t(D,{class:M(r.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!r.dataMigrationUploadDone,onButtonClicked:e[15]||(e[15]=p=>a.dataMigration())},{default:s(()=>[e[40]||(e[40]=i(" Datenübernahme starten ")),t(v,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1})):_("",!0),l.installAssistantActive?_("",!0):(u(),m("form",Re,[t(S,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:s(()=>[o("div",$e,[o("div",Ue,[t(D,{class:"btn-danger clickable",onButtonClicked:e[16]||(e[16]=p=>a.factoryReset())},{default:s(()=>[t(v,{"fixed-width":"",icon:["fas","skull-crossbones"]}),e[42]||(e[42]=i(" Zurücksetzen ")),t(v,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:s(()=>[t(d,{subtype:"danger"},{default:s(()=>e[41]||(e[41]=[i(" Alle Einstellungen, angelegte Geräte/Komponenten, Ladepunkte und Fahrzeuge, etc., Tages-, Monats- und Jahresauswertungen sowie das Ladeprotokoll werden unwiederbringlich gelöscht. Auch die Vorkonfiguration im Auslieferungszustand wird gelöscht. Die openWB muss danach komplett neu eingerichtet werden. Die openWB wird hierfür automatisch neu gestartet. Bitte erstelle vor dem Zurücksetzen eine Sicherung! ")])),_:1})]),_:1})])),l.installAssistantActive?_("",!0):(u(),m("form",qe,[t(S,{title:"Monitoring",subtype:"success",collapsible:!0,collapsed:!0},{footer:s(()=>[t(F,{"form-name":n.monitoringConfigured,"hide-defaults":!0,onSave:e[19]||(e[19]=p=>n.$emit("save")),onReset:e[20]||(e[20]=p=>n.$emit("reset"))},null,8,["form-name"])]),default:s(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",He,[t(d,{subtype:"info"},{default:s(()=>e[43]||(e[43]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(u(),m("div",Ne,[t(d,{subtype:"info"},{default:s(()=>e[44]||(e[44]=[i(" Das Monitoring informiert Dich sofort per E-Mail, wenn eine Deiner Komponenten oder Ladepunkte ein Problem hat oder die openWB nicht mehr erreichbar ist. ")])),_:1}),t(O,{class:"mb-2",title:"Anbieter",options:a.monitoringList,"model-value":n.$store.state.mqtt["openWB/optional/monitoring/config"]?n.$store.state.mqtt["openWB/optional/monitoring/config"].type:"","onUpdate:modelValue":e[17]||(e[17]=p=>a.updateSelectedMonitoring(p))},null,8,["options","model-value"]),n.$store.state.mqtt["openWB/optional/monitoring/config"]&&n.$store.state.mqtt["openWB/optional/monitoring/config"].type?(u(),m("div",Ie,[t(E,{monitoring:n.$store.state.mqtt["openWB/optional/monitoring/config"],"onUpdate:configuration":e[18]||(e[18]=p=>a.updateConfiguration("openWB/optional/monitoring/config",p))},null,8,["monitoring"])])):_("",!0)]))]),_:1})]))])):_("",!0)])}const Je=w(ce,[["render",Ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]),Ye=Object.freeze(Object.defineProperty({__proto__:null,default:Je},Symbol.toStringTag,{value:"Module"}));export{J as B,Je as D,ie as M,Ye as a}; diff --git a/web/settings/assets/DebugConfig-8637145c.js b/web/settings/assets/DebugConfig-8637145c.js deleted file mode 100644 index fa4fe5eb60..0000000000 --- a/web/settings/assets/DebugConfig-8637145c.js +++ /dev/null @@ -1,2 +0,0 @@ -import{C as B}from"./index-b236cee5.js";import{l as k,ab as D,ac as W,F as L}from"./vendor-fortawesome-9d7cfdfb.js";import{_,u as s,l as d,x as w,E as l,G as i,q as C,y as F,A as v,F as x,m as b,N as y,M as N,B as f}from"./vendor-ad7c30fd.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";k.add(D,W);const S={name:"OpenwbLogCard",components:{FontAwesomeIcon:L},props:{title:{type:String,required:!0},logFile:{type:String,required:!0}},data(){return{logData:"-- noch nicht geladen --",loading:!1}},methods:{async getFilePromise(n,e=!1){return this.axios.get(location.protocol+"//"+location.host+n).then(t=>t.data).catch(t=>t.response?t.response.status==404&&e?"":`A 404 is expected if running node.js dev server! -`+t.response.status+" "+t.response.statusText+": "+t.response.request.responseURL:t.request?t.request:t.message)},async loadLog(n){this.logData="wird aktualisiert...",this.loading=!0;var e="";for(let r=4;r>=1;r--){const a=await this.getFilePromise(n+"."+r,!0);e+=a}const t=await this.getFilePromise(n);e+=t,this.logData=e,this.loading=!1}}},$={class:"log-data mb-0"};function P(n,e,t,r,a,g){const u=s("font-awesome-icon"),m=s("openwb-base-avatar"),p=s("openwb-base-card");return d(),w(p,{title:t.title,class:"log-card",collapsible:!0,collapsed:!0},{actions:l(()=>[i(m,{class:"bg-success clickable",onClick:e[0]||(e[0]=F(c=>g.loadLog(t.logFile),["stop"]))},{default:l(()=>[i(u,{"fixed-width":"",class:C(a.loading?"fa-spin-pulse":""),icon:a.loading?["fas","spinner"]:["fas","file-download"]},null,8,["class","icon"])]),_:1})]),default:l(()=>[v("pre",$,x(a.logData),1)]),_:1},8,["title"])}const I=_(S,[["render",P],["__scopeId","data-v-a320c3d6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/debug_config/LogCard.vue"]]),V={name:"OpenwbDebuggingView",components:{OpenwbLogCard:I},mixins:[B],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],logFiles:[{title:"Main-Log",fileName:"/openWB/ramdisk/main.log"},{title:"Log des internen Ladepunktes",fileName:"/openWB/ramdisk/internal_chargepoint.log"},{title:"MQTT-Log",fileName:"/openWB/ramdisk/mqtt.log"},{title:"SoC-Log",fileName:"/openWB/ramdisk/soc.log"},{title:"Protokoll des letzten Updates",fileName:"/openWB/data/log/update.log"},{title:"Protokoll des Remote-Dienstes",fileName:"/openWB/ramdisk/remote_support.log"},{title:"Protokoll des SmartHome Dienstes",fileName:"/openWB/ramdisk/smarthome.log"},{title:"Protokoll der Datenmigration",fileName:"/openWB/data/log/data_migration.log"},{title:"Protokoll über die Schaltvorgänge von steuerbaren Verbrauchseinrichtungen",fileName:"/openWB/data/log/steuve_control_command.log"}]}}},q={class:"debugging"},z={name:"debugConfigForm"};function T(n,e,t,r,a,g){const u=s("openwb-base-button-group-input"),m=s("openwb-base-alert"),p=s("openwb-base-card"),c=s("openwb-base-submit-buttons"),h=s("openwb-log-card");return d(),b("div",q,[v("form",z,[i(p,{title:"Protokollierung"},{default:l(()=>[i(u,{title:"Debug Level",buttons:[{buttonValue:30,text:"Warnungen und Fehler"},{buttonValue:20,text:"Info"},{buttonValue:10,text:"Details"}],"model-value":n.$store.state.mqtt["openWB/system/debug_level"],"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateState("openWB/system/debug_level",o))},{help:l(()=>e[4]||(e[4]=[f(' Wenn der Debug Level auf "Info" oder "Details" gesetzt wird, werden mehr Informationen in die Logdateien geschrieben. Im normalen Betrieb sollte immer "Warnungen und Fehler" gewählt werden, um die Schreibvorgänge auf der SD-Karte zu reduzieren. ')])),_:1},8,["model-value"]),i(m,{subtype:"warning"},{default:l(()=>e[5]||(e[5]=[f(' Achtung! In den Einstellungen "Info" und "Details" können in den Logdateien sensible Daten wie Benutzernamen und Passwörter enthalten sein. Diese sollten vor dem Veröffentlichen z.B. im Forum unkenntlich gemacht werden. Private IP-Adressen (z.B. 192.168.x.x) müssen nicht maskiert werden, da diese nicht über das Internet erreichbar sind. ')])),_:1})]),_:1}),i(c,{"form-name":"debugConfigForm",onSave:e[1]||(e[1]=o=>n.$emit("save")),onReset:e[2]||(e[2]=o=>n.$emit("reset")),onDefaults:e[3]||(e[3]=o=>n.$emit("defaults"))})]),(d(!0),b(y,null,N(a.logFiles,o=>(d(),w(h,{key:o.fileName,title:o.title,"log-file":o.fileName},null,8,["title","log-file"]))),128))])}const G=_(V,[["render",T],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DebugConfig.vue"]]);export{G as default}; diff --git a/web/settings/assets/DebugConfig-ee93cd2f.js b/web/settings/assets/DebugConfig-ee93cd2f.js new file mode 100644 index 0000000000..a78832a04f --- /dev/null +++ b/web/settings/assets/DebugConfig-ee93cd2f.js @@ -0,0 +1,2 @@ +import{C as k}from"./index-cc8f65ba.js";import{l as B,a7 as D,a8 as L,F as W}from"./vendor-fortawesome-433470db.js";import{_,u as s,l as d,z as w,E as l,G as i,q as C,A as F,x as v,F as x,m as b,N as y,M as N,y as f}from"./vendor-ea36120f.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";B.add(D,L);const $={name:"OpenwbLogCard",components:{FontAwesomeIcon:W},props:{title:{type:String,required:!0},logFile:{type:String,required:!0}},data(){return{logData:"-- noch nicht geladen --",loading:!1}},methods:{async getFilePromise(n,e=!1){return this.axios.get(location.protocol+"//"+location.host+n).then(t=>t.data).catch(t=>t.response?t.response.status==404&&e?"":`A 404 is expected if running node.js dev server! +`+t.response.status+" "+t.response.statusText+": "+t.response.request.responseURL:t.request?t.request:t.message)},async loadLog(n){this.logData="wird aktualisiert...",this.loading=!0;var e="";for(let r=4;r>=1;r--){const a=await this.getFilePromise(n+"."+r,!0);e+=a}const t=await this.getFilePromise(n);e+=t,this.logData=e,this.loading=!1}}},S={class:"log-data mb-0"};function P(n,e,t,r,a,g){const u=s("font-awesome-icon"),m=s("openwb-base-avatar"),p=s("openwb-base-card");return d(),w(p,{title:t.title,class:"log-card",collapsible:!0,collapsed:!0},{actions:l(()=>[i(m,{class:"bg-success clickable",onClick:e[0]||(e[0]=F(c=>g.loadLog(t.logFile),["stop"]))},{default:l(()=>[i(u,{"fixed-width":"",class:C(a.loading?"fa-spin-pulse":""),icon:a.loading?["fas","spinner"]:["fas","file-download"]},null,8,["class","icon"])]),_:1})]),default:l(()=>[v("pre",S,x(a.logData),1)]),_:1},8,["title"])}const I=_($,[["render",P],["__scopeId","data-v-a320c3d6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/debug_config/LogCard.vue"]]),q={name:"OpenwbDebuggingView",components:{OpenwbLogCard:I},mixins:[k],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],logFiles:[{title:"Main-Log",fileName:"/openWB/ramdisk/main.log"},{title:"Log des internen Ladepunktes",fileName:"/openWB/ramdisk/internal_chargepoint.log"},{title:"MQTT-Log",fileName:"/openWB/ramdisk/mqtt.log"},{title:"SoC-Log",fileName:"/openWB/ramdisk/soc.log"},{title:"Protokoll des letzten Updates",fileName:"/openWB/data/log/update.log"},{title:"Protokoll des Remote-Dienstes",fileName:"/openWB/ramdisk/remote_support.log"},{title:"Protokoll des SmartHome Dienstes",fileName:"/openWB/ramdisk/smarthome.log"},{title:"Protokoll der Datenmigration",fileName:"/openWB/data/log/data_migration.log"}]}}},z={class:"debugging"},V={name:"debugConfigForm"};function T(n,e,t,r,a,g){const u=s("openwb-base-button-group-input"),m=s("openwb-base-alert"),p=s("openwb-base-card"),c=s("openwb-base-submit-buttons"),h=s("openwb-log-card");return d(),b("div",z,[v("form",V,[i(p,{title:"Protokollierung"},{default:l(()=>[i(u,{title:"Debug Level",buttons:[{buttonValue:30,text:"Warnungen und Fehler"},{buttonValue:20,text:"Info"},{buttonValue:10,text:"Details"}],"model-value":n.$store.state.mqtt["openWB/system/debug_level"],"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateState("openWB/system/debug_level",o))},{help:l(()=>e[4]||(e[4]=[f(' Wenn der Debug Level auf "Info" oder "Details" gesetzt wird, werden mehr Informationen in die Logdateien geschrieben. Im normalen Betrieb sollte immer "Warnungen und Fehler" gewählt werden, um die Schreibvorgänge auf der SD-Karte zu reduzieren. ')])),_:1},8,["model-value"]),i(m,{subtype:"warning"},{default:l(()=>e[5]||(e[5]=[f(' Achtung! In den Einstellungen "Info" und "Details" können in den Logdateien sensible Daten wie Benutzernamen und Passwörter enthalten sein. Diese sollten vor dem Veröffentlichen z.B. im Forum unkenntlich gemacht werden. Private IP-Adressen (z.B. 192.168.x.x) müssen nicht maskiert werden, da diese nicht über das Internet erreichbar sind. ')])),_:1})]),_:1}),i(c,{"form-name":"debugConfigForm",onSave:e[1]||(e[1]=o=>n.$emit("save")),onReset:e[2]||(e[2]=o=>n.$emit("reset")),onDefaults:e[3]||(e[3]=o=>n.$emit("defaults"))})]),(d(!0),b(y,null,N(a.logFiles,o=>(d(),w(h,{key:o.fileName,title:o.title,"log-file":o.fileName},null,8,["title","log-file"]))),128))])}const G=_(q,[["render",T],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DebugConfig.vue"]]);export{G as default}; diff --git a/web/settings/assets/GeneralChargeConfig-5075da0e.js b/web/settings/assets/GeneralChargeConfig-401ab7d4.js similarity index 88% rename from web/settings/assets/GeneralChargeConfig-5075da0e.js rename to web/settings/assets/GeneralChargeConfig-401ab7d4.js index 81106b4b43..40ba3e3685 100644 --- a/web/settings/assets/GeneralChargeConfig-5075da0e.js +++ b/web/settings/assets/GeneralChargeConfig-401ab7d4.js @@ -1 +1 @@ -import{_ as b,C as L}from"./index-b236cee5.js";import{_ as q}from"./dynamic-import-helper-be004503.js";import{_ as h,u,l as a,m as l,G as n,E as o,B as i,F as B,A as s,a1 as O,x as W,a2 as F,N as D,z as y}from"./vendor-ad7c30fd.js";const U={props:{electricityTariff:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},A=h(U,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/ElectricityTariffConfigMixin.vue"]]),N={name:"ElectricityTariffConfigFallback",mixins:[A]},Z={class:"backup-cloud-fallback"};function M(t,e,m,k,z,g){const d=u("openwb-base-alert"),p=u("openwb-base-textarea");return a(),l("div",Z,[n(d,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für den Anbieter "'+B(t.electricityTariff.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(p,{title:"Konfiguration",subtype:"json","model-value":t.electricityTariff.configuration,"onUpdate:modelValue":e[0]||(e[0]=_=>t.updateConfiguration(_,"configuration"))},{help:o(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(d,{subtype:"info"},{default:o(()=>[s("pre",null,B(JSON.stringify(t.electricityTariff.configuration,void 0,2)),1)]),_:1})])}const I=h(N,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffConfigFallback.vue"]]),j={name:"OpenwbElectricityTariffProxy",props:{electricityTariff:{type:Object,required:!0}},emits:["update:configuration"],methods:{getTariffComponent(){return console.debug(`loading electricity tariff: ${this.electricityTariff.type}`),O({loader:()=>q(Object.assign({"./awattar/electricity_tariff.vue":()=>b(()=>import("./electricity_tariff-388476a3.js"),["assets/electricity_tariff-388476a3.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/index-b236cee5.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./energycharts/electricity_tariff.vue":()=>b(()=>import("./electricity_tariff-91c588df.js"),["assets/electricity_tariff-91c588df.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/index-b236cee5.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./rabot/electricity_tariff.vue":()=>b(()=>import("./electricity_tariff-5e7da4e9.js"),["assets/electricity_tariff-5e7da4e9.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/index-b236cee5.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tibber/electricity_tariff.vue":()=>b(()=>import("./electricity_tariff-5562646b.js"),["assets/electricity_tariff-5562646b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/index-b236cee5.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./voltego/electricity_tariff.vue":()=>b(()=>import("./electricity_tariff-6bcc7f9b.js"),["assets/electricity_tariff-6bcc7f9b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/index-b236cee5.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.electricityTariff.type}/electricity_tariff.vue`),errorComponent:I})},updateConfiguration(t){this.$emit("update:configuration",t)}}};function R(t,e,m,k,z,g){const d=u("openwb-base-heading");return a(),l(D,null,[n(d,null,{default:o(()=>[i(' Einstellungen für Modul "'+B(m.electricityTariff.name)+'" ',1)]),_:1}),(a(),W(F(g.getTariffComponent()),{"electricity-tariff":m.electricityTariff,"onUpdate:configuration":e[0]||(e[0]=p=>g.updateConfiguration(p))},null,40,["electricity-tariff"]))],64)}const H=h(j,[["render",R],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffProxy.vue"]]),G={name:"OpenwbGeneralChargeConfigView",components:{OpenwbElectricityTariffProxy:H},mixins:[L],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/bat/config/power_limit_mode","openWB/bat/get/power_limit_controllable","openWB/general/extern","openWB/general/chargemode_config/phase_switch_delay","openWB/general/chargemode_config/retry_failed_phase_switches","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit","openWB/general/prices/bat","openWB/general/prices/grid","openWB/general/prices/pv","openWB/optional/et/provider","openWB/optional/ocpp/config","openWB/system/configurable/electricity_tariffs"]}},computed:{electricityTariffList(){return this.$store.state.mqtt["openWB/system/configurable/electricity_tariffs"]}},methods:{getElectricityTariffDefaultConfiguration(t){const e=this.electricityTariffList.find(m=>m.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for electricity tariff type!",t),{})},updateSelectedElectricityTariff(t){this.updateState("openWB/optional/et/provider",t,"type"),this.updateState("openWB/optional/et/provider",this.getElectricityTariffDefaultConfiguration(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},J={class:"generalChargeConfig"},K={name:"generalChargeConfigForm"},x={key:0},Q={key:1},X={key:2},Y={key:0},ee={key:1},te={key:0},ne={key:1},ie={key:2},re={key:0},oe={key:1},ae={key:0};function le(t,e,m,k,z,g){const d=u("openwb-base-alert"),p=u("openwb-base-button-group-input"),_=u("openwb-base-range-input"),c=u("openwb-base-number-input"),v=u("openwb-base-heading"),w=u("openwb-base-card"),S=u("openwb-base-select-input"),V=u("openwb-electricity-tariff-proxy"),$=u("openwb-base-text-input"),T=u("openwb-base-submit-buttons");return a(),l("div",J,[s("form",K,[n(w,{title:"Allgemein"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),l("div",x,[n(d,{subtype:"info"},{default:o(()=>e[16]||(e[16]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(a(),l("div",Q,[n(p,{title:"Begrenzung der Schieflast",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"],"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateState("openWB/general/chargemode_config/unbalanced_load",r))},{help:o(()=>e[17]||(e[17]=[i(" Wenn diese Option aktiviert ist, werden nicht-dreiphasige Ladevorgänge so geregelt, dass am Netzanschlusspunkt (EVU-Zähler) die eingestellte Grenze für die Schieflast nicht überschritten wird. Hierfür muss der EVU-Zähler einzelne Phasenströme bereitstellen!"),s("br",null,null,-1),i(' Weiterhin müssen bei den Ladepunkten sowie Fahrzeugen sämtliche Angaben zur Anzahl angeschlossener/unterstützter Phasen und der Phasenrotation hinterlegt werden, damit der Regelung bekannt ist, welcher Ladevorgang welche Phase am Netzanschluss beeinflusst. siehe "Konfiguration - Ladepunkte -> elektrischer Anschluss - Phase 1" und "Konfiguration - Fahrzeuge -> Fahrzeug-Profile" ')])),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(a(),W(_,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":e[1]||(e[1]=r=>t.updateState("openWB/general/chargemode_config/unbalanced_load_limit",r))},{help:o(()=>e[18]||(e[18]=[i(" Hiermit wird festgelegt, welche Schieflast am Netzanschlusspunkt erlaubt ist. Bei Überschreitung werden gezielt einzelne Ladevorgänge in der Leistung begrenzt. ")])),_:1},8,["model-value"])):y("",!0),n(p,{title:"Phasenumschaltung wiederholt anstoßen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/retry_failed_phase_switches"],"onUpdate:modelValue":e[2]||(e[2]=r=>t.updateState("openWB/general/chargemode_config/retry_failed_phase_switches",r))},{help:o(()=>e[19]||(e[19]=[i(" Wenn diese Option aktiviert ist, werden bis zu drei Umschaltversuche vorgenommen, wenn die vorgegebene und genutzte Phasenzahl nicht übereinstimmen. Wird die Option deaktiviert, wird nur eine Umschaltung durchgeführt."),s("br",null,null,-1),i(" Die gezählten Fehlversuche werden mit dem Abstecken zurückgesetzt. ")])),_:1},8,["model-value"]),n(c,{title:"Verzögerung automat. Phasenumschaltung",unit:"Min.",min:5,max:20,step:1,"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/phase_switch_delay"],"onUpdate:modelValue":e[3]||(e[3]=r=>t.updateState("openWB/general/chargemode_config/phase_switch_delay",r))},{help:o(()=>e[20]||(e[20]=[i(" Um zu viele Umschaltungen zu vermeiden, wird mindestens die hier eingestellte Zeit zwischen zwei Umschaltungen abgewartet. Das Umschalten auf mehrphasiges Laden erfolgt nur, wenn mit der maximalen Stromstärke geladen wird und genug Leistung für mehrphasiges Laden zur Verfügung steht. Auf einphasiges Laden wird zurückgeschaltet, wenn auf die minimale Stromstärke heruntergeregelt wurde. Die Verzögerung wird nur bei der automatischen Phasenumschaltung bei Überschuss-Laden abgewartet."),s("br",null,null,-1),i(" Ist ausreichend Überschuss vorhanden, wird beim Ladestart die Umschaltverzögerung nicht abgewartet, sondern direkt mit mehrphasiger Ladung begonnen. ")])),_:1},8,["model-value"]),e[24]||(e[24]=s("hr",null,null,-1)),n(v,null,{help:o(()=>e[21]||(e[21]=[i(" Zur Berechnung der Ladekosten im Lade-Protokoll werden stundenweise die Anteile der Stromquellen (Speicher, Netz, PV) berechnet und mit den hier angegebenen Preisen multipliziert."),s("br",null,null,-1),i(" Ist die Abrechnung über das Ladeprotokoll, z.B. mit dem Arbeitgeber, vereinbart, ist bei allen drei Feldern der vereinbarte Preis einzutragen. ")])),default:o(()=>[e[22]||(e[22]=i(" Berechnung der Ladekosten "))]),_:1}),t.$store.state.mqtt["openWB/optional/et/provider"]&&t.$store.state.mqtt["openWB/optional/et/provider"].type?(a(),W(d,{key:1,subtype:"info"},{default:o(()=>e[23]||(e[23]=[i(" Für den Netzbezug wird der dynamische Strompreis des Anbieters für variable Stromtarife verwendet. ")])),_:1})):(a(),l("div",X,[n(c,{title:"Preis für Netzbezug",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/grid"]*1e5,"onUpdate:modelValue":e[4]||(e[4]=r=>t.updateState("openWB/general/prices/grid",parseFloat((r/1e5).toFixed(7))))},null,8,["model-value"])])),n(c,{title:"Preis für Speicherentladung",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/bat"]*1e5,"onUpdate:modelValue":e[5]||(e[5]=r=>t.updateState("openWB/general/prices/bat",parseFloat((r/1e5).toFixed(7))))},null,8,["model-value"]),n(c,{title:"Preis für PV-Strom",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/pv"]*1e5,"onUpdate:modelValue":e[6]||(e[6]=r=>t.updateState("openWB/general/prices/pv",parseFloat((r/1e5).toFixed(7))))},null,8,["model-value"])]))]),_:1}),n(w,{title:"Optional"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),l("div",Y,[n(d,{subtype:"info"},{default:o(()=>e[25]||(e[25]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(a(),l("div",ee,[n(v,null,{default:o(()=>e[26]||(e[26]=[i(" Variable Stromtarife ")])),_:1}),n(d,{subtype:"info"},{default:o(()=>e[27]||(e[27]=[i(" Bei Sofort- und Zeitladen wird nur geladen, wenn der Strompreis unter dem angegebenen maximalen Strompreis liegt. Für Zielladen wird die Ladedauer ermittelt und dann zu den günstigsten Stunden geladen."),s("br",null,null,-1),i(" Wenn keine Preise abgefragt werden können, wird bei Sofort- und Zeitladen immer geladen und bei Zielladen zunächst mit PV-Überschuss und zum Erreichen des Zieltermins mit Netzstrom. ")])),_:1}),n(S,{class:"mb-2",title:"Anbieter",options:g.electricityTariffList,"model-value":t.$store.state.mqtt["openWB/optional/et/provider"]?t.$store.state.mqtt["openWB/optional/et/provider"].type:"","onUpdate:modelValue":e[7]||(e[7]=r=>g.updateSelectedElectricityTariff(r))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/optional/et/provider"]&&t.$store.state.mqtt["openWB/optional/et/provider"].type?(a(),l("div",te,[n(V,{"electricity-tariff":t.$store.state.mqtt["openWB/optional/et/provider"],"onUpdate:configuration":e[8]||(e[8]=r=>g.updateConfiguration("openWB/optional/et/provider",r))},null,8,["electricity-tariff"])])):y("",!0),e[31]||(e[31]=s("hr",null,null,-1)),n(v,null,{default:o(()=>e[28]||(e[28]=[i(" Speicher-Entladung ins Fahrzeug steuern ")])),_:1}),t.$store.state.mqtt["openWB/bat/get/power_limit_controllable"]===!0?(a(),l("div",ne,[n(p,{title:"Speicher-Entladung",buttons:[{buttonValue:"no_limit",text:"immer"},{buttonValue:"limit_stop",text:"gesperrt, wenn Fahrzeug lädt"},{buttonValue:"limit_to_home_consumption",text:"für Hausverbrauch"}],"model-value":t.$store.state.mqtt["openWB/bat/config/power_limit_mode"],"onUpdate:modelValue":e[9]||(e[9]=r=>t.updateState("openWB/bat/config/power_limit_mode",r))},{help:o(()=>e[29]||(e[29]=[i(" Wenn das Entladen des Speichers immer erlaubt ist, wird das Fahrzeug aus dem Speicher geladen anstatt Strom aus dem Netz zu beziehen. "),s("br",null,null,-1),i(' Im Modus "gesperrt, wenn Fahrzeug lädt", wird die Entladung nur zugelassen, wenn alle Fahrzeuge im Modus PV-Laden ohne Mindeststrom oder Zielladen mit PV-Überschuss laden.'),s("br",null,null,-1),i(' Wenn das Entladen des Speichers auf den Hausverbrauch begrenzt ist und mindestens Fahrzeuge nicht im Modus PV-Laden ohne Mindeststrom oder Zielladen lädt, wird die Entladung des Speichers in Höhe des Hausverbrauchs zugelassen. Kann die Entladung am Speicher nur komplett gesperrt werden, verhält sich diese Einstellung wie "gesperrt, wenn Fahrzeug lädt".'),s("br",null,null,-1),i(" Diese Einstellung übersteuert ggf die Einstellungen zur Speicher-Beachtung im Modus PV-Laden. ")])),_:1},8,["model-value"])])):(a(),l("div",ie,[n(d,{subtype:"info"},{default:o(()=>e[30]||(e[30]=[i(" Die Speicher-Entladung ins Fahrzeug kann nicht gesteuert werden, da die Entladeleistung nicht an den/die konfigurierten Speicher übergeben werden kann. ")])),_:1})]))]))]),_:1}),n(w,{title:"OCPP Anbindung"},{default:o(()=>{var r,P,E,C;return[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),l("div",re,[n(d,{subtype:"info"},{default:o(()=>e[32]||(e[32]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(a(),l("div",oe,[n(p,{title:"OCPP aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(r=t.$store.state.mqtt["openWB/optional/ocpp/config"])==null?void 0:r.active,"onUpdate:modelValue":e[10]||(e[10]=f=>t.updateState("openWB/optional/ocpp/config",f,"active"))},null,8,["model-value"]),((P=t.$store.state.mqtt["openWB/optional/ocpp/config"])==null?void 0:P.active)===!0?(a(),l("div",ae,[n(d,{subtype:"info"},{default:o(()=>e[33]||(e[33]=[i(" Die Ladepunkte übermitteln den ID-Tag, Heartbeat und den Zählerstand zum Zeitpunkt des Ansteckens, Absteckens und alle 5 Minuten. Eine Steuerung per OCPP ist nicht möglich."),s("br",null,null,-1),i(" Alle Ladepunkte, die ihre Daten an das OCPP-Backend übermitteln sollen, müssen zunächst im OCPP-Backend angelegt werden. Die dort eingetragene Chargebox ID muss in der openWB in den Einstellungen des Ladepunkts eingetragen werden. ")])),_:1}),n($,{title:"URL des OCPP-Backends",subtype:"host","model-value":(E=t.$store.state.mqtt["openWB/optional/ocpp/config"])==null?void 0:E.url,"onUpdate:modelValue":e[11]||(e[11]=f=>t.updateState("openWB/optional/ocpp/config",f,"url"))},null,8,["model-value"]),n(S,{title:"Version","not-selected":"Bitte auswählen",options:[{value:"ocpp1.6",text:"OCPP 1.6"},{value:"ocpp2.0.1",text:"OCPP 2.0.1"}],"model-value":(C=t.$store.state.mqtt["openWB/optional/ocpp/config"])==null?void 0:C.version,"onUpdate:modelValue":e[12]||(e[12]=f=>t.updateState("openWB/optional/ocpp/config",f,"version"))},null,8,["model-value"])])):y("",!0)]))]}),_:1}),n(T,{"form-name":"generalChargeConfigForm",onSave:e[13]||(e[13]=r=>t.$emit("save")),onReset:e[14]||(e[14]=r=>t.$emit("reset")),onDefaults:e[15]||(e[15]=r=>t.$emit("defaults"))})])])}const se=h(G,[["render",le],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]),ge=Object.freeze(Object.defineProperty({__proto__:null,default:se},Symbol.toStringTag,{value:"Module"}));export{A as E,ge as G}; +import{_ as b,C as L}from"./index-cc8f65ba.js";import{_ as q}from"./dynamic-import-helper-be004503.js";import{_ as h,u,l as a,m as l,G as n,E as o,y as i,F as B,x as s,a1 as O,z as W,a2 as F,N as D,B as y}from"./vendor-ea36120f.js";const U={props:{electricityTariff:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},A=h(U,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/ElectricityTariffConfigMixin.vue"]]),N={name:"ElectricityTariffConfigFallback",mixins:[A]},Z={class:"backup-cloud-fallback"};function M(t,e,m,k,z,g){const d=u("openwb-base-alert"),p=u("openwb-base-textarea");return a(),l("div",Z,[n(d,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für den Anbieter "'+B(t.electricityTariff.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(p,{title:"Konfiguration",subtype:"json","model-value":t.electricityTariff.configuration,"onUpdate:modelValue":e[0]||(e[0]=_=>t.updateConfiguration(_,"configuration"))},{help:o(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(d,{subtype:"info"},{default:o(()=>[s("pre",null,B(JSON.stringify(t.electricityTariff.configuration,void 0,2)),1)]),_:1})])}const I=h(N,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffConfigFallback.vue"]]),j={name:"OpenwbElectricityTariffProxy",props:{electricityTariff:{type:Object,required:!0}},emits:["update:configuration"],methods:{getTariffComponent(){return console.debug(`loading electricity tariff: ${this.electricityTariff.type}`),O({loader:()=>q(Object.assign({"./awattar/electricity_tariff.vue":()=>b(()=>import("./electricity_tariff-8330f492.js"),["assets/electricity_tariff-8330f492.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/index-cc8f65ba.js","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./energycharts/electricity_tariff.vue":()=>b(()=>import("./electricity_tariff-a0cf3a14.js"),["assets/electricity_tariff-a0cf3a14.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/index-cc8f65ba.js","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./rabot/electricity_tariff.vue":()=>b(()=>import("./electricity_tariff-0d285d7d.js"),["assets/electricity_tariff-0d285d7d.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/index-cc8f65ba.js","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tibber/electricity_tariff.vue":()=>b(()=>import("./electricity_tariff-4d29c538.js"),["assets/electricity_tariff-4d29c538.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/index-cc8f65ba.js","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./voltego/electricity_tariff.vue":()=>b(()=>import("./electricity_tariff-0c46c1ec.js"),["assets/electricity_tariff-0c46c1ec.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/index-cc8f65ba.js","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.electricityTariff.type}/electricity_tariff.vue`),errorComponent:I})},updateConfiguration(t){this.$emit("update:configuration",t)}}};function R(t,e,m,k,z,g){const d=u("openwb-base-heading");return a(),l(D,null,[n(d,null,{default:o(()=>[i(' Einstellungen für Modul "'+B(m.electricityTariff.name)+'" ',1)]),_:1}),(a(),W(F(g.getTariffComponent()),{"electricity-tariff":m.electricityTariff,"onUpdate:configuration":e[0]||(e[0]=p=>g.updateConfiguration(p))},null,40,["electricity-tariff"]))],64)}const H=h(j,[["render",R],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffProxy.vue"]]),G={name:"OpenwbGeneralChargeConfigView",components:{OpenwbElectricityTariffProxy:H},mixins:[L],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/bat/config/power_limit_mode","openWB/bat/get/power_limit_controllable","openWB/general/extern","openWB/general/chargemode_config/phase_switch_delay","openWB/general/chargemode_config/retry_failed_phase_switches","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit","openWB/general/prices/bat","openWB/general/prices/grid","openWB/general/prices/pv","openWB/optional/et/provider","openWB/optional/ocpp/config","openWB/system/configurable/electricity_tariffs"]}},computed:{electricityTariffList(){return this.$store.state.mqtt["openWB/system/configurable/electricity_tariffs"]}},methods:{getElectricityTariffDefaultConfiguration(t){const e=this.electricityTariffList.find(m=>m.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for electricity tariff type!",t),{})},updateSelectedElectricityTariff(t){this.updateState("openWB/optional/et/provider",t,"type"),this.updateState("openWB/optional/et/provider",this.getElectricityTariffDefaultConfiguration(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},J={class:"generalChargeConfig"},K={name:"generalChargeConfigForm"},x={key:0},Q={key:1},X={key:2},Y={key:0},ee={key:1},te={key:0},ne={key:1},ie={key:2},re={key:0},oe={key:1},ae={key:0};function le(t,e,m,k,z,g){const d=u("openwb-base-alert"),p=u("openwb-base-button-group-input"),_=u("openwb-base-range-input"),c=u("openwb-base-number-input"),v=u("openwb-base-heading"),w=u("openwb-base-card"),S=u("openwb-base-select-input"),V=u("openwb-electricity-tariff-proxy"),$=u("openwb-base-text-input"),T=u("openwb-base-submit-buttons");return a(),l("div",J,[s("form",K,[n(w,{title:"Allgemein"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),l("div",x,[n(d,{subtype:"info"},{default:o(()=>e[16]||(e[16]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(a(),l("div",Q,[n(p,{title:"Begrenzung der Schieflast",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"],"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateState("openWB/general/chargemode_config/unbalanced_load",r))},{help:o(()=>e[17]||(e[17]=[i(" Wenn diese Option aktiviert ist, werden nicht-dreiphasige Ladevorgänge so geregelt, dass am Netzanschlusspunkt (EVU-Zähler) die eingestellte Grenze für die Schieflast nicht überschritten wird. Hierfür muss der EVU-Zähler einzelne Phasenströme bereitstellen!"),s("br",null,null,-1),i(' Weiterhin müssen bei den Ladepunkten sowie Fahrzeugen sämtliche Angaben zur Anzahl angeschlossener/unterstützter Phasen und der Phasenrotation hinterlegt werden, damit der Regelung bekannt ist, welcher Ladevorgang welche Phase am Netzanschluss beeinflusst. siehe "Konfiguration - Ladepunkte -> elektrischer Anschluss - Phase 1" und "Konfiguration - Fahrzeuge -> Fahrzeug-Profile" ')])),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(a(),W(_,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":e[1]||(e[1]=r=>t.updateState("openWB/general/chargemode_config/unbalanced_load_limit",r))},{help:o(()=>e[18]||(e[18]=[i(" Hiermit wird festgelegt, welche Schieflast am Netzanschlusspunkt erlaubt ist. Bei Überschreitung werden gezielt einzelne Ladevorgänge in der Leistung begrenzt. ")])),_:1},8,["model-value"])):y("",!0),n(p,{title:"Phasenumschaltung wiederholt anstoßen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/retry_failed_phase_switches"],"onUpdate:modelValue":e[2]||(e[2]=r=>t.updateState("openWB/general/chargemode_config/retry_failed_phase_switches",r))},{help:o(()=>e[19]||(e[19]=[i(" Wenn diese Option aktiviert ist, werden bis zu drei Umschaltversuche vorgenommen, wenn die vorgegebene und genutzte Phasenzahl nicht übereinstimmen. Wird die Option deaktiviert, wird nur eine Umschaltung durchgeführt."),s("br",null,null,-1),i(" Die gezählten Fehlversuche werden mit dem Abstecken zurückgesetzt. ")])),_:1},8,["model-value"]),n(c,{title:"Verzögerung automat. Phasenumschaltung",unit:"Min.",min:5,max:20,step:1,"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/phase_switch_delay"],"onUpdate:modelValue":e[3]||(e[3]=r=>t.updateState("openWB/general/chargemode_config/phase_switch_delay",r))},{help:o(()=>e[20]||(e[20]=[i(" Um zu viele Umschaltungen zu vermeiden, wird mindestens die hier eingestellte Zeit zwischen zwei Umschaltungen abgewartet. Das Umschalten auf mehrphasiges Laden erfolgt nur, wenn mit der maximalen Stromstärke geladen wird und genug Leistung für mehrphasiges Laden zur Verfügung steht. Auf einphasiges Laden wird zurückgeschaltet, wenn auf die minimale Stromstärke heruntergeregelt wurde. Die Verzögerung wird nur bei der automatischen Phasenumschaltung bei Überschuss-Laden abgewartet."),s("br",null,null,-1),i(" Ist ausreichend Überschuss vorhanden, wird beim Ladestart die Umschaltverzögerung nicht abgewartet, sondern direkt mit mehrphasiger Ladung begonnen. ")])),_:1},8,["model-value"]),e[24]||(e[24]=s("hr",null,null,-1)),n(v,null,{help:o(()=>e[21]||(e[21]=[i(" Zur Berechnung der Ladekosten im Lade-Protokoll werden stundenweise die Anteile der Stromquellen (Speicher, Netz, PV) berechnet und mit den hier angegebenen Preisen multipliziert."),s("br",null,null,-1),i(" Ist die Abrechnung über das Ladeprotokoll, z.B. mit dem Arbeitgeber, vereinbart, ist bei allen drei Feldern der vereinbarte Preis einzutragen. ")])),default:o(()=>[e[22]||(e[22]=i(" Berechnung der Ladekosten "))]),_:1}),t.$store.state.mqtt["openWB/optional/et/provider"]&&t.$store.state.mqtt["openWB/optional/et/provider"].type?(a(),W(d,{key:1,subtype:"info"},{default:o(()=>e[23]||(e[23]=[i(" Für den Netzbezug wird der dynamische Strompreis des Anbieters für variable Stromtarife verwendet. ")])),_:1})):(a(),l("div",X,[n(c,{title:"Preis für Netzbezug",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/grid"]*1e5,"onUpdate:modelValue":e[4]||(e[4]=r=>t.updateState("openWB/general/prices/grid",parseFloat((r/1e5).toFixed(7))))},null,8,["model-value"])])),n(c,{title:"Preis für Speicherentladung",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/bat"]*1e5,"onUpdate:modelValue":e[5]||(e[5]=r=>t.updateState("openWB/general/prices/bat",parseFloat((r/1e5).toFixed(7))))},null,8,["model-value"]),n(c,{title:"Preis für PV-Strom",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/pv"]*1e5,"onUpdate:modelValue":e[6]||(e[6]=r=>t.updateState("openWB/general/prices/pv",parseFloat((r/1e5).toFixed(7))))},null,8,["model-value"])]))]),_:1}),n(w,{title:"Optional"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),l("div",Y,[n(d,{subtype:"info"},{default:o(()=>e[25]||(e[25]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(a(),l("div",ee,[n(v,null,{default:o(()=>e[26]||(e[26]=[i(" Variable Stromtarife ")])),_:1}),n(d,{subtype:"info"},{default:o(()=>e[27]||(e[27]=[i(" Bei Sofort- und Zeitladen wird nur geladen, wenn der Strompreis unter dem angegebenen maximalen Strompreis liegt. Für Zielladen wird die Ladedauer ermittelt und dann zu den günstigsten Stunden geladen."),s("br",null,null,-1),i(" Wenn keine Preise abgefragt werden können, wird bei Sofort- und Zeitladen immer geladen und bei Zielladen zunächst mit PV-Überschuss und zum Erreichen des Zieltermins mit Netzstrom. ")])),_:1}),n(S,{class:"mb-2",title:"Anbieter",options:g.electricityTariffList,"model-value":t.$store.state.mqtt["openWB/optional/et/provider"]?t.$store.state.mqtt["openWB/optional/et/provider"].type:"","onUpdate:modelValue":e[7]||(e[7]=r=>g.updateSelectedElectricityTariff(r))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/optional/et/provider"]&&t.$store.state.mqtt["openWB/optional/et/provider"].type?(a(),l("div",te,[n(V,{"electricity-tariff":t.$store.state.mqtt["openWB/optional/et/provider"],"onUpdate:configuration":e[8]||(e[8]=r=>g.updateConfiguration("openWB/optional/et/provider",r))},null,8,["electricity-tariff"])])):y("",!0),e[31]||(e[31]=s("hr",null,null,-1)),n(v,null,{default:o(()=>e[28]||(e[28]=[i(" Speicher-Entladung ins Fahrzeug steuern ")])),_:1}),t.$store.state.mqtt["openWB/bat/get/power_limit_controllable"]===!0?(a(),l("div",ne,[n(p,{title:"Speicher-Entladung",buttons:[{buttonValue:"no_limit",text:"immer"},{buttonValue:"limit_stop",text:"gesperrt, wenn Fahrzeug lädt"},{buttonValue:"limit_to_home_consumption",text:"für Hausverbrauch"}],"model-value":t.$store.state.mqtt["openWB/bat/config/power_limit_mode"],"onUpdate:modelValue":e[9]||(e[9]=r=>t.updateState("openWB/bat/config/power_limit_mode",r))},{help:o(()=>e[29]||(e[29]=[i(" Wenn das Entladen des Speichers immer erlaubt ist, wird das Fahrzeug aus dem Speicher geladen anstatt Strom aus dem Netz zu beziehen. "),s("br",null,null,-1),i(' Im Modus "gesperrt, wenn Fahrzeug lädt", wird die Entladung nur zugelassen, wenn alle Fahrzeuge im Modus PV-Laden ohne Mindeststrom oder Zielladen mit PV-Überschuss laden.'),s("br",null,null,-1),i(' Wenn das Entladen des Speichers auf den Hausverbrauch begrenzt ist und mindestens Fahrzeuge nicht im Modus PV-Laden ohne Mindeststrom oder Zielladen lädt, wird die Entladung des Speichers in Höhe des Hausverbrauchs zugelassen. Kann die Entladung am Speicher nur komplett gesperrt werden, verhält sich diese Einstellung wie "gesperrt, wenn Fahrzeug lädt".'),s("br",null,null,-1),i(" Diese Einstellung übersteuert ggf die Einstellungen zur Speicher-Beachtung im Modus PV-Laden. ")])),_:1},8,["model-value"])])):(a(),l("div",ie,[n(d,{subtype:"info"},{default:o(()=>e[30]||(e[30]=[i(" Die Speicher-Entladung ins Fahrzeug kann nicht gesteuert werden, da die Entladeleistung nicht an den/die konfigurierten Speicher übergeben werden kann. ")])),_:1})]))]))]),_:1}),n(w,{title:"OCPP Anbindung"},{default:o(()=>{var r,P,E,C;return[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),l("div",re,[n(d,{subtype:"info"},{default:o(()=>e[32]||(e[32]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(a(),l("div",oe,[n(p,{title:"OCPP aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(r=t.$store.state.mqtt["openWB/optional/ocpp/config"])==null?void 0:r.active,"onUpdate:modelValue":e[10]||(e[10]=f=>t.updateState("openWB/optional/ocpp/config",f,"active"))},null,8,["model-value"]),((P=t.$store.state.mqtt["openWB/optional/ocpp/config"])==null?void 0:P.active)===!0?(a(),l("div",ae,[n(d,{subtype:"info"},{default:o(()=>e[33]||(e[33]=[i(" Die Ladepunkte übermitteln den ID-Tag, Heartbeat und den Zählerstand zum Zeitpunkt des Ansteckens, Absteckens und alle 5 Minuten. Eine Steuerung per OCPP ist nicht möglich."),s("br",null,null,-1),i(" Alle Ladepunkte, die ihre Daten an das OCPP-Backend übermitteln sollen, müssen zunächst im OCPP-Backend angelegt werden. Die dort eingetragene Chargebox ID muss in der openWB in den Einstellungen des Ladepunkts eingetragen werden. ")])),_:1}),n($,{title:"URL des OCPP-Backends",subtype:"host","model-value":(E=t.$store.state.mqtt["openWB/optional/ocpp/config"])==null?void 0:E.url,"onUpdate:modelValue":e[11]||(e[11]=f=>t.updateState("openWB/optional/ocpp/config",f,"url"))},null,8,["model-value"]),n(S,{title:"Version","not-selected":"Bitte auswählen",options:[{value:"ocpp1.6",text:"OCPP 1.6"},{value:"ocpp2.0.1",text:"OCPP 2.0.1"}],"model-value":(C=t.$store.state.mqtt["openWB/optional/ocpp/config"])==null?void 0:C.version,"onUpdate:modelValue":e[12]||(e[12]=f=>t.updateState("openWB/optional/ocpp/config",f,"version"))},null,8,["model-value"])])):y("",!0)]))]}),_:1}),n(T,{"form-name":"generalChargeConfigForm",onSave:e[13]||(e[13]=r=>t.$emit("save")),onReset:e[14]||(e[14]=r=>t.$emit("reset")),onDefaults:e[15]||(e[15]=r=>t.$emit("defaults"))})])])}const se=h(G,[["render",le],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]),ge=Object.freeze(Object.defineProperty({__proto__:null,default:se},Symbol.toStringTag,{value:"Module"}));export{A as E,ge as G}; diff --git a/web/settings/assets/GeneralConfig-b0e93144.js b/web/settings/assets/GeneralConfig-b0e93144.js new file mode 100644 index 0000000000..eb9d70afb0 --- /dev/null +++ b/web/settings/assets/GeneralConfig-b0e93144.js @@ -0,0 +1 @@ +import{l as P,a1 as Z,a2 as Q,F as J,X,L as Y,z as ee,aa as te,ab as ne,ac as oe}from"./vendor-fortawesome-433470db.js";import{_ as L,C as ae}from"./index-cc8f65ba.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as h,u as g,l,m as d,z as v,E as o,y as a,F as w,G as n,x as f,a1 as F,a2 as j,N as G,B as c}from"./vendor-ea36120f.js";const re={props:{webTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},ie=h(re,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/WebThemeConfigMixin.vue"]]),le={name:"WebThemeFallback",mixins:[ie]},se={class:"web-theme-fallback"},ue={key:1};function de(t,e,s,B,y,b){const p=g("openwb-base-alert"),r=g("openwb-base-textarea");return l(),d("div",se,[Object.keys(t.webTheme.configuration).length==0?(l(),v(p,{key:0,subtype:"info"},{default:o(()=>[a(' Das Web Theme "'+w(t.webTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),d("div",ue,[n(p,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Web Theme "'+w(t.webTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Theme Konfiguration",subtype:"json","model-value":t.webTheme.configuration,"onUpdate:modelValue":e[0]||(e[0]=_=>t.updateConfiguration(_,"configuration"))},{help:o(()=>e[1]||(e[1]=[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(p,{subtype:"info"},{default:o(()=>[f("pre",null,w(JSON.stringify(t.webTheme.configuration,void 0,2)),1)]),_:1})]))])}const pe=h(le,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeFallback.vue"]]);P.add(Z,Q);const ge={name:"OpenwbWebThemeProxy",components:{FontAwesomeIcon:J},props:{webTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{getThemeComponent(){return console.debug(`loading web theme: ${this.webTheme.type}`),F({loader:()=>M(Object.assign({}),`./${this.webTheme.type}/webTheme.vue`),errorComponent:pe})},updateConfiguration(t){this.$emit("update:configuration",t)}}};function me(t,e,s,B,y,b){const p=g("font-awesome-icon"),r=g("openwb-base-alert"),_=g("openwb-base-heading");return l(),d(G,null,[s.webTheme.official?(l(),v(r,{key:0,subtype:"success"},{default:o(()=>[n(p,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Web Theme "'+w(s.webTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(l(),v(r,{key:1,subtype:"info"},{default:o(()=>[n(p,{"fixed-width":"",icon:["fas","people-group"]}),e[1]||(e[1]=a(" Das ausgewählte Theme wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. "))]),_:1})),n(_,null,{default:o(()=>[a(' Einstellungen für Web Theme "'+w(s.webTheme.name)+'" ',1)]),_:1}),(l(),v(j(b.getThemeComponent()),{"web-theme":s.webTheme,"onUpdate:configuration":e[0]||(e[0]=W=>b.updateConfiguration(W))},null,40,["web-theme"]))],64)}const be=h(ge,[["render",me],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeProxy.vue"]]),fe={props:{rippleControlReceiver:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},ce=h(fe,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/RippleControlReceiverConfigMixin.vue"]]),_e={name:"RippleControlReceiverConfigFallback",mixins:[ce]},ve={class:"ripple-control-receiver-fallback"},we={key:1};function he(t,e,s,B,y,b){const p=g("openwb-base-alert"),r=g("openwb-base-textarea");return l(),d("div",ve,[Object.keys(t.rippleControlReceiver.configuration).length==0?(l(),v(p,{key:0,subtype:"info"},{default:o(()=>[a(' Das RSE-Modul "'+w(t.rippleControlReceiver.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),d("div",we,[n(p,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das RSE-Modul "'+w(t.rippleControlReceiver.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Konfiguration",subtype:"json","model-value":t.rippleControlReceiver.configuration,"onUpdate:modelValue":e[0]||(e[0]=_=>t.updateConfiguration(_,"configuration"))},{help:o(()=>e[1]||(e[1]=[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(p,{subtype:"info"},{default:o(()=>[f("pre",null,w(JSON.stringify(t.rippleControlReceiver.configuration,void 0,2)),1)]),_:1})]))])}const We=h(_e,[["render",he],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverConfigFallback.vue"]]),Be={name:"OpenwbRippleControlReceiverProxy",props:{rippleControlReceiver:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],methods:{getRippleControlReceiverComponent(){return console.debug(`loading ripple control receiver: ${this.rippleControlReceiver.type}`),F({loader:()=>M(Object.assign({"./dimm_kit/ripple_control_receiver.vue":()=>L(()=>import("./ripple_control_receiver-14c898b9.js"),["assets/ripple_control_receiver-14c898b9.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./gpio/ripple_control_receiver.vue":()=>L(()=>import("./ripple_control_receiver-cd0099ce.js"),["assets/ripple_control_receiver-cd0099ce.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.rippleControlReceiver.type}/ripple_control_receiver.vue`),errorComponent:We})},updateConfiguration(t){this.$emit("update:configuration",t)},sendCommand(t){this.$emit("sendCommand",t)}}};function ye(t,e,s,B,y,b){const p=g("openwb-base-heading");return l(),d(G,null,[n(p,null,{default:o(()=>[a(' Einstellungen für RSE-Modul "'+w(s.rippleControlReceiver.name)+'" ',1)]),_:1}),(l(),v(j(b.getRippleControlReceiverComponent()),{"ripple-control-receiver":s.rippleControlReceiver,"onUpdate:configuration":e[0]||(e[0]=r=>b.updateConfiguration(r)),onSendCommand:e[1]||(e[1]=r=>b.sendCommand(r))},null,40,["ripple-control-receiver"]))],64)}const Ce=h(Be,[["render",ye],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverProxy.vue"]]);P.add(X,Y,ee,te,ne,oe);const Se={name:"OpenwbGeneralConfigView",components:{OpenwbWebThemeProxy:be,OpenwbRippleControlReceiverProxy:Ce,FontAwesomeIcon:J},mixins:[ae],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/charge_log_data_config","openWB/general/control_interval","openWB/general/extern","openWB/general/external_buttons_hw","openWB/general/grid_protection_configured","openWB/general/http_api","openWB/general/modbus_control","openWB/general/notifications/configuration","openWB/general/notifications/plug","openWB/general/notifications/selected","openWB/general/notifications/smart_home","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/price_kwh","openWB/general/range_unit","openWB/general/ripple_control_receiver/module","openWB/general/web_theme","openWB/system/configurable/ripple_control_receivers","openWB/system/configurable/web_themes","openWB/system/ip_address"]}},computed:{webThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/web_themes"]}},webThemeGroupList:{get(){var e;let t=[{label:"openWB",options:[]},{label:"Community",options:[]}];return(e=this.webThemeList)==null||e.forEach(s=>{s.official===!0?t[0].options.push(s):t[1].options.push(s)}),t}},rippleControlReceiverList(){return this.$store.state.mqtt["openWB/system/configurable/ripple_control_receivers"]}},methods:{getIpAddress(){return this.$store.state.mqtt["openWB/system/ip_address"]},getWebThemeDefaults(t){const e=this.webThemeList.find(s=>s.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for web theme type!",t),{})},updateSelectedWebTheme(t){this.updateState("openWB/general/web_theme",this.getWebThemeDefaults(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},getRippleControlReceiverDefaultConfiguration(t){const e=this.rippleControlReceiverList.find(s=>s.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for electricity tariff type!",t),{})},updateSelectedRippleControlReceiverModule(t){this.updateState("openWB/general/ripple_control_receiver/module",t,"type"),this.updateState("openWB/general/ripple_control_receiver/module",this.getRippleControlReceiverDefaultConfiguration(t))}}},Ve={class:"generalConfig"},ke={name:"generalConfigForm"},$e={key:0},Re={key:1},Te={key:1},qe={key:0},Ee={key:1},ze={key:0},De={key:2},Ne={key:0},Ae={key:0},Oe={key:1},Ue={key:0},xe={key:0},Le={key:1};function Pe(t,e,s,B,y,b){const p=g("openwb-base-alert"),r=g("openwb-base-button-group-input"),_=g("openwb-base-card"),W=g("openwb-base-heading"),C=g("openwb-base-select-input"),I=g("openwb-ripple-control-receiver-proxy"),H=g("openwb-web-theme-proxy"),m=g("font-awesome-icon"),K=g("openwb-base-submit-buttons");return l(),d("div",Ve,[f("form",ke,[n(_,{title:"Steuerungsmodus"},{default:o(()=>[n(p,{subtype:"info"},{default:o(()=>e[29]||(e[29]=[f("p",null,' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. secondary openWB, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. ',-1),f("p",null,[a(' Wird für den Steuerungsmodus "secondary" gewählt, übernimmt diese openWB keine Regelung und muss von einer anderen primary openWB ferngesteuert werden. Wichtig ist, dass in der secondary-openWB eine "interne openWB" mit der korrekten Bauart (= openWB-Hardwarevariante z.B. "Custom, Standard, Standard+, Duo, Buchse") konfiguriert ist. Bei einer Duo sind zwei "interne openWB" zu konfigurieren. Im "secondary"-Modus bleiben alle ausgeblendeten Einstellungen unbeachtet.'),f("br"),a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),f("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage "),a(". ")],-1)])),_:1}),n(r,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":e[0]||(e[0]=u=>t.updateState("openWB/general/extern",u))},null,8,["model-value"]),s.installAssistantActive?c("",!0):(l(),d("div",$e,[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),v(r,{key:0,title:"Steuerung über Modbus als secondary",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/modbus_control"],"onUpdate:modelValue":e[1]||(e[1]=u=>t.updateState("openWB/general/modbus_control",u))},{help:o(()=>e[30]||(e[30]=[a(" Im secondary-Modus kann die openWB über die Modbus-Schnittstelle gesteuert werden. Die Register sind "),f("a",{href:"https://openwb.de/main/wp-content/uploads/2023/10/ModbusTCP-openWB-series2-Pro-1.pdf",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),a(" dokumentiert. Bei aktivierter Modbus-Schnittstelle darf die openWB nicht von einer primary-openWB gesteuert werden. ")])),_:1},8,["model-value"])):c("",!0),t.$store.state.mqtt["openWB/general/extern"]===!0&&t.$store.state.mqtt["openWB/general/modbus_control"]!==!0?(l(),d("div",Re,[n(p,{subtype:"info",class:"mb-2"},{default:o(()=>e[31]||(e[31]=[a(' Wenn die Steuerung über Modbus auf "Aus" geändert wird, muss danach ein Neustart durchgeführt werden! ')])),_:1})])):c("",!0)])),s.installAssistantActive?c("",!0):(l(),d("div",Te,[n(r,{title:"HTTP-API",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/http_api"],"onUpdate:modelValue":e[2]||(e[2]=u=>t.updateState("openWB/general/http_api",u))},{help:o(()=>e[32]||(e[32]=[f("p",null,[a(" Mit der HTTP-API kann man den Wert eines MQTT-Topics per HTTPs abfragen oder neu setzen. Die Schnittstelle ist "),f("a",{href:"https://openwb.de/main/wp-content/uploads/2025/02/HTTP-API-fuer-openWB-series1-und-series2.pdf",target:"_blank",rel:"noopener noreferrer"}," hier "),a(" dokumentiert. ")],-1)])),_:1},8,["model-value"])]))]),_:1}),n(_,{title:"Hardware"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),d("div",qe,[n(p,{subtype:"info"},{default:o(()=>e[33]||(e[33]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):c("",!0),s.installAssistantActive?c("",!0):(l(),d("div",Ee,[t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),d("div",ze,[n(r,{title:"Geschwindigkeit Regelintervall",buttons:[{buttonValue:10,text:"Normal",class:"btn-outline-success"},{buttonValue:20,text:"Langsam",class:"btn-outline-warning"},{buttonValue:60,text:"Sehr Langsam",class:"btn-outline-danger"}],"model-value":t.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":e[3]||(e[3]=u=>t.updateState("openWB/general/control_interval",u))},{help:o(()=>e[34]||(e[34]=[a(' Sollten Probleme oder Fehlermeldungen auftauchen, stelle bitte zunächst das Regelintervall auf "Normal". Werden Module genutzt, welche z.B. eine Online-API zur Abfrage nutzen (höhere Latenzzeiten) oder möchte man weniger Regeleingriffe, so kann man das Regelintervall auf "Langsam" (20 Sekunden) herabsetzen. Die Einstellung „Sehr Langsam“ führt zu einer Regelzeit von 60 Sekunden.'),f("br",null,null,-1),f("span",{class:"text-danger"},' Nicht nur die Regelung der PV geführten Ladung, sondern auch die Ladestromänderung, beispielsweise “Stop“ etc., werden dann nur noch in diesem Intervall ausgeführt. Die Regelung wird insgesamt träger. Solange es keinen triftigen Grund gibt, sollte "Normal" gewählt werden. ',-1)])),_:1},8,["model-value"]),n(r,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":e[4]||(e[4]=u=>t.updateState("openWB/general/grid_protection_configured",u))},{help:o(()=>e[35]||(e[35]=[a(' Diese Option ist standardmäßig aktiviert und sollte so belassen werden. Bei Unterschreitung einer kritischen Frequenz des Stromnetzes wird die Ladung nach einer zufälligen Zeit zwischen 1 und 90 Sekunden pausiert. Der Lademodus wechselt auf "Stop". Sobald die Frequenz wieder in einem normalen Bereich ist wird automatisch der zuletzt gewählte Lademodus wieder aktiviert. Ebenso wird die Ladung bei Überschreiten von 51,8 Hz unterbrochen. Dies ist dann der Fall, wenn der Energieversorger Wartungsarbeiten am (Teil-)Netz durchführt und auf einen vorübergehenden Generator-Betrieb umschaltet. Die Erhöhung der Frequenz wird durchgeführt, um die PV Anlagen abzuschalten.'),f("br",null,null,-1),f("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1)])),_:1},8,["model-value"])])):c("",!0),e[36]||(e[36]=f("hr",null,null,-1))])),t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),d("div",De,[n(W,{class:"mt-0"},{default:o(()=>e[37]||(e[37]=[a(" Steuerbare Verbrauchseinrichtung ")])),_:1}),n(p,{sub_type:"info"},{default:o(()=>e[38]||(e[38]=[a(' Aktuell unterstützt openWB die eingehende Steuerung als "Steuerbare Verbrauchseinrichtung" nur über potentialfreie Kontakte (Rundsteuerempfänger, RSE). Ebenfalls können derzeit bei Auslösung des RSE nur alle Ladevorgänge komplett beendet werden. Die Unterstützung von "Dimmung" im Sinne von §14a EnWG wird umgesetzt, sobald wir weitere Informationen von den Netzbetreibern erhalten, wie die Ansteuerung technisch umgesetzt wird. ')])),_:1}),n(C,{class:"mb-2",title:"Anbindung RSE-Kontakt",options:b.rippleControlReceiverList,"model-value":t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]?t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type:"","onUpdate:modelValue":e[5]||(e[5]=u=>b.updateSelectedRippleControlReceiverModule(u))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(l(),d("div",Ne,[n(I,{"ripple-control-receiver":t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"],"onUpdate:configuration":e[6]||(e[6]=u=>b.updateConfiguration("openWB/general/ripple_control_receiver/module",u))},null,8,["ripple-control-receiver"])])):c("",!0)])):c("",!0)]),_:1}),s.installAssistantActive?c("",!0):(l(),v(_,{key:0,title:"Darstellung"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),d("div",Ae,[n(p,{subtype:"info"},{default:o(()=>e[39]||(e[39]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),d("div",Oe,[n(W,{class:"mt-0"},{default:o(()=>e[40]||(e[40]=[a(" Hauptseite ")])),_:1}),t.$store.state.mqtt["openWB/general/web_theme"]!==void 0?(l(),d("div",Ue,[n(C,{class:"mb-2",title:"Theme",groups:b.webThemeGroupList,"model-value":t.$store.state.mqtt["openWB/general/web_theme"].type,"onUpdate:modelValue":e[7]||(e[7]=u=>b.updateSelectedWebTheme(u))},null,8,["groups","model-value"]),t.$store.state.mqtt["openWB/general/web_theme"].type?(l(),v(H,{key:0,"web-theme":t.$store.state.mqtt["openWB/general/web_theme"],"onUpdate:configuration":e[8]||(e[8]=u=>b.updateConfiguration("openWB/general/web_theme",u))},null,8,["web-theme"])):c("",!0)])):c("",!0)]))]),_:1})),s.installAssistantActive?c("",!0):(l(),v(_,{key:1,title:"Lade-Protokoll"},{default:o(()=>{var u,S,V,k,$,R,T,q,E,z,D,N,A,O,U,x;return[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),d("div",xe,[n(p,{subtype:"info"},{default:o(()=>e[41]||(e[41]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),d("div",Le,[n(r,{title:"Einheit für Entfernungen","model-value":t.$store.state.mqtt["openWB/general/range_unit"],buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}],"onUpdate:modelValue":e[9]||(e[9]=i=>t.updateState("openWB/general/range_unit",i))},null,8,["model-value"]),n(W,null,{default:o(()=>e[42]||(e[42]=[a(" Auswahl der Datenfelder ")])),_:1}),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(u=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:u.time_begin,"onUpdate:modelValue":e[10]||(e[10]=i=>t.updateState("openWB/general/charge_log_data_config",i,"time_begin"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","calendar"]}),e[43]||(e[43]=a(" Beginn "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(S=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:S.time_end,"onUpdate:modelValue":e[11]||(e[11]=i=>t.updateState("openWB/general/charge_log_data_config",i,"time_end"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","calendar"]}),e[44]||(e[44]=a(" Ende "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(V=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:V.time_time_charged,"onUpdate:modelValue":e[12]||(e[12]=i=>t.updateState("openWB/general/charge_log_data_config",i,"time_time_charged"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","clock"]}),e[45]||(e[45]=a(" Dauer "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(k=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:k.data_costs,"onUpdate:modelValue":e[13]||(e[13]=i=>t.updateState("openWB/general/charge_log_data_config",i,"data_costs"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","coins"]}),e[46]||(e[46]=a(" Kosten "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":($=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:$.data_power_source,"onUpdate:modelValue":e[14]||(e[14]=i=>t.updateState("openWB/general/charge_log_data_config",i,"data_power_source"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","pie-chart"]}),e[47]||(e[47]=a(" Energieaufteilung "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(R=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:R.vehicle_name,"onUpdate:modelValue":e[15]||(e[15]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_name"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","car"]}),e[48]||(e[48]=a(" Name "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(T=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:T.vehicle_chargemode,"onUpdate:modelValue":e[16]||(e[16]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_chargemode"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","car"]}),e[49]||(e[49]=a(" Lademodus "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(q=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:q.vehicle_prio,"onUpdate:modelValue":e[17]||(e[17]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_prio"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","car"]}),e[50]||(e[50]=a(" Priorität "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(E=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:E.vehicle_rfid,"onUpdate:modelValue":e[18]||(e[18]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_rfid"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","car"]}),e[51]||(e[51]=a(" ID-Tag "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(z=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:z.vehicle_soc_at_start,"onUpdate:modelValue":e[19]||(e[19]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_start"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","car"]}),e[52]||(e[52]=a(" SoC bei Ladebeginn "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(D=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:D.vehicle_soc_at_end,"onUpdate:modelValue":e[20]||(e[20]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_end"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","car"]}),e[53]||(e[53]=a(" SoC bei Ladende "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(N=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:N.chargepoint_name,"onUpdate:modelValue":e[21]||(e[21]=i=>t.updateState("openWB/general/charge_log_data_config",i,"chargepoint_name"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","charging-station"]}),e[54]||(e[54]=a(" Name "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(A=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:A.chargepoint_serial_number,"onUpdate:modelValue":e[22]||(e[22]=i=>t.updateState("openWB/general/charge_log_data_config",i,"chargepoint_serial_number"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","charging-station"]}),e[55]||(e[55]=a(" Seriennummer "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(O=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:O.data_imported_since_mode_switch,"onUpdate:modelValue":e[23]||(e[23]=i=>t.updateState("openWB/general/charge_log_data_config",i,"data_imported_since_mode_switch"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","charging-station"]}),e[56]||(e[56]=a(" Geladene Energie "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(U=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:U.chargepoint_imported_at_start,"onUpdate:modelValue":e[24]||(e[24]=i=>t.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_start"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","charging-station"]}),e[57]||(e[57]=a(" Zählerstand bei Ladebeginn "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(x=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:x.chargepoint_imported_at_end,"onUpdate:modelValue":e[25]||(e[25]=i=>t.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_end"))},{title:o(()=>[n(m,{"fixed-width":"",icon:["fas","charging-station"]}),e[58]||(e[58]=a(" Zählerstand bei Ladeende "))]),_:1},8,["model-value"])]))]}),_:1})),n(K,{"form-name":"generalConfigForm",onSave:e[26]||(e[26]=u=>t.$emit("save")),onReset:e[27]||(e[27]=u=>t.$emit("reset")),onDefaults:e[28]||(e[28]=u=>t.$emit("defaults"))})])])}const Je=h(Se,[["render",Pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]),Ie=Object.freeze(Object.defineProperty({__proto__:null,default:Je},Symbol.toStringTag,{value:"Module"}));export{Je as G,ce as R,Ie as a}; diff --git a/web/settings/assets/GeneralConfig-bc70f34a.js b/web/settings/assets/GeneralConfig-bc70f34a.js deleted file mode 100644 index c94d251fcc..0000000000 --- a/web/settings/assets/GeneralConfig-bc70f34a.js +++ /dev/null @@ -1 +0,0 @@ -import{l as P,a5 as R,a6 as G,F as J,$ as I,P as H,D as j,ae as K,af as Z,ag as Q}from"./vendor-fortawesome-9d7cfdfb.js";import{C as X}from"./index-b236cee5.js";import{_ as Y}from"./dynamic-import-helper-be004503.js";import{_ as v,u as m,l as i,m as g,x as c,E as o,B as a,F as w,G as n,A as p,a1 as ee,a2 as te,N as ne,z as f}from"./vendor-ad7c30fd.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";const oe={props:{webTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},ae=v(oe,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/WebThemeConfigMixin.vue"]]),se={name:"WebThemeFallback",mixins:[ae]},le={class:"web-theme-fallback"},ie={key:1};function re(t,e,u,B,V,h){const b=m("openwb-base-alert"),l=m("openwb-base-textarea");return i(),g("div",le,[Object.keys(t.webTheme.configuration).length==0?(i(),c(b,{key:0,subtype:"info"},{default:o(()=>[a(' Das Web Theme "'+w(t.webTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(i(),g("div",ie,[n(b,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Web Theme "'+w(t.webTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(l,{title:"Theme Konfiguration",subtype:"json","model-value":t.webTheme.configuration,"onUpdate:modelValue":e[0]||(e[0]=_=>t.updateConfiguration(_,"configuration"))},{help:o(()=>e[1]||(e[1]=[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(b,{subtype:"info"},{default:o(()=>[p("pre",null,w(JSON.stringify(t.webTheme.configuration,void 0,2)),1)]),_:1})]))])}const ue=v(se,[["render",re],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeFallback.vue"]]);P.add(R,G);const de={name:"OpenwbWebThemeProxy",components:{FontAwesomeIcon:J},props:{webTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{getThemeComponent(){return console.debug(`loading web theme: ${this.webTheme.type}`),ee({loader:()=>Y(Object.assign({}),`./${this.webTheme.type}/webTheme.vue`),errorComponent:ue})},updateConfiguration(t){this.$emit("update:configuration",t)}}};function ge(t,e,u,B,V,h){const b=m("font-awesome-icon"),l=m("openwb-base-alert"),_=m("openwb-base-heading");return i(),g(ne,null,[u.webTheme.official?(i(),c(l,{key:0,subtype:"success"},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Web Theme "'+w(u.webTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(i(),c(l,{key:1,subtype:"info"},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","people-group"]}),e[1]||(e[1]=a(" Das ausgewählte Theme wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. "))]),_:1})),n(_,null,{default:o(()=>[a(' Einstellungen für Web Theme "'+w(u.webTheme.name)+'" ',1)]),_:1}),(i(),c(te(h.getThemeComponent()),{"web-theme":u.webTheme,"onUpdate:configuration":e[0]||(e[0]=W=>h.updateConfiguration(W))},null,40,["web-theme"]))],64)}const pe=v(de,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeProxy.vue"]]);P.add(I,H,j,K,Z,Q);const me={name:"OpenwbGeneralConfigView",components:{OpenwbWebThemeProxy:pe,FontAwesomeIcon:J},mixins:[X],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/charge_log_data_config","openWB/general/control_interval","openWB/general/extern","openWB/general/external_buttons_hw","openWB/general/grid_protection_configured","openWB/general/http_api","openWB/general/modbus_control","openWB/general/notifications/configuration","openWB/general/notifications/plug","openWB/general/notifications/selected","openWB/general/notifications/smart_home","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/price_kwh","openWB/general/range_unit","openWB/general/web_theme","openWB/system/configurable/web_themes","openWB/system/ip_address"]}},computed:{webThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/web_themes"]}},webThemeGroupList:{get(){var e;let t=[{label:"openWB",options:[]},{label:"Community",options:[]}];return(e=this.webThemeList)==null||e.forEach(u=>{u.official===!0?t[0].options.push(u):t[1].options.push(u)}),t}}},methods:{getIpAddress(){return this.$store.state.mqtt["openWB/system/ip_address"]},getWebThemeDefaults(t){const e=this.webThemeList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for web theme type!",t),{})},updateSelectedWebTheme(t){this.updateState("openWB/general/web_theme",this.getWebThemeDefaults(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},be={class:"generalConfig"},fe={name:"generalConfigForm"},_e={key:0},ce={key:1},he={key:1},we={key:0},We={key:1},ve={key:0},Be={key:0},Ve={key:1},ye={key:0},Se={key:0},ke={key:1};function Te(t,e,u,B,V,h){const b=m("openwb-base-alert"),l=m("openwb-base-button-group-input"),_=m("openwb-base-card"),W=m("openwb-base-heading"),O=m("openwb-base-select-input"),F=m("openwb-web-theme-proxy"),d=m("font-awesome-icon"),M=m("openwb-base-submit-buttons");return i(),g("div",be,[p("form",fe,[n(_,{title:"Steuerungsmodus"},{default:o(()=>[n(b,{subtype:"info"},{default:o(()=>e[27]||(e[27]=[p("p",null,' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. secondary openWB, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. ',-1),p("p",null,[a(' Wird für den Steuerungsmodus "secondary" gewählt, übernimmt diese openWB keine Regelung und muss von einer anderen primary openWB ferngesteuert werden. Wichtig ist, dass in der secondary-openWB eine "interne openWB" mit der korrekten Bauart (= openWB-Hardwarevariante z.B. "Custom, Standard, Standard+, Duo, Buchse") konfiguriert ist. Bei einer Duo sind zwei "interne openWB" zu konfigurieren. Im "secondary"-Modus bleiben alle ausgeblendeten Einstellungen unbeachtet.'),p("br"),a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),p("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage "),a(". ")],-1)])),_:1}),n(l,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateState("openWB/general/extern",r))},null,8,["model-value"]),u.installAssistantActive?f("",!0):(i(),g("div",_e,[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),c(l,{key:0,title:"Steuerung über Modbus als secondary",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/modbus_control"],"onUpdate:modelValue":e[1]||(e[1]=r=>t.updateState("openWB/general/modbus_control",r))},{help:o(()=>e[28]||(e[28]=[a(" Im secondary-Modus kann die openWB über die Modbus-Schnittstelle gesteuert werden. Die Register sind "),p("a",{href:"https://openwb.de/main/wp-content/uploads/2023/10/ModbusTCP-openWB-series2-Pro-1.pdf",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),a(" dokumentiert. Bei aktivierter Modbus-Schnittstelle darf die openWB nicht von einer primary-openWB gesteuert werden. ")])),_:1},8,["model-value"])):f("",!0),t.$store.state.mqtt["openWB/general/extern"]===!0&&t.$store.state.mqtt["openWB/general/modbus_control"]!==!0?(i(),g("div",ce,[n(b,{subtype:"info",class:"mb-2"},{default:o(()=>e[29]||(e[29]=[a(' Wenn die Steuerung über Modbus auf "Aus" geändert wird, muss danach ein Neustart durchgeführt werden! ')])),_:1})])):f("",!0)])),u.installAssistantActive?f("",!0):(i(),g("div",he,[n(l,{title:"HTTP-API",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/http_api"],"onUpdate:modelValue":e[2]||(e[2]=r=>t.updateState("openWB/general/http_api",r))},{help:o(()=>e[30]||(e[30]=[p("p",null,[a(" Mit der HTTP-API kann man den Wert eines MQTT-Topics per HTTPs abfragen oder neu setzen. Die Schnittstelle ist "),p("a",{href:"https://openwb.de/main/wp-content/uploads/2025/02/HTTP-API-fuer-openWB-series1-und-series2.pdf",target:"_blank",rel:"noopener noreferrer"}," hier "),a(" dokumentiert. ")],-1)])),_:1},8,["model-value"])]))]),_:1}),n(_,{title:"Hardware"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),g("div",we,[n(b,{subtype:"info"},{default:o(()=>e[31]||(e[31]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):f("",!0),u.installAssistantActive?f("",!0):(i(),g("div",We,[t.$store.state.mqtt["openWB/general/extern"]===!1?(i(),g("div",ve,[n(l,{title:"Geschwindigkeit Regelintervall",buttons:[{buttonValue:10,text:"Normal",class:"btn-outline-success"},{buttonValue:20,text:"Langsam",class:"btn-outline-warning"},{buttonValue:60,text:"Sehr Langsam",class:"btn-outline-danger"}],"model-value":t.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":e[3]||(e[3]=r=>t.updateState("openWB/general/control_interval",r))},{help:o(()=>e[32]||(e[32]=[a(' Sollten Probleme oder Fehlermeldungen auftauchen, stelle bitte zunächst das Regelintervall auf "Normal". Werden Module genutzt, welche z.B. eine Online-API zur Abfrage nutzen (höhere Latenzzeiten) oder möchte man weniger Regeleingriffe, so kann man das Regelintervall auf "Langsam" (20 Sekunden) herabsetzen. Die Einstellung „Sehr Langsam“ führt zu einer Regelzeit von 60 Sekunden.'),p("br",null,null,-1),p("span",{class:"text-danger"},' Nicht nur die Regelung der PV geführten Ladung, sondern auch die Ladestromänderung, beispielsweise “Stop“ etc., werden dann nur noch in diesem Intervall ausgeführt. Die Regelung wird insgesamt träger. Solange es keinen triftigen Grund gibt, sollte "Normal" gewählt werden. ',-1)])),_:1},8,["model-value"]),n(l,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":e[4]||(e[4]=r=>t.updateState("openWB/general/grid_protection_configured",r))},{help:o(()=>e[33]||(e[33]=[a(' Diese Option ist standardmäßig aktiviert und sollte so belassen werden. Bei Unterschreitung einer kritischen Frequenz des Stromnetzes wird die Ladung nach einer zufälligen Zeit zwischen 1 und 90 Sekunden pausiert. Der Lademodus wechselt auf "Stop". Sobald die Frequenz wieder in einem normalen Bereich ist wird automatisch der zuletzt gewählte Lademodus wieder aktiviert. Ebenso wird die Ladung bei Überschreiten von 51,8 Hz unterbrochen. Dies ist dann der Fall, wenn der Energieversorger Wartungsarbeiten am (Teil-)Netz durchführt und auf einen vorübergehenden Generator-Betrieb umschaltet. Die Erhöhung der Frequenz wird durchgeführt, um die PV Anlagen abzuschalten.'),p("br",null,null,-1),p("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1)])),_:1},8,["model-value"])])):f("",!0)]))]),_:1}),u.installAssistantActive?f("",!0):(i(),c(_,{key:0,title:"Darstellung"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),g("div",Be,[n(b,{subtype:"info"},{default:o(()=>e[34]||(e[34]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),g("div",Ve,[n(W,{class:"mt-0"},{default:o(()=>e[35]||(e[35]=[a(" Hauptseite ")])),_:1}),t.$store.state.mqtt["openWB/general/web_theme"]!==void 0?(i(),g("div",ye,[n(O,{class:"mb-2",title:"Theme",groups:h.webThemeGroupList,"model-value":t.$store.state.mqtt["openWB/general/web_theme"].type,"onUpdate:modelValue":e[5]||(e[5]=r=>h.updateSelectedWebTheme(r))},null,8,["groups","model-value"]),t.$store.state.mqtt["openWB/general/web_theme"].type?(i(),c(F,{key:0,"web-theme":t.$store.state.mqtt["openWB/general/web_theme"],"onUpdate:configuration":e[6]||(e[6]=r=>h.updateConfiguration("openWB/general/web_theme",r))},null,8,["web-theme"])):f("",!0)])):f("",!0)]))]),_:1})),u.installAssistantActive?f("",!0):(i(),c(_,{key:1,title:"Lade-Protokoll"},{default:o(()=>{var r,y,S,k,T,$,q,C,N,z,A,D,x,U,E,L;return[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),g("div",Se,[n(b,{subtype:"info"},{default:o(()=>e[36]||(e[36]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),g("div",ke,[n(l,{title:"Einheit für Entfernungen","model-value":t.$store.state.mqtt["openWB/general/range_unit"],buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}],"onUpdate:modelValue":e[7]||(e[7]=s=>t.updateState("openWB/general/range_unit",s))},null,8,["model-value"]),n(W,null,{default:o(()=>e[37]||(e[37]=[a(" Auswahl der Datenfelder ")])),_:1}),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(r=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:r.time_begin,"onUpdate:modelValue":e[8]||(e[8]=s=>t.updateState("openWB/general/charge_log_data_config",s,"time_begin"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","calendar"]}),e[38]||(e[38]=a(" Beginn "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(y=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:y.time_end,"onUpdate:modelValue":e[9]||(e[9]=s=>t.updateState("openWB/general/charge_log_data_config",s,"time_end"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","calendar"]}),e[39]||(e[39]=a(" Ende "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(S=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:S.time_time_charged,"onUpdate:modelValue":e[10]||(e[10]=s=>t.updateState("openWB/general/charge_log_data_config",s,"time_time_charged"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","clock"]}),e[40]||(e[40]=a(" Dauer "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(k=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:k.data_costs,"onUpdate:modelValue":e[11]||(e[11]=s=>t.updateState("openWB/general/charge_log_data_config",s,"data_costs"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","coins"]}),e[41]||(e[41]=a(" Kosten "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(T=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:T.data_power_source,"onUpdate:modelValue":e[12]||(e[12]=s=>t.updateState("openWB/general/charge_log_data_config",s,"data_power_source"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","pie-chart"]}),e[42]||(e[42]=a(" Energieaufteilung "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":($=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:$.vehicle_name,"onUpdate:modelValue":e[13]||(e[13]=s=>t.updateState("openWB/general/charge_log_data_config",s,"vehicle_name"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","car"]}),e[43]||(e[43]=a(" Name "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(q=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:q.vehicle_chargemode,"onUpdate:modelValue":e[14]||(e[14]=s=>t.updateState("openWB/general/charge_log_data_config",s,"vehicle_chargemode"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","car"]}),e[44]||(e[44]=a(" Lademodus "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(C=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:C.vehicle_prio,"onUpdate:modelValue":e[15]||(e[15]=s=>t.updateState("openWB/general/charge_log_data_config",s,"vehicle_prio"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","car"]}),e[45]||(e[45]=a(" Priorität "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(N=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:N.vehicle_rfid,"onUpdate:modelValue":e[16]||(e[16]=s=>t.updateState("openWB/general/charge_log_data_config",s,"vehicle_rfid"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","car"]}),e[46]||(e[46]=a(" ID-Tag "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(z=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:z.vehicle_soc_at_start,"onUpdate:modelValue":e[17]||(e[17]=s=>t.updateState("openWB/general/charge_log_data_config",s,"vehicle_soc_at_start"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","car"]}),e[47]||(e[47]=a(" SoC bei Ladebeginn "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(A=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:A.vehicle_soc_at_end,"onUpdate:modelValue":e[18]||(e[18]=s=>t.updateState("openWB/general/charge_log_data_config",s,"vehicle_soc_at_end"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","car"]}),e[48]||(e[48]=a(" SoC bei Ladende "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(D=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:D.chargepoint_name,"onUpdate:modelValue":e[19]||(e[19]=s=>t.updateState("openWB/general/charge_log_data_config",s,"chargepoint_name"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","charging-station"]}),e[49]||(e[49]=a(" Name "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(x=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:x.chargepoint_serial_number,"onUpdate:modelValue":e[20]||(e[20]=s=>t.updateState("openWB/general/charge_log_data_config",s,"chargepoint_serial_number"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","charging-station"]}),e[50]||(e[50]=a(" Seriennummer "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(U=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:U.data_imported_since_mode_switch,"onUpdate:modelValue":e[21]||(e[21]=s=>t.updateState("openWB/general/charge_log_data_config",s,"data_imported_since_mode_switch"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","charging-station"]}),e[51]||(e[51]=a(" Geladene Energie "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(E=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:E.chargepoint_imported_at_start,"onUpdate:modelValue":e[22]||(e[22]=s=>t.updateState("openWB/general/charge_log_data_config",s,"chargepoint_imported_at_start"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","charging-station"]}),e[52]||(e[52]=a(" Zählerstand bei Ladebeginn "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(L=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:L.chargepoint_imported_at_end,"onUpdate:modelValue":e[23]||(e[23]=s=>t.updateState("openWB/general/charge_log_data_config",s,"chargepoint_imported_at_end"))},{title:o(()=>[n(d,{"fixed-width":"",icon:["fas","charging-station"]}),e[53]||(e[53]=a(" Zählerstand bei Ladeende "))]),_:1},8,["model-value"])]))]}),_:1})),n(M,{"form-name":"generalConfigForm",onSave:e[24]||(e[24]=r=>t.$emit("save")),onReset:e[25]||(e[25]=r=>t.$emit("reset")),onDefaults:e[26]||(e[26]=r=>t.$emit("defaults"))})])])}const Ue=v(me,[["render",Te],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]);export{Ue as default}; diff --git a/web/settings/assets/HardwareInstallation-3a644290.js b/web/settings/assets/HardwareInstallation-3a644290.js new file mode 100644 index 0000000000..8719cf3fca --- /dev/null +++ b/web/settings/assets/HardwareInstallation-3a644290.js @@ -0,0 +1 @@ +import{l as S,d as U,t as q,ad as G,a6 as N,V as K,U as F,T as H,F as $}from"./vendor-fortawesome-433470db.js";import{_ as e,C as J}from"./index-cc8f65ba.js";import{_ as C}from"./dynamic-import-helper-be004503.js";import{_ as T,u as p,l as s,m as g,z as E,E as r,y as d,F as V,G as u,x as c,a1 as z,a2 as Z,B as P,N as L,M as k,q as Q}from"./vendor-ea36120f.js";const X={props:{device:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(o,t=void 0){this.$emit("update:configuration",{value:o,object:t})}}},B=T(X,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/DeviceConfigMixin.vue"]]),Y={name:"DeviceFallback",mixins:[B]},ee={class:"device-fallback"},te={key:1};function oe(o,t,i,m,v,n){const l=p("openwb-base-alert"),I=p("openwb-base-textarea");return s(),g("div",ee,[Object.keys(o.device.configuration).length==0?(s(),E(l,{key:0,subtype:"info"},{default:r(()=>[d(' Der Gerät-Typ "'+V(o.device.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),g("div",te,[u(l,{subtype:"warning"},{default:r(()=>[d(' Es wurde keine Konfigurationsseite für den Geräte-Typ "'+V(o.device.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),u(I,{title:"Konfiguration",subtype:"json","model-value":o.device.configuration,"onUpdate:modelValue":t[0]||(t[0]=O=>o.updateConfiguration(O,"configuration"))},{help:r(()=>t[1]||(t[1]=[d(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),u(l,{subtype:"info"},{default:r(()=>[c("pre",null,V(JSON.stringify(o.device.configuration,void 0,2)),1)]),_:1})]))])}const _e=T(Y,[["render",oe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ie={mixins:[B],props:{component:{type:Object,required:!0}}},re=T(ie,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/ComponentConfigMixin.vue"]]),ne={name:"ComponentFallback",mixins:[re]},ue={class:"component-fallback"},de={key:1};function se(o,t,i,m,v,n){const l=p("openwb-base-alert"),I=p("openwb-base-textarea");return s(),g("div",ue,[Object.keys(o.component.configuration).length==0?(s(),E(l,{key:0,subtype:"info"},{default:r(()=>[d(' Der Komponenten-Typ "'+V(o.component.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),g("div",de,[u(l,{subtype:"warning"},{default:r(()=>[d(' Es wurde keine Konfigurationsseite für den Komponenten-Typ "'+V(o.component.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),u(I,{title:"Konfiguration",subtype:"json","model-value":o.component.configuration,"onUpdate:modelValue":t[0]||(t[0]=O=>o.updateConfiguration(O,"configuration"))},{help:r(()=>t[1]||(t[1]=[d(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),u(l,{subtype:"info"},{default:r(()=>[c("pre",null,V(JSON.stringify(o.component.configuration,void 0,2)),1)]),_:1})]))])}const ve=T(ne,[["render",se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbComponentConfigFallback.vue"]]),ae={name:"OpenwbConfigProxy",props:{device:{type:Object,required:!0},component:{type:Object,required:!1,default:void 0}},emits:["update:configuration"],methods:{getComponent(){var o;return console.debug(`loading component: ${this.device.type} / ${(o=this.component)==null?void 0:o.type}`),this.component!==void 0?z({loader:()=>C(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-e44ec84b.js"),["assets/device-e44ec84b.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./ampere/ampere/device.vue":()=>e(()=>import("./device-509a4ac4.js"),["assets/device-509a4ac4.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-d1c48c2c.js"),["assets/device-d1c48c2c.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-249da548.js"),["assets/device-249da548.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/device.vue":()=>e(()=>import("./device-dd9fc66e.js"),["assets/device-dd9fc66e.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/inverter.vue":()=>e(()=>import("./inverter-f447aa74.js"),["assets/inverter-f447aa74.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./byd/byd/device.vue":()=>e(()=>import("./device-88e6829b.js"),["assets/device-88e6829b.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-b03c0db9.js"),["assets/counter-b03c0db9.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-67811713.js"),["assets/device-67811713.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/bat.vue":()=>e(()=>import("./bat-e36a210d.js"),["assets/bat-e36a210d.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/counter.vue":()=>e(()=>import("./counter-fa232f15.js"),["assets/counter-fa232f15.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/device.vue":()=>e(()=>import("./device-1565347a.js"),["assets/device-1565347a.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/inverter.vue":()=>e(()=>import("./inverter-39ce3cb1.js"),["assets/inverter-39ce3cb1.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/counter.vue":()=>e(()=>import("./counter-cfb2a7aa.js"),["assets/counter-cfb2a7aa.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-eb9518f3.js"),["assets/device-eb9518f3.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/inverter.vue":()=>e(()=>import("./inverter-d75d32f1.js"),["assets/inverter-d75d32f1.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-52c218d2.js"),["assets/device-52c218d2.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/counter.vue":()=>e(()=>import("./counter-d5ce341d.js"),["assets/counter-d5ce341d.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-716c4065.js"),["assets/device-716c4065.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/inverter.vue":()=>e(()=>import("./inverter-f9eaf59e.js"),["assets/inverter-f9eaf59e.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/bat.vue":()=>e(()=>import("./bat-d47d1fd1.js"),["assets/bat-d47d1fd1.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/device.vue":()=>e(()=>import("./device-aacbf2a5.js"),["assets/device-aacbf2a5.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/bat.vue":()=>e(()=>import("./bat-845b945a.js"),["assets/bat-845b945a.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/counter.vue":()=>e(()=>import("./counter-8b96457f.js"),["assets/counter-8b96457f.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-8c5dabb3.js"),["assets/device-8c5dabb3.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/inverter.vue":()=>e(()=>import("./inverter-62de90f4.js"),["assets/inverter-62de90f4.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/bat.vue":()=>e(()=>import("./bat-13f506c4.js"),["assets/bat-13f506c4.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-66058b82.js"),["assets/counter_sm-66058b82.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-a9846396.js"),["assets/device-a9846396.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/inverter_secondary.vue":()=>e(()=>import("./inverter_secondary-daf65789.js"),["assets/inverter_secondary-daf65789.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/bat.vue":()=>e(()=>import("./bat-5d86d2d0.js"),["assets/bat-5d86d2d0.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/counter.vue":()=>e(()=>import("./counter-7311f96b.js"),["assets/counter-7311f96b.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/device.vue":()=>e(()=>import("./device-9749c9e1.js"),["assets/device-9749c9e1.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/inverter.vue":()=>e(()=>import("./inverter-db7c45b0.js"),["assets/inverter-db7c45b0.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/bat.vue":()=>e(()=>import("./bat-d9cdd38d.js"),["assets/bat-d9cdd38d.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/counter.vue":()=>e(()=>import("./counter-40d2f2a6.js"),["assets/counter-40d2f2a6.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/device.vue":()=>e(()=>import("./device-354918a0.js"),["assets/device-354918a0.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/inverter.vue":()=>e(()=>import("./inverter-6157a590.js"),["assets/inverter-6157a590.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/bat.vue":()=>e(()=>import("./bat-5bcb481a.js"),["assets/bat-5bcb481a.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/counter.vue":()=>e(()=>import("./counter-8d45ef9c.js"),["assets/counter-8d45ef9c.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-6659803e.js"),["assets/device-6659803e.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/inverter.vue":()=>e(()=>import("./inverter-c0d3b643.js"),["assets/inverter-c0d3b643.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/virtual/counter.vue":()=>e(()=>import("./counter-3492fd19.js"),["assets/counter-3492fd19.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-ae68eae2.js"),["assets/device-ae68eae2.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./growatt/growatt/device.vue":()=>e(()=>import("./device-99e093c0.js"),["assets/device-99e093c0.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-99900f00.js"),["assets/device-99900f00.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-ba97b9ec.js"),["assets/bat-ba97b9ec.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-bef0b821.js"),["assets/counter-bef0b821.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-4c55f797.js"),["assets/device-4c55f797.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-4a2cdfd9.js"),["assets/inverter-4a2cdfd9.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/counter.vue":()=>e(()=>import("./counter-7a033879.js"),["assets/counter-7a033879.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-dbe167d8.js"),["assets/device-dbe167d8.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/counter.vue":()=>e(()=>import("./counter-018e7196.js"),["assets/counter-018e7196.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-5ceb63e9.js"),["assets/device-5ceb63e9.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/inverter.vue":()=>e(()=>import("./inverter-e8d6d647.js"),["assets/inverter-e8d6d647.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-45df0691.js"),["assets/device-45df0691.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/counter.vue":()=>e(()=>import("./counter-19e7f139.js"),["assets/counter-19e7f139.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-8de467ac.js"),["assets/device-8de467ac.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/counter.vue":()=>e(()=>import("./counter-ab315ba3.js"),["assets/counter-ab315ba3.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-9befb1d4.js"),["assets/device-9befb1d4.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-30d7c2e0.js"),["assets/device-30d7c2e0.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/inverter.vue":()=>e(()=>import("./inverter-456adc79.js"),["assets/inverter-456adc79.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./lg/lg/device.vue":()=>e(()=>import("./device-4e960663.js"),["assets/device-4e960663.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/bat.vue":()=>e(()=>import("./bat-b459c554.js"),["assets/bat-b459c554.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/counter.vue":()=>e(()=>import("./counter-55c27daf.js"),["assets/counter-55c27daf.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-f1c2a7a5.js"),["assets/device-f1c2a7a5.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/inverter.vue":()=>e(()=>import("./inverter-c1990994.js"),["assets/inverter-c1990994.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-3e5adae7.js"),["assets/device-3e5adae7.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/inverter.vue":()=>e(()=>import("./inverter-5571eba7.js"),["assets/inverter-5571eba7.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-a09a1026.js"),["assets/bat-a09a1026.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-508dda8e.js"),["assets/bat-508dda8e.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-d1809224.js"),["assets/counter-d1809224.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-82378537.js"),["assets/inverter-82378537.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/bat.vue":()=>e(()=>import("./bat-8885d269.js"),["assets/bat-8885d269.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/consumption_counter.vue":()=>e(()=>import("./consumption_counter-704c01f7.js"),["assets/consumption_counter-704c01f7.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/counter.vue":()=>e(()=>import("./counter-958da48c.js"),["assets/counter-958da48c.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-4f5bf65a.js"),["assets/device-4f5bf65a.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/inverter.vue":()=>e(()=>import("./inverter-0931beee.js"),["assets/inverter-0931beee.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-1eaedb65.js"),["assets/inverter-1eaedb65.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/counter.vue":()=>e(()=>import("./counter-ccad25ea.js"),["assets/counter-ccad25ea.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-c8cf6368.js"),["assets/device-c8cf6368.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/counter.vue":()=>e(()=>import("./counter-7668209b.js"),["assets/counter-7668209b.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-1830d04b.js"),["assets/device-1830d04b.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/inverter.vue":()=>e(()=>import("./inverter-896676a9.js"),["assets/inverter-896676a9.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-3be14789.js"),["assets/device-3be14789.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./rct/rct/device.vue":()=>e(()=>import("./device-968183c7.js"),["assets/device-968183c7.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-fcda5bd2.js"),["assets/device-fcda5bd2.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/counter.vue":()=>e(()=>import("./counter-48217739.js"),["assets/counter-48217739.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-fd0ed77c.js"),["assets/device-fd0ed77c.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-f3f81832.js"),["assets/device-f3f81832.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-357d44c6.js"),["assets/device-357d44c6.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/bat.vue":()=>e(()=>import("./bat-09e11c39.js"),["assets/bat-09e11c39.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/counter.vue":()=>e(()=>import("./counter-00141858.js"),["assets/counter-00141858.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-906beffa.js"),["assets/device-906beffa.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/inverter.vue":()=>e(()=>import("./inverter-25109ec8.js"),["assets/inverter-25109ec8.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_shm/counter.vue":()=>e(()=>import("./counter-76eff543.js"),["assets/counter-76eff543.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_shm/inverter.vue":()=>e(()=>import("./inverter-cad24111.js"),["assets/inverter-cad24111.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-47aea623.js"),["assets/bat-47aea623.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-8db62ce9.js"),["assets/bat_smart_energy-8db62ce9.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-5a3251ce.js"),["assets/counter-5a3251ce.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-3d86bc85.js"),["assets/device-3d86bc85.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-a427739c.js"),["assets/inverter-a427739c.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/bat.vue":()=>e(()=>import("./bat-1c531740.js"),["assets/bat-1c531740.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-8c6a7cd7.js"),["assets/device-8c6a7cd7.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-a0c4f59d.js"),["assets/device-a0c4f59d.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/counter.vue":()=>e(()=>import("./counter-8520ea8e.js"),["assets/counter-8520ea8e.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-6656b07f.js"),["assets/device-6656b07f.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/inverter.vue":()=>e(()=>import("./inverter-498c1656.js"),["assets/inverter-498c1656.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-7075a0a8.js"),["assets/device-7075a0a8.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-2f945435.js"),["assets/device-2f945435.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/counter.vue":()=>e(()=>import("./counter-95bdcdb7.js"),["assets/counter-95bdcdb7.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-264114d8.js"),["assets/device-264114d8.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-31e5797e.js"),["assets/device-31e5797e.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/inverter.vue":()=>e(()=>import("./inverter-30cf9ccf.js"),["assets/inverter-30cf9ccf.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-c61fae76.js"),["assets/device-c61fae76.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-4f7aad98.js"),["assets/device-4f7aad98.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/bat.vue":()=>e(()=>import("./bat-6ae70208.js"),["assets/bat-6ae70208.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/counter.vue":()=>e(()=>import("./counter-a31f5e7d.js"),["assets/counter-a31f5e7d.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-23e00b31.js"),["assets/device-23e00b31.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-19cf6472.js"),["assets/external_inverter-19cf6472.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/inverter.vue":()=>e(()=>import("./inverter-68f31134.js"),["assets/inverter-68f31134.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/bat.vue":()=>e(()=>import("./bat-655f55cd.js"),["assets/bat-655f55cd.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-123cfe52.js"),["assets/device-123cfe52.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/inverter.vue":()=>e(()=>import("./inverter-997c828c.js"),["assets/inverter-997c828c.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solax/solax/device.vue":()=>e(()=>import("./device-b21c21f9.js"),["assets/device-b21c21f9.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/bat.vue":()=>e(()=>import("./bat-5d80d1b1.js"),["assets/bat-5d80d1b1.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/counter.vue":()=>e(()=>import("./counter-394e8014.js"),["assets/counter-394e8014.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/device.vue":()=>e(()=>import("./device-e29a0ff7.js"),["assets/device-e29a0ff7.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/inverter.vue":()=>e(()=>import("./inverter-1e549543.js"),["assets/inverter-1e549543.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/counter.vue":()=>e(()=>import("./counter-1b273ac4.js"),["assets/counter-1b273ac4.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-1b11a3ea.js"),["assets/device-1b11a3ea.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/bat.vue":()=>e(()=>import("./bat-c05ee012.js"),["assets/bat-c05ee012.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/device.vue":()=>e(()=>import("./device-7f7452f2.js"),["assets/device-7f7452f2.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/inverter.vue":()=>e(()=>import("./inverter-0dee4ab1.js"),["assets/inverter-0dee4ab1.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-a319d4b6.js"),["assets/device-a319d4b6.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-54f1a203.js"),["assets/device-54f1a203.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-04b7418e.js"),["assets/device-04b7418e.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/counter.vue":()=>e(()=>import("./counter-aed75c81.js"),["assets/counter-aed75c81.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-653a19f8.js"),["assets/device-653a19f8.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/device.vue":()=>e(()=>import("./device-3f9eff90.js"),["assets/device-3f9eff90.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/inverter.vue":()=>e(()=>import("./inverter-f413f2e1.js"),["assets/inverter-f413f2e1.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/bat.vue":()=>e(()=>import("./bat-434d0404.js"),["assets/bat-434d0404.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/counter.vue":()=>e(()=>import("./counter-75e3d92e.js"),["assets/counter-75e3d92e.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/device.vue":()=>e(()=>import("./device-3435a852.js"),["assets/device-3435a852.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/inverter.vue":()=>e(()=>import("./inverter-f287a1d4.js"),["assets/inverter-f287a1d4.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/counter.vue":()=>e(()=>import("./counter-f0638cd4.js"),["assets/counter-f0638cd4.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-5cc2cdfa.js"),["assets/device-5cc2cdfa.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/inverter.vue":()=>e(()=>import("./inverter-617b5e4a.js"),["assets/inverter-617b5e4a.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/device.vue":()=>e(()=>import("./device-f0eb9f12.js"),["assets/device-f0eb9f12.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/inverter.vue":()=>e(()=>import("./inverter-2d9123ee.js"),["assets/inverter-2d9123ee.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.device.vendor}/${this.device.type}/${this.component.type}.vue`),errorComponent:ve}):z({loader:()=>C(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-e44ec84b.js"),["assets/device-e44ec84b.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./ampere/ampere/device.vue":()=>e(()=>import("./device-509a4ac4.js"),["assets/device-509a4ac4.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-d1c48c2c.js"),["assets/device-d1c48c2c.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-249da548.js"),["assets/device-249da548.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/device.vue":()=>e(()=>import("./device-dd9fc66e.js"),["assets/device-dd9fc66e.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./byd/byd/device.vue":()=>e(()=>import("./device-88e6829b.js"),["assets/device-88e6829b.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-67811713.js"),["assets/device-67811713.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/device.vue":()=>e(()=>import("./device-1565347a.js"),["assets/device-1565347a.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-eb9518f3.js"),["assets/device-eb9518f3.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-52c218d2.js"),["assets/device-52c218d2.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-716c4065.js"),["assets/device-716c4065.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/device.vue":()=>e(()=>import("./device-aacbf2a5.js"),["assets/device-aacbf2a5.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-8c5dabb3.js"),["assets/device-8c5dabb3.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-a9846396.js"),["assets/device-a9846396.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/device.vue":()=>e(()=>import("./device-9749c9e1.js"),["assets/device-9749c9e1.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/device.vue":()=>e(()=>import("./device-354918a0.js"),["assets/device-354918a0.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-6659803e.js"),["assets/device-6659803e.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-ae68eae2.js"),["assets/device-ae68eae2.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./growatt/growatt/device.vue":()=>e(()=>import("./device-99e093c0.js"),["assets/device-99e093c0.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-99900f00.js"),["assets/device-99900f00.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-4c55f797.js"),["assets/device-4c55f797.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-dbe167d8.js"),["assets/device-dbe167d8.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-5ceb63e9.js"),["assets/device-5ceb63e9.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-45df0691.js"),["assets/device-45df0691.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-8de467ac.js"),["assets/device-8de467ac.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-9befb1d4.js"),["assets/device-9befb1d4.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-30d7c2e0.js"),["assets/device-30d7c2e0.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./lg/lg/device.vue":()=>e(()=>import("./device-4e960663.js"),["assets/device-4e960663.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-f1c2a7a5.js"),["assets/device-f1c2a7a5.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-3e5adae7.js"),["assets/device-3e5adae7.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-4f5bf65a.js"),["assets/device-4f5bf65a.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-c8cf6368.js"),["assets/device-c8cf6368.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-1830d04b.js"),["assets/device-1830d04b.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-3be14789.js"),["assets/device-3be14789.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./rct/rct/device.vue":()=>e(()=>import("./device-968183c7.js"),["assets/device-968183c7.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-fcda5bd2.js"),["assets/device-fcda5bd2.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-fd0ed77c.js"),["assets/device-fd0ed77c.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-f3f81832.js"),["assets/device-f3f81832.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-357d44c6.js"),["assets/device-357d44c6.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-906beffa.js"),["assets/device-906beffa.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-3d86bc85.js"),["assets/device-3d86bc85.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-8c6a7cd7.js"),["assets/device-8c6a7cd7.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-a0c4f59d.js"),["assets/device-a0c4f59d.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-6656b07f.js"),["assets/device-6656b07f.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-7075a0a8.js"),["assets/device-7075a0a8.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-2f945435.js"),["assets/device-2f945435.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-264114d8.js"),["assets/device-264114d8.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-31e5797e.js"),["assets/device-31e5797e.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-c61fae76.js"),["assets/device-c61fae76.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-4f7aad98.js"),["assets/device-4f7aad98.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-23e00b31.js"),["assets/device-23e00b31.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-123cfe52.js"),["assets/device-123cfe52.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solax/solax/device.vue":()=>e(()=>import("./device-b21c21f9.js"),["assets/device-b21c21f9.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/device.vue":()=>e(()=>import("./device-e29a0ff7.js"),["assets/device-e29a0ff7.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-1b11a3ea.js"),["assets/device-1b11a3ea.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/device.vue":()=>e(()=>import("./device-7f7452f2.js"),["assets/device-7f7452f2.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-a319d4b6.js"),["assets/device-a319d4b6.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-54f1a203.js"),["assets/device-54f1a203.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-04b7418e.js"),["assets/device-04b7418e.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-653a19f8.js"),["assets/device-653a19f8.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/device.vue":()=>e(()=>import("./device-3f9eff90.js"),["assets/device-3f9eff90.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/device.vue":()=>e(()=>import("./device-3435a852.js"),["assets/device-3435a852.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-5cc2cdfa.js"),["assets/device-5cc2cdfa.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/device.vue":()=>e(()=>import("./device-f0eb9f12.js"),["assets/device-f0eb9f12.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.device.vendor}/${this.device.type}/device.vue`),errorComponent:_e})},updateConfiguration(o){this.$emit("update:configuration",o)}}};function me(o,t,i,m,v,n){return s(),E(Z(n.getComponent()),{device:i.device,component:i.component,configuration:i.component?i.component.configuration:i.device.configuration,"device-id":i.device.id,"device-type":i.device.type,"component-id":i.component?i.component.id:void 0,"component-type":i.component?i.component.type:void 0,"onUpdate:configuration":t[0]||(t[0]=l=>n.updateConfiguration(l))},null,40,["device","component","configuration","device-id","device-type","component-id","component-type"])}const pe=T(ae,[["render",me],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);S.add(U,q,G,N,K,F,H);const le={name:"OpenwbHardwareInstallationView",components:{FontAwesomeIcon:$,OpenwbConfigProxy:pe},mixins:[J],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],selectedVendor:void 0,deviceToAdd:void 0,showDeviceRemoveModal:!1,modalDevice:void 0,modalDeviceName:"",componentToAdd:[],showComponentRemoveModal:!1,modalComponent:void 0,modalComponentName:""}},computed:{installedDevices:{get(){return this.getWildcardTopics("openWB/system/device/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}},vendorList:{get(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]===void 0?[]:Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).map(([o,t])=>({label:t.group_name,options:Object.entries(t.vendors).map(([i,m])=>({value:[o,i],text:m.vendor_name})).sort((i,m)=>i.text.localeCompare(m.text))})).sort((o,t)=>-o.label.localeCompare(t.label))}},deviceList:{get(){if(this.selectedVendor===void 0)return[];let[o,t]=this.selectedVendor;return Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"][o].vendors[t].devices).map(([i,m])=>({value:[t,i],text:m.device_name})).sort((i,m)=>i.text.localeCompare(m.text))}}},methods:{getComponentTypeClass(o){return o.match(/^(.+_)?counter(_.+)?$/)?"danger":o.match(/^(.+_)?inverter(_.+)?$/)?"success":o.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(o){return o.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:o.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:o.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(o){return this.getWildcardTopics("openWB/system/device/"+o+"/component/+/config")},deviceHasConfiguredComponents(o){return Object.keys(this.getMyInstalledComponents(o)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{vendor:this.deviceToAdd[0],type:this.deviceToAdd[1]}})},removeDeviceModal(o,t,i){i.stopPropagation(),this.modalDevice=o,this.modalDeviceName=t,this.showDeviceRemoveModal=!0},removeDevice(o){this.showDeviceRemoveModal=!1,o=="confirm"&&this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}})},addComponent(o,t,i,m){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:o,deviceType:i,deviceVendor:t,type:m}})},removeComponentModal(o,t,i,m,v){v.stopPropagation(),this.modalComponent={deviceId:o,id:t,type:i},this.modalComponentName=m,this.showComponentRemoveModal=!0},removeComponent(o){this.showComponentRemoveModal=!1,o=="confirm"&&this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent})},getComponentList(o,t){if(o===void 0||t===void 0)return[];let i=[];return Object.values(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).every(m=>m.vendors[o]!==void 0?(m.vendors[o].devices[t]!==void 0&&(i=Object.entries(m.vendors[o].devices[t].components).map(([n,l])=>({value:n,text:l.component_name}))),!1):!0),i},updateConfiguration(o,t){console.debug("updateConfiguration",o,t),this.updateState(o,t.value,t.object)}}},ce={class:"hardwareInstallation"},Ee={name:"hardwareInstallationForm"},ge={key:0},fe={key:1},Ve={key:1},be={key:0};function Oe(o,t,i,m,v,n){const l=p("openwb-base-modal-dialog"),I=p("router-link"),O=p("openwb-base-alert"),A=p("font-awesome-icon"),D=p("openwb-base-avatar"),R=p("openwb-base-text-input"),x=p("openwb-config-proxy"),M=p("openwb-base-heading"),w=p("openwb-base-card"),y=p("openwb-base-select-input"),j=p("openwb-base-submit-buttons");return s(),g(L,null,[u(l,{show:v.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeDevice},{default:r(()=>[d(' Wollen Sie das Gerät "'+V(v.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),u(l,{show:v.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeComponent},{default:r(()=>[d(' Wollen Sie die Komponente "'+V(v.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),c("div",ce,[c("form",Ee,[i.installAssistantActive?P("",!0):(s(),E(O,{key:0,subtype:"info"},{default:r(()=>[t[7]||(t[7]=d(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das ")),u(I,{to:"/LoadManagementConfiguration"},{default:r(()=>t[6]||(t[6]=[d(" Lastmanagement ")])),_:1}),t[8]||(t[8]=d(" zu prüfen! "))]),_:1})),u(w,{title:"Geräte und Komponenten"},{default:r(()=>[o.$store.state.mqtt["openWB/general/extern"]===!0?(s(),g("div",ge,[u(O,{subtype:"info"},{default:r(()=>t[9]||(t[9]=[d(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),g("div",fe,[(s(!0),g(L,null,k(n.installedDevices,(_,h)=>(s(),E(w,{key:h,collapsible:!0,collapsed:!0,subtype:"dark"},{header:r(()=>[u(A,{"fixed-width":"",icon:["fas","network-wired"]}),d(" "+V(_==null?void 0:_.name),1)]),actions:r(a=>[a.collapsed?(s(),g("div",Ve,[(s(!0),g(L,null,k(n.getMyInstalledComponents(_==null?void 0:_.id),f=>(s(),E(D,{key:f.id,class:Q("ml-1 bg-"+n.getComponentTypeClass(f.type))},{default:r(()=>[u(A,{"fixed-width":"",icon:n.getComponentTypeIcon(f.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(s(),E(D,{key:0,class:"bg-danger clickable",onClick:f=>n.removeDeviceModal(_==null?void 0:_.id,_==null?void 0:_.name,f)},{default:r(()=>[u(A,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:r(()=>[u(R,{title:"Bezeichnung",subtype:"text","model-value":_==null?void 0:_.name,"onUpdate:modelValue":a=>o.updateState(h,a,"name")},null,8,["model-value","onUpdate:modelValue"]),t[17]||(t[17]=c("hr",null,null,-1)),u(x,{device:_,"onUpdate:configuration":a=>n.updateConfiguration(h,a)},null,8,["device","onUpdate:configuration"]),t[18]||(t[18]=c("hr",null,null,-1)),u(M,null,{default:r(()=>[...t[10]||(t[10]=[d("Komponenten")])]),_:1}),n.deviceHasConfiguredComponents(_==null?void 0:_.id)?P("",!0):(s(),E(O,{key:0,subtype:"warning"},{default:r(()=>[...t[11]||(t[11]=[d(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")])]),_:1})),(s(!0),g(L,null,k(n.getMyInstalledComponents(_.id),(a,f)=>(s(),E(w,{key:a.id,collapsible:!0,collapsed:!0,subtype:n.getComponentTypeClass(a.type)},{header:r(()=>[u(A,{"fixed-width":"",icon:n.getComponentTypeIcon(a.type)},null,8,["icon"]),d(" "+V(a.name),1)]),actions:r(b=>[b.collapsed?P("",!0):(s(),E(D,{key:0,class:"bg-danger clickable",onClick:W=>n.removeComponentModal(_.id,a.id,a.type,a.name,W)},{default:r(()=>[u(A,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:r(()=>[u(R,{title:"Bezeichnung",subtype:"text","model-value":a.name,"onUpdate:modelValue":b=>o.updateState(f,b,"name")},null,8,["model-value","onUpdate:modelValue"]),u(R,{title:"Hersteller",subtype:"text","model-value":a.info.manufacturer,"onUpdate:modelValue":b=>o.updateState(f,b,"info.manufacturer")},{help:r(()=>[...t[12]||(t[12]=[d(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),u(R,{title:"Modell",subtype:"text","model-value":a.info.model,"onUpdate:modelValue":b=>o.updateState(f,b,"info.model")},{help:r(()=>[...t[13]||(t[13]=[d(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),t[14]||(t[14]=c("hr",null,null,-1)),u(x,{device:_,component:a,"onUpdate:configuration":b=>n.updateConfiguration(f,b)},null,8,["device","component","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),t[19]||(t[19]=c("hr",null,null,-1)),n.getComponentList(_.vendor,_.type).length?(s(),E(y,{key:1,title:"Verfügbare Komponenten","not-selected":"Bitte auswählen",options:n.getComponentList(_.vendor,_.type),"model-value":v.componentToAdd[_.id],"add-button":!0,"onUpdate:modelValue":a=>v.componentToAdd[_.id]=a,"onInput:add":a=>n.addComponent(_.id,_.vendor,_.type,v.componentToAdd[_.id])},{help:r(()=>[...t[15]||(t[15]=[d(" Bitte eine Komponente auswählen, die hinzugefügt werden soll. Für jeden Datensatz, z.B. Wechselrichter- und Batteriedaten, muss eine Wechselrichter- und eine Batteriekomponente hinzugefügt werden. ")])]),_:2},1032,["options","model-value","onUpdate:modelValue","onInput:add"])):(s(),E(O,{key:2,subtype:"info"},{default:r(()=>[...t[16]||(t[16]=[d(" Dieses System bietet keine Komponenten zur Installation an. ")])]),_:1}))]),_:2},1024))),128)),Object.keys(n.installedDevices).length>0?(s(),g("hr",be)):P("",!0),u(y,{modelValue:v.selectedVendor,"onUpdate:modelValue":t[0]||(t[0]=_=>v.selectedVendor=_),title:"Hersteller","not-selected":"Bitte auswählen",groups:n.vendorList},null,8,["modelValue","groups"]),u(y,{modelValue:v.deviceToAdd,"onUpdate:modelValue":[t[1]||(t[1]=_=>v.deviceToAdd=_),t[2]||(t[2]=_=>v.deviceToAdd=_)],title:"Verfügbare Geräte","not-selected":"Bitte auswählen",disabled:v.selectedVendor===void 0,options:n.deviceList,"model-value":v.deviceToAdd,"add-button":!0,"onInput:add":n.addDevice},{help:r(()=>t[20]||(t[20]=[c("p",null,[d(' Die openWB-Regelung ist auf Werte von Messpunkten (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),c("br"),d(' Ein "Gerät" wird hierbei durch seine Verbindungseinstellungen (z.B. IP-Adresse) spezifiziert (häufig durch manuelle Eingabe oder manchmal automatisch ermittelt) und kann über mehrere untergeordnete "Komponenten" verfügen, z.B. einen Messpunkt für PV-Erzeugung, einen Messpunkt für Netzeinspeisung/-bezug am EVU-Punkt usw.. Ein "Gerät" bedingt somit immer mindestens eine zugehörige "Komponente". ')],-1),c("p",null,[d(' Bsp: Werden die Werte von verschiedenen Messpunkten (z.B. PV und EVU) über die gleiche IP-Adresse abgefragt, wird dafür ein "Gerät" mit zwei "Komponenten" für PV- und EVU- Messpunkt angelegt.'),c("br"),d(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt. ')],-1),c("p",null,' Das "Gerät" wird in der Dropdown-Liste ausgewählt und mit "+" der Regelung hinzugefügt. Im Anschluss erfolgt die Konfiguration des "Gerätes" innerhalb des schwarzen "Geräte"-Reiters. ',-1)])),_:1},8,["modelValue","disabled","options","model-value","onInput:add"])]))]),_:1}),u(j,{"form-name":"hardwareInstallationForm",onSave:t[3]||(t[3]=_=>o.$emit("save")),onReset:t[4]||(t[4]=_=>o.$emit("reset")),onDefaults:t[5]||(t[5]=_=>o.$emit("defaults"))})])])],64)}const Te=T(le,[["render",Oe],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]),Le=Object.freeze(Object.defineProperty({__proto__:null,default:Te},Symbol.toStringTag,{value:"Module"}));export{re as C,B as D,Te as H,Le as a}; diff --git a/web/settings/assets/HardwareInstallation-727b5962.js b/web/settings/assets/HardwareInstallation-727b5962.js deleted file mode 100644 index 13557ef70c..0000000000 --- a/web/settings/assets/HardwareInstallation-727b5962.js +++ /dev/null @@ -1 +0,0 @@ -import{l as S,d as U,x as q,ah as G,a9 as N,Z as K,Y as F,X as H,F as $}from"./vendor-fortawesome-9d7cfdfb.js";import{_ as e,C as J}from"./index-b236cee5.js";import{_ as C}from"./dynamic-import-helper-be004503.js";import{_ as T,u as p,l as s,m as g,x as E,E as r,B as d,F as V,G as u,A as c,a1 as z,a2 as Z,z as P,N as L,M as k,q as X}from"./vendor-ad7c30fd.js";const Y={props:{device:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,o=void 0){this.$emit("update:configuration",{value:t,object:o})}}},B=T(Y,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/DeviceConfigMixin.vue"]]),Q={name:"DeviceFallback",mixins:[B]},ee={class:"device-fallback"},oe={key:1};function te(t,o,i,m,v,n){const l=p("openwb-base-alert"),I=p("openwb-base-textarea");return s(),g("div",ee,[Object.keys(t.device.configuration).length==0?(s(),E(l,{key:0,subtype:"info"},{default:r(()=>[d(' Der Gerät-Typ "'+V(t.device.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),g("div",oe,[u(l,{subtype:"warning"},{default:r(()=>[d(' Es wurde keine Konfigurationsseite für den Geräte-Typ "'+V(t.device.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),u(I,{title:"Konfiguration",subtype:"json","model-value":t.device.configuration,"onUpdate:modelValue":o[0]||(o[0]=O=>t.updateConfiguration(O,"configuration"))},{help:r(()=>o[1]||(o[1]=[d(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),u(l,{subtype:"info"},{default:r(()=>[c("pre",null,V(JSON.stringify(t.device.configuration,void 0,2)),1)]),_:1})]))])}const _e=T(Q,[["render",te],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ie={mixins:[B],props:{component:{type:Object,required:!0}}},re=T(ie,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/ComponentConfigMixin.vue"]]),ne={name:"ComponentFallback",mixins:[re]},ue={class:"component-fallback"},de={key:1};function se(t,o,i,m,v,n){const l=p("openwb-base-alert"),I=p("openwb-base-textarea");return s(),g("div",ue,[Object.keys(t.component.configuration).length==0?(s(),E(l,{key:0,subtype:"info"},{default:r(()=>[d(' Der Komponenten-Typ "'+V(t.component.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),g("div",de,[u(l,{subtype:"warning"},{default:r(()=>[d(' Es wurde keine Konfigurationsseite für den Komponenten-Typ "'+V(t.component.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),u(I,{title:"Konfiguration",subtype:"json","model-value":t.component.configuration,"onUpdate:modelValue":o[0]||(o[0]=O=>t.updateConfiguration(O,"configuration"))},{help:r(()=>o[1]||(o[1]=[d(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),u(l,{subtype:"info"},{default:r(()=>[c("pre",null,V(JSON.stringify(t.component.configuration,void 0,2)),1)]),_:1})]))])}const ve=T(ne,[["render",se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbComponentConfigFallback.vue"]]),ae={name:"OpenwbConfigProxy",props:{device:{type:Object,required:!0},component:{type:Object,required:!1,default:void 0}},emits:["update:configuration"],methods:{getComponent(){var t;return console.debug(`loading component: ${this.device.type} / ${(t=this.component)==null?void 0:t.type}`),this.component!==void 0?z({loader:()=>C(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-94d6b50f.js"),["assets/device-94d6b50f.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./ampere/ampere/device.vue":()=>e(()=>import("./device-13f0437c.js"),["assets/device-13f0437c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-ebfe2885.js"),["assets/device-ebfe2885.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-b9b6be03.js"),["assets/device-b9b6be03.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/device.vue":()=>e(()=>import("./device-d85f27a1.js"),["assets/device-d85f27a1.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/inverter.vue":()=>e(()=>import("./inverter-9c2adc35.js"),["assets/inverter-9c2adc35.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./byd/byd/device.vue":()=>e(()=>import("./device-55249d75.js"),["assets/device-55249d75.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-5bbed3f1.js"),["assets/counter-5bbed3f1.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-5fd78306.js"),["assets/device-5fd78306.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/bat.vue":()=>e(()=>import("./bat-8eeb809e.js"),["assets/bat-8eeb809e.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/counter.vue":()=>e(()=>import("./counter-b7f323cc.js"),["assets/counter-b7f323cc.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/device.vue":()=>e(()=>import("./device-72bc8ff3.js"),["assets/device-72bc8ff3.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/inverter.vue":()=>e(()=>import("./inverter-62f3baf9.js"),["assets/inverter-62f3baf9.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/counter.vue":()=>e(()=>import("./counter-dddfcee5.js"),["assets/counter-dddfcee5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-961ae78d.js"),["assets/device-961ae78d.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/inverter.vue":()=>e(()=>import("./inverter-6cea7a86.js"),["assets/inverter-6cea7a86.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-e6d1ff67.js"),["assets/device-e6d1ff67.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/counter.vue":()=>e(()=>import("./counter-09ee9f20.js"),["assets/counter-09ee9f20.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-8c80f180.js"),["assets/device-8c80f180.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/inverter.vue":()=>e(()=>import("./inverter-991c91e3.js"),["assets/inverter-991c91e3.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/bat.vue":()=>e(()=>import("./bat-386b6a71.js"),["assets/bat-386b6a71.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/device.vue":()=>e(()=>import("./device-86f7621f.js"),["assets/device-86f7621f.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/bat.vue":()=>e(()=>import("./bat-161a0b3f.js"),["assets/bat-161a0b3f.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/counter.vue":()=>e(()=>import("./counter-dd217c03.js"),["assets/counter-dd217c03.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-e7442473.js"),["assets/device-e7442473.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/inverter.vue":()=>e(()=>import("./inverter-4cc98b34.js"),["assets/inverter-4cc98b34.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/bat.vue":()=>e(()=>import("./bat-53f2b2dc.js"),["assets/bat-53f2b2dc.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-dd8aa57c.js"),["assets/counter_sm-dd8aa57c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-2144978c.js"),["assets/device-2144978c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/inverter_secondary.vue":()=>e(()=>import("./inverter_secondary-987240b8.js"),["assets/inverter_secondary-987240b8.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/bat.vue":()=>e(()=>import("./bat-00ee042f.js"),["assets/bat-00ee042f.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/counter.vue":()=>e(()=>import("./counter-c0fbd699.js"),["assets/counter-c0fbd699.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/device.vue":()=>e(()=>import("./device-5e15f44e.js"),["assets/device-5e15f44e.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/inverter.vue":()=>e(()=>import("./inverter-a8875bde.js"),["assets/inverter-a8875bde.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/bat.vue":()=>e(()=>import("./bat-575ac984.js"),["assets/bat-575ac984.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/counter.vue":()=>e(()=>import("./counter-ffe6f59d.js"),["assets/counter-ffe6f59d.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/device.vue":()=>e(()=>import("./device-e80c7a1a.js"),["assets/device-e80c7a1a.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/inverter.vue":()=>e(()=>import("./inverter-cbcef859.js"),["assets/inverter-cbcef859.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/bat.vue":()=>e(()=>import("./bat-46ed5214.js"),["assets/bat-46ed5214.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/counter.vue":()=>e(()=>import("./counter-28bcfaac.js"),["assets/counter-28bcfaac.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-35241d4e.js"),["assets/device-35241d4e.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/inverter.vue":()=>e(()=>import("./inverter-407f4ad4.js"),["assets/inverter-407f4ad4.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/virtual/counter.vue":()=>e(()=>import("./counter-021c90c7.js"),["assets/counter-021c90c7.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-cc6d1d33.js"),["assets/device-cc6d1d33.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./growatt/growatt/device.vue":()=>e(()=>import("./device-1cc75082.js"),["assets/device-1cc75082.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-e89043ef.js"),["assets/device-e89043ef.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-09618e87.js"),["assets/bat-09618e87.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-d04c382b.js"),["assets/counter-d04c382b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-5a5c2204.js"),["assets/device-5a5c2204.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-1632a4b1.js"),["assets/inverter-1632a4b1.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/counter.vue":()=>e(()=>import("./counter-01848dd0.js"),["assets/counter-01848dd0.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-e6a31e33.js"),["assets/device-e6a31e33.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/counter.vue":()=>e(()=>import("./counter-b5c55995.js"),["assets/counter-b5c55995.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-1e200cbf.js"),["assets/device-1e200cbf.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/inverter.vue":()=>e(()=>import("./inverter-ce8f0bd6.js"),["assets/inverter-ce8f0bd6.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-1497b5e4.js"),["assets/device-1497b5e4.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/counter.vue":()=>e(()=>import("./counter-70674361.js"),["assets/counter-70674361.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-1950c8ef.js"),["assets/device-1950c8ef.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/counter.vue":()=>e(()=>import("./counter-7680421b.js"),["assets/counter-7680421b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-92ff8214.js"),["assets/device-92ff8214.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-342a235f.js"),["assets/device-342a235f.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/inverter.vue":()=>e(()=>import("./inverter-b8e6f7ca.js"),["assets/inverter-b8e6f7ca.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./lg/lg/device.vue":()=>e(()=>import("./device-9684db49.js"),["assets/device-9684db49.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/bat.vue":()=>e(()=>import("./bat-b04f324c.js"),["assets/bat-b04f324c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/counter.vue":()=>e(()=>import("./counter-0e51da5e.js"),["assets/counter-0e51da5e.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-9a79e89c.js"),["assets/device-9a79e89c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/inverter.vue":()=>e(()=>import("./inverter-5009ea23.js"),["assets/inverter-5009ea23.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-9eedaff7.js"),["assets/device-9eedaff7.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/inverter.vue":()=>e(()=>import("./inverter-50a72e83.js"),["assets/inverter-50a72e83.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-500fac88.js"),["assets/bat-500fac88.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-7e2bb1f0.js"),["assets/bat-7e2bb1f0.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-d193f9cd.js"),["assets/counter-d193f9cd.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-1170f457.js"),["assets/inverter-1170f457.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/bat.vue":()=>e(()=>import("./bat-b13c576b.js"),["assets/bat-b13c576b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/consumption_counter.vue":()=>e(()=>import("./consumption_counter-d132c159.js"),["assets/consumption_counter-d132c159.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/counter.vue":()=>e(()=>import("./counter-2d03ca61.js"),["assets/counter-2d03ca61.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-aa0e176c.js"),["assets/device-aa0e176c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/inverter.vue":()=>e(()=>import("./inverter-66844342.js"),["assets/inverter-66844342.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-ff72f261.js"),["assets/inverter-ff72f261.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/counter.vue":()=>e(()=>import("./counter-a6252054.js"),["assets/counter-a6252054.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-8dcea009.js"),["assets/device-8dcea009.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/counter.vue":()=>e(()=>import("./counter-1306a4c6.js"),["assets/counter-1306a4c6.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-6dd461c4.js"),["assets/device-6dd461c4.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/inverter.vue":()=>e(()=>import("./inverter-387e64b9.js"),["assets/inverter-387e64b9.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-fec30c56.js"),["assets/device-fec30c56.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./rct/rct/device.vue":()=>e(()=>import("./device-8a67a9ec.js"),["assets/device-8a67a9ec.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-68b75b5b.js"),["assets/device-68b75b5b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/counter.vue":()=>e(()=>import("./counter-c4ea528f.js"),["assets/counter-c4ea528f.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-69185b02.js"),["assets/device-69185b02.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-f82ddafe.js"),["assets/device-f82ddafe.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-8b9db644.js"),["assets/device-8b9db644.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/bat.vue":()=>e(()=>import("./bat-e525273f.js"),["assets/bat-e525273f.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/counter.vue":()=>e(()=>import("./counter-40260f20.js"),["assets/counter-40260f20.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-e51f6a05.js"),["assets/device-e51f6a05.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/inverter.vue":()=>e(()=>import("./inverter-fb891ee4.js"),["assets/inverter-fb891ee4.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_shm/counter.vue":()=>e(()=>import("./counter-de0030ac.js"),["assets/counter-de0030ac.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_shm/inverter.vue":()=>e(()=>import("./inverter-8ea576fa.js"),["assets/inverter-8ea576fa.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-96814af1.js"),["assets/bat-96814af1.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-99926987.js"),["assets/bat_smart_energy-99926987.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-f257201f.js"),["assets/counter-f257201f.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-429cae7c.js"),["assets/device-429cae7c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-f5f1a5c8.js"),["assets/inverter-f5f1a5c8.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/bat.vue":()=>e(()=>import("./bat-8276d217.js"),["assets/bat-8276d217.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-11f6d869.js"),["assets/device-11f6d869.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-f7b12563.js"),["assets/device-f7b12563.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/counter.vue":()=>e(()=>import("./counter-986853af.js"),["assets/counter-986853af.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-45781f1b.js"),["assets/device-45781f1b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/inverter.vue":()=>e(()=>import("./inverter-dddc65f7.js"),["assets/inverter-dddc65f7.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-eaa956ad.js"),["assets/device-eaa956ad.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-0d49a26c.js"),["assets/device-0d49a26c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/counter.vue":()=>e(()=>import("./counter-6c87b676.js"),["assets/counter-6c87b676.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-2c344b3e.js"),["assets/device-2c344b3e.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-45cfa872.js"),["assets/device-45cfa872.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/inverter.vue":()=>e(()=>import("./inverter-a66b9919.js"),["assets/inverter-a66b9919.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-6dfeff1b.js"),["assets/device-6dfeff1b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-240bbfb8.js"),["assets/device-240bbfb8.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/bat.vue":()=>e(()=>import("./bat-41f81d7c.js"),["assets/bat-41f81d7c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/counter.vue":()=>e(()=>import("./counter-9e94ca6b.js"),["assets/counter-9e94ca6b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-d74725ec.js"),["assets/device-d74725ec.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-e76b5192.js"),["assets/external_inverter-e76b5192.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/inverter.vue":()=>e(()=>import("./inverter-29c8bc0a.js"),["assets/inverter-29c8bc0a.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/bat.vue":()=>e(()=>import("./bat-8ecd087b.js"),["assets/bat-8ecd087b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-82bb06d6.js"),["assets/device-82bb06d6.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/inverter.vue":()=>e(()=>import("./inverter-b76a9fda.js"),["assets/inverter-b76a9fda.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solax/solax/device.vue":()=>e(()=>import("./device-d1bfd3f3.js"),["assets/device-d1bfd3f3.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/bat.vue":()=>e(()=>import("./bat-b0b74fda.js"),["assets/bat-b0b74fda.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/counter.vue":()=>e(()=>import("./counter-11d67ba8.js"),["assets/counter-11d67ba8.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/device.vue":()=>e(()=>import("./device-8bba052a.js"),["assets/device-8bba052a.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/inverter.vue":()=>e(()=>import("./inverter-1a290548.js"),["assets/inverter-1a290548.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/counter.vue":()=>e(()=>import("./counter-76ed3a15.js"),["assets/counter-76ed3a15.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-ee4fe242.js"),["assets/device-ee4fe242.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/bat.vue":()=>e(()=>import("./bat-177cd510.js"),["assets/bat-177cd510.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/device.vue":()=>e(()=>import("./device-55bb825c.js"),["assets/device-55bb825c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/inverter.vue":()=>e(()=>import("./inverter-c852411a.js"),["assets/inverter-c852411a.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-dc895585.js"),["assets/device-dc895585.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-e3878572.js"),["assets/device-e3878572.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-6dfe8cd8.js"),["assets/device-6dfe8cd8.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/counter.vue":()=>e(()=>import("./counter-32cca269.js"),["assets/counter-32cca269.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-1ad34ad2.js"),["assets/device-1ad34ad2.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/device.vue":()=>e(()=>import("./device-93509dc9.js"),["assets/device-93509dc9.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/inverter.vue":()=>e(()=>import("./inverter-e9bb7891.js"),["assets/inverter-e9bb7891.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/bat.vue":()=>e(()=>import("./bat-515bb8b9.js"),["assets/bat-515bb8b9.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/counter.vue":()=>e(()=>import("./counter-48702b69.js"),["assets/counter-48702b69.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/device.vue":()=>e(()=>import("./device-d32f448c.js"),["assets/device-d32f448c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/inverter.vue":()=>e(()=>import("./inverter-6dedf2c0.js"),["assets/inverter-6dedf2c0.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/counter.vue":()=>e(()=>import("./counter-fea14072.js"),["assets/counter-fea14072.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-21c38268.js"),["assets/device-21c38268.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/inverter.vue":()=>e(()=>import("./inverter-2e18bb9f.js"),["assets/inverter-2e18bb9f.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/device.vue":()=>e(()=>import("./device-f71805ce.js"),["assets/device-f71805ce.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/inverter.vue":()=>e(()=>import("./inverter-e972f9b7.js"),["assets/inverter-e972f9b7.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.device.vendor}/${this.device.type}/${this.component.type}.vue`),errorComponent:ve}):z({loader:()=>C(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-94d6b50f.js"),["assets/device-94d6b50f.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./ampere/ampere/device.vue":()=>e(()=>import("./device-13f0437c.js"),["assets/device-13f0437c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-ebfe2885.js"),["assets/device-ebfe2885.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-b9b6be03.js"),["assets/device-b9b6be03.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/device.vue":()=>e(()=>import("./device-d85f27a1.js"),["assets/device-d85f27a1.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./byd/byd/device.vue":()=>e(()=>import("./device-55249d75.js"),["assets/device-55249d75.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-5fd78306.js"),["assets/device-5fd78306.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/device.vue":()=>e(()=>import("./device-72bc8ff3.js"),["assets/device-72bc8ff3.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-961ae78d.js"),["assets/device-961ae78d.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-e6d1ff67.js"),["assets/device-e6d1ff67.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-8c80f180.js"),["assets/device-8c80f180.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/device.vue":()=>e(()=>import("./device-86f7621f.js"),["assets/device-86f7621f.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-e7442473.js"),["assets/device-e7442473.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-2144978c.js"),["assets/device-2144978c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/device.vue":()=>e(()=>import("./device-5e15f44e.js"),["assets/device-5e15f44e.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/device.vue":()=>e(()=>import("./device-e80c7a1a.js"),["assets/device-e80c7a1a.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-35241d4e.js"),["assets/device-35241d4e.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-cc6d1d33.js"),["assets/device-cc6d1d33.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./growatt/growatt/device.vue":()=>e(()=>import("./device-1cc75082.js"),["assets/device-1cc75082.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-e89043ef.js"),["assets/device-e89043ef.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-5a5c2204.js"),["assets/device-5a5c2204.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-e6a31e33.js"),["assets/device-e6a31e33.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-1e200cbf.js"),["assets/device-1e200cbf.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-1497b5e4.js"),["assets/device-1497b5e4.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-1950c8ef.js"),["assets/device-1950c8ef.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-92ff8214.js"),["assets/device-92ff8214.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-342a235f.js"),["assets/device-342a235f.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./lg/lg/device.vue":()=>e(()=>import("./device-9684db49.js"),["assets/device-9684db49.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-9a79e89c.js"),["assets/device-9a79e89c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-9eedaff7.js"),["assets/device-9eedaff7.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-aa0e176c.js"),["assets/device-aa0e176c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-8dcea009.js"),["assets/device-8dcea009.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-6dd461c4.js"),["assets/device-6dd461c4.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-fec30c56.js"),["assets/device-fec30c56.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./rct/rct/device.vue":()=>e(()=>import("./device-8a67a9ec.js"),["assets/device-8a67a9ec.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-68b75b5b.js"),["assets/device-68b75b5b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-69185b02.js"),["assets/device-69185b02.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-f82ddafe.js"),["assets/device-f82ddafe.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-8b9db644.js"),["assets/device-8b9db644.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-e51f6a05.js"),["assets/device-e51f6a05.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-429cae7c.js"),["assets/device-429cae7c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-11f6d869.js"),["assets/device-11f6d869.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-f7b12563.js"),["assets/device-f7b12563.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-45781f1b.js"),["assets/device-45781f1b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-eaa956ad.js"),["assets/device-eaa956ad.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-0d49a26c.js"),["assets/device-0d49a26c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-2c344b3e.js"),["assets/device-2c344b3e.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-45cfa872.js"),["assets/device-45cfa872.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-6dfeff1b.js"),["assets/device-6dfeff1b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-240bbfb8.js"),["assets/device-240bbfb8.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-d74725ec.js"),["assets/device-d74725ec.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-82bb06d6.js"),["assets/device-82bb06d6.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solax/solax/device.vue":()=>e(()=>import("./device-d1bfd3f3.js"),["assets/device-d1bfd3f3.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/device.vue":()=>e(()=>import("./device-8bba052a.js"),["assets/device-8bba052a.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-ee4fe242.js"),["assets/device-ee4fe242.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/device.vue":()=>e(()=>import("./device-55bb825c.js"),["assets/device-55bb825c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-dc895585.js"),["assets/device-dc895585.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-e3878572.js"),["assets/device-e3878572.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-6dfe8cd8.js"),["assets/device-6dfe8cd8.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-1ad34ad2.js"),["assets/device-1ad34ad2.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/device.vue":()=>e(()=>import("./device-93509dc9.js"),["assets/device-93509dc9.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/device.vue":()=>e(()=>import("./device-d32f448c.js"),["assets/device-d32f448c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-21c38268.js"),["assets/device-21c38268.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/device.vue":()=>e(()=>import("./device-f71805ce.js"),["assets/device-f71805ce.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.device.vendor}/${this.device.type}/device.vue`),errorComponent:_e})},updateConfiguration(t){this.$emit("update:configuration",t)}}};function me(t,o,i,m,v,n){return s(),E(Z(n.getComponent()),{device:i.device,component:i.component,configuration:i.component?i.component.configuration:i.device.configuration,"device-id":i.device.id,"device-type":i.device.type,"component-id":i.component?i.component.id:void 0,"component-type":i.component?i.component.type:void 0,"onUpdate:configuration":o[0]||(o[0]=l=>n.updateConfiguration(l))},null,40,["device","component","configuration","device-id","device-type","component-id","component-type"])}const pe=T(ae,[["render",me],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);S.add(U,q,G,N,K,F,H);const le={name:"OpenwbHardwareInstallationView",components:{FontAwesomeIcon:$,OpenwbConfigProxy:pe},mixins:[J],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],selectedVendor:void 0,deviceToAdd:void 0,showDeviceRemoveModal:!1,modalDevice:void 0,modalDeviceName:"",componentToAdd:[],showComponentRemoveModal:!1,modalComponent:void 0,modalComponentName:""}},computed:{installedDevices:{get(){return this.getWildcardTopics("openWB/system/device/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}},vendorList:{get(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]===void 0?[]:Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).map(([t,o])=>({label:o.group_name,options:Object.entries(o.vendors).map(([i,m])=>({value:[t,i],text:m.vendor_name})).sort((i,m)=>i.text.localeCompare(m.text))})).sort((t,o)=>-t.label.localeCompare(o.label))}},deviceList:{get(){if(this.selectedVendor===void 0)return[];let[t,o]=this.selectedVendor;return Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"][t].vendors[o].devices).map(([i,m])=>({value:[o,i],text:m.device_name})).sort((i,m)=>i.text.localeCompare(m.text))}}},methods:{getComponentTypeClass(t){return t.match(/^(.+_)?counter(_.+)?$/)?"danger":t.match(/^(.+_)?inverter(_.+)?$/)?"success":t.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(t){return t.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:t.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:t.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(t){return this.getWildcardTopics("openWB/system/device/"+t+"/component/+/config")},deviceHasConfiguredComponents(t){return Object.keys(this.getMyInstalledComponents(t)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{vendor:this.deviceToAdd[0],type:this.deviceToAdd[1]}})},removeDeviceModal(t,o,i){i.stopPropagation(),this.modalDevice=t,this.modalDeviceName=o,this.showDeviceRemoveModal=!0},removeDevice(t){this.showDeviceRemoveModal=!1,t=="confirm"&&this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}})},addComponent(t,o,i,m){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:t,deviceType:i,deviceVendor:o,type:m}})},removeComponentModal(t,o,i,m,v){v.stopPropagation(),this.modalComponent={deviceId:t,id:o,type:i},this.modalComponentName=m,this.showComponentRemoveModal=!0},removeComponent(t){this.showComponentRemoveModal=!1,t=="confirm"&&this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent})},getComponentList(t,o){if(t===void 0||o===void 0)return[];let i=[];return Object.values(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).every(m=>m.vendors[t]!==void 0?(m.vendors[t].devices[o]!==void 0&&(i=Object.entries(m.vendors[t].devices[o].components).map(([n,l])=>({value:n,text:l.component_name}))),!1):!0),i},updateConfiguration(t,o){console.debug("updateConfiguration",t,o),this.updateState(t,o.value,o.object)}}},ce={class:"hardwareInstallation"},Ee={name:"hardwareInstallationForm"},ge={key:0},fe={key:1},Ve={key:1},be={key:0};function Oe(t,o,i,m,v,n){const l=p("openwb-base-modal-dialog"),I=p("router-link"),O=p("openwb-base-alert"),A=p("font-awesome-icon"),D=p("openwb-base-avatar"),R=p("openwb-base-text-input"),x=p("openwb-config-proxy"),M=p("openwb-base-heading"),w=p("openwb-base-card"),y=p("openwb-base-select-input"),j=p("openwb-base-submit-buttons");return s(),g(L,null,[u(l,{show:v.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeDevice},{default:r(()=>[d(' Wollen Sie das Gerät "'+V(v.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),u(l,{show:v.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeComponent},{default:r(()=>[d(' Wollen Sie die Komponente "'+V(v.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),c("div",ce,[c("form",Ee,[i.installAssistantActive?P("",!0):(s(),E(O,{key:0,subtype:"info"},{default:r(()=>[o[7]||(o[7]=d(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das ")),u(I,{to:"/LoadManagementConfiguration"},{default:r(()=>o[6]||(o[6]=[d(" Lastmanagement ")])),_:1}),o[8]||(o[8]=d(" zu prüfen! "))]),_:1})),u(w,{title:"Geräte und Komponenten"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(s(),g("div",ge,[u(O,{subtype:"info"},{default:r(()=>o[9]||(o[9]=[d(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),g("div",fe,[(s(!0),g(L,null,k(n.installedDevices,(_,h)=>(s(),E(w,{key:h,collapsible:!0,collapsed:!0,subtype:"dark"},{header:r(()=>[u(A,{"fixed-width":"",icon:["fas","network-wired"]}),d(" "+V(_==null?void 0:_.name),1)]),actions:r(a=>[a.collapsed?(s(),g("div",Ve,[(s(!0),g(L,null,k(n.getMyInstalledComponents(_==null?void 0:_.id),f=>(s(),E(D,{key:f.id,class:X("ml-1 bg-"+n.getComponentTypeClass(f.type))},{default:r(()=>[u(A,{"fixed-width":"",icon:n.getComponentTypeIcon(f.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(s(),E(D,{key:0,class:"bg-danger clickable",onClick:f=>n.removeDeviceModal(_==null?void 0:_.id,_==null?void 0:_.name,f)},{default:r(()=>[u(A,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:r(()=>[u(R,{title:"Bezeichnung",subtype:"text","model-value":_==null?void 0:_.name,"onUpdate:modelValue":a=>t.updateState(h,a,"name")},null,8,["model-value","onUpdate:modelValue"]),o[17]||(o[17]=c("hr",null,null,-1)),u(x,{device:_,"onUpdate:configuration":a=>n.updateConfiguration(h,a)},null,8,["device","onUpdate:configuration"]),o[18]||(o[18]=c("hr",null,null,-1)),u(M,null,{default:r(()=>[...o[10]||(o[10]=[d("Komponenten")])]),_:1}),n.deviceHasConfiguredComponents(_==null?void 0:_.id)?P("",!0):(s(),E(O,{key:0,subtype:"warning"},{default:r(()=>[...o[11]||(o[11]=[d(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")])]),_:1})),(s(!0),g(L,null,k(n.getMyInstalledComponents(_.id),(a,f)=>(s(),E(w,{key:a.id,collapsible:!0,collapsed:!0,subtype:n.getComponentTypeClass(a.type)},{header:r(()=>[u(A,{"fixed-width":"",icon:n.getComponentTypeIcon(a.type)},null,8,["icon"]),d(" "+V(a.name),1)]),actions:r(b=>[b.collapsed?P("",!0):(s(),E(D,{key:0,class:"bg-danger clickable",onClick:W=>n.removeComponentModal(_.id,a.id,a.type,a.name,W)},{default:r(()=>[u(A,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:r(()=>[u(R,{title:"Bezeichnung",subtype:"text","model-value":a.name,"onUpdate:modelValue":b=>t.updateState(f,b,"name")},null,8,["model-value","onUpdate:modelValue"]),u(R,{title:"Hersteller",subtype:"text","model-value":a.info.manufacturer,"onUpdate:modelValue":b=>t.updateState(f,b,"info.manufacturer")},{help:r(()=>[...o[12]||(o[12]=[d(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),u(R,{title:"Modell",subtype:"text","model-value":a.info.model,"onUpdate:modelValue":b=>t.updateState(f,b,"info.model")},{help:r(()=>[...o[13]||(o[13]=[d(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o[14]||(o[14]=c("hr",null,null,-1)),u(x,{device:_,component:a,"onUpdate:configuration":b=>n.updateConfiguration(f,b)},null,8,["device","component","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),o[19]||(o[19]=c("hr",null,null,-1)),n.getComponentList(_.vendor,_.type).length?(s(),E(y,{key:1,title:"Verfügbare Komponenten","not-selected":"Bitte auswählen",options:n.getComponentList(_.vendor,_.type),"model-value":v.componentToAdd[_.id],"add-button":!0,"onUpdate:modelValue":a=>v.componentToAdd[_.id]=a,"onInput:add":a=>n.addComponent(_.id,_.vendor,_.type,v.componentToAdd[_.id])},{help:r(()=>[...o[15]||(o[15]=[d(" Bitte eine Komponente auswählen, die hinzugefügt werden soll. Für jeden Datensatz, z.B. Wechselrichter- und Batteriedaten, muss eine Wechselrichter- und eine Batteriekomponente hinzugefügt werden. ")])]),_:2},1032,["options","model-value","onUpdate:modelValue","onInput:add"])):(s(),E(O,{key:2,subtype:"info"},{default:r(()=>[...o[16]||(o[16]=[d(" Dieses System bietet keine Komponenten zur Installation an. ")])]),_:1}))]),_:2},1024))),128)),Object.keys(n.installedDevices).length>0?(s(),g("hr",be)):P("",!0),u(y,{modelValue:v.selectedVendor,"onUpdate:modelValue":o[0]||(o[0]=_=>v.selectedVendor=_),title:"Hersteller","not-selected":"Bitte auswählen",groups:n.vendorList},null,8,["modelValue","groups"]),u(y,{modelValue:v.deviceToAdd,"onUpdate:modelValue":[o[1]||(o[1]=_=>v.deviceToAdd=_),o[2]||(o[2]=_=>v.deviceToAdd=_)],title:"Verfügbare Geräte","not-selected":"Bitte auswählen",disabled:v.selectedVendor===void 0,options:n.deviceList,"model-value":v.deviceToAdd,"add-button":!0,"onInput:add":n.addDevice},{help:r(()=>o[20]||(o[20]=[c("p",null,[d(' Die openWB-Regelung ist auf Werte von Messpunkten (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),c("br"),d(' Ein "Gerät" wird hierbei durch seine Verbindungseinstellungen (z.B. IP-Adresse) spezifiziert (häufig durch manuelle Eingabe oder manchmal automatisch ermittelt) und kann über mehrere untergeordnete "Komponenten" verfügen, z.B. einen Messpunkt für PV-Erzeugung, einen Messpunkt für Netzeinspeisung/-bezug am EVU-Punkt usw.. Ein "Gerät" bedingt somit immer mindestens eine zugehörige "Komponente". ')],-1),c("p",null,[d(' Bsp: Werden die Werte von verschiedenen Messpunkten (z.B. PV und EVU) über die gleiche IP-Adresse abgefragt, wird dafür ein "Gerät" mit zwei "Komponenten" für PV- und EVU- Messpunkt angelegt.'),c("br"),d(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt. ')],-1),c("p",null,' Das "Gerät" wird in der Dropdown-Liste ausgewählt und mit "+" der Regelung hinzugefügt. Im Anschluss erfolgt die Konfiguration des "Gerätes" innerhalb des schwarzen "Geräte"-Reiters. ',-1)])),_:1},8,["modelValue","disabled","options","model-value","onInput:add"])]))]),_:1}),u(j,{"form-name":"hardwareInstallationForm",onSave:o[3]||(o[3]=_=>t.$emit("save")),onReset:o[4]||(o[4]=_=>t.$emit("reset")),onDefaults:o[5]||(o[5]=_=>t.$emit("defaults"))})])])],64)}const Te=T(le,[["render",Oe],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]),Le=Object.freeze(Object.defineProperty({__proto__:null,default:Te},Symbol.toStringTag,{value:"Module"}));export{re as C,B as D,Te as H,Le as a}; diff --git a/web/settings/assets/InstallAssistant-01649aee.js b/web/settings/assets/InstallAssistant-01649aee.js deleted file mode 100644 index 72f05c2493..0000000000 --- a/web/settings/assets/InstallAssistant-01649aee.js +++ /dev/null @@ -1 +0,0 @@ -import{C as r,_ as t}from"./index-b236cee5.js";import{_}from"./dynamic-import-helper-be004503.js";import{_ as m,a1 as p,u as d,l as i,m as u,G as A,E as v,x as E,a2 as I,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";const P={name:"InstallAssistantView",mixins:[r],emits:["sendCommand","save","reset","defaults"],data(){return{currentPage:0,lastPage:10,showEndAssistantModal:!1}},methods:{getInstallAssistantStepComponent(){return console.debug(`loading assistant page: ${this.currentPage}`),p({loader:()=>_(Object.assign({"../components/install_assistant/InstallAssistantStep0.vue":()=>t(()=>import("./InstallAssistantStep0-4eb59c03.js"),["assets/InstallAssistantStep0-4eb59c03.js","assets/index-b236cee5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-d8d588b6.js","assets/InstallAssistantStepTemplate-930e3c07.css"]),"../components/install_assistant/InstallAssistantStep1.vue":()=>t(()=>import("./InstallAssistantStep1-7532f4ad.js"),["assets/InstallAssistantStep1-7532f4ad.js","assets/index-b236cee5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-d8d588b6.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/DataManagement-714df651.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep10.vue":()=>t(()=>import("./InstallAssistantStep10-b5154c47.js"),["assets/InstallAssistantStep10-b5154c47.js","assets/index-b236cee5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-d8d588b6.js","assets/InstallAssistantStepTemplate-930e3c07.css"]),"../components/install_assistant/InstallAssistantStep2.vue":()=>t(()=>import("./InstallAssistantStep2-97ea4181.js"),["assets/InstallAssistantStep2-97ea4181.js","assets/index-b236cee5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-d8d588b6.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/System-71b2e67e.js","assets/System-0f1d217b.css"]),"../components/install_assistant/InstallAssistantStep3.vue":()=>t(()=>import("./InstallAssistantStep3-d28da6cc.js"),["assets/InstallAssistantStep3-d28da6cc.js","assets/index-b236cee5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-d8d588b6.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/GeneralConfig-bc70f34a.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep4.vue":()=>t(()=>import("./InstallAssistantStep4-b80669cd.js"),["assets/InstallAssistantStep4-b80669cd.js","assets/index-b236cee5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-d8d588b6.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/ChargePointInstallation-7e51ce35.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-7b9399a8.css"]),"../components/install_assistant/InstallAssistantStep5.vue":()=>t(()=>import("./InstallAssistantStep5-f3c200c9.js"),["assets/InstallAssistantStep5-f3c200c9.js","assets/index-b236cee5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-d8d588b6.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/HardwareInstallation-727b5962.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep6.vue":()=>t(()=>import("./InstallAssistantStep6-0eab35fd.js"),["assets/InstallAssistantStep6-0eab35fd.js","assets/index-b236cee5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-d8d588b6.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/ChargePointInstallation-7e51ce35.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-7b9399a8.css"]),"../components/install_assistant/InstallAssistantStep7.vue":()=>t(()=>import("./InstallAssistantStep7-8b2d70ea.js"),["assets/InstallAssistantStep7-8b2d70ea.js","assets/index-b236cee5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-d8d588b6.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/LoadManagementConfig-d6d290f9.js","assets/OpenwbSortableList-13147a4b.js","assets/OpenwbSortableList-7ba533e4.css"]),"../components/install_assistant/InstallAssistantStep8.vue":()=>t(()=>import("./InstallAssistantStep8-d0a57c9f.js"),["assets/InstallAssistantStep8-d0a57c9f.js","assets/index-b236cee5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-d8d588b6.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/VehicleConfig-e49e5ddc.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep9.vue":()=>t(()=>import("./InstallAssistantStep9-26ed6631.js"),["assets/InstallAssistantStep9-26ed6631.js","assets/index-b236cee5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-d8d588b6.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/DataManagement-714df651.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStepTemplate.vue":()=>t(()=>import("./InstallAssistantStepTemplate-d8d588b6.js"),["assets/InstallAssistantStepTemplate-d8d588b6.js","assets/index-b236cee5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-930e3c07.css"])}),`../components/install_assistant/InstallAssistantStep${this.currentPage}.vue`)})},switchPage(s){s>=0&&s<=this.lastPage?this.currentPage=s:console.error(`invalid assistant page number: ${s}`)},endAssistantModal(){this.currentPage!=this.lastPage?this.showEndAssistantModal=!0:this.endAssistant("confirm")},endAssistant(s){this.showEndAssistantModal=!1,s=="confirm"&&(this.updateState("openWB/system/installAssistantDone",!0),this.$root.doPublish("openWB/set/system/installAssistantDone",!0),this.$router.push("/Status"))}}};function S(s,e,f,g,o,n){const l=d("openwb-base-modal-dialog");return i(),u("div",null,[A(l,{show:o.showEndAssistantModal,title:"Assistent beenden",subtype:"danger",buttons:[{text:"Beenden",event:"confirm",subtype:"danger"}],onModalResult:n.endAssistant},{default:v(()=>e[4]||(e[4]=[c(" Wollen Sie den Assistenten wirklich vorzeitig beenden? ")])),_:1},8,["show","onModalResult"]),(i(),E(I(n.getInstallAssistantStepComponent()),{onSendCommand:e[0]||(e[0]=a=>s.$emit("sendCommand",a)),onSave:e[1]||(e[1]=a=>s.$emit("save")),onReset:e[2]||(e[2]=a=>s.$emit("reset")),onDefaults:e[3]||(e[3]=a=>s.$emit("defaults")),onSwitchPage:n.switchPage,onEndAssistant:n.endAssistantModal},null,40,["onSwitchPage","onEndAssistant"]))])}const L=m(P,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstallAssistant.vue"]]);export{L as default}; diff --git a/web/settings/assets/InstallAssistant-06ef733c.js b/web/settings/assets/InstallAssistant-06ef733c.js new file mode 100644 index 0000000000..94fc946b2f --- /dev/null +++ b/web/settings/assets/InstallAssistant-06ef733c.js @@ -0,0 +1 @@ +import{C as r,_ as t}from"./index-cc8f65ba.js";import{_}from"./dynamic-import-helper-be004503.js";import{_ as m,a1 as p,u as d,l as i,m as u,G as A,E as v,z as E,a2 as I,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";const P={name:"InstallAssistantView",mixins:[r],emits:["sendCommand","save","reset","defaults"],data(){return{currentPage:0,lastPage:10,showEndAssistantModal:!1}},methods:{getInstallAssistantStepComponent(){return console.debug(`loading assistant page: ${this.currentPage}`),p({loader:()=>_(Object.assign({"../components/install_assistant/InstallAssistantStep0.vue":()=>t(()=>import("./InstallAssistantStep0-e773f28e.js"),["assets/InstallAssistantStep0-e773f28e.js","assets/index-cc8f65ba.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-3bdc8973.js","assets/InstallAssistantStepTemplate-930e3c07.css"]),"../components/install_assistant/InstallAssistantStep1.vue":()=>t(()=>import("./InstallAssistantStep1-e0d32a00.js"),["assets/InstallAssistantStep1-e0d32a00.js","assets/index-cc8f65ba.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-3bdc8973.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/DataManagement-f14600c5.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep10.vue":()=>t(()=>import("./InstallAssistantStep10-1b3e0f38.js"),["assets/InstallAssistantStep10-1b3e0f38.js","assets/index-cc8f65ba.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-3bdc8973.js","assets/InstallAssistantStepTemplate-930e3c07.css"]),"../components/install_assistant/InstallAssistantStep2.vue":()=>t(()=>import("./InstallAssistantStep2-50ad5d87.js"),["assets/InstallAssistantStep2-50ad5d87.js","assets/index-cc8f65ba.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-3bdc8973.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/System-20e6cb5e.js","assets/System-0f1d217b.css"]),"../components/install_assistant/InstallAssistantStep3.vue":()=>t(()=>import("./InstallAssistantStep3-ac7124e1.js"),["assets/InstallAssistantStep3-ac7124e1.js","assets/index-cc8f65ba.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-3bdc8973.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/GeneralConfig-b0e93144.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep4.vue":()=>t(()=>import("./InstallAssistantStep4-b1f7c847.js"),["assets/InstallAssistantStep4-b1f7c847.js","assets/index-cc8f65ba.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-3bdc8973.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/ChargePointInstallation-408ee2ed.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-7b9399a8.css"]),"../components/install_assistant/InstallAssistantStep5.vue":()=>t(()=>import("./InstallAssistantStep5-133577c4.js"),["assets/InstallAssistantStep5-133577c4.js","assets/index-cc8f65ba.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-3bdc8973.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/HardwareInstallation-3a644290.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep6.vue":()=>t(()=>import("./InstallAssistantStep6-fe6bd91e.js"),["assets/InstallAssistantStep6-fe6bd91e.js","assets/index-cc8f65ba.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-3bdc8973.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/ChargePointInstallation-408ee2ed.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-7b9399a8.css"]),"../components/install_assistant/InstallAssistantStep7.vue":()=>t(()=>import("./InstallAssistantStep7-51125106.js"),["assets/InstallAssistantStep7-51125106.js","assets/index-cc8f65ba.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-3bdc8973.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/LoadManagementConfig-c15dfafe.js","assets/OpenwbSortableList-bde71f66.js","assets/OpenwbSortableList-7ba533e4.css"]),"../components/install_assistant/InstallAssistantStep8.vue":()=>t(()=>import("./InstallAssistantStep8-1047f636.js"),["assets/InstallAssistantStep8-1047f636.js","assets/index-cc8f65ba.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-3bdc8973.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/VehicleConfig-a49bda81.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep9.vue":()=>t(()=>import("./InstallAssistantStep9-bd70c725.js"),["assets/InstallAssistantStep9-bd70c725.js","assets/index-cc8f65ba.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-3bdc8973.js","assets/InstallAssistantStepTemplate-930e3c07.css","assets/DataManagement-f14600c5.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStepTemplate.vue":()=>t(()=>import("./InstallAssistantStepTemplate-3bdc8973.js"),["assets/InstallAssistantStepTemplate-3bdc8973.js","assets/index-cc8f65ba.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/InstallAssistantStepTemplate-930e3c07.css"])}),`../components/install_assistant/InstallAssistantStep${this.currentPage}.vue`)})},switchPage(s){s>=0&&s<=this.lastPage?this.currentPage=s:console.error(`invalid assistant page number: ${s}`)},endAssistantModal(){this.currentPage!=this.lastPage?this.showEndAssistantModal=!0:this.endAssistant("confirm")},endAssistant(s){this.showEndAssistantModal=!1,s=="confirm"&&(this.updateState("openWB/system/installAssistantDone",!0),this.$root.doPublish("openWB/set/system/installAssistantDone",!0),this.$router.push("/Status"))}}};function S(s,e,f,g,o,n){const l=d("openwb-base-modal-dialog");return i(),u("div",null,[A(l,{show:o.showEndAssistantModal,title:"Assistent beenden",subtype:"danger",buttons:[{text:"Beenden",event:"confirm",subtype:"danger"}],onModalResult:n.endAssistant},{default:v(()=>e[4]||(e[4]=[c(" Wollen Sie den Assistenten wirklich vorzeitig beenden? ")])),_:1},8,["show","onModalResult"]),(i(),E(I(n.getInstallAssistantStepComponent()),{onSendCommand:e[0]||(e[0]=a=>s.$emit("sendCommand",a)),onSave:e[1]||(e[1]=a=>s.$emit("save")),onReset:e[2]||(e[2]=a=>s.$emit("reset")),onDefaults:e[3]||(e[3]=a=>s.$emit("defaults")),onSwitchPage:n.switchPage,onEndAssistant:n.endAssistantModal},null,40,["onSwitchPage","onEndAssistant"]))])}const L=m(P,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstallAssistant.vue"]]);export{L as default}; diff --git a/web/settings/assets/InstallAssistantStep0-4eb59c03.js b/web/settings/assets/InstallAssistantStep0-e773f28e.js similarity index 85% rename from web/settings/assets/InstallAssistantStep0-4eb59c03.js rename to web/settings/assets/InstallAssistantStep0-e773f28e.js index 38e4745572..fe39c9431f 100644 --- a/web/settings/assets/InstallAssistantStep0-4eb59c03.js +++ b/web/settings/assets/InstallAssistantStep0-e773f28e.js @@ -1 +1 @@ -import{C as u}from"./index-b236cee5.js";import d from"./InstallAssistantStepTemplate-d8d588b6.js";import{_ as p,u as i,l as m,x as g,E as a,G as h,B as f,A as t}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";const c={name:"InstallAssistantStep0",components:{InstallAssistantStepTemplate:d},mixins:[u],emits:["switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[],showModalWarning:!1}),methods:{requestNextPage(){this.showModalWarning=!0},nextPage(s){this.showModalWarning=!1,s==="confirm"&&this.$emit("switchPage",1)},previousPage(){},endAssistant(){this.$emit("endAssistant")}}};function b(s,e,A,w,P,n){const o=i("openwb-base-modal-dialog"),r=i("InstallAssistantStepTemplate");return m(),g(r,{title:"Start","hide-previous":!0,onNextPage:n.requestNextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{content:a(()=>[h(o,{show:s.showModalWarning,title:"Achtung!",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"success"}],onModalResult:e[0]||(e[0]=l=>n.nextPage(l))},{default:a(()=>e[1]||(e[1]=[f(" Bevor der Assistent gestartet wird, ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ")])),_:1},8,["show"]),e[2]||(e[2]=t("h2",null,"Vielen Dank, dass Du Dich für openWB entschieden hast.",-1)),e[3]||(e[3]=t("p",null,"Dieser Assistent führt Dich durch die Konfiguration der einzelnen Module:",-1)),e[4]||(e[4]=t("ol",null,[t("li",null,"Datensicherung der bestehenden Konfiguration"),t("li",null,"Aktualisierung des openWB-Systems"),t("li",null,"Allgemeine Einstellungen: Auswahl des Betriebsmodus primary (steuernd) bzw. secondary (gesteuerte WB)")],-1)),e[5]||(e[5]=t("p",null," Wird diese openWB als secondary betrieben, so werden nur die lokalen Ladepunkte eingerichtet. Im Betriebsmodus primary werden die folgenden zusätzlichen Schritte durchlaufen: ",-1)),e[6]||(e[6]=t("ol",{start:"4"},[t("li",null,"Energiesystem - Geräte und Komponenten einrichten"),t("li",null,"Einrichten der Ladepunkte (openWB als primary)"),t("li",null,"Konfiguration des Lastmanagements"),t("li",null,"Einrichten der Fahrzeuge"),t("li",null,"Datensicherung der neuen Konfiguration")],-1)),e[7]||(e[7]=t("p",null,"Danach ist die Grundkonfiguration abgeschlossen.",-1))]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const D=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep0.vue"]]);export{D as default}; +import{C as u}from"./index-cc8f65ba.js";import d from"./InstallAssistantStepTemplate-3bdc8973.js";import{_ as p,u as i,l as m,z as g,E as a,G as h,y as f,x as t}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";const c={name:"InstallAssistantStep0",components:{InstallAssistantStepTemplate:d},mixins:[u],emits:["switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[],showModalWarning:!1}),methods:{requestNextPage(){this.showModalWarning=!0},nextPage(s){this.showModalWarning=!1,s==="confirm"&&this.$emit("switchPage",1)},previousPage(){},endAssistant(){this.$emit("endAssistant")}}};function b(s,e,A,w,P,n){const o=i("openwb-base-modal-dialog"),r=i("InstallAssistantStepTemplate");return m(),g(r,{title:"Start","hide-previous":!0,onNextPage:n.requestNextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{content:a(()=>[h(o,{show:s.showModalWarning,title:"Achtung!",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"success"}],onModalResult:e[0]||(e[0]=l=>n.nextPage(l))},{default:a(()=>e[1]||(e[1]=[f(" Bevor der Assistent gestartet wird, ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ")])),_:1},8,["show"]),e[2]||(e[2]=t("h2",null,"Vielen Dank, dass Du Dich für openWB entschieden hast.",-1)),e[3]||(e[3]=t("p",null,"Dieser Assistent führt Dich durch die Konfiguration der einzelnen Module:",-1)),e[4]||(e[4]=t("ol",null,[t("li",null,"Datensicherung der bestehenden Konfiguration"),t("li",null,"Aktualisierung des openWB-Systems"),t("li",null,"Allgemeine Einstellungen: Auswahl des Betriebsmodus primary (steuernd) bzw. secondary (gesteuerte WB)")],-1)),e[5]||(e[5]=t("p",null," Wird diese openWB als secondary betrieben, so werden nur die lokalen Ladepunkte eingerichtet. Im Betriebsmodus primary werden die folgenden zusätzlichen Schritte durchlaufen: ",-1)),e[6]||(e[6]=t("ol",{start:"4"},[t("li",null,"Energiesystem - Geräte und Komponenten einrichten"),t("li",null,"Einrichten der Ladepunkte (openWB als primary)"),t("li",null,"Konfiguration des Lastmanagements"),t("li",null,"Einrichten der Fahrzeuge"),t("li",null,"Datensicherung der neuen Konfiguration")],-1)),e[7]||(e[7]=t("p",null,"Danach ist die Grundkonfiguration abgeschlossen.",-1))]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const D=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep0.vue"]]);export{D as default}; diff --git a/web/settings/assets/InstallAssistantStep1-7532f4ad.js b/web/settings/assets/InstallAssistantStep1-e0d32a00.js similarity index 75% rename from web/settings/assets/InstallAssistantStep1-7532f4ad.js rename to web/settings/assets/InstallAssistantStep1-e0d32a00.js index 92c15f664f..3ecc62dd60 100644 --- a/web/settings/assets/InstallAssistantStep1-7532f4ad.js +++ b/web/settings/assets/InstallAssistantStep1-e0d32a00.js @@ -1 +1 @@ -import{C as m}from"./index-b236cee5.js";import p from"./InstallAssistantStepTemplate-d8d588b6.js";import{D as l}from"./DataManagement-714df651.js";import{_ as d,u as a,l as u,x as g,E as o,A as f,G as v}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep1",components:{InstallAssistantStepTemplate:p,DataManagement:l},mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",2)},previousPage(){this.$emit("switchPage",0)},endAssistant(){this.$emit("endAssistant")}}};function P(t,e,c,S,w,n){const i=a("DataManagement"),r=a("InstallAssistantStepTemplate");return u(),g(r,{title:"1. Datensicherung der bestehenden Konfiguration",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>e[4]||(e[4]=[f("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erstellen, auf welche später zurückgegriffen werden kann, insbesondere, wenn die openWB schon konfiguriert war und der Assistent nun erneut ausgeführt wird. ",-1)])),content:o(()=>[v(i,{"install-assistant-active":!0,"show-backup-cloud-section":!1,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const N=d(A,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep1.vue"]]);export{N as default}; +import{C as m}from"./index-cc8f65ba.js";import p from"./InstallAssistantStepTemplate-3bdc8973.js";import{D as l}from"./DataManagement-f14600c5.js";import{_ as d,u as a,l as u,z as g,E as o,x as f,G as v}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep1",components:{InstallAssistantStepTemplate:p,DataManagement:l},mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",2)},previousPage(){this.$emit("switchPage",0)},endAssistant(){this.$emit("endAssistant")}}};function P(t,e,c,S,w,n){const i=a("DataManagement"),r=a("InstallAssistantStepTemplate");return u(),g(r,{title:"1. Datensicherung der bestehenden Konfiguration",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>e[4]||(e[4]=[f("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erstellen, auf welche später zurückgegriffen werden kann, insbesondere, wenn die openWB schon konfiguriert war und der Assistent nun erneut ausgeführt wird. ",-1)])),content:o(()=>[v(i,{"install-assistant-active":!0,"show-backup-cloud-section":!1,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const N=d(A,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep1.vue"]]);export{N as default}; diff --git a/web/settings/assets/InstallAssistantStep10-b5154c47.js b/web/settings/assets/InstallAssistantStep10-1b3e0f38.js similarity index 75% rename from web/settings/assets/InstallAssistantStep10-b5154c47.js rename to web/settings/assets/InstallAssistantStep10-1b3e0f38.js index 831a571168..249694bf7d 100644 --- a/web/settings/assets/InstallAssistantStep10-b5154c47.js +++ b/web/settings/assets/InstallAssistantStep10-1b3e0f38.js @@ -1 +1 @@ -import{C as a}from"./index-b236cee5.js";import o from"./InstallAssistantStepTemplate-d8d588b6.js";import{_ as r,u as l,l as m,x as p,E as d,A as n}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";const u={name:"InstallAssistantStep10",components:{InstallAssistantStepTemplate:o},mixins:[a],emits:["switchPage","endAssistant","sendCommand"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){},previousPage(){this.$emit("switchPage",9)},sendCommand(t){this.$emit("sendCommand",t)},endAssistant(){this.$emit("endAssistant")}}};function g(t,s,c,f,A,e){const i=l("InstallAssistantStepTemplate");return m(),p(i,{title:"Abgeschlossen","hide-next":!0,onNextPage:e.nextPage,onPreviousPage:e.previousPage,onEndAssistant:e.endAssistant},{content:d(()=>s[0]||(s[0]=[n("h2",null,"Die Grundkonfiguration ist abgeschlossen.",-1),n("p",null," Die grundlegende Konfiguration der openWB ist abgeschlossen. Du wirst mit Beendigung dieses Assistenten auf die Statusseite weitergeleitet. Bitte überprüfe die dargestellten Informationen und passe bei Unstimmigkeiten die Einstellungen in den jeweiligen Konfigurationsseiten an (openWB -> Einstellungen -> Konfiguration). ",-1)])),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const w=r(u,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep10.vue"]]);export{w as default}; +import{C as a}from"./index-cc8f65ba.js";import o from"./InstallAssistantStepTemplate-3bdc8973.js";import{_ as r,u as l,l as m,z as p,E as d,x as n}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";const u={name:"InstallAssistantStep10",components:{InstallAssistantStepTemplate:o},mixins:[a],emits:["switchPage","endAssistant","sendCommand"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){},previousPage(){this.$emit("switchPage",9)},sendCommand(t){this.$emit("sendCommand",t)},endAssistant(){this.$emit("endAssistant")}}};function g(t,s,c,f,A,e){const i=l("InstallAssistantStepTemplate");return m(),p(i,{title:"Abgeschlossen","hide-next":!0,onNextPage:e.nextPage,onPreviousPage:e.previousPage,onEndAssistant:e.endAssistant},{content:d(()=>s[0]||(s[0]=[n("h2",null,"Die Grundkonfiguration ist abgeschlossen.",-1),n("p",null," Die grundlegende Konfiguration der openWB ist abgeschlossen. Du wirst mit Beendigung dieses Assistenten auf die Statusseite weitergeleitet. Bitte überprüfe die dargestellten Informationen und passe bei Unstimmigkeiten die Einstellungen in den jeweiligen Konfigurationsseiten an (openWB -> Einstellungen -> Konfiguration). ",-1)])),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const w=r(u,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep10.vue"]]);export{w as default}; diff --git a/web/settings/assets/InstallAssistantStep2-97ea4181.js b/web/settings/assets/InstallAssistantStep2-50ad5d87.js similarity index 68% rename from web/settings/assets/InstallAssistantStep2-97ea4181.js rename to web/settings/assets/InstallAssistantStep2-50ad5d87.js index 94a5c9dba3..276b0878a1 100644 --- a/web/settings/assets/InstallAssistantStep2-97ea4181.js +++ b/web/settings/assets/InstallAssistantStep2-50ad5d87.js @@ -1 +1 @@ -import{C as l}from"./index-b236cee5.js";import u from"./InstallAssistantStepTemplate-d8d588b6.js";import d from"./System-71b2e67e.js";import{_ as p,u as a,l as f,x as g,E as o,A as s,G as A}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";const S={name:"InstallAssistantStep2",components:{InstallAssistantStepTemplate:u,SystemView:d},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",3)},previousPage(){this.$emit("switchPage",1)},endAssistant(){this.$emit("endAssistant")}}};function c(t,e,w,v,k,i){const r=a("SystemView"),m=a("InstallAssistantStepTemplate");return f(),g(m,{title:"2. Aktualisierung des openWB-Systems",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:o(()=>e[4]||(e[4]=[s("p",null," Bitte ein System-Update durchführen, um die Software auf den neuesten Stand der Features und Funktionen zu bringen. ",-1),s("p",null," Hierzu Versions-Informationen / Aktualisierung auswählen, Informationen aktualisieren klicken und falls ein Update verfügbar ist, wird der Update-Button grün (zum Update bereit). ",-1),s("p",null," Bei openWB-Systemen mit integriertem Display muss nach Zurücksetzen auf Werkseinstellungen oder nach Ausführen eines Updates das Display wieder eingeschaltet werden. ",-1),s("p",null,' Ein Klick auf "Änderungen" zeigt die Modifikationen. Ein Klick auf "Update" startet die Aktualisierung, welche auch einen automatischen Reboot initiiert (bitte ca. 5 Minuten warten). Danach muss der Assistent neu gestartet werden. ',-1)])),content:o(()=>[A(r,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const U=p(S,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep2.vue"]]);export{U as default}; +import{C as l}from"./index-cc8f65ba.js";import u from"./InstallAssistantStepTemplate-3bdc8973.js";import d from"./System-20e6cb5e.js";import{_ as p,u as a,l as f,z as g,E as o,x as s,G as S}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";const c={name:"InstallAssistantStep2",components:{InstallAssistantStepTemplate:u,SystemView:d},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",3)},previousPage(){this.$emit("switchPage",1)},endAssistant(){this.$emit("endAssistant")}}};function A(t,e,w,v,k,i){const r=a("SystemView"),m=a("InstallAssistantStepTemplate");return f(),g(m,{title:"2. Aktualisierung des openWB-Systems",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:o(()=>e[4]||(e[4]=[s("p",null," Bitte ein System-Update durchführen, um die Software auf den neuesten Stand der Features und Funktionen zu bringen. ",-1),s("p",null," Hierzu Versions-Informationen / Aktualisierung auswählen, Informationen aktualisieren klicken und falls ein Update verfügbar ist, wird der Update-Button grün (zum Update bereit). ",-1),s("p",null," Bei openWB-Systemen mit integriertem Display muss nach Zurücksetzen auf Werkseinstellungen oder nach Ausführen eines Updates das Display wieder eingeschaltet werden. ",-1),s("p",null,' Ein Klick auf "Änderungen" zeigt die Modifikationen. Ein Klick auf "Update" startet die Aktualisierung, welche auch einen automatischen Reboot initiiert (bitte ca. 5 Minuten warten). Danach muss der Assistent neu gestartet werden. ',-1)])),content:o(()=>[S(r,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const z=p(c,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep2.vue"]]);export{z as default}; diff --git a/web/settings/assets/InstallAssistantStep3-ac7124e1.js b/web/settings/assets/InstallAssistantStep3-ac7124e1.js new file mode 100644 index 0000000000..85dd5476d1 --- /dev/null +++ b/web/settings/assets/InstallAssistantStep3-ac7124e1.js @@ -0,0 +1 @@ +import{C as u}from"./index-cc8f65ba.js";import d from"./InstallAssistantStepTemplate-3bdc8973.js";import{G as m}from"./GeneralConfig-b0e93144.js";import{_ as p,u as a,l as g,z as f,E as i,x as n,G as w}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"InstallAssistantStep3",components:{InstallAssistantStepTemplate:d,GeneralConfigView:m},mixins:[u],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),methods:{nextPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:5)},previousPage(){this.$emit("switchPage",2)},endAssistant(){this.$emit("endAssistant")}}};function B(t,e,S,c,h,r){const o=a("GeneralConfigView"),l=a("InstallAssistantStepTemplate");return g(),f(l,{title:"3. Allgemeine Einstellungen: Auswahl des Betriebsmodus primary (steuernd) bzw. secondary (gesteuerte WB)",onNextPage:r.nextPage,onPreviousPage:r.previousPage,onEndAssistant:r.endAssistant},{help:i(()=>e[4]||(e[4]=[n("p",null," Hier wird abgefragt, ob Dein System mit mehreren openWBs oder nur mit einer openWB betrieben wird. Eine openWB kann andere openWBs steuern. ",-1),n("p",null,' Zuerst ist im Feld "Steuerungsmodus" festzulegen, ob die openWB als "steuernd" (primary) oder als ferngesteuert (secondary) arbeiten soll. Die Einstellung gilt für genau die WB, auf der aktuell konfiguriert wird (korrekte IP-Adresse beachten). ',-1),n("p",null," Eine openWB standalone hat keinen Ladepunkt und arbeitet nur als Steuerteil (primary). Eine openWB Standard(+), custom, Duo und Buchse können sowohl als steuernder primary oder als ferngesteuerte secondary betrieben werden (Duo mit 2 Ladepunkten). Eine openWB Pro und Satellit können nur als s.g. Ladepunkt genutzt werden und benötigen zwingend einen separaten primary als Steuerteil. ",-1),n("p",null,' Sofern openWB als Energiemanagementsystem für steuerbare Verbrauchseinrichtungen (SteuVE) gemäß §14a EnWG verwendet werden soll, so ist für die VNB-Signaleingänge die entsprechende Hardware auszuwählen. -> s. Beschreibung zu "Steuerbare Verbrauchseinrichtung". ',-1),n("p",{class:"font-weight-bold"},"Änderungen werden nur durch Klicken auf Speichern wirksam!",-1)])),content:i(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const x=p(b,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep3.vue"]]);export{x as default}; diff --git a/web/settings/assets/InstallAssistantStep3-d28da6cc.js b/web/settings/assets/InstallAssistantStep3-d28da6cc.js deleted file mode 100644 index f04363f70b..0000000000 --- a/web/settings/assets/InstallAssistantStep3-d28da6cc.js +++ /dev/null @@ -1 +0,0 @@ -import{C as u}from"./index-b236cee5.js";import d from"./InstallAssistantStepTemplate-d8d588b6.js";import m from"./GeneralConfig-bc70f34a.js";import{_ as p,u as a,l as g,x as f,E as i,A as n,G as w}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"InstallAssistantStep3",components:{InstallAssistantStepTemplate:d,GeneralConfigView:m},mixins:[u],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),methods:{nextPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:5)},previousPage(){this.$emit("switchPage",2)},endAssistant(){this.$emit("endAssistant")}}};function B(t,e,S,c,h,r){const o=a("GeneralConfigView"),l=a("InstallAssistantStepTemplate");return g(),f(l,{title:"3. Allgemeine Einstellungen: Auswahl des Betriebsmodus primary (steuernd) bzw. secondary (gesteuerte WB)",onNextPage:r.nextPage,onPreviousPage:r.previousPage,onEndAssistant:r.endAssistant},{help:i(()=>e[4]||(e[4]=[n("p",null," Hier wird abgefragt, ob Dein System mit mehreren openWBs oder nur mit einer openWB betrieben wird. Eine openWB kann andere openWBs steuern. ",-1),n("p",null,' Zuerst ist im Feld "Steuerungsmodus" festzulegen, ob die openWB als "steuernd" (primary) oder als ferngesteuert (secondary) arbeiten soll. Die Einstellung gilt für genau die WB, auf der aktuell konfiguriert wird (korrekte IP-Adresse beachten). ',-1),n("p",null," Eine openWB standalone hat keinen Ladepunkt und arbeitet nur als Steuerteil (primary). Eine openWB Standard(+), custom, Duo und Buchse können sowohl als steuernder primary oder als ferngesteuerte secondary betrieben werden (Duo mit 2 Ladepunkten). Eine openWB Pro und Satellit können nur als s.g. Ladepunkt genutzt werden und benötigen zwingend einen separaten primary als Steuerteil. ",-1),n("p",null,' Sofern openWB als Energiemanagementsystem für steuerbare Verbrauchseinrichtungen (SteuVE) gemäß §14a EnWG verwendet werden soll, so ist für die VNB-Signaleingänge die entsprechende Hardware auszuwählen. -> s. Beschreibung zu "Steuerbare Verbrauchseinrichtung". ',-1),n("p",{class:"font-weight-bold"},"Änderungen werden nur durch Klicken auf Speichern wirksam!",-1)])),content:i(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const x=p(b,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep3.vue"]]);export{x as default}; diff --git a/web/settings/assets/InstallAssistantStep4-b80669cd.js b/web/settings/assets/InstallAssistantStep4-b1f7c847.js similarity index 83% rename from web/settings/assets/InstallAssistantStep4-b80669cd.js rename to web/settings/assets/InstallAssistantStep4-b1f7c847.js index ac6a33f64b..952fb125d1 100644 --- a/web/settings/assets/InstallAssistantStep4-b80669cd.js +++ b/web/settings/assets/InstallAssistantStep4-b1f7c847.js @@ -1 +1 @@ -import{C as l}from"./index-b236cee5.js";import p from"./InstallAssistantStepTemplate-d8d588b6.js";import{b as u}from"./ChargePointInstallation-7e51ce35.js";import{_ as m,u as a,l as g,x as f,E as o,A as n,G as w}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep4",components:{InstallAssistantStepTemplate:p,ChargePointInstallationView:u},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}};function h(t,e,k,B,v,i){const r=a("ChargePointInstallationView"),d=a("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Einrichten der Ladepunkte (openWB als secondary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:o(()=>e[4]||(e[4]=[n("p",null,' Diese hier vorzukonfigurierende openWB wurde als "secondary" eingestellt und wird von einer anderen openWB oder standalone ferngesteuert. ',-1),n("p",null," Bei vorkonfigurierten openWBs ist ab Werk bereits ein (zwei bei einer DUO) interner Ladepunkt eingetragen, es müssen keine weiteren Ladepunkte hinzugefügt werden. ",-1),n("p",null,' Tragen Sie unter Ladepunkte bei verfügbare Ladepunkte "Interne openWB" ein und wählen Sie die Bauart der openWB (z.B. openWB series 1/2 custom, Standard (+) oder Buchse) aus. ',-1),n("p",null," Wenn eine openWB Duo gewählt wird, so sind zwei Ladepunkte mit Ladepunkt-Nummer 1 und 2 zu konfigurieren. Bei der openWB Pro und Satellit sind keine Einstellungen notwendig. ",-1),n("p",null,"Weitere Einstellungen sind bei der Vorkonfiguration einer secondary nicht notwendig.",-1),n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),n("p",{class:"font-weight-bold"},"Änderungen werden nur durch Klicken auf Speichern wirksam!",-1)])),content:o(()=>[w(r,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const E=m(c,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep4.vue"]]);export{E as default}; +import{C as l}from"./index-cc8f65ba.js";import p from"./InstallAssistantStepTemplate-3bdc8973.js";import{b as u}from"./ChargePointInstallation-408ee2ed.js";import{_ as m,u as a,l as g,z as f,E as o,x as n,G as w}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep4",components:{InstallAssistantStepTemplate:p,ChargePointInstallationView:u},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}};function h(t,e,k,B,v,i){const r=a("ChargePointInstallationView"),d=a("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Einrichten der Ladepunkte (openWB als secondary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:o(()=>e[4]||(e[4]=[n("p",null,' Diese hier vorzukonfigurierende openWB wurde als "secondary" eingestellt und wird von einer anderen openWB oder standalone ferngesteuert. ',-1),n("p",null," Bei vorkonfigurierten openWBs ist ab Werk bereits ein (zwei bei einer DUO) interner Ladepunkt eingetragen, es müssen keine weiteren Ladepunkte hinzugefügt werden. ",-1),n("p",null,' Tragen Sie unter Ladepunkte bei verfügbare Ladepunkte "Interne openWB" ein und wählen Sie die Bauart der openWB (z.B. openWB series 1/2 custom, Standard (+) oder Buchse) aus. ',-1),n("p",null," Wenn eine openWB Duo gewählt wird, so sind zwei Ladepunkte mit Ladepunkt-Nummer 1 und 2 zu konfigurieren. Bei der openWB Pro und Satellit sind keine Einstellungen notwendig. ",-1),n("p",null,"Weitere Einstellungen sind bei der Vorkonfiguration einer secondary nicht notwendig.",-1),n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),n("p",{class:"font-weight-bold"},"Änderungen werden nur durch Klicken auf Speichern wirksam!",-1)])),content:o(()=>[w(r,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const E=m(c,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep4.vue"]]);export{E as default}; diff --git a/web/settings/assets/InstallAssistantStep5-f3c200c9.js b/web/settings/assets/InstallAssistantStep5-133577c4.js similarity index 82% rename from web/settings/assets/InstallAssistantStep5-f3c200c9.js rename to web/settings/assets/InstallAssistantStep5-133577c4.js index 9d8df7ffeb..9889682fc8 100644 --- a/web/settings/assets/InstallAssistantStep5-f3c200c9.js +++ b/web/settings/assets/InstallAssistantStep5-133577c4.js @@ -1 +1 @@ -import{C as l}from"./index-b236cee5.js";import m from"./InstallAssistantStepTemplate-d8d588b6.js";import{H as u}from"./HardwareInstallation-727b5962.js";import{_ as p,u as r,l as g,x as f,E as a,A as n,G as w}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep5",components:{InstallAssistantStepTemplate:m,HardwareInstallationView:u},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",6)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}};function c(t,e,v,S,A,i){const o=r("HardwareInstallationView"),d=r("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Energiesystem - Geräte und Komponenten einrichten",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>e[4]||(e[4]=[n("p",null,' Diese openWB wurde als "primary" konfiguriert und übernimmt die Steuerung anderer openWBs, falls vorhanden, sowie die alleinige Regelung des Systems. Dazu müssen im Folgenden die Geräte und Komponenten eingerichtet werden. ',-1),n("p",null," Sofern das System nicht zurückgesetzt wurde, ist im Auslieferungszustand für erste Ladetests nach der WB-Montage ein virtueller Zähler vorkonfiguriert. Dieser muss zuerst gelöscht werden, wenn das im Gebäude installierte Energiesystem bestehend aus EVU-Zähler, PV-Anlage und ggf. Speicher in openWB konfiguriert wird. ",-1),n("p",null," Jedes verfügbare Gerät wird durch eine eigene IP-Adresse definiert. Dieses Gerät ist über den Herstellernamen des Energiesystems im Auswahlmenü der verfügbaren Geräte auszuwählen. Unterhalb des Gerätes werden die zugehörigen Komponenten EVU-Zähler, WR und Speicher konfiguriert. Es können je nach Bedarf beliebig viele Geräte und Komponenten miteinander kombiniert werden. ",-1),n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),n("p",{class:"font-weight-bold"},"Änderungen werden nur durch Klicken auf Speichern wirksam!",-1)])),content:a(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const x=p(h,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep5.vue"]]);export{x as default}; +import{C as l}from"./index-cc8f65ba.js";import m from"./InstallAssistantStepTemplate-3bdc8973.js";import{H as u}from"./HardwareInstallation-3a644290.js";import{_ as p,u as r,l as g,z as f,E as a,x as n,G as w}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep5",components:{InstallAssistantStepTemplate:m,HardwareInstallationView:u},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",6)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}};function c(t,e,v,S,b,i){const o=r("HardwareInstallationView"),d=r("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Energiesystem - Geräte und Komponenten einrichten",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>e[4]||(e[4]=[n("p",null,' Diese openWB wurde als "primary" konfiguriert und übernimmt die Steuerung anderer openWBs, falls vorhanden, sowie die alleinige Regelung des Systems. Dazu müssen im Folgenden die Geräte und Komponenten eingerichtet werden. ',-1),n("p",null," Sofern das System nicht zurückgesetzt wurde, ist im Auslieferungszustand für erste Ladetests nach der WB-Montage ein virtueller Zähler vorkonfiguriert. Dieser muss zuerst gelöscht werden, wenn das im Gebäude installierte Energiesystem bestehend aus EVU-Zähler, PV-Anlage und ggf. Speicher in openWB konfiguriert wird. ",-1),n("p",null," Jedes verfügbare Gerät wird durch eine eigene IP-Adresse definiert. Dieses Gerät ist über den Herstellernamen des Energiesystems im Auswahlmenü der verfügbaren Geräte auszuwählen. Unterhalb des Gerätes werden die zugehörigen Komponenten EVU-Zähler, WR und Speicher konfiguriert. Es können je nach Bedarf beliebig viele Geräte und Komponenten miteinander kombiniert werden. ",-1),n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),n("p",{class:"font-weight-bold"},"Änderungen werden nur durch Klicken auf Speichern wirksam!",-1)])),content:a(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const x=p(h,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep5.vue"]]);export{x as default}; diff --git a/web/settings/assets/InstallAssistantStep6-0eab35fd.js b/web/settings/assets/InstallAssistantStep6-fe6bd91e.js similarity index 86% rename from web/settings/assets/InstallAssistantStep6-0eab35fd.js rename to web/settings/assets/InstallAssistantStep6-fe6bd91e.js index 8bd3fa3609..34733acb3b 100644 --- a/web/settings/assets/InstallAssistantStep6-0eab35fd.js +++ b/web/settings/assets/InstallAssistantStep6-fe6bd91e.js @@ -1 +1 @@ -import{C as d}from"./index-b236cee5.js";import u from"./InstallAssistantStepTemplate-d8d588b6.js";import{b as p}from"./ChargePointInstallation-7e51ce35.js";import{_ as m,u as a,l as g,x as h,E as r,A as n,G as w}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const P={name:"InstallAssistantStep6",components:{InstallAssistantStepTemplate:u,ChargePointInstallationView:p},mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",7)},previousPage(){this.$emit("switchPage",5)},endAssistant(){this.$emit("endAssistant")}}};function f(t,e,c,b,k,i){const o=a("ChargePointInstallationView"),l=a("InstallAssistantStepTemplate");return g(),h(l,{title:"5. Einrichten der Ladepunkte (openWB als primary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>e[4]||(e[4]=[n("p",null,' Enthält die steuernde openWB (primary) Ladetechnik, wird bei "Verfügbare Ladepunkte" Interne openWB ausgewählt. Weitere LP werden im primary als secondary konfigurierte openWB oder andere WB-Typen wie Pro, Satellit eingebunden. ',-1),n("p",null,"Bei openWBs ab Werk kann hier bereits ein Ladepunkt eingetragen sein.",-1),n("p",null," Nachfolgend werden die Eigenschaften des Ladepunktes wie IP-Adresse und elektrischer Anschluss definiert. Die meisten openWB werden 3-phasig angeschlossen! Bei mehreren Ladepunkten ist auf phasenrotierten Anschluss der openWB-Zuleitung zu achten! Abschließend wird die korrekte Zuordnung der Phase 1 des Ladekabels zur zugehörigen EVU-Zählerphase konfiguriert. Dies ist sehr wichtig, um optimales Lastmanagement sicherzustellen! ",-1),n("p",null," Tipp zur Zuordnung: Verwende ein nur 1-phasig ladendes Auto (z.B. Hybrid) oder stelle bei openWB mit 1p3p-Phasenumschaltung temporär unter Sofortladen (s. Einstellungen -> Ladeeinstellungen) auf einphasig, um eine 1-phasige Ladung zu erzwingen. Gehe unter Status und vergleiche die Leistungen bzw. Ströme der 3 Phasen am EVU-Zähler (rot) beim und nach dem Autoladen (Sofortladen mit 16A/ Stop). Diejenige EVU-Phase, die deutlich erhöhte Werte anzeigt, ist die auszuwählende EVU-Phase. ",-1),n("p",null," Im grauen Menü Ladepunkt-Profile können neben dem Standard-Ladepunkt-Profil auch weitere Ladepunkt-Profile, die andere WB-Typen abbilden, erstellt werden. Dort sind Eintragungen bzgl. des Ladepunkt-Maximalstroms bei einer Phase bzw. mehreren Phasen vorzunehmen. Die Profile werden abschließend im jeweiligen blauen Ladepunkt mittels Auswahlmenü zugeordnet. ",-1),n("p",{class:"font-weight-bold"},"Änderungen werden nur durch Klicken auf Speichern wirksam!",-1)])),content:r(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const $=m(P,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep6.vue"]]);export{$ as default}; +import{C as d}from"./index-cc8f65ba.js";import u from"./InstallAssistantStepTemplate-3bdc8973.js";import{b as p}from"./ChargePointInstallation-408ee2ed.js";import{_ as m,u as a,l as g,z as h,E as r,x as n,G as w}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const P={name:"InstallAssistantStep6",components:{InstallAssistantStepTemplate:u,ChargePointInstallationView:p},mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",7)},previousPage(){this.$emit("switchPage",5)},endAssistant(){this.$emit("endAssistant")}}};function f(t,e,c,b,k,i){const o=a("ChargePointInstallationView"),l=a("InstallAssistantStepTemplate");return g(),h(l,{title:"5. Einrichten der Ladepunkte (openWB als primary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>e[4]||(e[4]=[n("p",null,' Enthält die steuernde openWB (primary) Ladetechnik, wird bei "Verfügbare Ladepunkte" Interne openWB ausgewählt. Weitere LP werden im primary als secondary konfigurierte openWB oder andere WB-Typen wie Pro, Satellit eingebunden. ',-1),n("p",null,"Bei openWBs ab Werk kann hier bereits ein Ladepunkt eingetragen sein.",-1),n("p",null," Nachfolgend werden die Eigenschaften des Ladepunktes wie IP-Adresse und elektrischer Anschluss definiert. Die meisten openWB werden 3-phasig angeschlossen! Bei mehreren Ladepunkten ist auf phasenrotierten Anschluss der openWB-Zuleitung zu achten! Abschließend wird die korrekte Zuordnung der Phase 1 des Ladekabels zur zugehörigen EVU-Zählerphase konfiguriert. Dies ist sehr wichtig, um optimales Lastmanagement sicherzustellen! ",-1),n("p",null," Tipp zur Zuordnung: Verwende ein nur 1-phasig ladendes Auto (z.B. Hybrid) oder stelle bei openWB mit 1p3p-Phasenumschaltung temporär unter Sofortladen (s. Einstellungen -> Ladeeinstellungen) auf einphasig, um eine 1-phasige Ladung zu erzwingen. Gehe unter Status und vergleiche die Leistungen bzw. Ströme der 3 Phasen am EVU-Zähler (rot) beim und nach dem Autoladen (Sofortladen mit 16A/ Stop). Diejenige EVU-Phase, die deutlich erhöhte Werte anzeigt, ist die auszuwählende EVU-Phase. ",-1),n("p",null," Im grauen Menü Ladepunkt-Profile können neben dem Standard-Ladepunkt-Profil auch weitere Ladepunkt-Profile, die andere WB-Typen abbilden, erstellt werden. Dort sind Eintragungen bzgl. des Ladepunkt-Maximalstroms bei einer Phase bzw. mehreren Phasen vorzunehmen. Die Profile werden abschließend im jeweiligen blauen Ladepunkt mittels Auswahlmenü zugeordnet. ",-1),n("p",{class:"font-weight-bold"},"Änderungen werden nur durch Klicken auf Speichern wirksam!",-1)])),content:r(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const $=m(P,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep6.vue"]]);export{$ as default}; diff --git a/web/settings/assets/InstallAssistantStep7-8b2d70ea.js b/web/settings/assets/InstallAssistantStep7-51125106.js similarity index 83% rename from web/settings/assets/InstallAssistantStep7-8b2d70ea.js rename to web/settings/assets/InstallAssistantStep7-51125106.js index 2130dec239..673be718c0 100644 --- a/web/settings/assets/InstallAssistantStep7-8b2d70ea.js +++ b/web/settings/assets/InstallAssistantStep7-51125106.js @@ -1 +1 @@ -import{C as l}from"./index-b236cee5.js";import m from"./InstallAssistantStepTemplate-d8d588b6.js";import p from"./LoadManagementConfig-d6d290f9.js";import{_ as u,u as r,l as g,x as h,E as a,A as n,G as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./OpenwbSortableList-13147a4b.js";const f={name:"InstallAssistantStep7",components:{InstallAssistantStepTemplate:m,LoadManagementConfigView:p},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",8)},previousPage(){this.$emit("switchPage",6)},endAssistant(){this.$emit("endAssistant")}}};function b(t,e,S,w,A,i){const o=r("LoadManagementConfigView"),d=r("InstallAssistantStepTemplate");return g(),h(d,{title:"6. Konfiguration des Lastmanagements",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>e[4]||(e[4]=[n("p",null," Im Lastmanagement werden die maximale Leistung sowie die maximalen Ströme für jede Phase des Zählermoduls sowie bei Hybrid-Systemen (per DC-angebundener Speicher) die maximale Ausgangsleistung des Wechselrichters der PV-Anlage eingetragen, falls eine solche vorhanden ist. ",-1),n("p",null,' Der erste Zähler ist in der Regel der Zähler am EVU-Punkt (Position des PV/Speicher-Smartmeters direkt hinter dem VNB-Zähler). In openWB ist hierzu auf die unterhalb der "Vorhandene Zählermodule" liegende (rote) EVU-Zähler-Komponente zu klicken, in welche die maximale EVU-Leistung sowie die Phasenströme eingetragen werden, für die der Hausanschluss abgesichert ist (Elektriker fragen, typisch f. EFH: 24kW/3x35A, 43kW/3x63A). ',-1),n("p",null," Ist ein Wechselrichter mit DC-angebundenem Speicher unter Geräte hinzugefügt worden, dann ist unter der (grünen) WR-Komponente noch die maximale Ausgangsleistung des WR einzutragen. ",-1),n("p",null," Der EVU-Zähler (rot) schließt alle weiteren Komponenten wie WR und Speicher unter sich ein. Bei AC-eingebundenen Speichern befinden sich WR und Speicher in derselben Ebene, bei DC-eingebundenen Speichern (Hybrid) der Speicher unterhalb des WR. Die Ladepunkte (z.B. secondary openWB) befinden sich auf derselben Ebene wie der WR und unterhalb des EVU-Zählers. Anpassungen der Anordnungen sind über die Pfeil-Bereiche der Komponenten durch einfaches Verschieben mit der Maus oder am Smartphone möglich. ",-1),n("p",null,null,-1),n("p",{class:"font-weight-bold"},"Änderungen werden nur durch Klicken auf Speichern wirksam!",-1)])),content:a(()=>[c(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const I=u(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep7.vue"]]);export{I as default}; +import{C as l}from"./index-cc8f65ba.js";import m from"./InstallAssistantStepTemplate-3bdc8973.js";import p from"./LoadManagementConfig-c15dfafe.js";import{_ as u,u as r,l as g,z as h,E as a,x as n,G as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./OpenwbSortableList-bde71f66.js";const f={name:"InstallAssistantStep7",components:{InstallAssistantStepTemplate:m,LoadManagementConfigView:p},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",8)},previousPage(){this.$emit("switchPage",6)},endAssistant(){this.$emit("endAssistant")}}};function b(t,e,S,w,A,i){const o=r("LoadManagementConfigView"),d=r("InstallAssistantStepTemplate");return g(),h(d,{title:"6. Konfiguration des Lastmanagements",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>e[4]||(e[4]=[n("p",null," Im Lastmanagement werden die maximale Leistung sowie die maximalen Ströme für jede Phase des Zählermoduls sowie bei Hybrid-Systemen (per DC-angebundener Speicher) die maximale Ausgangsleistung des Wechselrichters der PV-Anlage eingetragen, falls eine solche vorhanden ist. ",-1),n("p",null,' Der erste Zähler ist in der Regel der Zähler am EVU-Punkt (Position des PV/Speicher-Smartmeters direkt hinter dem VNB-Zähler). In openWB ist hierzu auf die unterhalb der "Vorhandene Zählermodule" liegende (rote) EVU-Zähler-Komponente zu klicken, in welche die maximale EVU-Leistung sowie die Phasenströme eingetragen werden, für die der Hausanschluss abgesichert ist (Elektriker fragen, typisch f. EFH: 24kW/3x35A, 43kW/3x63A). ',-1),n("p",null," Ist ein Wechselrichter mit DC-angebundenem Speicher unter Geräte hinzugefügt worden, dann ist unter der (grünen) WR-Komponente noch die maximale Ausgangsleistung des WR einzutragen. ",-1),n("p",null," Der EVU-Zähler (rot) schließt alle weiteren Komponenten wie WR und Speicher unter sich ein. Bei AC-eingebundenen Speichern befinden sich WR und Speicher in derselben Ebene, bei DC-eingebundenen Speichern (Hybrid) der Speicher unterhalb des WR. Die Ladepunkte (z.B. secondary openWB) befinden sich auf derselben Ebene wie der WR und unterhalb des EVU-Zählers. Anpassungen der Anordnungen sind über die Pfeil-Bereiche der Komponenten durch einfaches Verschieben mit der Maus oder am Smartphone möglich. ",-1),n("p",null,null,-1),n("p",{class:"font-weight-bold"},"Änderungen werden nur durch Klicken auf Speichern wirksam!",-1)])),content:a(()=>[c(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const I=u(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep7.vue"]]);export{I as default}; diff --git a/web/settings/assets/InstallAssistantStep8-d0a57c9f.js b/web/settings/assets/InstallAssistantStep8-1047f636.js similarity index 77% rename from web/settings/assets/InstallAssistantStep8-d0a57c9f.js rename to web/settings/assets/InstallAssistantStep8-1047f636.js index 2dc6d6baf0..7b83fe2890 100644 --- a/web/settings/assets/InstallAssistantStep8-d0a57c9f.js +++ b/web/settings/assets/InstallAssistantStep8-1047f636.js @@ -1 +1 @@ -import{C as g}from"./index-b236cee5.js";import p from"./InstallAssistantStepTemplate-d8d588b6.js";import{a as h}from"./VehicleConfig-e49e5ddc.js";import{F as f}from"./vendor-fortawesome-9d7cfdfb.js";import{_ as z,u as r,l as w,x as P,E as a,A as n,B as o,G as d}from"./vendor-ad7c30fd.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep8",components:{InstallAssistantStepTemplate:p,VehicleConfigView:h,FontAwesomeIcon:f},mixins:[g],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",7)},endAssistant(){this.$emit("endAssistant")}}},F={class:"font-weight-bold"};function v(t,e,c,S,V,i){const l=r("FontAwesomeIcon"),u=r("VehicleConfigView"),m=r("InstallAssistantStepTemplate");return w(),P(m,{title:"7. Einrichten der Fahrzeuge",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[e[6]||(e[6]=n("p",null,"Vor dem eigentlichen Fahrzeug werden zuerst die Fahrzeug- und Lade-Profile konfiguriert.",-1)),e[7]||(e[7]=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Fahrzeug-Profil aus. Bei mehreren Fahrzeugtypen werden weitere Fahrzeug-Profile hinzugefügt. Im Anschluss werden die Fahrzeug-Profile mit den passenden Einstellungen des Fahrzeugtyps versehen (Mindeststromstärke, Maximalstromstärke bei einer/mehreren Phase/n sowie Angaben zur Batterie und Handhabung der Phasen entsprechend den Daten des Automobilherstellers. Im Zweifelsfall den Hersteller des Autos oder im openWB-Forum nachfragen). ",-1)),n("p",F,[e[4]||(e[4]=o(' Wichtig: Die "Angaben zur Handhabung von Phasen" des Fahrzeugs sind richtig einzutragen! Beachte die Hilfstexte, die Du durch Klick auf ')),d(l,{icon:["far","question-circle"]}),e[5]||(e[5]=o(" anzeigen kannst. "))]),e[8]||(e[8]=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Lade-Profil aus. Bei mehreren Fahrzeugen können weitere Lade-Profile hinzugefügt werden. Dies erlaubt die Nutzung unterschiedlicher Lademodi je Fahrzeug (z.B. EV1 = Sofortladen, EV2 = PV-Laden). Im Anschluss werden die Voreinstellungen zu den verschiedenen Lademodi konfiguriert. ",-1)),e[9]||(e[9]=n("p",null," Nun wird das eigentliche Fahrzeug angelegt und mit dem gewünschten Fahrzeug-Profil / Lade-Profil versehen. Ist nur ein Fahrzeug vorhanden, reicht das Standard-Fahrzeug aus. ",-1)),e[10]||(e[10]=n("p",{class:"font-weight-bold"},"Änderungen werden nur durch Klicken auf Speichern wirksam!",-1))]),content:a(()=>[d(u,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=z(A,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep8.vue"]]);export{T as default}; +import{C as g}from"./index-cc8f65ba.js";import p from"./InstallAssistantStepTemplate-3bdc8973.js";import{a as h}from"./VehicleConfig-a49bda81.js";import{F as f}from"./vendor-fortawesome-433470db.js";import{_ as z,u as r,l as w,z as P,E as a,x as n,y as o,G as d}from"./vendor-ea36120f.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const F={name:"InstallAssistantStep8",components:{InstallAssistantStepTemplate:p,VehicleConfigView:h,FontAwesomeIcon:f},mixins:[g],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",7)},endAssistant(){this.$emit("endAssistant")}}},A={class:"font-weight-bold"};function v(t,e,c,S,V,i){const l=r("FontAwesomeIcon"),u=r("VehicleConfigView"),m=r("InstallAssistantStepTemplate");return w(),P(m,{title:"7. Einrichten der Fahrzeuge",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[e[6]||(e[6]=n("p",null,"Vor dem eigentlichen Fahrzeug werden zuerst die Fahrzeug- und Lade-Profile konfiguriert.",-1)),e[7]||(e[7]=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Fahrzeug-Profil aus. Bei mehreren Fahrzeugtypen werden weitere Fahrzeug-Profile hinzugefügt. Im Anschluss werden die Fahrzeug-Profile mit den passenden Einstellungen des Fahrzeugtyps versehen (Mindeststromstärke, Maximalstromstärke bei einer/mehreren Phase/n sowie Angaben zur Batterie und Handhabung der Phasen entsprechend den Daten des Automobilherstellers. Im Zweifelsfall den Hersteller des Autos oder im openWB-Forum nachfragen). ",-1)),n("p",A,[e[4]||(e[4]=o(' Wichtig: Die "Angaben zur Handhabung von Phasen" des Fahrzeugs sind richtig einzutragen! Beachte die Hilfstexte, die Du durch Klick auf ')),d(l,{icon:["far","question-circle"]}),e[5]||(e[5]=o(" anzeigen kannst. "))]),e[8]||(e[8]=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Lade-Profil aus. Bei mehreren Fahrzeugen können weitere Lade-Profile hinzugefügt werden. Dies erlaubt die Nutzung unterschiedlicher Lademodi je Fahrzeug (z.B. EV1 = Sofortladen, EV2 = PV-Laden). Im Anschluss werden die Voreinstellungen zu den verschiedenen Lademodi konfiguriert. ",-1)),e[9]||(e[9]=n("p",null," Nun wird das eigentliche Fahrzeug angelegt und mit dem gewünschten Fahrzeug-Profil / Lade-Profil versehen. Ist nur ein Fahrzeug vorhanden, reicht das Standard-Fahrzeug aus. ",-1)),e[10]||(e[10]=n("p",{class:"font-weight-bold"},"Änderungen werden nur durch Klicken auf Speichern wirksam!",-1))]),content:a(()=>[d(u,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=z(F,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep8.vue"]]);export{T as default}; diff --git a/web/settings/assets/InstallAssistantStep9-26ed6631.js b/web/settings/assets/InstallAssistantStep9-bd70c725.js similarity index 77% rename from web/settings/assets/InstallAssistantStep9-26ed6631.js rename to web/settings/assets/InstallAssistantStep9-bd70c725.js index 02fbe149ba..bce073fa64 100644 --- a/web/settings/assets/InstallAssistantStep9-26ed6631.js +++ b/web/settings/assets/InstallAssistantStep9-bd70c725.js @@ -1 +1 @@ -import{C as m}from"./index-b236cee5.js";import p from"./InstallAssistantStepTemplate-d8d588b6.js";import{D as u}from"./DataManagement-714df651.js";import{_ as d,u as i,l as g,x as f,E as o,A as a,G as v}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep9",components:{InstallAssistantStepTemplate:p,DataManagement:u},mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),computed:{stepNumber(){return this.$store.state.mqtt["openWB/general/extern"]?5:8}},methods:{nextPage(){this.$emit("switchPage",10)},previousPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:8)},endAssistant(){this.$emit("endAssistant")}}};function h(t,e,A,P,S,n){const r=i("DataManagement"),l=i("InstallAssistantStepTemplate");return g(),f(l,{title:`${n.stepNumber}. Datensicherung der neuen Konfiguration`,onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>e[4]||(e[4]=[a("p",null," Wir empfehlen an dieser Stelle eine manuell initiierte Sicherung der neu konfigurierten openWB zu erstellen. ",-1),a("p",null," Dieser Vorgang sollte im Betrieb regelmäßig wiederholt werden (mindestens vor Updates), um sowohl die individuellen Log-Daten als auch auf ältere Konfigurationen zurückgreifen zu können (Backups). ",-1),a("p",null,' Die Sicherung kann auch automatisiert auf einem Cloud-Dienst durchgeführt werden. Hierzu bitte im unteren Bereich "Backup-Cloud" die entsprechenden Einstellungen vornehmen. ',-1)])),content:o(()=>[v(r,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["title","onNextPage","onPreviousPage","onEndAssistant"])}const W=d(c,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep9.vue"]]);export{W as default}; +import{C as m}from"./index-cc8f65ba.js";import p from"./InstallAssistantStepTemplate-3bdc8973.js";import{D as u}from"./DataManagement-f14600c5.js";import{_ as d,u as i,l as g,z as f,E as o,x as a,G as v}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep9",components:{InstallAssistantStepTemplate:p,DataManagement:u},mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),computed:{stepNumber(){return this.$store.state.mqtt["openWB/general/extern"]?5:8}},methods:{nextPage(){this.$emit("switchPage",10)},previousPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:8)},endAssistant(){this.$emit("endAssistant")}}};function h(t,e,P,S,$,n){const r=i("DataManagement"),l=i("InstallAssistantStepTemplate");return g(),f(l,{title:`${n.stepNumber}. Datensicherung der neuen Konfiguration`,onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>e[4]||(e[4]=[a("p",null," Wir empfehlen an dieser Stelle eine manuell initiierte Sicherung der neu konfigurierten openWB zu erstellen. ",-1),a("p",null," Dieser Vorgang sollte im Betrieb regelmäßig wiederholt werden (mindestens vor Updates), um sowohl die individuellen Log-Daten als auch auf ältere Konfigurationen zurückgreifen zu können (Backups). ",-1),a("p",null,' Die Sicherung kann auch automatisiert auf einem Cloud-Dienst durchgeführt werden. Hierzu bitte im unteren Bereich "Backup-Cloud" die entsprechenden Einstellungen vornehmen. ',-1)])),content:o(()=>[v(r,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["title","onNextPage","onPreviousPage","onEndAssistant"])}const W=d(c,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep9.vue"]]);export{W as default}; diff --git a/web/settings/assets/InstallAssistantStepTemplate-d8d588b6.js b/web/settings/assets/InstallAssistantStepTemplate-3bdc8973.js similarity index 78% rename from web/settings/assets/InstallAssistantStepTemplate-d8d588b6.js rename to web/settings/assets/InstallAssistantStepTemplate-3bdc8973.js index 5f1a0904d6..94f1bc6d39 100644 --- a/web/settings/assets/InstallAssistantStepTemplate-d8d588b6.js +++ b/web/settings/assets/InstallAssistantStepTemplate-3bdc8973.js @@ -1 +1 @@ -import{C as g}from"./index-b236cee5.js";import{l as v,as as w,at as y,F as x}from"./vendor-fortawesome-9d7cfdfb.js";import{_ as k,u as r,l as i,m as a,G as t,E as s,A as n,B as c,z as p,p as _}from"./vendor-ad7c30fd.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";const B="/openWB/web/settings/img/openWB_logo_light.png";v.add(w,y);const h={name:"InstallAssistantStepTemplate",components:{FontAwesomeIcon:x},mixins:[g],props:{title:{type:String,required:!0},hidePrevious:{type:Boolean,required:!1,default:!1},hideNext:{type:Boolean,required:!1,default:!1},hideEnd:{type:Boolean,required:!1,default:!1}},emits:["previousPage","nextPage","endAssistant"],methods:{nextPage(){window.scrollTo(0,0),this.$emit("nextPage")},previousPage(){window.scrollTo(0,0),this.$emit("previousPage")},endAssistant(){this.$emit("endAssistant")}}},A={class:"row justify-content-center mb-1"},C={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},P={key:1,class:"col-md-4 d-flex py-1 justify-content-center"},S={key:2,class:"col-md-4 d-flex py-1 justify-content-center"},T={class:"row justify-content-center"},I={class:"page-help-text col-md-3 py-2"},N={class:"col py-2"};function $(u,e,o,j,W,l){const m=r("font-awesome-icon"),d=r("openwb-base-click-button"),b=r("openwb-base-card");return i(),a("div",null,[t(b,{title:o.title,"body-bg":"white",class:"p-0 mx-3"},{footer:s(()=>[n("div",A,[o.hidePrevious?p("",!0):(i(),a("div",C,[t(d,{class:"btn-block btn-warning",onButtonClicked:e[0]||(e[0]=f=>l.previousPage())},{default:s(()=>[t(m,{"fixed-width":"",icon:["fas","caret-left"]}),e[3]||(e[3]=c(" Zurück "))]),_:1})])),o.hideNext?p("",!0):(i(),a("div",P,[t(d,{class:"btn-block btn-success",onButtonClicked:e[1]||(e[1]=f=>l.nextPage())},{default:s(()=>[e[4]||(e[4]=c(" Weiter ")),t(m,{"fixed-width":"",icon:["fas","caret-right"]})]),_:1})])),o.hideEnd?p("",!0):(i(),a("div",S,[t(d,{class:"btn-block btn-danger",onButtonClicked:e[2]||(e[2]=f=>l.endAssistant())},{default:s(()=>e[5]||(e[5]=[c(" Assistent beenden ")])),_:1})]))])]),default:s(()=>[n("div",T,[n("div",I,[_(u.$slots,"help",{},()=>[e[6]||(e[6]=n("img",{src:B,alt:"openWB Logo",class:"w-100"},null,-1))],!0)]),n("div",N,[_(u.$slots,"content",{},void 0,!0)])])]),_:3},8,["title"])])}const R=k(h,[["render",$],["__scopeId","data-v-db9e78cb"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStepTemplate.vue"]]);export{R as default}; +import{C as g}from"./index-cc8f65ba.js";import{l as v,ao as y,ap as w,F as x}from"./vendor-fortawesome-433470db.js";import{_ as k,u as r,l as i,m as a,G as t,E as s,x as n,y as c,B as p,p as _}from"./vendor-ea36120f.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";const B="/openWB/web/settings/img/openWB_logo_light.png";v.add(y,w);const h={name:"InstallAssistantStepTemplate",components:{FontAwesomeIcon:x},mixins:[g],props:{title:{type:String,required:!0},hidePrevious:{type:Boolean,required:!1,default:!1},hideNext:{type:Boolean,required:!1,default:!1},hideEnd:{type:Boolean,required:!1,default:!1}},emits:["previousPage","nextPage","endAssistant"],methods:{nextPage(){window.scrollTo(0,0),this.$emit("nextPage")},previousPage(){window.scrollTo(0,0),this.$emit("previousPage")},endAssistant(){this.$emit("endAssistant")}}},A={class:"row justify-content-center mb-1"},C={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},P={key:1,class:"col-md-4 d-flex py-1 justify-content-center"},S={key:2,class:"col-md-4 d-flex py-1 justify-content-center"},T={class:"row justify-content-center"},I={class:"page-help-text col-md-3 py-2"},N={class:"col py-2"};function $(u,e,o,j,W,l){const m=r("font-awesome-icon"),d=r("openwb-base-click-button"),b=r("openwb-base-card");return i(),a("div",null,[t(b,{title:o.title,"body-bg":"white",class:"p-0 mx-3"},{footer:s(()=>[n("div",A,[o.hidePrevious?p("",!0):(i(),a("div",C,[t(d,{class:"btn-block btn-warning",onButtonClicked:e[0]||(e[0]=f=>l.previousPage())},{default:s(()=>[t(m,{"fixed-width":"",icon:["fas","caret-left"]}),e[3]||(e[3]=c(" Zurück "))]),_:1})])),o.hideNext?p("",!0):(i(),a("div",P,[t(d,{class:"btn-block btn-success",onButtonClicked:e[1]||(e[1]=f=>l.nextPage())},{default:s(()=>[e[4]||(e[4]=c(" Weiter ")),t(m,{"fixed-width":"",icon:["fas","caret-right"]})]),_:1})])),o.hideEnd?p("",!0):(i(),a("div",S,[t(d,{class:"btn-block btn-danger",onButtonClicked:e[2]||(e[2]=f=>l.endAssistant())},{default:s(()=>e[5]||(e[5]=[c(" Assistent beenden ")])),_:1})]))])]),default:s(()=>[n("div",T,[n("div",I,[_(u.$slots,"help",{},()=>[e[6]||(e[6]=n("img",{src:B,alt:"openWB Logo",class:"w-100"},null,-1))],!0)]),n("div",N,[_(u.$slots,"content",{},void 0,!0)])])]),_:3},8,["title"])])}const Z=k(h,[["render",$],["__scopeId","data-v-db9e78cb"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStepTemplate.vue"]]);export{Z as default}; diff --git a/web/settings/assets/InstantChargeConfig-bb769188.js b/web/settings/assets/InstantChargeConfig-8da1d692.js similarity index 78% rename from web/settings/assets/InstantChargeConfig-bb769188.js rename to web/settings/assets/InstantChargeConfig-8da1d692.js index 840eaa45d5..cb194175e6 100644 --- a/web/settings/assets/InstantChargeConfig-bb769188.js +++ b/web/settings/assets/InstantChargeConfig-8da1d692.js @@ -1 +1 @@ -import{C as l}from"./index-b236cee5.js";import{_ as b,u as o,l as a,m as i,A as _,G as s,E as r,B as u}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";const f={name:"OpenwbInstantChargeConfigView",mixins:[l],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},h={class:"instantChargeConfig"},c={name:"instantChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const m=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",h,[_("form",c,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(m,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(a(),i("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/instant_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/instant_charging/phases_to_use",n))},{help:r(()=>e[5]||(e[5]=[u(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Sofortladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),s(d,{"form-name":"instantChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const A=b(f,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{A as default}; +import{C as l}from"./index-cc8f65ba.js";import{_ as b,u as o,l as a,m as i,x as _,G as s,E as r,y as u}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";const f={name:"OpenwbInstantChargeConfigView",mixins:[l],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},h={class:"instantChargeConfig"},c={name:"instantChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const m=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",h,[_("form",c,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(m,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(a(),i("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/instant_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/instant_charging/phases_to_use",n))},{help:r(()=>e[5]||(e[5]=[u(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Sofortladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),s(d,{"form-name":"instantChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const F=b(f,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{F as default}; diff --git a/web/settings/assets/IoConfig-bc616ac4.js b/web/settings/assets/IoConfig-bc616ac4.js deleted file mode 100644 index ce1828e290..0000000000 --- a/web/settings/assets/IoConfig-bc616ac4.js +++ /dev/null @@ -1 +0,0 @@ -import{l as q,a9 as $,F as L}from"./vendor-fortawesome-9d7cfdfb.js";import{_ as k,C as j}from"./index-b236cee5.js";import{_ as W}from"./dynamic-import-helper-be004503.js";import{_ as C,u as d,l as s,m as g,x as _,E as a,B as c,F as f,G as r,A as D,a1 as M,a2 as P,N as I,z as A,M as E}from"./vendor-ad7c30fd.js";const U={props:{ioDevice:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},F=C(U,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/io_devices/OpenwbIoDeviceConfigMixin.vue"]]),N={name:"OpenwbIoDeviceConfigFallback",mixins:[F]},G={class:"io-device-config-fallback"},R={key:1};function z(o,e,i,b,l,n){const p=d("openwb-base-alert"),m=d("openwb-base-textarea");return s(),g("div",G,[Object.keys(o.ioDevice.configuration).length==0?(s(),_(p,{key:0,subtype:"info"},{default:a(()=>[c(' Das I/O-Modul "'+f(o.ioDevice.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),g("div",R,[r(p,{subtype:"warning"},{default:a(()=>[c(' Es wurde keine Konfigurationsseite für das I/O-Modul "'+f(o.ioDevice.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),r(m,{title:"Konfiguration",subtype:"json","model-value":o.ioDevice.configuration,"onUpdate:modelValue":e[0]||(e[0]=w=>o.updateConfiguration(w,"configuration"))},{help:a(()=>e[1]||(e[1]=[c(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),r(p,{subtype:"info"},{default:a(()=>[D("pre",null,f(JSON.stringify(o.ioDevice.configuration,void 0,2)),1)]),_:1})]))])}const J=C(N,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/io_devices/OpenwbIoDeviceConfigFallback.vue"]]),H={name:"OpenwbIoDeviceProxy",props:{ioDevice:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],computed:{myComponent(){return console.debug(`loading io device: ${this.ioDevice.type}`),M({loader:()=>W(Object.assign({"./add_on/io_device.vue":()=>k(()=>import("./io_device-6aded7c0.js"),["assets/io_device-6aded7c0.js","assets/index-b236cee5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./dimm_kit/io_device.vue":()=>k(()=>import("./io_device-a553d2c1.js"),["assets/io_device-a553d2c1.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.ioDevice.type}/io_device.vue`),errorComponent:J})}},methods:{updateConfiguration(o){this.$emit("update:configuration",o)},sendCommand(o){this.$emit("sendCommand",o)}}};function Q(o,e,i,b,l,n){const p=d("openwb-base-heading");return s(),g(I,null,[r(p,null,{default:a(()=>[c(' Einstellungen für I/O-Modul "'+f(i.ioDevice.name)+'" ',1)]),_:1}),(s(),_(P(n.myComponent),{"io-device":i.ioDevice,"onUpdate:configuration":e[0]||(e[0]=m=>n.updateConfiguration(m)),onSendCommand:e[1]||(e[1]=m=>n.sendCommand(m))},null,40,["io-device"]))],64)}const X=C(H,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/io_devices/OpenwbIoDeviceProxy.vue"]]),Y={mixins:[j],props:{ioAction:{type:Object,required:!0},ioDevice:{type:Object,required:!0},availableChargePoints:{type:Array,required:!1,default:()=>[]},availableComponents:{type:Array,required:!1,default:()=>[]},availableIoDevices:{type:Array,required:!1,default:()=>[]}},emits:["update:configuration","sendCommand"],methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},Z=C(Y,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/io_actions/OpenwbIoActionConfigMixin.vue"]]),K={name:"OpenwbIoActionConfigFallback",mixins:[Z]},ee={class:"io-action-config-fallback"},oe={key:1};function te(o,e,i,b,l,n){var w,h;const p=d("openwb-base-alert"),m=d("openwb-base-textarea");return s(),g("div",ee,[Object.keys((w=o.ioAction)==null?void 0:w.configuration).length==0?(s(),_(p,{key:0,subtype:"info"},{default:a(()=>{var u;return[c(' Die I/O-Aktion "'+f((u=o.ioAction)==null?void 0:u.name)+'" bietet keine Einstellungen. ',1)]}),_:1})):(s(),g("div",oe,[r(p,{subtype:"warning"},{default:a(()=>{var u;return[c(' Es wurde keine Konfigurationsseite für die I/O-Aktion "'+f((u=o.ioAction)==null?void 0:u.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]}),_:1}),r(m,{title:"Konfiguration",subtype:"json","model-value":(h=o.ioAction)==null?void 0:h.configuration,"onUpdate:modelValue":e[0]||(e[0]=u=>o.updateConfiguration(u,"configuration"))},{help:a(()=>e[1]||(e[1]=[c(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),r(p,{subtype:"info"},{default:a(()=>{var u;return[D("pre",null,f(JSON.stringify((u=o.ioAction)==null?void 0:u.configuration,void 0,2)),1)]}),_:1})]))])}const ne=C(K,[["render",te],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/io_actions/OpenwbIoActionConfigFallback.vue"]]),ie={name:"OpenwbIoActionProxy",props:{ioAction:{type:Object,required:!0},ioDevices:{type:Object,required:!0},installedChargePoints:{type:Object,required:!0},installedComponents:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],computed:{myComponent(){var o,e;return console.debug(`loading io action: ${(o=this.ioAction)==null?void 0:o.group} / ${(e=this.ioAction)==null?void 0:e.type}`),M({loader:()=>{var i,b;return W(Object.assign({"./controllable_consumers/dimming/io_action.vue":()=>k(()=>import("./io_action-465b927d.js"),["assets/io_action-465b927d.js","assets/OpenwbIoSinglePattern-83dbc24c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/OpenwbIoSinglePattern-e689840a.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./controllable_consumers/dimming_direct_control/io_action.vue":()=>k(()=>import("./io_action-15f350b8.js"),["assets/io_action-15f350b8.js","assets/OpenwbIoSinglePattern-83dbc24c.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/OpenwbIoSinglePattern-e689840a.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./controllable_consumers/ripple_control_receiver/io_action.vue":()=>k(()=>import("./io_action-f16988cb.js"),["assets/io_action-f16988cb.js","assets/OpenwbIoPattern-278f5a90.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/OpenwbIoPattern-a1d251cc.css","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./generator_systems/power_levels/io_action.vue":()=>k(()=>import("./io_action-def63b3b.js"),["assets/io_action-def63b3b.js","assets/OpenwbIoPattern-278f5a90.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/OpenwbIoPattern-a1d251cc.css","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${(i=this.ioAction)==null?void 0:i.group}/${(b=this.ioAction)==null?void 0:b.type}/io_action.vue`)},errorComponent:ne})},ioDeviceList(){return Object.keys(this.ioDevices).map(o=>{var e,i;return{value:(e=this.ioDevices[o])==null?void 0:e.id,text:(i=this.ioDevices[o])==null?void 0:i.name}})},availableIoDevices(){return Object.values(this.ioDevices)},availableChargePoints(){return Object.values(this.installedChargePoints).map(o=>({value:o==null?void 0:o.id,text:o==null?void 0:o.name}))},availableComponents(){return Object.values(this.installedComponents).map(o=>({value:o==null?void 0:o.id,text:o==null?void 0:o.name,type:o==null?void 0:o.type}))}},methods:{updateConfiguration(o,e=void 0){e?this.$emit("update:configuration",{value:o,object:e}):this.$emit("update:configuration",o)},updateIoDevice(o){var e;if(this.updateConfiguration(o,"configuration.io_device"),Array.isArray((e=this.ioAction.configuration)==null?void 0:e.input_pattern)){let i=this.ioAction.configuration.input_pattern.map(b=>({value:b.value,input_matrix:{}}));this.updateConfiguration(i,"configuration.input_pattern")}Object.prototype.hasOwnProperty.call(this.ioAction.configuration,"digital_input")&&this.updateConfiguration(null,"configuration.digital_input")}}},ae={key:0};function se(o,e,i,b,l,n){var w,h;const p=d("openwb-base-heading"),m=d("openwb-base-select-input");return s(),g(I,null,[r(p,null,{default:a(()=>{var u;return[c(' Einstellungen für I/O-Aktion "'+f((u=i.ioAction)==null?void 0:u.name)+'" ',1)]}),_:1}),r(m,{title:"Eingangs-Gerät","not-selected":"Bitte auswählen","empty-value":null,required:"",options:n.ioDeviceList,"model-value":(w=i.ioAction)==null?void 0:w.configuration.io_device,"onUpdate:modelValue":e[0]||(e[0]=u=>n.updateIoDevice(u))},{help:a(()=>e[2]||(e[2]=[c(" Bitte das Gerät auswählen, über das der Schaltbefehl empfangen werden soll. Für jede Aktion kann nur ein Gerät ausgewählt werden. ")])),_:1},8,["options","model-value"]),((h=i.ioAction)==null?void 0:h.configuration.io_device)!==null?(s(),g("div",ae,[e[3]||(e[3]=D("hr",null,null,-1)),(s(),_(P(n.myComponent),{"io-action":i.ioAction,"io-device":i.ioDevices[`openWB/system/io/${i.ioAction.configuration.io_device}/config`],"available-charge-points":n.availableChargePoints,"available-components":n.availableComponents,"available-io-devices":n.availableIoDevices,"onUpdate:configuration":e[1]||(e[1]=u=>n.updateConfiguration(u))},null,40,["io-action","io-device","available-charge-points","available-components","available-io-devices"]))])):A("",!0)],64)}const re=C(ie,[["render",se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/io_actions/OpenwbIoActionProxy.vue"]]);q.add($);const ue={name:"OpenwbIoConfigView",components:{FontAwesomeIcon:L,OpenwbIoDeviceProxy:X,OpenwbIoActionProxy:re},mixins:[j],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["save","reset","defaults","send-command"],data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/io_devices","openWB/system/io/+/config","openWB/system/configurable/io_actions","openWB/io/action/+/config","openWB/chargepoint/+/config","openWB/system/device/+/component/+/config"],showIoDeviceDeleteModal:!1,modalIoDeviceIndex:void 0,ioDeviceToAdd:void 0,showIoActionDeleteModal:!1,modalIoActionIndex:void 0,ioActionToAdd:void 0}},computed:{ioDeviceList:{get(){return this.$store.state.mqtt["openWB/system/configurable/io_devices"]}},installedIoDevices:{get(){return this.getWildcardTopics("openWB/system/io/+/config")}},ioActionList:{get(){return this.$store.state.mqtt["openWB/system/configurable/io_actions"]===void 0?[]:Object.entries(this.$store.state.mqtt["openWB/system/configurable/io_actions"]).map(([o,e])=>({label:e.group_name,options:e.actions.map(i=>({value:[o,i.value],text:i.text})).sort((i,b)=>i.text.localeCompare(b.text))})).sort((o,e)=>o.label.localeCompare(e.label))}},installedIoActions:{get(){return this.getWildcardTopics("openWB/io/action/+/config")}},installedChargePoints:{get(){return this.getWildcardTopics("openWB/chargepoint/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}}},methods:{getIoDeviceName(o){return this.$store.state.mqtt["openWB/system/io/"+o+"/config"]?this.$store.state.mqtt["openWB/system/io/"+o+"/config"].name:"I/O-Gerät "+o},addIoDevice(){this.$emit("send-command",{command:"addIoDevice",data:{type:this.ioDeviceToAdd}})},removeIoDeviceModal(o,e){e.stopPropagation(),this.modalIoDeviceIndex=parseInt(o.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showIoDeviceDeleteModal=!0},removeIoDevice(o,e){this.showIoDeviceDeleteModal=!1,e=="confirm"&&this.$emit("send-command",{command:"removeIoDevice",data:{id:o}})},addIoAction(){this.$emit("send-command",{command:"addIoAction",data:{type:this.ioActionToAdd}})},removeIoActionModal(o,e){e.stopPropagation(),this.modalIoActionIndex=parseInt(o.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showIoActionDeleteModal=!0},removeIoAction(o,e){this.showIoActionDeleteModal=!1,e=="confirm"&&this.$emit("send-command",{command:"removeIoAction",data:{id:o}})},updateConfiguration(o,e){console.debug("updateConfiguration",o,e),this.updateState(o,e.value,e.object)}}},de={class:"ioConfig"},le={name:"ioConfigForm"},ce={key:0},pe={key:0};function me(o,e,i,b,l,n){const p=d("openwb-base-modal-dialog"),m=d("font-awesome-icon"),w=d("openwb-base-avatar"),h=d("openwb-base-text-input"),u=d("openwb-io-device-proxy"),O=d("openwb-base-card"),B=d("openwb-base-select-input"),V=d("openwb-io-action-proxy"),T=d("openwb-base-alert"),S=d("openwb-base-submit-buttons");return s(),g(I,null,[r(p,{show:l.showIoDeviceDeleteModal,title:"Modul löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=t=>n.removeIoDevice(l.modalIoDeviceIndex,t))},{default:a(()=>[c(' Wollen Sie das Ein-/Ausgangs-Gerät "'+f(n.getIoDeviceName(l.modalIoDeviceIndex))+'" (ID: '+f(l.modalIoDeviceIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),r(p,{show:l.showIoActionDeleteModal,title:"Aktion löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[1]||(e[1]=t=>n.removeIoAction(l.modalIoActionIndex,t))},{default:a(()=>[c(' Wollen Sie die Aktion "'+f(n.getIoDeviceName(l.modalIoActionIndex))+'" (ID: '+f(l.modalIoActionIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),D("div",de,[D("form",le,[r(O,{title:"Ein-/Ausgangs-Geräte"},{default:a(()=>[(s(!0),g(I,null,E(n.installedIoDevices,(t,y)=>(s(),_(O,{key:y,title:(t==null?void 0:t.name)+" (ID: "+(t==null?void 0:t.id)+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:a(v=>[v.collapsed?A("",!0):(s(),_(w,{key:0,class:"bg-danger clickable",onClick:x=>n.removeIoDeviceModal(y,x)},{default:a(()=>[r(m,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:a(()=>[r(h,{title:"Bezeichnung",subtype:"text","model-value":t.name,"onUpdate:modelValue":v=>o.updateState(y,v,"name")},null,8,["model-value","onUpdate:modelValue"]),r(h,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":o.$store.state.mqtt[y].type},null,8,["model-value"]),e[7]||(e[7]=D("hr",null,null,-1)),r(u,{"io-device":t,"onUpdate:configuration":v=>n.updateConfiguration(y,v)},null,8,["io-device","onUpdate:configuration"])]),_:2},1032,["title"]))),128)),Object.keys(n.installedIoDevices).length>0?(s(),g("hr",ce)):A("",!0),r(B,{title:"Verfügbare Geräte","not-selected":"Bitte auswählen",options:n.ioDeviceList,"model-value":l.ioDeviceToAdd,"add-button":!0,"onUpdate:modelValue":e[2]||(e[2]=t=>l.ioDeviceToAdd=t),"onInput:add":n.addIoDevice},{help:a(()=>e[8]||(e[8]=[c(" Bitte ein Ein-/Ausgangs-Modul auswählen, das hinzugefügt werden soll. ")])),_:1},8,["options","model-value","onInput:add"])]),_:1}),r(O,{title:"Ein-/Ausgangs-Aktionen"},{default:a(()=>[(s(!0),g(I,null,E(n.installedIoActions,(t,y)=>(s(),_(O,{key:y,title:(t==null?void 0:t.name)+" (ID: "+(t==null?void 0:t.id)+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:a(v=>[v.collapsed?A("",!0):(s(),_(w,{key:0,class:"bg-danger clickable",onClick:x=>n.removeIoActionModal(y,x)},{default:a(()=>[r(m,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:a(()=>[r(h,{title:"Bezeichnung",subtype:"text","model-value":t==null?void 0:t.name,"onUpdate:modelValue":v=>o.updateState(y,v,"name")},null,8,["model-value","onUpdate:modelValue"]),r(h,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":[t==null?void 0:t.group,t==null?void 0:t.type].join(" / ")},null,8,["model-value"]),e[9]||(e[9]=D("hr",null,null,-1)),t!==void 0?(s(),_(V,{key:0,"io-action":t,"io-devices":n.installedIoDevices,"installed-charge-points":n.installedChargePoints,"installed-components":n.installedComponents,"onUpdate:configuration":v=>n.updateConfiguration(y,v)},null,8,["io-action","io-devices","installed-charge-points","installed-components","onUpdate:configuration"])):A("",!0)]),_:2},1032,["title"]))),128)),Object.keys(n.installedIoActions).length>0?(s(),g("hr",pe)):A("",!0),Object.keys(n.installedIoDevices).length>0?(s(),_(B,{key:1,title:"Verfügbare Aktionen","not-selected":"Bitte auswählen",groups:n.ioActionList,"model-value":l.ioActionToAdd,"add-button":!0,"onUpdate:modelValue":e[3]||(e[3]=t=>l.ioActionToAdd=t),"onInput:add":n.addIoAction},{help:a(()=>e[10]||(e[10]=[c(" Bitte eine Ein-/Ausgangs-Aktion auswählen, die hinzugefügt werden soll. ")])),_:1},8,["groups","model-value","onInput:add"])):(s(),_(T,{key:2,subtype:"warning"},{default:a(()=>e[11]||(e[11]=[c(" Keine Ein-/Ausgangs-Geräte vorhanden!"),D("br",null,null,-1),c(" Bitte fügen Sie zuerst ein Ein-/Ausgangs-Gerät hinzu, bevor Sie Aktionen konfigurieren. ")])),_:1}))]),_:1}),r(S,{"form-name":"ioConfigForm",onSave:e[4]||(e[4]=t=>o.$emit("save")),onReset:e[5]||(e[5]=t=>o.$emit("reset")),onDefaults:e[6]||(e[6]=t=>o.$emit("defaults"))})])])],64)}const ge=C(ue,[["render",me],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/IoConfig.vue"]]),we=Object.freeze(Object.defineProperty({__proto__:null,default:ge},Symbol.toStringTag,{value:"Module"}));export{we as I,F as O,Z as a}; diff --git a/web/settings/assets/LegalSettings-0d86ce7f.js b/web/settings/assets/LegalSettings-0ab5ea05.js similarity index 83% rename from web/settings/assets/LegalSettings-0d86ce7f.js rename to web/settings/assets/LegalSettings-0ab5ea05.js index d06cfec3e4..47231b94ce 100644 --- a/web/settings/assets/LegalSettings-0d86ce7f.js +++ b/web/settings/assets/LegalSettings-0ab5ea05.js @@ -1 +1 @@ -import{l as _,ad as k,F as v}from"./vendor-fortawesome-9d7cfdfb.js";import{C as y}from"./index-b236cee5.js";import{_ as B,u as n,l as i,m as h,A as a,G as o,E as r,x as m,B as d,z as p}from"./vendor-ad7c30fd.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";_.add(k);const z={name:"OpenwbDataProtectionView",components:{FontAwesomeIcon:v},mixins:[y],emits:["sendCommand","save"],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},S={class:"dataProtection"},$={name:"dataProtectionForm"},C={class:"row justify-content-center"},V={class:"col-md-4 d-flex justify-content-center"};function W(t,e,N,x,A,b){const u=n("openwb-base-button-group-input"),c=n("font-awesome-icon"),g=n("openwb-base-click-button"),l=n("openwb-base-alert"),w=n("openwb-base-submit-buttons"),f=n("openwb-base-card");return i(),h("div",S,[a("form",$,[o(f,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:r(()=>[o(w,{"form-name":"dataProtectionForm","hide-reset":!0,"hide-defaults":!0,onSave:e[3]||(e[3]=s=>t.$emit("save"))})]),default:r(()=>[e[7]||(e[7]=a("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1)),e[8]||(e[8]=a("hr",null,null,-1)),o(u,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateState("openWB/system/usage_terms_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?p("",!0):(i(),m(l,{key:0,subtype:"danger",class:"mb-1"},{default:r(()=>[e[5]||(e[5]=d(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. ")),a("div",C,[a("div",V,[o(g,{class:"btn-danger",onButtonClicked:e[1]||(e[1]=s=>b.sendSystemCommand("systemShutdown"))},{default:r(()=>[e[4]||(e[4]=d(" Nicht akzeptieren und ausschalten ")),o(c,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),_:1})),o(u,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":e[2]||(e[2]=s=>t.updateState("openWB/system/dataprotection_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?p("",!0):(i(),m(l,{key:1,subtype:"warning"},{default:r(()=>e[6]||(e[6]=[d(" Wenn Du nicht einwilligst, wird eine ggf. konfigurierte Cloud-Anbindung gelöscht. Die openWB arbeitet autark wie gewohnt weiter. Fernzugriff und Remote-Support sind dann nicht mehr möglich! ")])),_:1}))]),_:1})])])}const L=B(z,[["render",W],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{L as default}; +import{l as _,a9 as k,F as y}from"./vendor-fortawesome-433470db.js";import{C as v}from"./index-cc8f65ba.js";import{_ as B,u as n,l as i,m as h,x as a,G as o,E as r,z as m,y as d,B as p}from"./vendor-ea36120f.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";_.add(k);const z={name:"OpenwbDataProtectionView",components:{FontAwesomeIcon:y},mixins:[v],emits:["sendCommand","save"],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},S={class:"dataProtection"},$={name:"dataProtectionForm"},C={class:"row justify-content-center"},V={class:"col-md-4 d-flex justify-content-center"};function W(t,e,N,x,A,b){const u=n("openwb-base-button-group-input"),c=n("font-awesome-icon"),g=n("openwb-base-click-button"),l=n("openwb-base-alert"),w=n("openwb-base-submit-buttons"),f=n("openwb-base-card");return i(),h("div",S,[a("form",$,[o(f,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:r(()=>[o(w,{"form-name":"dataProtectionForm","hide-reset":!0,"hide-defaults":!0,onSave:e[3]||(e[3]=s=>t.$emit("save"))})]),default:r(()=>[e[7]||(e[7]=a("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1)),e[8]||(e[8]=a("hr",null,null,-1)),o(u,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateState("openWB/system/usage_terms_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?p("",!0):(i(),m(l,{key:0,subtype:"danger",class:"mb-1"},{default:r(()=>[e[5]||(e[5]=d(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. ")),a("div",C,[a("div",V,[o(g,{class:"btn-danger",onButtonClicked:e[1]||(e[1]=s=>b.sendSystemCommand("systemShutdown"))},{default:r(()=>[e[4]||(e[4]=d(" Nicht akzeptieren und ausschalten ")),o(c,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),_:1})),o(u,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":e[2]||(e[2]=s=>t.updateState("openWB/system/dataprotection_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?p("",!0):(i(),m(l,{key:1,subtype:"warning"},{default:r(()=>e[6]||(e[6]=[d(" Wenn Du nicht einwilligst, wird eine ggf. konfigurierte Cloud-Anbindung gelöscht. Die openWB arbeitet autark wie gewohnt weiter. Fernzugriff und Remote-Support sind dann nicht mehr möglich! ")])),_:1}))]),_:1})])])}const L=B(z,[["render",W],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{L as default}; diff --git a/web/settings/assets/LoadManagementConfig-d6d290f9.js b/web/settings/assets/LoadManagementConfig-c15dfafe.js similarity index 93% rename from web/settings/assets/LoadManagementConfig-d6d290f9.js rename to web/settings/assets/LoadManagementConfig-c15dfafe.js index c0ee1906e3..ec496d6ee5 100644 --- a/web/settings/assets/LoadManagementConfig-d6d290f9.js +++ b/web/settings/assets/LoadManagementConfig-c15dfafe.js @@ -1 +1 @@ -import{l as y,Y as C,X as L,F as x}from"./vendor-fortawesome-9d7cfdfb.js";import{C as V}from"./index-b236cee5.js";import{S as $}from"./OpenwbSortableList-13147a4b.js";import{_ as q,u as l,l as u,m,A as d,G as s,E as o,B as i,N as w,M as v,x as W,F as _}from"./vendor-ad7c30fd.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";y.add(C,L);const Z={name:"OpenwbLoadManagementConfigView",components:{SortableList:$,FontAwesomeIcon:x},mixins:[V],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/home_consumption_source_id","openWB/counter/config/consider_less_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_power_errorcase","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},counterConfigs:{get(){let t=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(t).filter(e=>{var n;return(n=t[e])==null?void 0:n.type.includes("counter")}).reduce((e,n)=>({...e,[n]:t[n]}),{})}},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e==null?void 0:e.type,"counter")&&t.push({value:e.id,text:e.name});return t.sort((e,n)=>e.text==n.text?0:e.text>n.text?1:-1)},inverterConfigs:{get(){let t=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(t).filter(e=>{var n;return(n=t[e])==null?void 0:n.type.includes("inverter")}).reduce((e,n)=>({...e,[n]:t[n]}),{})}},hierarchyLabels:{get(){let t={};for(const e of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))t={...t,...this.getElementTreeNames(e)};return t}},getHcSourceIdOptions(){let t=[{value:null,text:"von openWB berechnen (in 99% der Fälle die richtige Einstellung)"}],e=[{label:"Eingerichtete Zähler-Komponenten",options:[...this.counterOptions]}];return{options:t,groups:e}}},methods:{getElementTreeNames(t){let e={};if(t.type=="cp"){let n=this.getChargePoint(t.id);n&&(e[t.id]=n.name)}else{let n=this.getComponent(t.id);n&&(e[t.id]=n.name)}return t.children.forEach(n=>{e={...e,...this.getElementTreeNames(n)}}),e},getComponent(t){let e;return Object.keys(this.$store.state.mqtt).forEach(n=>{n.match("^openWB/system/device/[0-9]+/component/"+t+"/config$")&&(e=this.$store.state.mqtt[n])}),e},getChargePoint(t){let e;return Object.keys(this.$store.state.mqtt).forEach(n=>{n.match("^openWB/chargepoint/"+t+"/config$")&&(e=this.$store.state.mqtt[n])}),e},isComponentType(t,e){return t==null?void 0:t.split("_").includes(e)}}},M={class:"loadManagementConfig"},A={name:"loadManagementConfigForm"},U={key:0},E={key:1},F={key:0},D={key:1};function O(t,e,n,P,H,g){const h=l("openwb-base-alert"),k=l("openwb-base-button-group-input"),B=l("openwb-base-select-input"),f=l("openwb-base-heading"),b=l("font-awesome-icon"),p=l("openwb-base-number-input"),c=l("openwb-base-card"),S=l("sortable-list"),z=l("openwb-base-submit-buttons");return u(),m("div",M,[d("form",A,[s(c,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",U,[s(h,{subtype:"info"},{default:o(()=>e[6]||(e[6]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(u(),m("div",E,[s(k,{title:"Fahrzeuge, die nicht mit Sollstrom laden",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/counter/config/consider_less_charging"],"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateState("openWB/counter/config/consider_less_charging",r))},{help:o(()=>e[7]||(e[7]=[d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, im Lastmanagement berücksichtigt werden, wird für diese der Sollstrom reserviert. Dadurch können bei Eingreifen des Lastmanagements andere Fahrzeuge möglicherweise nur mit reduzierter Stromstärke laden und der reservierte Strom wird nicht genutzt. Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom. ",-1),d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert bzw. es wird nur der tatsächlich genutzte Strom im Lastmanagement berücksichtigt. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden. Wenn die maximalen Lastmanagement-Grenzen fast erreicht sind und die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, kann es zu einer kurzzeitigen Überschreitung der Lastmanagement-Grenzen kommen, bis im nächsten Zyklus die Stromstärken aller Ladepunkte an die neue Situation angepasst wurden. Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ",-1)])),_:1},8,["model-value"]),s(B,{title:"Hausverbrauch",options:g.getHcSourceIdOptions.options,groups:g.getHcSourceIdOptions.groups,"model-value":t.$store.state.mqtt["openWB/counter/config/home_consumption_source_id"],"onUpdate:modelValue":e[1]||(e[1]=r=>t.updateState("openWB/counter/config/home_consumption_source_id",r))},{help:o(()=>e[8]||(e[8]=[i(" Meist ist der Zähler am EVU-Punkt installiert, dann muss hier 'von openWB berechnen' ausgewählt werden. Wenn der Zähler im Hausverbrauchszweig installiert ist, die Struktur wie im "),d("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"}," Wiki ",-1),i(" beschrieben anordnen und hier den Hausverbrauchszähler auswählen. Dann wird dieser Wert abzüglich der Ladeleistung als Hausverbrauch erfasst. ")])),_:1},8,["options","groups","model-value"]),s(f,null,{default:o(()=>e[9]||(e[9]=[i(" Vorhandene Zählermodule ")])),_:1}),s(h,{subtype:"info"},{default:o(()=>e[10]||(e[10]=[i(" Die maximale Leistung wird nur für den EVU-Zähler berücksichtigt. Bei Zwischenzählern begrenzt das Lastmanagement rein anhand der maximalen Phasenströme."),d("br",null,null,-1),i(" Wenn ein Zähler nicht auslesbar ist, wird weiterhin versucht, diesen auszulesen und nach 60s die angenommene Leistung im Fehlerfall verwendet, die unten für jeden Zähler eingestellt wird, um eine Überlast zu vermeiden. Die angenommene Leistung wird gleichmäßig auf die Phasen verteilt."),d("br",null,null,-1),i(" Überlicherweise sind Hausanschlüsse mit 24kW und 3*35A bzw. 43kW und 3*63A abgesichert. ")])),_:1}),(u(!0),m(w,null,v(g.counterConfigs,r=>(u(),W(c,{key:r.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:o(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),i(" "+_(r.name),1)]),default:o(()=>[s(p,{title:"Maximale Leistung",min:1,step:.1,required:"",unit:"kW","model-value":t.$store.state.mqtt["openWB/counter/"+r.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+r.id+"/config/max_total_power",a*1e3)},{help:o(()=>[...e[11]||(e[11]=[i(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L1",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+r.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+r.id+"/config/max_currents",a,"0")},{help:o(()=>[...e[12]||(e[12]=[i(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L2",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+r.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+r.id+"/config/max_currents",a,"1")},{help:o(()=>[...e[13]||(e[13]=[i(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L3",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+r.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+r.id+"/config/max_currents",a,"2")},{help:o(()=>[...e[14]||(e[14]=[i(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximale Leistung im Fehlerfall",min:0,step:.1,unit:"kW","model-value":t.$store.state.mqtt["openWB/counter/"+r.id+"/config/max_power_errorcase"]/1e3,"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+r.id+"/config/max_power_errorcase",a*1e3)},{help:o(()=>[...e[15]||(e[15]=[i(" Angenommen Leistung für diesen (Zwischen-)Zähler, falls vom Zähler keine Werte abgefragt werden können. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:o(()=>e[16]||(e[16]=[i(" Vorhandene Wechselrichtermodule ")])),_:1}),(u(!0),m(w,null,v(g.inverterConfigs,r=>(u(),W(c,{key:r.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:o(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),i(" "+_(r.name),1)]),default:o(()=>[s(p,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW",required:"","model-value":t.$store.state.mqtt["openWB/pv/"+r.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>t.updateState("openWB/pv/"+r.id+"/config/max_ac_out",a*1e3)},{help:o(()=>[...e[17]||(e[17]=[i(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(c,{title:"Struktur",collapsible:!0,collapsed:!0},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",F,[s(h,{subtype:"info"},{default:o(()=>e[18]||(e[18]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(u(),m("div",D,[s(S,{title:"Anordnung der Komponenten","model-value":t.$store.state.mqtt["openWB/counter/get/hierarchy"],labels:g.hierarchyLabels,"onUpdate:modelValue":e[2]||(e[2]=r=>t.updateState("openWB/counter/get/hierarchy",r))},{help:o(()=>e[19]||(e[19]=[i(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),d("br",null,null,-1),i(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),d("br",null,null,-1),i(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),d("br",null,null,-1),i(" Bei DC-gekoppelten Speichern sind diese hinter dem zugehörigen Wechselrichter zu platzieren, damit die Abhängigkeit in der Regelung berücksichtigt werden kann. ")])),_:1},8,["model-value","labels"])]))]),_:1}),s(z,{"form-name":"loadManagementConfigForm",onSave:e[3]||(e[3]=r=>t.$emit("save")),onReset:e[4]||(e[4]=r=>t.$emit("reset")),onDefaults:e[5]||(e[5]=r=>t.$emit("defaults"))})])])}const Y=q(Z,[["render",O],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{Y as default}; +import{l as y,U as C,T as L,F as x}from"./vendor-fortawesome-433470db.js";import{C as V}from"./index-cc8f65ba.js";import{S as $}from"./OpenwbSortableList-bde71f66.js";import{_ as q,u as l,l as u,m,x as d,G as s,E as o,y as i,N as w,M as v,z as W,F as _}from"./vendor-ea36120f.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";y.add(C,L);const Z={name:"OpenwbLoadManagementConfigView",components:{SortableList:$,FontAwesomeIcon:x},mixins:[V],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/home_consumption_source_id","openWB/counter/config/consider_less_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_power_errorcase","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},counterConfigs:{get(){let t=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(t).filter(e=>{var n;return(n=t[e])==null?void 0:n.type.includes("counter")}).reduce((e,n)=>({...e,[n]:t[n]}),{})}},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e==null?void 0:e.type,"counter")&&t.push({value:e.id,text:e.name});return t.sort((e,n)=>e.text==n.text?0:e.text>n.text?1:-1)},inverterConfigs:{get(){let t=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(t).filter(e=>{var n;return(n=t[e])==null?void 0:n.type.includes("inverter")}).reduce((e,n)=>({...e,[n]:t[n]}),{})}},hierarchyLabels:{get(){let t={};for(const e of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))t={...t,...this.getElementTreeNames(e)};return t}},getHcSourceIdOptions(){let t=[{value:null,text:"von openWB berechnen (in 99% der Fälle die richtige Einstellung)"}],e=[{label:"Eingerichtete Zähler-Komponenten",options:[...this.counterOptions]}];return{options:t,groups:e}}},methods:{getElementTreeNames(t){let e={};if(t.type=="cp"){let n=this.getChargePoint(t.id);n&&(e[t.id]=n.name)}else{let n=this.getComponent(t.id);n&&(e[t.id]=n.name)}return t.children.forEach(n=>{e={...e,...this.getElementTreeNames(n)}}),e},getComponent(t){let e;return Object.keys(this.$store.state.mqtt).forEach(n=>{n.match("^openWB/system/device/[0-9]+/component/"+t+"/config$")&&(e=this.$store.state.mqtt[n])}),e},getChargePoint(t){let e;return Object.keys(this.$store.state.mqtt).forEach(n=>{n.match("^openWB/chargepoint/"+t+"/config$")&&(e=this.$store.state.mqtt[n])}),e},isComponentType(t,e){return t==null?void 0:t.split("_").includes(e)}}},M={class:"loadManagementConfig"},U={name:"loadManagementConfigForm"},A={key:0},E={key:1},F={key:0},D={key:1};function O(t,e,n,P,H,g){const h=l("openwb-base-alert"),k=l("openwb-base-button-group-input"),B=l("openwb-base-select-input"),f=l("openwb-base-heading"),b=l("font-awesome-icon"),p=l("openwb-base-number-input"),c=l("openwb-base-card"),S=l("sortable-list"),z=l("openwb-base-submit-buttons");return u(),m("div",M,[d("form",U,[s(c,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",A,[s(h,{subtype:"info"},{default:o(()=>e[6]||(e[6]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(u(),m("div",E,[s(k,{title:"Fahrzeuge, die nicht mit Sollstrom laden",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/counter/config/consider_less_charging"],"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateState("openWB/counter/config/consider_less_charging",r))},{help:o(()=>e[7]||(e[7]=[d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, im Lastmanagement berücksichtigt werden, wird für diese der Sollstrom reserviert. Dadurch können bei Eingreifen des Lastmanagements andere Fahrzeuge möglicherweise nur mit reduzierter Stromstärke laden und der reservierte Strom wird nicht genutzt. Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom. ",-1),d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert bzw. es wird nur der tatsächlich genutzte Strom im Lastmanagement berücksichtigt. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden. Wenn die maximalen Lastmanagement-Grenzen fast erreicht sind und die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, kann es zu einer kurzzeitigen Überschreitung der Lastmanagement-Grenzen kommen, bis im nächsten Zyklus die Stromstärken aller Ladepunkte an die neue Situation angepasst wurden. Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ",-1)])),_:1},8,["model-value"]),s(B,{title:"Hausverbrauch",options:g.getHcSourceIdOptions.options,groups:g.getHcSourceIdOptions.groups,"model-value":t.$store.state.mqtt["openWB/counter/config/home_consumption_source_id"],"onUpdate:modelValue":e[1]||(e[1]=r=>t.updateState("openWB/counter/config/home_consumption_source_id",r))},{help:o(()=>e[8]||(e[8]=[i(" Meist ist der Zähler am EVU-Punkt installiert, dann muss hier 'von openWB berechnen' ausgewählt werden. Wenn der Zähler im Hausverbrauchszweig installiert ist, die Struktur wie im "),d("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"}," Wiki ",-1),i(" beschrieben anordnen und hier den Hausverbrauchszähler auswählen. Dann wird dieser Wert abzüglich der Ladeleistung als Hausverbrauch erfasst. ")])),_:1},8,["options","groups","model-value"]),s(f,null,{default:o(()=>e[9]||(e[9]=[i(" Vorhandene Zählermodule ")])),_:1}),s(h,{subtype:"info"},{default:o(()=>e[10]||(e[10]=[i(" Die maximale Leistung wird nur für den EVU-Zähler berücksichtigt. Bei Zwischenzählern begrenzt das Lastmanagement rein anhand der maximalen Phasenströme."),d("br",null,null,-1),i(" Wenn ein Zähler nicht auslesbar ist, wird weiterhin versucht, diesen auszulesen und nach 60s die angenommene Leistung im Fehlerfall verwendet, die unten für jeden Zähler eingestellt wird, um eine Überlast zu vermeiden. Die angenommene Leistung wird gleichmäßig auf die Phasen verteilt."),d("br",null,null,-1),i(" Überlicherweise sind Hausanschlüsse mit 24kW und 3*35A bzw. 43kW und 3*63A abgesichert. ")])),_:1}),(u(!0),m(w,null,v(g.counterConfigs,r=>(u(),W(c,{key:r.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:o(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),i(" "+_(r.name),1)]),default:o(()=>[s(p,{title:"Maximale Leistung",min:1,step:.1,required:"",unit:"kW","model-value":t.$store.state.mqtt["openWB/counter/"+r.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+r.id+"/config/max_total_power",a*1e3)},{help:o(()=>[...e[11]||(e[11]=[i(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L1",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+r.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+r.id+"/config/max_currents",a,"0")},{help:o(()=>[...e[12]||(e[12]=[i(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L2",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+r.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+r.id+"/config/max_currents",a,"1")},{help:o(()=>[...e[13]||(e[13]=[i(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L3",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+r.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+r.id+"/config/max_currents",a,"2")},{help:o(()=>[...e[14]||(e[14]=[i(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximale Leistung im Fehlerfall",min:0,step:.1,unit:"kW","model-value":t.$store.state.mqtt["openWB/counter/"+r.id+"/config/max_power_errorcase"]/1e3,"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+r.id+"/config/max_power_errorcase",a*1e3)},{help:o(()=>[...e[15]||(e[15]=[i(" Angenommen Leistung für diesen (Zwischen-)Zähler, falls vom Zähler keine Werte abgefragt werden können. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:o(()=>e[16]||(e[16]=[i(" Vorhandene Wechselrichtermodule ")])),_:1}),(u(!0),m(w,null,v(g.inverterConfigs,r=>(u(),W(c,{key:r.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:o(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),i(" "+_(r.name),1)]),default:o(()=>[s(p,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW",required:"","model-value":t.$store.state.mqtt["openWB/pv/"+r.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>t.updateState("openWB/pv/"+r.id+"/config/max_ac_out",a*1e3)},{help:o(()=>[...e[17]||(e[17]=[i(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(c,{title:"Struktur",collapsible:!0,collapsed:!0},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",F,[s(h,{subtype:"info"},{default:o(()=>e[18]||(e[18]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(u(),m("div",D,[s(S,{title:"Anordnung der Komponenten","model-value":t.$store.state.mqtt["openWB/counter/get/hierarchy"],labels:g.hierarchyLabels,"onUpdate:modelValue":e[2]||(e[2]=r=>t.updateState("openWB/counter/get/hierarchy",r))},{help:o(()=>e[19]||(e[19]=[i(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),d("br",null,null,-1),i(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),d("br",null,null,-1),i(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),d("br",null,null,-1),i(" Bei DC-gekoppelten Speichern sind diese hinter dem zugehörigen Wechselrichter zu platzieren, damit die Abhängigkeit in der Regelung berücksichtigt werden kann. ")])),_:1},8,["model-value","labels"])]))]),_:1}),s(z,{"form-name":"loadManagementConfigForm",onSave:e[3]||(e[3]=r=>t.$emit("save")),onReset:e[4]||(e[4]=r=>t.$emit("reset")),onDefaults:e[5]||(e[5]=r=>t.$emit("defaults"))})])])}const Q=q(Z,[["render",O],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{Q as default}; diff --git a/web/settings/assets/MqttBridgeConfig-80ff6fb3.js b/web/settings/assets/MqttBridgeConfig-74fa4482.js similarity index 90% rename from web/settings/assets/MqttBridgeConfig-80ff6fb3.js rename to web/settings/assets/MqttBridgeConfig-74fa4482.js index 49dc206652..1e2abd60e6 100644 --- a/web/settings/assets/MqttBridgeConfig-80ff6fb3.js +++ b/web/settings/assets/MqttBridgeConfig-74fa4482.js @@ -1 +1 @@ -import{l as x,d as C,a9 as A,F as q}from"./vendor-fortawesome-9d7cfdfb.js";import{C as z}from"./index-b236cee5.js";import{_ as D,u,l as m,m as b,G as o,E as a,A as f,N as M,B as s,F as E,x as k,z as T,M as W}from"./vendor-ad7c30fd.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";x.add(C,A);const I={name:"OpenwbMqttBridgeConfigurationView",components:{FontAwesomeIcon:q},mixins:[z],emits:["sendCommand","save","reset"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let t=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,v]of Object.entries(t))v.remote.is_openwb_cloud&&delete t[e];return t}}},methods:{addMqttBridge(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(t){return parseInt(t.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(t,e){e.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(t),this.showMqttBridgeModal=!0},removeMqttBridge(t,e){this.showMqttBridgeModal=!1,e=="confirm"&&this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:t}})},getMqttBridgeName(t){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+t]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+t].name:t}}},P={class:"mqttBridgeConfiguration"},Q={key:0},Z={key:1},y=["name"];function N(t,e,v,F,g,i){const U=u("openwb-base-modal-dialog"),c=u("openwb-base-alert"),h=u("font-awesome-icon"),w=u("openwb-base-avatar"),p=u("openwb-base-text-input"),d=u("openwb-base-button-group-input"),V=u("openwb-base-heading"),B=u("openwb-base-number-input"),S=u("openwb-base-submit-buttons"),_=u("openwb-base-card");return m(),b(M,null,[o(U,{show:g.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=r=>i.removeMqttBridge(g.modalMqttBridgeIndex,r))},{default:a(()=>[s(' Wollen Sie die MQTT-Brücke "'+E(i.getMqttBridgeName(g.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),f("div",P,[o(c,{subtype:"danger"},{default:a(()=>e[1]||(e[1]=[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),f("br",null,null,-1),s(' Es wird dringend empfohlen, dies nur für nicht-öffentliche MQTT-Server unter Verwendung starker Transport-Verschlüsselung (TLS) mit persönlichem Login und strenger Zugriffskontrolle (zumindest für die MQTT-Themen unterhalb von "Entfernter Präfix") zu aktivieren! ')])),_:1}),o(_,{title:"Konfigurierte MQTT-Brücken"},{actions:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(m(),k(w,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:a(()=>[o(h,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):T("",!0)]),default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(m(),b("div",Q,[o(c,{subtype:"info"},{default:a(()=>e[2]||(e[2]=[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(m(),b("div",Z,[Object.keys(i.configuredMqttBridges).length===0?(m(),k(c,{key:0,subtype:"info"},{default:a(()=>e[3]||(e[3]=[s(" Es wurde noch keine MQTT-Brücke konfiguriert. ")])),_:1})):T("",!0),(m(!0),b(M,null,W(i.configuredMqttBridges,(r,l)=>(m(),b("form",{key:l,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(l)},[o(_,{title:r.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:a(()=>[o(w,{class:"bg-danger clickable",onClick:n=>i.removeMqttBridgeModal(l,n)},{default:a(()=>[o(h,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:a(()=>[o(S,{"form-name":"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(l),"hide-defaults":!0,onSave:n=>t.$emit("save",[l]),onReset:n=>t.$emit("reset",[l])},null,8,["form-name","onSave","onReset"])]),default:a(()=>[o(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":r.name,"onUpdate:modelValue":n=>t.updateState(l,n,"name")},{help:a(()=>[...e[4]||(e[4]=[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":r.active,"onUpdate:modelValue":n=>t.updateState(l,n,"active")},null,8,["model-value","onUpdate:modelValue"]),e[14]||(e[14]=f("hr",null,null,-1)),o(V,null,{default:a(()=>[...e[5]||(e[5]=[s(" Einstellungen zur Verbindung ")])]),_:1}),o(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":r.remote.host,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),o(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":r.remote.port,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":r.remote.username,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Passwort",subtype:"password",required:"","model-value":r.remote.password,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":r.remote.prefix,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.prefix")},{help:a(()=>[...e[6]||(e[6]=[s(' Das Präfix darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. Optional kann mit einem Schrägstrich "/" eine Topic-Struktur abgebildet werden. Am Ende des Präfixes muss ein Schrägstrich "/" stehen. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":r.remote.client_id,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.client_id")},{help:a(()=>[...e[7]||(e[7]=[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":r.remote.protocol,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),o(d,{title:"TLS Version",buttons:[{buttonValue:"auto",text:"Automatisch",class:"btn-outline-success"},{buttonValue:"tlsv1.0",text:"v1.0",class:"btn-outline-warning"},{buttonValue:"tlsv1.1",text:"v1.1",class:"btn-outline-warning"},{buttonValue:"tlsv1.2",text:"v1.2"}],"model-value":r.remote.tls_version,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.tls_version")},{help:a(()=>[...e[8]||(e[8]=[s(' In der Einstellung "Automatisch" wird die Version zwischen Client und Server ausgehandelt. Wenn erforderlich, kann eine spezielle Version erzwungen werden. Versionen kleiner 1.2 gelten als veraltet und sollten nicht mehr verwendet werden. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.remote.try_private,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.try_private")},{help:a(()=>[...e[9]||(e[9]=[s(" Aktiviert eine proprietäre Protokoll-Erweiterung des Mosquitto Brokers, welche dem entfernten Broker signalisiert, dass es sich um eine MQTT Brücke handelt. Ergibt bessere Leistung mit Mosquitto-Brokern, ist jedoch inkompatibel mit vielen anderen MQTT-Brokern. Daher bitte nur aktivieren, wenn der Ziel-Broker sicher ein Mosquitto-Broker ist. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[15]||(e[15]=f("hr",null,null,-1)),o(V,null,{default:a(()=>[...e[10]||(e[10]=[s(" Datenübertragung ")])]),_:1}),o(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.status,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.status")},{help:a(()=>[...e[11]||(e[11]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Datenserien für Diagramme",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.graph,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.graph")},{help:a(()=>[...e[12]||(e[12]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.configuration,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.configuration")},{help:a(()=>[...e[13]||(e[13]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,y))),128))]))]),_:1})])],64)}const J=D(I,[["render",N],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{J as default}; +import{l as x,d as C,a6 as A,F as q}from"./vendor-fortawesome-433470db.js";import{C as z}from"./index-cc8f65ba.js";import{_ as D,u,l as m,m as b,G as o,E as a,x as f,N as M,y as s,F as E,z as k,B as T,M as W}from"./vendor-ea36120f.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";x.add(C,A);const y={name:"OpenwbMqttBridgeConfigurationView",components:{FontAwesomeIcon:q},mixins:[z],emits:["sendCommand","save","reset"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let t=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,v]of Object.entries(t))v.remote.is_openwb_cloud&&delete t[e];return t}}},methods:{addMqttBridge(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(t){return parseInt(t.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(t,e){e.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(t),this.showMqttBridgeModal=!0},removeMqttBridge(t,e){this.showMqttBridgeModal=!1,e=="confirm"&&this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:t}})},getMqttBridgeName(t){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+t]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+t].name:t}}},I={class:"mqttBridgeConfiguration"},P={key:0},Q={key:1},Z=["name"];function N(t,e,v,F,g,i){const U=u("openwb-base-modal-dialog"),c=u("openwb-base-alert"),h=u("font-awesome-icon"),w=u("openwb-base-avatar"),p=u("openwb-base-text-input"),d=u("openwb-base-button-group-input"),V=u("openwb-base-heading"),B=u("openwb-base-number-input"),S=u("openwb-base-submit-buttons"),_=u("openwb-base-card");return m(),b(M,null,[o(U,{show:g.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=r=>i.removeMqttBridge(g.modalMqttBridgeIndex,r))},{default:a(()=>[s(' Wollen Sie die MQTT-Brücke "'+E(i.getMqttBridgeName(g.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),f("div",I,[o(c,{subtype:"danger"},{default:a(()=>e[1]||(e[1]=[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),f("br",null,null,-1),s(' Es wird dringend empfohlen, dies nur für nicht-öffentliche MQTT-Server unter Verwendung starker Transport-Verschlüsselung (TLS) mit persönlichem Login und strenger Zugriffskontrolle (zumindest für die MQTT-Themen unterhalb von "Entfernter Präfix") zu aktivieren! ')])),_:1}),o(_,{title:"Konfigurierte MQTT-Brücken"},{actions:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(m(),k(w,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:a(()=>[o(h,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):T("",!0)]),default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(m(),b("div",P,[o(c,{subtype:"info"},{default:a(()=>e[2]||(e[2]=[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(m(),b("div",Q,[Object.keys(i.configuredMqttBridges).length===0?(m(),k(c,{key:0,subtype:"info"},{default:a(()=>e[3]||(e[3]=[s(" Es wurde noch keine MQTT-Brücke konfiguriert. ")])),_:1})):T("",!0),(m(!0),b(M,null,W(i.configuredMqttBridges,(r,l)=>(m(),b("form",{key:l,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(l)},[o(_,{title:r.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:a(()=>[o(w,{class:"bg-danger clickable",onClick:n=>i.removeMqttBridgeModal(l,n)},{default:a(()=>[o(h,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:a(()=>[o(S,{"form-name":"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(l),"hide-defaults":!0,onSave:n=>t.$emit("save",[l]),onReset:n=>t.$emit("reset",[l])},null,8,["form-name","onSave","onReset"])]),default:a(()=>[o(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":r.name,"onUpdate:modelValue":n=>t.updateState(l,n,"name")},{help:a(()=>[...e[4]||(e[4]=[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":r.active,"onUpdate:modelValue":n=>t.updateState(l,n,"active")},null,8,["model-value","onUpdate:modelValue"]),e[14]||(e[14]=f("hr",null,null,-1)),o(V,null,{default:a(()=>[...e[5]||(e[5]=[s(" Einstellungen zur Verbindung ")])]),_:1}),o(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":r.remote.host,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),o(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":r.remote.port,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":r.remote.username,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Passwort",subtype:"password",required:"","model-value":r.remote.password,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":r.remote.prefix,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.prefix")},{help:a(()=>[...e[6]||(e[6]=[s(' Das Präfix darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. Optional kann mit einem Schrägstrich "/" eine Topic-Struktur abgebildet werden. Am Ende des Präfixes muss ein Schrägstrich "/" stehen. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":r.remote.client_id,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.client_id")},{help:a(()=>[...e[7]||(e[7]=[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":r.remote.protocol,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),o(d,{title:"TLS Version",buttons:[{buttonValue:"auto",text:"Automatisch",class:"btn-outline-success"},{buttonValue:"tlsv1.0",text:"v1.0",class:"btn-outline-warning"},{buttonValue:"tlsv1.1",text:"v1.1",class:"btn-outline-warning"},{buttonValue:"tlsv1.2",text:"v1.2"}],"model-value":r.remote.tls_version,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.tls_version")},{help:a(()=>[...e[8]||(e[8]=[s(' In der Einstellung "Automatisch" wird die Version zwischen Client und Server ausgehandelt. Wenn erforderlich, kann eine spezielle Version erzwungen werden. Versionen kleiner 1.2 gelten als veraltet und sollten nicht mehr verwendet werden. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.remote.try_private,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.try_private")},{help:a(()=>[...e[9]||(e[9]=[s(" Aktiviert eine proprietäre Protokoll-Erweiterung des Mosquitto Brokers, welche dem entfernten Broker signalisiert, dass es sich um eine MQTT Brücke handelt. Ergibt bessere Leistung mit Mosquitto-Brokern, ist jedoch inkompatibel mit vielen anderen MQTT-Brokern. Daher bitte nur aktivieren, wenn der Ziel-Broker sicher ein Mosquitto-Broker ist. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[15]||(e[15]=f("hr",null,null,-1)),o(V,null,{default:a(()=>[...e[10]||(e[10]=[s(" Datenübertragung ")])]),_:1}),o(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.status,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.status")},{help:a(()=>[...e[11]||(e[11]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Datenserien für Diagramme",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.graph,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.graph")},{help:a(()=>[...e[12]||(e[12]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.configuration,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.configuration")},{help:a(()=>[...e[13]||(e[13]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,Z))),128))]))]),_:1})])],64)}const J=D(y,[["render",N],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{J as default}; diff --git a/web/settings/assets/OpenwbIoPattern-278f5a90.js b/web/settings/assets/OpenwbIoPattern-278f5a90.js deleted file mode 100644 index e0a941da2c..0000000000 --- a/web/settings/assets/OpenwbIoPattern-278f5a90.js +++ /dev/null @@ -1 +0,0 @@ -import{l as v,m as T,n as M,o as D,p as A,a9 as O,d as q,N as z,f as E,a as I,F as y}from"./vendor-fortawesome-9d7cfdfb.js";import{_ as N,u as _,l as a,m as l,A as r,z as c,N as m,M as p,F as w,G as d,E as P,q as k,y as f,K as j,p as B,B as V}from"./vendor-ad7c30fd.js";v.add(T,M,D,A,O,q,z,E,I);const b={undefined:{value:void 0,icon:["fas","question"],iconClass:"text-secondary",title:"Nicht relevant",nextValue:!0},true:{value:!0,icon:["fas","square"],iconClass:"",title:"Geschlossen",nextValue:!1},false:{value:!1,icon:["far","square"],iconClass:"",title:"Offen",nextValue:void 0}},S={name:"IoActionInputPattern",components:{FontAwesomeIcon:y},inheritAttrs:!1,props:{digitalInputs:{type:Object,required:!0},modelValue:{type:Array,required:!0},enableAddDelete:{type:Boolean,default:!0},minPatterns:{type:Number,default:1},maxPatterns:{type:Number,default:10}},emits:["update:modelValue"],data(){return{showTestPattern:!1,testPattern:{...this.digitalInputs}}},computed:{value:{get(){return this.modelValue},set(s){this.$emit("update:modelValue",s)}},numInputs(){return Object.keys(this.digitalInputs).length},addPatternDisabled(){return this.value.length>=this.maxPatterns},addPatternTooltip(){return this.addPatternDisabled?this.maxPatterns===1?"Es kann maximal ein Muster definiert werden":`Es können maximal ${this.maxPatterns} Muster definiert werden`:"Muster hinzufügen"},deletePatternDisabled(){return this.value.length<=this.minPatterns},deletePatternTooltip(){return this.deletePatternDisabled?this.minPatterns===1?"Es muss mindestens ein Muster definiert sein":`Es müssen mindestens ${this.minPatterns} Muster definiert sein`:"Muster löschen"}},watch:{digitalInputs(){this.testPattern={...this.digitalInputs}}},mounted(){for(;this.value.lengththis.testPattern[e]===void 0?!0:this.value[s].input_matrix[e]===this.testPattern[e])},deletePattern(s){delete this.value.splice(s,1)},addPattern(){this.value.push({input_matrix:{},value:null})}}},H={class:"w-100 mb-2"},F=["span"],Q=["colspan"],G={key:0,rowspan:"2",class:"input-header"},L=["colspan"],U={key:0},W={key:0,class:"text-center"},J={key:1},R={key:0},X=["colspan"],Y={key:1,class:"bg-info"},Z=["colspan"];function K(s,e,i,$,u,n){const h=_("font-awesome-icon"),x=_("openwb-base-click-button"),C=_("openwb-base-button-group-input");return a(),l(m,null,[r("table",H,[r("colgroup",null,[r("col",{span:n.numInputs,class:"bg-white",style:{border:"1px solid #dee2e6"}},null,8,F)]),r("thead",null,[r("tr",null,[r("th",{colspan:n.numInputs},"Eingangsmuster",8,Q),u.showTestPattern?(a(),l("th",G,e[6]||(e[6]=[r("div",null,"Prüfergebnis",-1)]))):c("",!0),r("th",{colspan:i.enableAddDelete?2:1},null,8,L)]),r("tr",null,[(a(!0),l(m,null,p(Object.keys(i.digitalInputs),t=>(a(),l("th",{key:t,class:"input-header"},[r("div",null,w(t),1)]))),128)),e[7]||(e[7]=r("th",null,"Verhalten",-1)),i.enableAddDelete?(a(),l("th",U,[d(x,{class:"bg-success text-white",tooltip:n.addPatternTooltip,disabled:n.addPatternDisabled,onClick:e[0]||(e[0]=t=>n.addPattern())},{default:P(()=>[d(h,{icon:["fas","plus"]})]),_:1},8,["tooltip","disabled"])])):c("",!0)])]),r("tbody",null,[(a(!0),l(m,null,p(n.value,(t,g)=>(a(),l("tr",{key:g},[(a(!0),l(m,null,p(Object.keys(i.digitalInputs),o=>(a(),l("td",{key:o,class:"text-center"},[d(h,{title:n.getTitle(t.input_matrix[o]),icon:n.getIcon(t.input_matrix[o]),class:k([n.getIconClass(t.input_matrix[o]),"fa-fw clickable"]),size:"2x",transform:t.input_matrix[o]==null?"shrink-6":null,mask:t.input_matrix[o]==null?["fas","square"]:null,onClick:f(ee=>n.toggleInput(g,o),["stop","prevent"]),onMousedown:e[1]||(e[1]=f(()=>{},["stop","prevent"])),onMouseup:e[2]||(e[2]=f(()=>{},["stop","prevent"]))},null,8,["title","icon","class","transform","mask","onClick"])]))),128)),u.showTestPattern?(a(),l("td",W,[d(h,{title:"Muster passt",icon:["fas","check-circle"],class:k(["text-success fa-fw",{hidden:!n.patternMatch(g)}])},null,8,["class"])])):c("",!0),r("td",j({ref_for:!0},s.$attrs),[B(s.$slots,"default",{pattern:t},()=>[V(w(t.value),1)],!0)],16),i.enableAddDelete?(a(),l("td",J,[d(x,{class:"bg-danger text-white",tooltip:n.deletePatternTooltip,disabled:n.deletePatternDisabled,onClick:o=>n.deletePattern(g)},{default:P(()=>[d(h,{icon:["fas","trash"]})]),_:2},1032,["tooltip","disabled","onClick"])])):c("",!0)]))),128)),u.showTestPattern?(a(),l("tr",R,[(a(!0),l(m,null,p(Object.keys(i.digitalInputs),t=>(a(),l("td",{key:t,class:"pt-4"},"   "))),128)),r("td",{colspan:i.enableAddDelete?3:2},null,8,X)])):c("",!0),u.showTestPattern?(a(),l("tr",Y,[(a(!0),l(m,null,p(Object.keys(i.digitalInputs),t=>(a(),l("td",{key:t,class:"text-center text-body"},[d(h,{title:n.getTitle(u.testPattern[t]),icon:n.getIcon(u.testPattern[t]),class:k([n.getIconClass(u.testPattern[t]),"fa-fw clickable"]),size:"2x",transform:u.testPattern[t]==null?"shrink-6":null,mask:u.testPattern[t]==null?["fas","square"]:null,onClick:f(g=>n.toggleTestPattern(t),["stop","prevent"]),onMousedown:e[3]||(e[3]=f(()=>{},["stop","prevent"])),onMouseup:e[4]||(e[4]=f(()=>{},["stop","prevent"]))},null,8,["title","icon","class","transform","mask","onClick"])]))),128)),r("td",{class:"pl-2",colspan:i.enableAddDelete?3:2}," Prüfmuster ",8,Z)])):c("",!0)])]),d(C,{modelValue:u.showTestPattern,"onUpdate:modelValue":e[5]||(e[5]=t=>u.showTestPattern=t),title:"Prüfmuster",buttons:[{buttonValue:!1,text:"Verbergen"},{buttonValue:!0,text:"Anzeigen"}]},{help:P(()=>e[8]||(e[8]=[V(' Das Prüfmuster ist eine Hilfe um zu testen, ob die Eingangsmuster zum gewünschten Verhalten passen. Ein grüner Haken in der Spalte "Prüfergebnis" zeigt an, dass das Eingangsmuster zu dem Prüfmuster passt. Eingangsmuster mit unterschiedlichem Verhalten dürfen nicht gleichzeitig passen, da sonst das Verhalten nicht eindeutig ist. ')])),_:1},8,["modelValue"])],64)}const ne=N(S,[["render",K],["__scopeId","data-v-3624c649"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/io_actions/OpenwbIoPattern.vue"]]);export{ne as O}; diff --git a/web/settings/assets/OpenwbIoPattern-a1d251cc.css b/web/settings/assets/OpenwbIoPattern-a1d251cc.css deleted file mode 100644 index 00c1fc156b..0000000000 --- a/web/settings/assets/OpenwbIoPattern-a1d251cc.css +++ /dev/null @@ -1 +0,0 @@ -th[data-v-3624c649]{text-align:center;vertical-align:bottom}.input-header[data-v-3624c649]{position:relative;height:6em}.input-header div[data-v-3624c649]{position:absolute;bottom:0;left:50%;transform:rotate(-90deg);transform-origin:left center}.hidden[data-v-3624c649]{visibility:hidden} diff --git a/web/settings/assets/OpenwbIoSinglePattern-83dbc24c.js b/web/settings/assets/OpenwbIoSinglePattern-83dbc24c.js deleted file mode 100644 index 23f4cb4992..0000000000 --- a/web/settings/assets/OpenwbIoSinglePattern-83dbc24c.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as p,u as a,l as m,m as _,G as l,E as r,B as s,N as g}from"./vendor-ad7c30fd.js";const f={name:"IoActionSingleInputPattern",inheritAttrs:!1,props:{digitalInputs:{type:Object,required:!0},modelValue:{type:Array,required:!0},ioDevice:{type:Object,required:!0}},emits:["update:modelValue"],computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},definedInput:{get(){return Object.keys(this.value[0].input_matrix).length!==0?Object.keys(this.value[0].input_matrix)[0]:null},set(e){if(Object.keys(this.value[0].input_matrix).length===0){this.value=[{value:!0,input_matrix:{[e]:!0}},{value:!1,input_matrix:{[e]:!1}}];return}this.value=[{value:!0,input_matrix:{[e]:this.definedNormalMode}},{value:!1,input_matrix:{[e]:!this.definedNormalMode}}]}},definedNormalMode:{get(){return Object.values(this.value[0].input_matrix)[0]},set(e){this.value=[{value:!0,input_matrix:{[this.definedInput]:e}},{value:!1,input_matrix:{[this.definedInput]:!e}}]}},inputOptions(){var e,t;return Object.keys((t=(e=this.ioDevice)==null?void 0:e.input)==null?void 0:t.digital).map(i=>({value:i,text:i}))}}};function b(e,t,i,c,v,n){const o=a("openwb-base-select-input"),d=a("openwb-base-button-group-input");return m(),_(g,null,[l(o,{modelValue:n.definedInput,"onUpdate:modelValue":t[0]||(t[0]=u=>n.definedInput=u),title:"Eingang",required:"","not-selected":"Bitte auswählen","empty-value":null,options:n.inputOptions},{help:r(()=>t[2]||(t[2]=[s(" Bitte den Eingang auswählen, auf welchen reagiert werden soll. Es kann nur ein Eingang ausgewählt werden. ")])),_:1},8,["modelValue","options"]),l(d,{modelValue:n.definedNormalMode,"onUpdate:modelValue":t[1]||(t[1]=u=>n.definedNormalMode=u),title:"Normaler Zustand",buttons:[{buttonValue:!1,text:"geschlossen (NC)"},{buttonValue:!0,text:"geöffnet (NO)"}],disabled:!n.definedInput,required:""},{help:r(()=>t[3]||(t[3]=[s(" Bitte Einstellen, ob der Eingang im normalen Zustand geschlossen (NC) oder geöffnet (NO) ist. Dieser Zustand wird verwendet, um den Eingang zu überwachen. ")])),_:1},8,["modelValue","disabled"])],64)}const x=p(f,[["render",b],["__scopeId","data-v-ab9155dc"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/io_actions/OpenwbIoSinglePattern.vue"]]);export{x as O}; diff --git a/web/settings/assets/OpenwbIoSinglePattern-e689840a.css b/web/settings/assets/OpenwbIoSinglePattern-e689840a.css deleted file mode 100644 index 906761ff01..0000000000 --- a/web/settings/assets/OpenwbIoSinglePattern-e689840a.css +++ /dev/null @@ -1 +0,0 @@ -th[data-v-ab9155dc]{text-align:center;vertical-align:bottom}.input-header[data-v-ab9155dc]{position:relative;height:6em}.input-header div[data-v-ab9155dc]{position:absolute;bottom:0;left:50%;transform:rotate(-90deg);transform-origin:left center} diff --git a/web/settings/assets/OpenwbSortableList-13147a4b.js b/web/settings/assets/OpenwbSortableList-bde71f66.js similarity index 65% rename from web/settings/assets/OpenwbSortableList-13147a4b.js rename to web/settings/assets/OpenwbSortableList-bde71f66.js index 338c3b974d..271b377b72 100644 --- a/web/settings/assets/OpenwbSortableList-13147a4b.js +++ b/web/settings/assets/OpenwbSortableList-bde71f66.js @@ -1 +1 @@ -import{O as v}from"./index-b236cee5.js";import{_ as b,a3 as V,u as l,l as o,x as i,E as d,A as p,q as S,G as f,z as k,B as _,F as g,D as O,p as m,m as B}from"./vendor-ad7c30fd.js";import{l as L,ai as E,P as N,Z as x,Y as C,X as q,F as A}from"./vendor-fortawesome-9d7cfdfb.js";L.add(E,N,x,C,q);const $={name:"OpenwbNestedList",components:{draggable:V,FontAwesomeIcon:A},props:{list:{type:Object,required:!1,default:void 0},labels:{type:Object,required:!1,default:void 0}},methods:{classes(e){var t="";switch(e.type){case"bat":t+="battery";break;case"cp":t+="charge-point";break;default:t+=e.type;break}return t},getElementLabel(e){return this.labels&&e in this.labels?this.labels[e]:e},getElementIcon(e){switch(e.type){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"inverter":return["fas","solar-panel"];default:return}}}};function j(e,t,n,h,w,a){const r=l("font-awesome-icon"),c=l("openwb-nested-list",!0),u=l("draggable");return o(),i(u,{class:"dragArea w-100 mb-0",tag:"ul",list:n.list,group:{name:"g1"},"item-key":"id",handle:".handle"},{item:d(({element:s})=>[p("li",null,[p("div",{class:S(["element-titel",a.classes(s)])},[p("span",null,[f(r,{class:"handle","fixed-width":"",icon:["fas","arrows-alt"]}),a.getElementIcon(s)?(o(),i(r,{key:0,"fixed-width":"",icon:a.getElementIcon(s)},null,8,["icon"])):k("",!0),_(" "+g(a.getElementLabel(s.id)),1)])],2),f(c,{modelValue:s.children,"onUpdate:modelValue":y=>s.children=y,labels:n.labels},null,8,["modelValue","onUpdate:modelValue","labels"])])]),_:1},8,["list"])}const D=b($,[["render",j],["__scopeId","data-v-82c9421a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbNestedList.vue"]]),F={name:"OpenwbSortableList",components:{OpenwbBaseSettingElement:v,OpenwbNestedList:D},props:{id:{type:String,required:!1,default:void 0},title:{type:String,required:!1,default:""},modelValue:{type:Array,required:!1,default:void 0},labels:{type:Object,default:void 0}},emits:["update:modelValue"],computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}}},I={key:1};function U(e,t,n,h,w,a){const r=l("openwb-nested-list"),c=l("openwb-base-setting-element");return o(),i(c,null,O({title:d(()=>[m(e.$slots,"title",{},()=>[_(g(n.title),1)])]),default:d(()=>[a.value!==void 0?(o(),i(r,{key:0,modelValue:a.value,"onUpdate:modelValue":t[0]||(t[0]=u=>a.value=u),labels:n.labels},null,8,["modelValue","labels"])):(o(),B("div",I,"Warte auf Daten..."))]),_:2},[e.$slots.help?{name:"help",fn:d(()=>[m(e.$slots,"help")]),key:"0"}:void 0]),1024)}const P=b(F,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbSortableList.vue"]]);export{P as S}; +import{O as v}from"./index-cc8f65ba.js";import{_ as b,a3 as V,u as l,l as o,z as i,E as d,x as p,q as S,G as f,B as k,y as _,F as g,D as O,p as m,m as L}from"./vendor-ea36120f.js";import{l as B,ae as E,L as N,V as x,U as C,T as q,F as A}from"./vendor-fortawesome-433470db.js";B.add(E,N,x,C,q);const U={name:"OpenwbNestedList",components:{draggable:V,FontAwesomeIcon:A},props:{list:{type:Object,required:!1,default:void 0},labels:{type:Object,required:!1,default:void 0}},methods:{classes(e){var t="";switch(e.type){case"bat":t+="battery";break;case"cp":t+="charge-point";break;default:t+=e.type;break}return t},getElementLabel(e){return this.labels&&e in this.labels?this.labels[e]:e},getElementIcon(e){switch(e.type){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"inverter":return["fas","solar-panel"];default:return}}}};function $(e,t,n,h,w,a){const r=l("font-awesome-icon"),c=l("openwb-nested-list",!0),u=l("draggable");return o(),i(u,{class:"dragArea w-100 mb-0",tag:"ul",list:n.list,group:{name:"g1"},"item-key":"id",handle:".handle"},{item:d(({element:s})=>[p("li",null,[p("div",{class:S(["element-titel",a.classes(s)])},[p("span",null,[f(r,{class:"handle","fixed-width":"",icon:["fas","arrows-alt"]}),a.getElementIcon(s)?(o(),i(r,{key:0,"fixed-width":"",icon:a.getElementIcon(s)},null,8,["icon"])):k("",!0),_(" "+g(a.getElementLabel(s.id)),1)])],2),f(c,{modelValue:s.children,"onUpdate:modelValue":y=>s.children=y,labels:n.labels},null,8,["modelValue","onUpdate:modelValue","labels"])])]),_:1},8,["list"])}const j=b(U,[["render",$],["__scopeId","data-v-82c9421a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbNestedList.vue"]]),D={name:"OpenwbSortableList",components:{OpenwbBaseSettingElement:v,OpenwbNestedList:j},props:{id:{type:String,required:!1,default:void 0},title:{type:String,required:!1,default:""},modelValue:{type:Array,required:!1,default:void 0},labels:{type:Object,default:void 0}},emits:["update:modelValue"],computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}}},F={key:1};function I(e,t,n,h,w,a){const r=l("openwb-nested-list"),c=l("openwb-base-setting-element");return o(),i(c,null,O({title:d(()=>[m(e.$slots,"title",{},()=>[_(g(n.title),1)])]),default:d(()=>[a.value!==void 0?(o(),i(r,{key:0,modelValue:a.value,"onUpdate:modelValue":t[0]||(t[0]=u=>a.value=u),labels:n.labels},null,8,["modelValue","labels"])):(o(),L("div",F,"Warte auf Daten..."))]),_:2},[e.$slots.help?{name:"help",fn:d(()=>[m(e.$slots,"help")]),key:"0"}:void 0]),1024)}const T=b(D,[["render",I],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbSortableList.vue"]]);export{T as S}; diff --git a/web/settings/assets/OptionalComponents-8819b9a1.js b/web/settings/assets/OptionalComponents-f79f9835.js similarity index 92% rename from web/settings/assets/OptionalComponents-8819b9a1.js rename to web/settings/assets/OptionalComponents-f79f9835.js index 6a8ae48f66..ad18d2fec4 100644 --- a/web/settings/assets/OptionalComponents-8819b9a1.js +++ b/web/settings/assets/OptionalComponents-f79f9835.js @@ -1,2 +1,2 @@ -import{_ as T,C}from"./index-b236cee5.js";import{_ as O}from"./dynamic-import-helper-be004503.js";import{l as S,a5 as z,a6 as V,F as E}from"./vendor-fortawesome-9d7cfdfb.js";import{_ as v,u as p,l as s,m as d,x as y,E as o,B as i,F as g,G as n,A as l,a1 as L,a2 as I,N as F,z as _}from"./vendor-ad7c30fd.js";const q={props:{displayTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},M=v(q,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/DisplayThemeConfigMixin.vue"]]),N={name:"DisplayThemeFallback",mixins:[M]},j={class:"display-theme-fallback"},P={key:1};function A(t,e,u,c,w,m){const r=p("openwb-base-alert"),b=p("openwb-base-textarea");return s(),d("div",j,[Object.keys(t.displayTheme.configuration).length==0?(s(),y(r,{key:0,subtype:"info"},{default:o(()=>[i(' Das Display-Theme "'+g(t.displayTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),d("div",P,[n(r,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für das Display-Theme "'+g(t.displayTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":t.displayTheme.configuration,"onUpdate:modelValue":e[0]||(e[0]=f=>t.updateConfiguration(f,"configuration"))},{help:o(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(r,{subtype:"info"},{default:o(()=>[l("pre",null,g(JSON.stringify(t.displayTheme.configuration,void 0,2)),1)]),_:1})]))])}const x=v(N,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]);S.add(z,V);const U={name:"OpenwbDisplayThemeProxy",components:{FontAwesomeIcon:E},props:{displayTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{getDisplayThemeComponent(){return console.debug(`loading display theme: ${this.displayTheme.type}`),L({loader:()=>O(Object.assign({"./cards/displayTheme.vue":()=>T(()=>import("./displayTheme-95f1ddf2.js"),["assets/displayTheme-95f1ddf2.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/index-b236cee5.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./colors/displayTheme.vue":()=>T(()=>import("./displayTheme-575345bd.js"),["assets/displayTheme-575345bd.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/index-b236cee5.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.displayTheme.type}/displayTheme.vue`),errorComponent:x})},updateConfiguration(t){this.$emit("update:configuration",t)}}};function R(t,e,u,c,w,m){const r=p("font-awesome-icon"),b=p("openwb-base-alert"),f=p("openwb-base-heading");return s(),d(F,null,[u.displayTheme.official?(s(),y(b,{key:0,subtype:"success"},{default:o(()=>[n(r,{"fixed-width":"",icon:["fas","certificate"]}),i(' Das ausgewählte Display Theme "'+g(u.displayTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(s(),y(b,{key:1,subtype:"info"},{default:o(()=>[n(r,{"fixed-width":"",icon:["fas","people-group"]}),i(' Das ausgewählte Display Theme "'+g(u.displayTheme.name)+'" wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ',1)]),_:1})),n(f,null,{default:o(()=>[i(' Einstellungen für Display Theme "'+g(u.displayTheme.name)+'" ',1)]),_:1}),(s(),y(I(m.getDisplayThemeComponent()),{"display-theme":u.displayTheme,"onUpdate:configuration":e[0]||(e[0]=h=>m.updateConfiguration(h))},null,40,["display-theme"]))],64)}const H=v(U,[["render",R],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),J={name:"OpenwbOptionalComponentsView",components:{OpenwbDisplayThemeProxy:H},mixins:[C],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/+/config","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/get/rfid_timestamp","openWB/chargepoint/+/set/rfid","openWB/optional/rfid/active","openWB/optional/led/active","ToDo/optional/led/instant_blocked","ToDo/optional/led/pv_blocked","ToDo/optional/led/scheduled_blocked","ToDo/optional/led/standby_blocked","ToDo/optional/led/stop_blocked","ToDo/optional/led/instant","ToDo/optional/led/pv","ToDo/optional/led/scheduled","ToDo/optional/led/standby","ToDo/optional/led/stop","openWB/optional/int_display/active","openWB/optional/int_display/standby","openWB/optional/int_display/rotation","openWB/optional/int_display/on_if_plugged_in","openWB/optional/int_display/pin_active","openWB/optional/int_display/pin_code","openWB/optional/int_display/theme","openWB/optional/int_display/only_local_charge_points","openWB/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"],tempIdTagList:{}}},computed:{idTagList(){return Object.values(this.updateIdTagList())},displayThemeList(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]},displayThemeGroupList(){let t=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.displayThemeList.forEach(e=>{e.official===!0?t[0].options.push(e):t[1].options.push(e)}),t}},methods:{getIdFromTopic(t){return t.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,"")},updateIdTagList(){return Object.entries(this.getWildcardTopics("^openWB/chargepoint/[^+/]+/[gs]et/rfid$",!0)).forEach(t=>{t[1]!==null&&(this.tempIdTagList[t[1]]=`${t[1]} (${t[0].includes("/set/")?"zugewiesen":"erfasst"} an ${this.getChargePointName(this.getIdFromTopic(t[0]))})`)}),this.tempIdTagList},getChargePointName(t){return this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"].name:"Ladepunkt "+t},getDisplayThemeDefaults(t){const e=this.displayThemeList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for display theme type!",t),{})},updateSelectedDisplayTheme(t){this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaults(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},G={class:"optionalComponents"},K={name:"optionalComponentsForm"},Z={key:0},Q={key:1},X={key:0},Y=["innerHTML"],ee={key:0},te={key:1},ne={key:2},oe={key:0};function ie(t,e,u,c,w,m){const r=p("openwb-base-button-group-input"),b=p("openwb-base-alert"),f=p("openwb-base-textarea"),h=p("openwb-base-card"),B=p("openwb-base-heading"),D=p("openwb-base-range-input"),W=p("openwb-base-select-input"),k=p("openwb-display-theme-proxy"),$=p("openwb-base-submit-buttons");return s(),d("div",G,[l("form",K,[n(h,{title:"Identifikation"},{default:o(()=>[n(r,{title:"Identifikation aktivieren","model-value":t.$store.state.mqtt["openWB/optional/rfid/active"],buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[0]||(e[0]=a=>t.updateState("openWB/optional/rfid/active",a))},{help:o(()=>e[10]||(e[10]=[i(" Die Identifikation kann zum Entsperren von Ladepunkten und/oder zur Zuordnung von Fahrzeugen genutzt werden und kann auf mehreren Wegen erfolgen: "),l("ul",null,[l("li",null,"Über einen in der openWB verbauten RFID-Reader (optional, z.B. anhand des Lieferscheins prüfen)."),l("li",null," Durch die automatische Erkennung an einer openWB Pro (muss in den Einstellungen aktiviert werden). "),l("li",null,"Durch manuelle Eingabe einer ID am Display einer openWB.")],-1)])),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",Z,[n(b,{subtype:"info"},{default:o(()=>e[11]||(e[11]=[i(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),d("div",Q,[t.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(s(),d("div",X,[n(b,{subtype:"info",class:"mb-1"},{default:o(()=>[e[12]||(e[12]=i(" Die ID-Tags müssen in den Einstellungen der Fahrzeuge diesen zugeordnet werden.")),e[13]||(e[13]=l("br",null,null,-1)),e[14]||(e[14]=i(" Es kann zuerst das Fahrzeug angesteckt und dann der ID-Tag erfasst werden oder andersherum. Im letzten Fall muss innerhalb von 5 Minuten ein Fahrzeug angesteckt werden, sonst wird der ID-Tag verworfen.")),e[15]||(e[15]=l("br",null,null,-1)),l("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,Y)]),_:1}),n(f,{title:"Erkannte ID-Tags",readonly:"",disabled:"","model-value":m.idTagList.join(` +import{_ as T,C}from"./index-cc8f65ba.js";import{_ as O}from"./dynamic-import-helper-be004503.js";import{l as S,a1 as z,a2 as V,F as E}from"./vendor-fortawesome-433470db.js";import{_ as v,u as p,l as s,m as d,z as y,E as o,y as i,F as g,G as n,x as l,a1 as L,a2 as I,N as F,B as _}from"./vendor-ea36120f.js";const q={props:{displayTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},M=v(q,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/DisplayThemeConfigMixin.vue"]]),N={name:"DisplayThemeFallback",mixins:[M]},j={class:"display-theme-fallback"},P={key:1};function A(t,e,u,c,w,m){const r=p("openwb-base-alert"),b=p("openwb-base-textarea");return s(),d("div",j,[Object.keys(t.displayTheme.configuration).length==0?(s(),y(r,{key:0,subtype:"info"},{default:o(()=>[i(' Das Display-Theme "'+g(t.displayTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),d("div",P,[n(r,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für das Display-Theme "'+g(t.displayTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":t.displayTheme.configuration,"onUpdate:modelValue":e[0]||(e[0]=f=>t.updateConfiguration(f,"configuration"))},{help:o(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(r,{subtype:"info"},{default:o(()=>[l("pre",null,g(JSON.stringify(t.displayTheme.configuration,void 0,2)),1)]),_:1})]))])}const x=v(N,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]);S.add(z,V);const U={name:"OpenwbDisplayThemeProxy",components:{FontAwesomeIcon:E},props:{displayTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{getDisplayThemeComponent(){return console.debug(`loading display theme: ${this.displayTheme.type}`),L({loader:()=>O(Object.assign({"./cards/displayTheme.vue":()=>T(()=>import("./displayTheme-64a8b4a0.js"),["assets/displayTheme-64a8b4a0.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/index-cc8f65ba.js","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./colors/displayTheme.vue":()=>T(()=>import("./displayTheme-1e1ee4eb.js"),["assets/displayTheme-1e1ee4eb.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/index-cc8f65ba.js","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.displayTheme.type}/displayTheme.vue`),errorComponent:x})},updateConfiguration(t){this.$emit("update:configuration",t)}}};function R(t,e,u,c,w,m){const r=p("font-awesome-icon"),b=p("openwb-base-alert"),f=p("openwb-base-heading");return s(),d(F,null,[u.displayTheme.official?(s(),y(b,{key:0,subtype:"success"},{default:o(()=>[n(r,{"fixed-width":"",icon:["fas","certificate"]}),i(' Das ausgewählte Display Theme "'+g(u.displayTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(s(),y(b,{key:1,subtype:"info"},{default:o(()=>[n(r,{"fixed-width":"",icon:["fas","people-group"]}),i(' Das ausgewählte Display Theme "'+g(u.displayTheme.name)+'" wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ',1)]),_:1})),n(f,null,{default:o(()=>[i(' Einstellungen für Display Theme "'+g(u.displayTheme.name)+'" ',1)]),_:1}),(s(),y(I(m.getDisplayThemeComponent()),{"display-theme":u.displayTheme,"onUpdate:configuration":e[0]||(e[0]=h=>m.updateConfiguration(h))},null,40,["display-theme"]))],64)}const H=v(U,[["render",R],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),J={name:"OpenwbOptionalComponentsView",components:{OpenwbDisplayThemeProxy:H},mixins:[C],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/+/config","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/get/rfid_timestamp","openWB/chargepoint/+/set/rfid","openWB/optional/rfid/active","openWB/optional/led/active","ToDo/optional/led/instant_blocked","ToDo/optional/led/pv_blocked","ToDo/optional/led/scheduled_blocked","ToDo/optional/led/standby_blocked","ToDo/optional/led/stop_blocked","ToDo/optional/led/instant","ToDo/optional/led/pv","ToDo/optional/led/scheduled","ToDo/optional/led/standby","ToDo/optional/led/stop","openWB/optional/int_display/active","openWB/optional/int_display/standby","openWB/optional/int_display/rotation","openWB/optional/int_display/on_if_plugged_in","openWB/optional/int_display/pin_active","openWB/optional/int_display/pin_code","openWB/optional/int_display/theme","openWB/optional/int_display/only_local_charge_points","openWB/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"],tempIdTagList:{}}},computed:{idTagList(){return Object.values(this.updateIdTagList())},displayThemeList(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]},displayThemeGroupList(){let t=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.displayThemeList.forEach(e=>{e.official===!0?t[0].options.push(e):t[1].options.push(e)}),t}},methods:{getIdFromTopic(t){return t.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,"")},updateIdTagList(){return Object.entries(this.getWildcardTopics("^openWB/chargepoint/[^+/]+/[gs]et/rfid$",!0)).forEach(t=>{t[1]!==null&&(this.tempIdTagList[t[1]]=`${t[1]} (${t[0].includes("/set/")?"zugewiesen":"erfasst"} an ${this.getChargePointName(this.getIdFromTopic(t[0]))})`)}),this.tempIdTagList},getChargePointName(t){return this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"].name:"Ladepunkt "+t},getDisplayThemeDefaults(t){const e=this.displayThemeList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for display theme type!",t),{})},updateSelectedDisplayTheme(t){this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaults(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},G={class:"optionalComponents"},K={name:"optionalComponentsForm"},Z={key:0},Q={key:1},X={key:0},Y=["innerHTML"],ee={key:0},te={key:1},ne={key:2},oe={key:0};function ie(t,e,u,c,w,m){const r=p("openwb-base-button-group-input"),b=p("openwb-base-alert"),f=p("openwb-base-textarea"),h=p("openwb-base-card"),B=p("openwb-base-heading"),D=p("openwb-base-range-input"),W=p("openwb-base-select-input"),k=p("openwb-display-theme-proxy"),$=p("openwb-base-submit-buttons");return s(),d("div",G,[l("form",K,[n(h,{title:"Identifikation"},{default:o(()=>[n(r,{title:"Identifikation aktivieren","model-value":t.$store.state.mqtt["openWB/optional/rfid/active"],buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[0]||(e[0]=a=>t.updateState("openWB/optional/rfid/active",a))},{help:o(()=>e[10]||(e[10]=[i(" Die Identifikation kann zum Entsperren von Ladepunkten und/oder zur Zuordnung von Fahrzeugen genutzt werden und kann auf mehreren Wegen erfolgen: "),l("ul",null,[l("li",null,"Über einen in der openWB verbauten RFID-Reader (optional, z.B. anhand des Lieferscheins prüfen)."),l("li",null," Durch die automatische Erkennung an einer openWB Pro (muss in den Einstellungen aktiviert werden). "),l("li",null,"Durch manuelle Eingabe einer ID am Display einer openWB.")],-1)])),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",Z,[n(b,{subtype:"info"},{default:o(()=>e[11]||(e[11]=[i(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),d("div",Q,[t.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(s(),d("div",X,[n(b,{subtype:"info",class:"mb-1"},{default:o(()=>[e[12]||(e[12]=i(" Die ID-Tags müssen in den Einstellungen der Fahrzeuge diesen zugeordnet werden.")),e[13]||(e[13]=l("br",null,null,-1)),e[14]||(e[14]=i(" Es kann zuerst das Fahrzeug angesteckt und dann der ID-Tag erfasst werden oder andersherum. Im letzten Fall muss innerhalb von 5 Minuten ein Fahrzeug angesteckt werden, sonst wird der ID-Tag verworfen.")),e[15]||(e[15]=l("br",null,null,-1)),l("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,Y)]),_:1}),n(f,{title:"Erkannte ID-Tags",readonly:"",disabled:"","model-value":m.idTagList.join(` `)},{help:o(()=>e[16]||(e[16]=[i(" Solange diese Seite geöffnet ist, werden alle erfassten ID-Tags in dieser Liste aufgeführt. Bei der openWB Pro/Pro+ nur bei angestecktem Fahrzeug. ")])),_:1},8,["model-value"])])):_("",!0)]))]),_:1}),n(h,{title:"Display (intern oder extern)"},{default:o(()=>[n(r,{title:"Integriertes Display","model-value":t.$store.state.mqtt["openWB/optional/int_display/active"],buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"onUpdate:modelValue":e[1]||(e[1]=a=>t.updateState("openWB/optional/int_display/active",a))},{help:o(()=>e[17]||(e[17]=[i(' Je nach Bestellung kann die openWB mit oder ohne Display geliefert worden sein. Auch die Variante "Standalone" bietet beide Optionen. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ')])),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/int_display/active"]==!0?(s(),d("div",ee,[n(r,{title:"Orientierung","model-value":t.$store.state.mqtt["openWB/optional/int_display/rotation"],buttons:[{buttonValue:0,text:"0°"},{buttonValue:90,text:"90°"},{buttonValue:180,text:"180°"},{buttonValue:270,text:"270°"}],"onUpdate:modelValue":e[2]||(e[2]=a=>t.updateState("openWB/optional/int_display/rotation",a))},{help:o(()=>e[18]||(e[18]=[i(" Mit dieser Einstellung kann das Display im Uhrzeigersinn gedreht werden, falls erforderlich. Nach einer Änderung ist ein Neustart erforderlich!"),l("br",null,null,-1),i(" Diese Einstellung erfordert ein Raspberry Pi Display. Für eine openWB series2 mit integriertem Display muss 0° ausgewählt werden, für eine Standalone mit Display 180°. Anzeigen, welche über HDMI angeschlossen sind, werden nicht unterstützt. ")])),_:1},8,["model-value"]),e[21]||(e[21]=l("hr",null,null,-1)),n(B,null,{default:o(()=>e[19]||(e[19]=[i(" Display Standby ")])),_:1}),n(D,{title:"Ausschaltzeit",min:0,max:12,step:1,"model-value":t.$store.state.mqtt["openWB/optional/int_display/standby"],unit:"Sek",labels:[{label:"Immer an",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:30,value:30},{label:45,value:45},{label:"1 Min",value:60},{label:"1,5 Min",value:90},{label:"2 Min",value:120},{label:"3 Min",value:180},{label:"4 Min",value:240},{label:"5 Min",value:300},{label:"10 Min",value:600}],"onUpdate:modelValue":e[3]||(e[3]=a=>t.updateState("openWB/optional/int_display/standby",a))},{help:o(()=>e[20]||(e[20]=[i(" Hier kann eine Zeitspanne angegeben werden, nach der das Display ausgeschaltet wird. ")])),_:1},8,["model-value"])])):_("",!0),t.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",te,[e[23]||(e[23]=l("hr",null,null,-1)),n(b,{subtype:"info"},{default:o(()=>e[22]||(e[22]=[i(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),d("div",ne,[e[26]||(e[26]=l("hr",null,null,-1)),n(r,{title:"Ladepunkte auf secondary openWB","model-value":t.$store.state.mqtt["openWB/optional/int_display/only_local_charge_points"],buttons:[{buttonValue:!1,text:"Alle",class:"btn-outline-danger"},{buttonValue:!0,text:"Nur Lokale",class:"btn-outline-success"}],"onUpdate:modelValue":e[4]||(e[4]=a=>t.updateState("openWB/optional/int_display/only_local_charge_points",a))},{help:o(()=>e[24]||(e[24]=[i(" Hiermit kann festgelegt werden, ob an angebundenen secondary openWB alle oder nur die jeweils lokalen Ladepunkte angezeigt werden sollen. ")])),_:1},8,["model-value"]),e[27]||(e[27]=l("hr",null,null,-1)),t.$store.state.mqtt["openWB/optional/int_display/theme"]!==void 0?(s(),d("div",oe,[n(W,{class:"mb-2",title:"Theme des Displays",groups:m.displayThemeGroupList,"model-value":t.$store.state.mqtt["openWB/optional/int_display/theme"].type,"onUpdate:modelValue":e[5]||(e[5]=a=>m.updateSelectedDisplayTheme(a))},{help:o(()=>e[25]||(e[25]=[i(" Hier können unterschiedliche Display-Anzeigen, s.g. Themes, ausgewählt werden. Die Anzahl der Themes wird sich mit zukünftigen Releases erhöhen. ")])),_:1},8,["groups","model-value"]),t.$store.state.mqtt["openWB/optional/int_display/theme"].type?(s(),y(k,{key:0,"display-theme":t.$store.state.mqtt["openWB/optional/int_display/theme"],"onUpdate:configuration":e[6]||(e[6]=a=>m.updateConfiguration("openWB/optional/int_display/theme",a))},null,8,["display-theme"])):_("",!0)])):_("",!0)]))]),_:1}),n($,{"form-name":"optionalComponentsForm",onSave:e[7]||(e[7]=a=>t.$emit("save")),onReset:e[8]||(e[8]=a=>t.$emit("reset")),onDefaults:e[9]||(e[9]=a=>t.$emit("defaults"))})])])}const ae=v(J,[["render",ie],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/OptionalComponents.vue"]]),de=Object.freeze(Object.defineProperty({__proto__:null,default:ae},Symbol.toStringTag,{value:"Module"}));export{M as D,de as O}; diff --git a/web/settings/assets/PVChargeConfig-2c281c8b.js b/web/settings/assets/PVChargeConfig-2c281c8b.js deleted file mode 100644 index d81d6f2c94..0000000000 --- a/web/settings/assets/PVChargeConfig-2c281c8b.js +++ /dev/null @@ -1 +0,0 @@ -import{C as S}from"./index-b236cee5.js";import{l as B,Z as V,a7 as z,a8 as k,F as y}from"./vendor-fortawesome-9d7cfdfb.js";import{_ as E,u as g,l,m as u,A as o,G as i,E as a,B as t,F as C,x as v,z as f}from"./vendor-ad7c30fd.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";B.add(V,z,k);const q={name:"OpenwbPVChargeConfigView",components:{FontAwesomeIcon:y},mixins:[S],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/pv_charging/control_range","openWB/general/chargemode_config/pv_charging/feed_in_yield","openWB/general/chargemode_config/pv_charging/switch_on_threshold","openWB/general/chargemode_config/pv_charging/switch_on_delay","openWB/general/chargemode_config/pv_charging/switch_off_threshold","openWB/general/chargemode_config/pv_charging/switch_off_delay","openWB/general/chargemode_config/pv_charging/phases_to_use","openWB/general/chargemode_config/pv_charging/bat_mode","openWB/general/chargemode_config/pv_charging/bat_power_reserve","openWB/general/chargemode_config/pv_charging/bat_power_reserve_active","openWB/general/chargemode_config/pv_charging/bat_power_discharge","openWB/general/chargemode_config/pv_charging/bat_power_discharge_active","openWB/general/chargemode_config/pv_charging/min_bat_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const n="openWB/general/chargemode_config/pv_charging/control_range";let e=this.$store.state.mqtt[n];var p="individual";return typeof e<"u"&&(e[0]===-230&&e[1]===0?p="export":e[0]===0&&e[1]===230?p="import":e[0]===-115&&e[1]===115?p="balanced":p="individual"),p},set(n){const e="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=n,n){case"export":this.updateState(e,[-230,0]);break;case"import":this.updateState(e,[0,230]);break;case"balanced":this.updateState(e,[-115,115]);break}}},chargingSwitchRange:{get(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]+this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]}},batMode:{get(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]},set(n){this.updateState("openWB/general/chargemode_config/pv_charging/bat_mode",n)}}},watch:{controlMode(n){this.calculatedControlMode=n}}},M={class:"pvChargeConfig"},L={name:"pvChargeConfigForm"},A={key:0},$={key:1},U={key:0},R={key:1},P={key:0},F={key:1},D={key:0};function N(n,e,p,I,Z,s){const m=g("openwb-base-alert"),c=g("openwb-base-button-group-input"),d=g("openwb-base-number-input"),b=g("openwb-base-card"),h=g("font-awesome-icon"),w=g("openwb-base-range-input"),_=g("openwb-base-heading"),W=g("openwb-base-submit-buttons");return l(),u("div",M,[o("form",L,[i(b,{title:"Regelparameter"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(l(),u("div",A,[i(m,{subtype:"info"},{default:a(()=>e[18]||(e[18]=[t(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),u("div",$,[i(c,{modelValue:s.controlMode,"onUpdate:modelValue":e[0]||(e[0]=r=>s.controlMode=r),title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"balanced",text:"Ausgewogen"},{buttonValue:"individual",text:"Individuell"}]},{help:a(()=>e[19]||(e[19]=[t(" Die Ladeleistung kann nicht mit absoluter Genauigkeit eingestellt werden, sodass am EVU-Punkt nicht auf exakt 0W geregelt werden kann. Der Regelmodus legt fest, ob diese Differenz am EVU-Punkt (ca. 200-300W) zu geringem Netzbezug oder geringer Netzeinspeisung führen soll."),o("br",null,null,-1),t(" Bei Speichervorrang erzeugt die Regelung bei Bedarf unabhängig vom eingestellten Regelmodus Einspeisung, damit der Speicher seine Ladeleistung erhöht."),o("br",null,null,-1),t(" Achtung: bei unlogischen Einstellungen kann die Regelung gestört werden! Im Zweifel bitte unsere vordefinierten Modi verwenden. ")])),_:1},8,["modelValue"]),i(d,{disabled:s.controlMode!=="individual",readonly:s.controlMode!=="individual",title:"Minimum",step:.005,unit:"kW",required:"","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":e[1]||(e[1]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",r*1e3,"0"))},{help:a(()=>e[20]||(e[20]=[t(" Untere Grenze des Regelbereichs. ")])),_:1},8,["disabled","readonly","model-value"]),i(d,{disabled:s.controlMode!=="individual",readonly:s.controlMode!=="individual",title:"Maximum",step:.005,unit:"kW",required:"","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":e[2]||(e[2]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",r*1e3,"1"))},{help:a(()=>e[21]||(e[21]=[t(" Obere Grenze des Regelbereichs. ")])),_:1},8,["disabled","readonly","model-value"]),e[28]||(e[28]=o("hr",null,null,-1)),i(m,{subtype:s.chargingSwitchRange<1400?"danger":"info"},{default:a(()=>[t(" Die Differenzleistung zw. Ein- und Abschaltschwelle sollte mind. 1,4 kW (230V x 6A) betragen. (Konfiguriert: "+C((s.chargingSwitchRange/1e3).toLocaleString(void 0))+" kW) ",1)]),_:1},8,["subtype"]),i(d,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":e[3]||(e[3]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",r*1e3))},{help:a(()=>e[22]||(e[22]=[t(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet."),o("br",null,null,-1),t(" Dieser Wert wird pro Phase genutzt und ist daher immer für eine Phase anzugeben. ")])),_:1},8,["model-value"]),i(d,{title:"Einschaltverzögerung",min:0,step:1,unit:"s",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":e[4]||(e[4]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",r))},{help:a(()=>e[23]||(e[23]=[t(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),o("br",null,null,-1),t(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")])),_:1},8,["model-value"]),e[29]||(e[29]=o("hr",null,null,-1)),i(m,{subtype:n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3>0?"danger":"info"},{default:a(()=>e[24]||(e[24]=[t(" Ist ein Speicher im System vorhanden, kann eine Abschaltschwelle größer Null zur Speicherentladung führen. (Siehe Fragezeichentext) ")])),_:1},8,["subtype"]),i(d,{title:"Abschaltschwelle",step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":e[5]||(e[5]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",r*1e3))},{help:a(()=>e[25]||(e[25]=[t(" Übersteigt der Netzbezug die Abschaltschwelle, wird die Ladung beendet. Eine Abschaltschaltschwelle, die Netzbezug erlaubt, führt in einem System ohne steuerbaren Speicher zur Entladung des Speichers. Der Speicher wird dann auch über den eingestellten Mindest-SoC hinaus entladen (siehe Speicherbeachtung unten). ")])),_:1},8,["model-value"]),i(d,{title:"Abschaltverzögerung",min:0,step:1,unit:"s",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":e[6]||(e[6]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",r))},{help:a(()=>e[26]||(e[26]=[t(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),o("br",null,null,-1),t(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird die Ladung sofort beendet, wenn die Abschaltschwelle unterschritten wird. ")])),_:1},8,["model-value"]),e[30]||(e[30]=o("hr",null,null,-1)),i(d,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":e[7]||(e[7]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",r*1e3))},{help:a(()=>e[27]||(e[27]=[t(" Ein Wert größer 0kW bewirkt, dass weniger PV-Leistung zum Laden benutzt wird."),o("br",null,null,-1),t(" Die Nutzung dieser Option ergibt nur Sinn, wenn ein Wechselrichter mit separatem Smart-Meter am EVU-Punkt verbaut ist (nicht der originale Zähler des Versorgers!), welches eine dynamische Begrenzung der Einspeiseleistung am EVU-Punkt durch den PV-Wechselrichter bietet (bitte bei ev. Problemen immer vorab prüfen lassen)."),o("br",null,null,-1),t(' Ist eine Einspeiseleistungsreduzierung verbaut (in vielen älteren, privaten Einspeiseverträgen z.B. als 70% Regelung bekannt), wird mit Eingabe des Wertes "Regelpunkt Einspeisegrenze" ein eigenverbrauchsoptimiertes Fahrzeugladen mit PV-Überschussenergie möglich, die sonst abgeregelt werden würde (Nutzung der PV-Peaks).'),o("br",null,null,-1),t(' Wird in einem "Ladeprofil" die Option "Einspeisegrenze beachten" eingeschaltet, so wird der Regelpunkt auf diesen Wert verschoben und die Ladung startet erst, wenn der hinterlegte Wert "Regelpunkt Einspeisegrenze" überschritten wird.'),o("br",null,null,-1),t(" Zur optimalen Eigenverbrauchssteuerung sollte der Wert einige hundert Watt UNTER der im Wechselrichter hinterlegten EVU-Einspeiseleistungsgrenze liegen, damit openWB die Ladung freigibt, BEVOR der Wechselrichter begrenzt wird. ")])),_:1},8,["model-value"])]))]),_:1}),i(b,{title:"Phasenumschaltung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(l(),u("div",U,[i(m,{subtype:"info"},{default:a(()=>e[31]||(e[31]=[t(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),u("div",R,[i(c,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":e[8]||(e[8]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",r))},{help:a(()=>e[32]||(e[32]=[t(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "PV-Laden" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um den verfügbaren Überschuss in die Fahrzeuge zu laden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen einer und mehreren Phasen (sog. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),i(b,{title:"Speicher-Beachtung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(l(),u("div",P,[i(m,{subtype:"info"},{default:a(()=>e[33]||(e[33]=[t(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),u("div",F,[i(c,{modelValue:s.batMode,"onUpdate:modelValue":e[9]||(e[9]=r=>s.batMode=r),title:"Laden mit Überschuss",buttons:[{buttonValue:"ev_mode"},{buttonValue:"bat_mode"},{buttonValue:"min_soc_bat_mode"}]},{"label-ev_mode":a(()=>[i(h,{"fixed-width":"",icon:["fas","car-side"]}),e[34]||(e[34]=t(" Fahrzeuge "))]),"label-bat_mode":a(()=>[i(h,{"fixed-width":"",icon:["fas","fa-car-battery"]}),e[35]||(e[35]=t(" Speicher "))]),"label-min_soc_bat_mode":a(()=>[i(h,{"fixed-width":"",icon:["fas","fa-battery-half"]}),e[36]||(e[36]=t(" Mindest-SoC des Speichers "))]),help:a(()=>[e[43]||(e[43]=o("p",null,' Sofern ein Hausstromspeicher (im Folgenden "Speicher" genannt) im Energiesystem verbaut ist, kann dieser beim Fahrzeugladen mit berücksichtigt werden. Dies erfolgt passiv über die Berücksichtigung der Speicherleistungswerte und des Speicher-SoC. Eine aktive Speichersteuerung durch openWB ist aktuell mangels Speicherschnittstelle nicht möglich. ',-1)),o("p",null,[e[37]||(e[37]=t(' Bei Auswahl " ')),i(h,{"fixed-width":"",icon:["fas","car-side"]}),e[38]||(e[38]=t(' Fahrzeuge" wird der gesamte Überschuss in das EV geladen. Ist die maximale Ladeleistung der Fahrzeuge erreicht und es wird eingespeist, wird dieser Überschuss in den Speicher geladen. '))]),o("p",null,[e[39]||(e[39]=t(' Bei Auswahl " ')),i(h,{"fixed-width":"",icon:["fas","fa-car-battery"]}),e[40]||(e[40]=t(' Speicher" wird der gesamte Überschuss in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss unter Beachtung der Einschaltschwelle in die Fahrzeuge geladen. '))]),o("p",null,[e[41]||(e[41]=t(' Bei Auswahl " ')),i(h,{"fixed-width":"",icon:["fas","fa-battery-half"]}),e[42]||(e[42]=t(' Mindest-SoC des Speichers" wird der Überschuss bis zum Mindest-SoC in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss in die Fahrzeuge geladen. Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen. '))])]),_:1},8,["modelValue"]),s.batMode==="min_soc_bat_mode"?(l(),u("div",D,[i(w,{title:"Mindest-SoC des Speichers",min:0,max:100,step:1,unit:"%",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/min_bat_soc"],"onUpdate:modelValue":e[10]||(e[10]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/min_bat_soc",r))},null,8,["model-value"]),i(_,null,{default:a(()=>e[44]||(e[44]=[t(" Speicher-SoC unterhalb Mindest-SoC ")])),_:1}),i(c,{title:"Ladeleistung für Speicher reservieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"],"onUpdate:modelValue":e[11]||(e[11]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve_active",r))},{help:a(()=>e[45]||(e[45]=[t(" ACHTUNG: Der hier eingestellte Wert darf die maximale Ladeleistung des Speichers nicht überschreiten."),o("br",null,null,-1),t(" Wird der Mindest-SoC des Speichers nicht erreicht, wird der Speicher mit der hier eingestellten Leistung geladen. Mit dem verbleibenden Überschuss werden die Fahrzeuge geladen. ")])),_:1},8,["model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]?(l(),v(d,{key:0,title:"Reserve Ladeleistung",min:.1,step:.1,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve"]/1e3,"onUpdate:modelValue":e[12]||(e[12]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve",r*1e3))},null,8,["model-value"])):f("",!0),i(_,null,{default:a(()=>e[46]||(e[46]=[t(" Speicher-SoC oberhalb Mindest-SoC ")])),_:1}),i(c,{title:"Entladung des Speichers erlauben",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"],"onUpdate:modelValue":e[13]||(e[13]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge_active",r))},{help:a(()=>e[47]||(e[47]=[t(" Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen und der Speicher mit der hier eingestellten Leistung in die Fahrzeuge entladen. Die Entladeleistung des Speichers wird dem Überschuss zum Erreichen der Einschaltschwelle hinzugerechnet. ")])),_:1},8,["model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]?(l(),v(d,{key:1,title:"Erlaubte Entladeleistung",min:.1,step:.1,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge"]/1e3,"onUpdate:modelValue":e[14]||(e[14]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge",r*1e3))},null,8,["model-value"])):f("",!0)])):f("",!0)]))]),_:1}),i(W,{"form-name":"pvChargeConfigForm",onSave:e[15]||(e[15]=r=>n.$emit("save")),onReset:e[16]||(e[16]=r=>n.$emit("reset")),onDefaults:e[17]||(e[17]=r=>n.$emit("defaults"))})])])}const j=E(q,[["render",N],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{j as default}; diff --git a/web/settings/assets/PVChargeConfig-c750b618.js b/web/settings/assets/PVChargeConfig-c750b618.js new file mode 100644 index 0000000000..90a9e6bd04 --- /dev/null +++ b/web/settings/assets/PVChargeConfig-c750b618.js @@ -0,0 +1 @@ +import{C as S}from"./index-cc8f65ba.js";import{l as B,V,a3 as z,a4 as k,F as y}from"./vendor-fortawesome-433470db.js";import{_ as E,u as g,l,m as u,x as o,G as i,E as a,y as t,F as C,z as v,B as f}from"./vendor-ea36120f.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";B.add(V,z,k);const q={name:"OpenwbPVChargeConfigView",components:{FontAwesomeIcon:y},mixins:[S],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/pv_charging/control_range","openWB/general/chargemode_config/pv_charging/feed_in_yield","openWB/general/chargemode_config/pv_charging/switch_on_threshold","openWB/general/chargemode_config/pv_charging/switch_on_delay","openWB/general/chargemode_config/pv_charging/switch_off_threshold","openWB/general/chargemode_config/pv_charging/switch_off_delay","openWB/general/chargemode_config/pv_charging/phases_to_use","openWB/general/chargemode_config/pv_charging/bat_mode","openWB/general/chargemode_config/pv_charging/bat_power_reserve","openWB/general/chargemode_config/pv_charging/bat_power_reserve_active","openWB/general/chargemode_config/pv_charging/bat_power_discharge","openWB/general/chargemode_config/pv_charging/bat_power_discharge_active","openWB/general/chargemode_config/pv_charging/min_bat_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const n="openWB/general/chargemode_config/pv_charging/control_range";let e=this.$store.state.mqtt[n];var p="individual";return typeof e<"u"&&(e[0]===-230&&e[1]===0?p="export":e[0]===0&&e[1]===230?p="import":e[0]===-115&&e[1]===115?p="balanced":p="individual"),p},set(n){const e="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=n,n){case"export":this.updateState(e,[-230,0]);break;case"import":this.updateState(e,[0,230]);break;case"balanced":this.updateState(e,[-115,115]);break}}},chargingSwitchRange:{get(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]+this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]}},batMode:{get(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]},set(n){this.updateState("openWB/general/chargemode_config/pv_charging/bat_mode",n)}}},watch:{controlMode(n){this.calculatedControlMode=n}}},M={class:"pvChargeConfig"},L={name:"pvChargeConfigForm"},A={key:0},$={key:1},U={key:0},R={key:1},P={key:0},F={key:1},D={key:0};function N(n,e,p,I,x,s){const m=g("openwb-base-alert"),c=g("openwb-base-button-group-input"),d=g("openwb-base-number-input"),b=g("openwb-base-card"),h=g("font-awesome-icon"),w=g("openwb-base-range-input"),_=g("openwb-base-heading"),W=g("openwb-base-submit-buttons");return l(),u("div",M,[o("form",L,[i(b,{title:"Regelparameter"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(l(),u("div",A,[i(m,{subtype:"info"},{default:a(()=>e[18]||(e[18]=[t(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),u("div",$,[i(c,{modelValue:s.controlMode,"onUpdate:modelValue":e[0]||(e[0]=r=>s.controlMode=r),title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"balanced",text:"Ausgewogen"},{buttonValue:"individual",text:"Individuell"}]},{help:a(()=>e[19]||(e[19]=[t(" Die Ladeleistung kann nicht mit absoluter Genauigkeit eingestellt werden, sodass am EVU-Punkt nicht auf exakt 0W geregelt werden kann. Der Regelmodus legt fest, ob diese Differenz am EVU-Punkt (ca. 200-300W) zu geringem Netzbezug oder geringer Netzeinspeisung führen soll."),o("br",null,null,-1),t(" Bei Speichervorrang erzeugt die Regelung bei Bedarf unabhängig vom eingestellten Regelmodus Einspeisung, damit der Speicher seine Ladeleistung erhöht."),o("br",null,null,-1),t(" Achtung: bei unlogischen Einstellungen kann die Regelung gestört werden! Im Zweifel bitte unsere vordefinierten Modi verwenden. ")])),_:1},8,["modelValue"]),i(d,{disabled:s.controlMode!=="individual",readonly:s.controlMode!=="individual",title:"Minimum",step:.005,unit:"kW",required:"","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":e[1]||(e[1]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",r*1e3,"0"))},{help:a(()=>e[20]||(e[20]=[t(" Untere Grenze des Regelbereichs. ")])),_:1},8,["disabled","readonly","model-value"]),i(d,{disabled:s.controlMode!=="individual",readonly:s.controlMode!=="individual",title:"Maximum",step:.005,unit:"kW",required:"","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":e[2]||(e[2]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",r*1e3,"1"))},{help:a(()=>e[21]||(e[21]=[t(" Obere Grenze des Regelbereichs. ")])),_:1},8,["disabled","readonly","model-value"]),e[28]||(e[28]=o("hr",null,null,-1)),i(m,{subtype:s.chargingSwitchRange<1400?"danger":"info"},{default:a(()=>[t(" Die Differenzleistung zw. Ein- und Abschaltschwelle sollte mind. 1,4 kW (230V x 6A) betragen. (Konfiguriert: "+C((s.chargingSwitchRange/1e3).toLocaleString(void 0))+" kW) ",1)]),_:1},8,["subtype"]),i(d,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":e[3]||(e[3]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",r*1e3))},{help:a(()=>e[22]||(e[22]=[t(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet."),o("br",null,null,-1),t(" Dieser Wert wird pro Phase genutzt und ist daher immer für eine Phase anzugeben. ")])),_:1},8,["model-value"]),i(d,{title:"Einschaltverzögerung",min:0,step:1,unit:"s",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":e[4]||(e[4]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",r))},{help:a(()=>e[23]||(e[23]=[t(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),o("br",null,null,-1),t(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")])),_:1},8,["model-value"]),e[29]||(e[29]=o("hr",null,null,-1)),i(m,{subtype:n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3>0?"danger":"info"},{default:a(()=>e[24]||(e[24]=[t(" Ist ein Speicher im System vorhanden, kann eine Abschaltschwelle größer Null zur Speicherentladung führen. (Siehe Fragezeichentext) ")])),_:1},8,["subtype"]),i(d,{title:"Abschaltschwelle",step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":e[5]||(e[5]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",r*1e3))},{help:a(()=>e[25]||(e[25]=[t(" Übersteigt der Netzbezug die Abschaltschwelle, wird die Ladung beendet. Eine Abschaltschaltschwelle, die Netzbezug erlaubt, führt in einem System ohne steuerbaren Speicher zur Entladung des Speichers. Der Speicher wird dann auch über den eingestellten Mindest-SoC hinaus entladen (siehe Speicherbeachtung unten). ")])),_:1},8,["model-value"]),i(d,{title:"Abschaltverzögerung",min:0,step:1,unit:"s",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":e[6]||(e[6]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",r))},{help:a(()=>e[26]||(e[26]=[t(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),o("br",null,null,-1),t(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird die Ladung sofort beendet, wenn die Abschaltschwelle unterschritten wird. ")])),_:1},8,["model-value"]),e[30]||(e[30]=o("hr",null,null,-1)),i(d,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":e[7]||(e[7]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",r*1e3))},{help:a(()=>e[27]||(e[27]=[t(" Ein Wert größer 0kW bewirkt, dass weniger PV-Leistung zum Laden benutzt wird."),o("br",null,null,-1),t(" Die Nutzung dieser Option ergibt nur Sinn, wenn ein Wechselrichter mit separatem Smart-Meter am EVU-Punkt verbaut ist (nicht der originale Zähler des Versorgers!), welches eine dynamische Begrenzung der Einspeiseleistung am EVU-Punkt durch den PV-Wechselrichter bietet (bitte bei ev. Problemen immer vorab prüfen lassen)."),o("br",null,null,-1),t(' Ist eine Einspeiseleistungsreduzierung verbaut (in vielen älteren, privaten Einspeiseverträgen z.B. als 70% Regelung bekannt), wird mit Eingabe des Wertes "Regelpunkt Einspeisegrenze" ein eigenverbrauchsoptimiertes Fahrzeugladen mit PV-Überschussenergie möglich, die sonst abgeregelt werden würde (Nutzung der PV-Peaks).'),o("br",null,null,-1),t(' Wird in einem "Ladeprofil" die Option "Einspeisegrenze beachten" eingeschaltet, so wird der Regelpunkt auf diesen Wert verschoben und die Ladung startet erst, wenn der hinterlegte Wert "Regelpunkt Einspeisegrenze" überschritten wird.'),o("br",null,null,-1),t(" Zur optimalen Eigenverbrauchssteuerung sollte der Wert einige hundert Watt UNTER der im Wechselrichter hinterlegten EVU-Einspeiseleistungsgrenze liegen, damit openWB die Ladung freigibt, BEVOR der Wechselrichter begrenzt wird. ")])),_:1},8,["model-value"])]))]),_:1}),i(b,{title:"Phasenumschaltung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(l(),u("div",U,[i(m,{subtype:"info"},{default:a(()=>e[31]||(e[31]=[t(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),u("div",R,[i(c,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":e[8]||(e[8]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",r))},{help:a(()=>e[32]||(e[32]=[t(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "PV-Laden" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um den verfügbaren Überschuss in die Fahrzeuge zu laden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen einer und mehreren Phasen (sog. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),i(b,{title:"Speicher-Beachtung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(l(),u("div",P,[i(m,{subtype:"info"},{default:a(()=>e[33]||(e[33]=[t(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),u("div",F,[i(c,{modelValue:s.batMode,"onUpdate:modelValue":e[9]||(e[9]=r=>s.batMode=r),title:"Laden mit Überschuss",buttons:[{buttonValue:"ev_mode"},{buttonValue:"bat_mode"},{buttonValue:"min_soc_bat_mode"}]},{"label-ev_mode":a(()=>[i(h,{"fixed-width":"",icon:["fas","car-side"]}),e[34]||(e[34]=t(" Fahrzeuge "))]),"label-bat_mode":a(()=>[i(h,{"fixed-width":"",icon:["fas","fa-car-battery"]}),e[35]||(e[35]=t(" Speicher "))]),"label-min_soc_bat_mode":a(()=>[i(h,{"fixed-width":"",icon:["fas","fa-battery-half"]}),e[36]||(e[36]=t(" Mindest-SoC des Speichers "))]),help:a(()=>[e[43]||(e[43]=o("p",null,' Sofern ein Hausstromspeicher (im Folgenden "Speicher" genannt) im Energiesystem verbaut ist, kann dieser beim Fahrzeugladen mit berücksichtigt werden. Dies erfolgt passiv über die Berücksichtigung der Speicherleistungswerte und des Speicher-SoC. Eine aktive Speichersteuerung durch openWB ist aktuell mangels Speicherschnittstelle nicht möglich. ',-1)),o("p",null,[e[37]||(e[37]=t(' Bei Auswahl " ')),i(h,{"fixed-width":"",icon:["fas","car-side"]}),e[38]||(e[38]=t(' Fahrzeuge" wird der gesamte Überschuss in das EV geladen. Ist die maximale Ladeleistung der Fahrzeuge erreicht und es wird eingespeist, wird dieser Überschuss in den Speicher geladen. '))]),o("p",null,[e[39]||(e[39]=t(' Bei Auswahl " ')),i(h,{"fixed-width":"",icon:["fas","fa-car-battery"]}),e[40]||(e[40]=t(' Speicher" wird der gesamte Überschuss in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss unter Beachtung der Einschaltschwelle in die Fahrzeuge geladen. '))]),o("p",null,[e[41]||(e[41]=t(' Bei Auswahl " ')),i(h,{"fixed-width":"",icon:["fas","fa-battery-half"]}),e[42]||(e[42]=t(' Mindest-SoC des Speichers" wird der Überschuss bis zum Mindest-SoC in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss in die Fahrzeuge geladen. Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen. '))])]),_:1},8,["modelValue"]),s.batMode==="min_soc_bat_mode"?(l(),u("div",D,[i(w,{title:"Mindest-SoC des Speichers",min:0,max:100,step:1,unit:"%",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/min_bat_soc"],"onUpdate:modelValue":e[10]||(e[10]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/min_bat_soc",r))},null,8,["model-value"]),i(_,null,{default:a(()=>e[44]||(e[44]=[t(" Speicher-SoC unterhalb Mindest-SoC ")])),_:1}),i(c,{title:"Ladeleistung für Speicher reservieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"],"onUpdate:modelValue":e[11]||(e[11]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve_active",r))},{help:a(()=>e[45]||(e[45]=[t(" ACHTUNG: Der hier eingestellte Wert darf die maximale Ladeleistung des Speichers nicht überschreiten."),o("br",null,null,-1),t(" Wird der Mindest-SoC des Speichers nicht erreicht, wird der Speicher mit der hier eingestellten Leistung geladen. Mit dem verbleibenden Überschuss werden die Fahrzeuge geladen. ")])),_:1},8,["model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]?(l(),v(d,{key:0,title:"Reserve Ladeleistung",min:.1,step:.1,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve"]/1e3,"onUpdate:modelValue":e[12]||(e[12]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve",r*1e3))},null,8,["model-value"])):f("",!0),i(_,null,{default:a(()=>e[46]||(e[46]=[t(" Speicher-SoC oberhalb Mindest-SoC ")])),_:1}),i(c,{title:"Entladung des Speichers erlauben",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"],"onUpdate:modelValue":e[13]||(e[13]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge_active",r))},{help:a(()=>e[47]||(e[47]=[t(" Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen und der Speicher mit der hier eingestellten Leistung in die Fahrzeuge entladen. Die Entladeleistung des Speichers wird dem Überschuss zum Erreichen der Einschaltschwelle hinzugerechnet. ")])),_:1},8,["model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]?(l(),v(d,{key:1,title:"Erlaubte Entladeleistung",min:.1,step:.1,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge"]/1e3,"onUpdate:modelValue":e[14]||(e[14]=r=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge",r*1e3))},null,8,["model-value"])):f("",!0)])):f("",!0)]))]),_:1}),i(W,{"form-name":"pvChargeConfigForm",onSave:e[15]||(e[15]=r=>n.$emit("save")),onReset:e[16]||(e[16]=r=>n.$emit("reset")),onDefaults:e[17]||(e[17]=r=>n.$emit("defaults"))})])])}const j=E(q,[["render",N],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{j as default}; diff --git a/web/settings/assets/ScheduledChargeConfig-9a450d65.js b/web/settings/assets/ScheduledChargeConfig-85a95906.js similarity index 90% rename from web/settings/assets/ScheduledChargeConfig-9a450d65.js rename to web/settings/assets/ScheduledChargeConfig-85a95906.js index 81e65f6403..3beb7303ab 100644 --- a/web/settings/assets/ScheduledChargeConfig-9a450d65.js +++ b/web/settings/assets/ScheduledChargeConfig-85a95906.js @@ -1 +1 @@ -import{C as p}from"./index-b236cee5.js";import{_ as h,u as s,l as i,m as u,A as b,G as o,E as a,B as r}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";const c={name:"OpenwbScheduledChargeConfigView",mixins:[p],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use","openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"]}}},_={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1};function k(t,e,C,V,B,$){const l=s("openwb-base-alert"),d=s("openwb-base-button-group-input"),g=s("openwb-base-card"),m=s("openwb-base-submit-buttons");return i(),u("div",_,[b("form",f,[o(g,{title:"Phasenumschaltung"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),u("div",v,[o(l,{subtype:"info"},{default:a(()=>e[5]||(e[5]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),u("div",w,[o(d,{title:"Anzahl Phasen Zielladen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use",n))},{help:a(()=>e[6]||(e[6]=[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (sog. 1p3p). ')])),_:1},8,["model-value"]),o(d,{title:"Anzahl Phasen bei PV-Überschuss",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv",n))},{help:a(()=>e[7]||(e[7]=[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" bei Laden mit PV-Überschuss mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (sog. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),o(m,{"form-name":"scheduledChargeConfigForm",onSave:e[2]||(e[2]=n=>t.$emit("save")),onReset:e[3]||(e[3]=n=>t.$emit("reset")),onDefaults:e[4]||(e[4]=n=>t.$emit("defaults"))})])])}const P=h(c,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{P as default}; +import{C as p}from"./index-cc8f65ba.js";import{_ as h,u as s,l as i,m as u,x as b,G as o,E as a,y as r}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";const c={name:"OpenwbScheduledChargeConfigView",mixins:[p],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use","openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"]}}},_={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1};function k(t,e,C,V,B,$){const l=s("openwb-base-alert"),d=s("openwb-base-button-group-input"),g=s("openwb-base-card"),m=s("openwb-base-submit-buttons");return i(),u("div",_,[b("form",f,[o(g,{title:"Phasenumschaltung"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),u("div",v,[o(l,{subtype:"info"},{default:a(()=>e[5]||(e[5]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),u("div",w,[o(d,{title:"Anzahl Phasen Zielladen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use",n))},{help:a(()=>e[6]||(e[6]=[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (sog. 1p3p). ')])),_:1},8,["model-value"]),o(d,{title:"Anzahl Phasen bei PV-Überschuss",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv",n))},{help:a(()=>e[7]||(e[7]=[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" bei Laden mit PV-Überschuss mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (sog. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),o(m,{"form-name":"scheduledChargeConfigForm",onSave:e[2]||(e[2]=n=>t.$emit("save")),onReset:e[3]||(e[3]=n=>t.$emit("reset")),onDefaults:e[4]||(e[4]=n=>t.$emit("defaults"))})])])}const P=h(c,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{P as default}; diff --git a/web/settings/assets/Status-255f6f61.css b/web/settings/assets/Status-255f6f61.css deleted file mode 100644 index ac031957b3..0000000000 --- a/web/settings/assets/Status-255f6f61.css +++ /dev/null @@ -1 +0,0 @@ -.io-state[data-v-356761d0]{white-space:nowrap;flex-grow:0;flex-basis:7em}.openwb-chart[data-v-f4769d2f]{min-height:250px}.status[data-v-051028a3]{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:0 1em;gap:0 1em}.status .card[data-v-051028a3]{align-self:start}@media (max-width: 991px){.status[data-v-051028a3]{display:grid;grid-template-columns:repeat(1,1fr);grid-gap:10px;gap:10px}} diff --git a/web/settings/assets/Status-3484f650.js b/web/settings/assets/Status-3484f650.js new file mode 100644 index 0000000000..52aa9c9010 --- /dev/null +++ b/web/settings/assets/Status-3484f650.js @@ -0,0 +1 @@ +import{C as y}from"./index-cc8f65ba.js";import{l as T,J as q,K as S,c as P,F as w,L as A,M as D,N as G,O as H,P as F,Q as Z,R as K,S as J,T as U,U as I,V as L,W as Q,X,Y}from"./vendor-fortawesome-433470db.js";import{_ as v,u as i,l as d,z as g,D as j,E as r,x as e,m as f,G as n,y as u,F as a,B as x,p as $,q as ee,N as B,M as N}from"./vendor-ea36120f.js";import{C as te,p as se,a as oe,L as ae,b as re,P as ie,c as ne,T as ce,i as de,d as le,e as pe}from"./vendor-chartjs-1398beb1.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./vendor-luxon-8ddd27a0.js";T.add(q,S,P);const me={name:"StatusCard",components:{FontAwesomeIcon:w},props:{subtype:{type:String,required:!0},state:{type:Number,required:!1,default:0},stateMessage:{type:String,required:!1,default:void 0},componentId:{type:Number,required:!1,default:void 0}},computed:{stateClass(){switch(this.state){case 0:return"success";case 1:return"warning";case 2:return"danger";default:return"dark"}},stateIcon(){switch(this.state){case 0:return["fas","check-circle"];case 1:return["fas","exclamation-triangle"];case 2:return["fas","times-circle"];default:return["fas","check-circle"]}}}},ue={class:"text-right"},ge={class:"container"},he={class:"row justify-content-end"},be={key:0,class:"col px-0"},_e={style:{"white-space":"pre-wrap"}},fe={key:1,class:"col col-auto pr-0"},ve={class:"text-right"};function ye(s,o,c,h,b,t){const p=i("font-awesome-icon"),l=i("openwb-base-alert"),m=i("openwb-base-card");return d(),g(m,{subtype:c.subtype,collapsible:!0,collapsed:!0,class:"pb-0"},j({header:r(()=>[$(s.$slots,"header-left")]),actions:r(()=>[e("div",ue,[$(s.$slots,"header-right")]),n(p,{class:ee([c.state===0?`text-${c.subtype}`:"","ml-1"]),"fixed-width":"",icon:t.stateIcon},null,8,["class","icon"])]),default:r(()=>[$(s.$slots,"default")]),_:2},[c.componentId!==void 0||c.stateMessage?{name:"footer",fn:r(()=>[e("div",ge,[e("div",he,[c.stateMessage?(d(),f("div",be,[n(l,{subtype:t.stateClass},{default:r(()=>[n(p,{"fixed-width":"",icon:t.stateIcon},null,8,["icon"]),o[0]||(o[0]=u(" Modulmeldung: ")),e("span",_e,a(c.stateMessage),1)]),_:1},8,["subtype"])])):x("",!0),c.componentId!==void 0?(d(),f("div",fe,[e("div",ve,"ID: "+a(c.componentId),1)])):x("",!0)])])]),key:"0"}:void 0]),1032,["subtype"])}const W=v(me,[["render",ye],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/StatusCard.vue"]]);T.add(A);const Te={name:"ChargePointSumCard",components:{StatusCard:W,FontAwesomeIcon:w},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported"]}},computed:{baseTopic:{get(){return"openWB/chargepoint"}}}},we={class:"text-right"},xe={class:"row"},We={class:"col text-right text-monospace"},ke={class:"row"},Ce={class:"col-4 text-right text-monospace"},Be={class:"col-4 text-right text-monospace"},Ne={class:"row"},$e={class:"col-4 text-right text-monospace"},qe={class:"col-4 text-right text-monospace"};function Se(s,o,c,h,b,t){const p=i("font-awesome-icon"),l=i("openwb-base-card"),m=i("status-card");return d(),g(m,{subtype:"primary"},{"header-left":r(()=>[n(p,{"fixed-width":"",icon:["fas","charging-station"]}),o[0]||(o[0]=u(" Alle Ladepunkte "))]),"header-right":r(()=>[e("span",we,a(s.formatNumberTopic(t.baseTopic+"/get/power",3,3,.001))+" kW ",1)]),default:r(()=>[n(l,{subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[o[1]||(o[1]=e("div",{class:"row py-2"},[e("div",{class:"col font-weight-bold"},"Ladevorgang"),e("div",{class:"col text-right"},"Leistung")],-1)),e("div",xe,[e("div",We,a(s.formatNumberTopic(t.baseTopic+"/get/power",3,3,.001)),1)])]),_:1}),n(l,{subtype:"white","body-bg":"white",class:"py-1 mb-2",title:"Zählerstände"},{default:r(()=>[o[4]||(o[4]=e("div",{class:"row justify-content-end"},[e("div",{class:"col-4 text-right"},"Geladen"),e("div",{class:"col-4 text-right"},"Entladen")],-1)),e("div",ke,[o[2]||(o[2]=e("div",{class:"col text-right"},"Heute",-1)),e("div",Ce,a(s.formatNumberTopic(t.baseTopic+"/get/daily_imported",3,3,.001)+" kWh"),1),e("div",Be,a(s.formatNumberTopic(t.baseTopic+"/get/daily_exported",3,3,.001)+" kWh"),1)]),e("div",Ne,[o[3]||(o[3]=e("div",{class:"col text-right"},"Gesamt",-1)),e("div",$e,a(s.formatNumberTopic(t.baseTopic+"/get/imported",3,3,.001)+" kWh"),1),e("div",qe,a(s.formatNumberTopic(t.baseTopic+"/get/exported",3,3,.001)+" kWh"),1)])]),_:1})]),_:1})}const Pe=v(Te,[["render",Se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointSumCard.vue"]]);T.add(A,D,G,H,F,Z,K,J);const Ae={name:"ChargePointCard",components:{StatusCard:W,FontAwesomeIcon:w},mixins:[y],props:{installedChargePointKey:{type:String,required:!0},installedChargePoint:{type:Object,required:!0}},data(){return{mqttTopicsToSubscribe:[`openWB/chargepoint/${this.installedChargePoint.id}/get/+`,`openWB/chargepoint/${this.installedChargePoint.id}/get/connected_vehicle/info`,`openWB/chargepoint/${this.installedChargePoint.id}/set/+`,`openWB/internal_chargepoint/${this.installedChargePoint.id}/data/phases_to_use`]}},computed:{chargePointIndex:{get(){return this.installedChargePoint.id}},baseTopic:{get(){return"openWB/chargepoint/"+this.chargePointIndex}},chargingStatus:{get(){let s=this.$store.state.mqtt[this.baseTopic+"/get/plug_state"],o=this.$store.state.mqtt[this.baseTopic+"/get/charge_state"];return s==1&&o==1?{icon:["fas","plug-circle-bolt"],text:"Fahrzeug angesteckt, Ladevorgang aktiv"}:s==1?{icon:["fas","plug-circle-check"],text:"Fahrzeug angesteckt, kein Ladevorgang aktiv"}:{icon:["fas","plug-circle-minus"],text:"Kein Fahrzeug angesteckt"}}}}},Ie={class:"row py-2"},Le={class:"col text-right"},je={style:{"white-space":"pre-wrap"}},Oe={class:"row"},ze={class:"col text-right text-monospace"},Ee={class:"col text-right text-monospace"},Re={class:"row"},Ve={key:0,class:"col text-right text-monospace"},Me={key:1,class:"col text-right text-monospace"},De={class:"col text-right text-monospace"},Ge={class:"row"},He={class:"col-4 text-right text-monospace"},Fe={class:"col-4 text-right text-monospace"},Ze={class:"row"},Ke={class:"col-4 text-right text-monospace"},Je={class:"col-4 text-right text-monospace"},Ue={class:"row"},Qe={class:"col text-right text-monospace"},Xe={class:"col text-right text-monospace"},Ye={class:"col text-right text-monospace"},et={class:"row"},tt={class:"col text-right text-monospace"},st={class:"col text-right text-monospace"},ot={class:"col text-right text-monospace"},at={class:"row"},rt={class:"col text-right text-monospace"},it={class:"col text-right text-monospace"},nt={class:"col text-right text-monospace"},ct={class:"row"},dt={class:"col text-right text-monospace"},lt={class:"col text-right text-monospace"},pt={class:"col text-right text-monospace"},mt={class:"row"},ut={class:"col text-center text-monospace"};function gt(s,o,c,h,b,t){const p=i("font-awesome-icon"),l=i("openwb-base-alert"),m=i("openwb-base-card"),k=i("status-card");return d(),g(k,{subtype:"primary","component-id":t.chargePointIndex,state:s.$store.state.mqtt[t.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[t.baseTopic+"/get/fault_str"]},{"header-left":r(()=>[n(p,{"fixed-width":"",icon:["fas","charging-station"]}),u(" "+a(c.installedChargePoint.name),1)]),"header-right":r(()=>[u(a(s.formatNumberTopic(t.baseTopic+"/get/power",3,3,.001))+" kW",1)]),default:r(()=>[n(m,{subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[e("div",Ie,[o[0]||(o[0]=e("div",{class:"col col-auto font-weight-bold"},"Status",-1)),e("div",Le,[n(p,{"fixed-width":"",icon:t.chargingStatus.icon,title:t.chargingStatus.text},null,8,["icon","title"]),u(" "+a(t.chargingStatus.text),1)])]),n(l,{subtype:"info"},{default:r(()=>[o[1]||(o[1]=u(" Statusmeldung: ")),e("span",je,a(s.$store.state.mqtt[t.baseTopic+"/get/state_str"]),1)]),_:1}),e("div",null," max. Ladeleistung: "+a((s.max_power=s.formatNumberTopic(t.baseTopic+"/get/max_evse_current",0))=="-"?s.max_power:Math.floor(s.max_power*3*230/1e3))+" kW ",1)]),_:1}),n(m,{subtype:"white","body-bg":"white",class:"py-1 mb-2",title:"Ladevorgang"},{default:r(()=>[o[2]||(o[2]=e("div",{class:"row"},[e("div",{class:"col text-right"},"Ladestrom Vorgabe"),e("div",{class:"col text-right"},"Leistung")],-1)),e("div",Oe,[e("div",ze,a(s.formatNumberTopic(t.baseTopic+"/set/current",2))+" A",1),e("div",Ee,a(s.formatNumberTopic(t.baseTopic+"/get/power",3,3,.001))+" kW ",1)]),o[3]||(o[3]=e("div",{class:"row"},[e("div",{class:"col text-right"},"Phasen Vorgabe"),e("div",{class:"col text-right"},"Phasen Aktuell")],-1)),e("div",Re,[s.$store.state.mqtt["openWB/general/extern"]===!0?(d(),f("div",Ve,a(s.formatNumberTopic("openWB/internal_chargepoint/"+t.chargePointIndex+"/data/phases_to_use")),1)):(d(),f("div",Me,a(s.formatNumberTopic(t.baseTopic+"/set/phases_to_use")),1)),e("div",De,a(s.formatNumberTopic(t.baseTopic+"/get/phases_in_use")),1)])]),_:1}),n(m,{subtype:"white","body-bg":"white",class:"py-1 mb-2",title:"Zählerstände"},{default:r(()=>[o[6]||(o[6]=e("div",{class:"row justify-content-end"},[e("div",{class:"col-4 text-right"},"Geladen"),e("div",{class:"col-4 text-right"},"Entladen")],-1)),e("div",Ge,[o[4]||(o[4]=e("div",{class:"col text-right"},"Heute",-1)),e("div",He,a(s.formatNumberTopic(t.baseTopic+"/get/daily_imported",3,3,.001))+" kWh ",1),e("div",Fe,a(s.formatNumberTopic(t.baseTopic+"/get/daily_exported",3,3,.001))+" kWh ",1)]),e("div",Ze,[o[5]||(o[5]=e("div",{class:"col text-right"},"Gesamt",-1)),e("div",Ke,a(s.formatNumberTopic(t.baseTopic+"/get/imported",3,3,.001))+" kWh ",1),e("div",Je,a(s.formatNumberTopic(t.baseTopic+"/get/exported",3,3,.001))+" kWh ",1)])]),_:1}),n(m,{subtype:"white","body-bg":"white",class:"py-1 mb-2",title:"Werte pro Phase"},{default:r(()=>[e("div",Ue,[o[7]||(o[7]=e("div",{class:"col-md-4 pr-1 text-center text-md-right"},"Spannung [V]",-1)),e("div",Qe,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/voltages",1).split(" / ")[0]),1),e("div",Xe,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/voltages",1).split(" / ")[1]),1),e("div",Ye,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/voltages",1).split(" / ")[2]),1)]),e("div",et,[o[8]||(o[8]=e("div",{class:"col-md-4 pr-1 text-center text-md-right"},"Strom [A]",-1)),e("div",tt,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/currents",2).split(" / ")[0]),1),e("div",st,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/currents",2).split(" / ")[1]),1),e("div",ot,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/currents",2).split(" / ")[2]),1)]),e("div",at,[o[9]||(o[9]=e("div",{class:"col-md-4 pr-1 text-center text-md-right"},"Wirkleistung [kW]",-1)),e("div",rt,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/powers",3,3,.001).split(" / ")[0]),1),e("div",it,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/powers",3,3,.001).split(" / ")[1]),1),e("div",nt,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/powers",3,3,.001).split(" / ")[2]),1)]),e("div",ct,[o[10]||(o[10]=e("div",{class:"col-md-4 pr-1 text-center text-md-right"},"Leistungsfaktor",-1)),e("div",dt,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/power_factors",2).split(" / ")[0]),1),e("div",lt,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/power_factors",2).split(" / ")[1]),1),e("div",pt,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/power_factors",2).split(" / ")[2]),1)]),e("div",mt,[o[11]||(o[11]=e("div",{class:"col-md-4 pr-1 text-center text-md-right"},"Netzfrequenz",-1)),e("div",ut,a(s.formatNumberTopic(t.baseTopic+"/get/frequency",3))+" Hz ",1)])]),_:1})]),_:1},8,["component-id","state","state-message"])}const ht=v(Ae,[["render",gt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointCard.vue"]]);T.add(U);const bt={name:"CounterCard",components:{StatusCard:W,FontAwesomeIcon:w},mixins:[y],props:{counter:{type:Object,required:!0}},data(){return{mqttTopicsToSubscribe:[`openWB/counter/${this.counter.id}/get/+`]}},computed:{baseTopic:{get(){return"openWB/counter/"+this.counter.id}}}},_t={class:"row"},ft={class:"col text-right text-monospace pl-0"},vt={class:"col text-right text-monospace pl-0"},yt={class:"row"},Tt={class:"col text-right text-monospace pl-0"},wt={class:"col text-right text-monospace pl-0"},xt={class:"row"},Wt={class:"col"},kt={class:"row"},Ct={class:"col text-right text-monospace pl-0"},Bt={class:"col text-right text-monospace pl-0"},Nt={class:"col text-right text-monospace pl-0"},$t={class:"row"},qt={class:"col"},St={class:"row"},Pt={class:"col text-right text-monospace pl-0"},At={class:"col text-right text-monospace pl-0"},It={class:"col text-right text-monospace pl-0"},Lt={class:"row"},jt={class:"col"},Ot={class:"row"},zt={class:"col text-right text-monospace pl-0"},Et={class:"col text-right text-monospace pl-0"},Rt={class:"col text-right text-monospace pl-0"},Vt={class:"row"},Mt={class:"col"},Dt={class:"row"},Gt={class:"col text-right text-monospace pl-0"},Ht={class:"col text-right text-monospace pl-0"},Ft={class:"col text-right text-monospace pl-0"};function Zt(s,o,c,h,b,t){const p=i("font-awesome-icon"),l=i("openwb-base-card"),m=i("status-card");return d(),g(m,{subtype:"danger","component-id":c.counter.id,state:s.$store.state.mqtt[t.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[t.baseTopic+"/get/fault_str"]},{"header-left":r(()=>[n(p,{"fixed-width":"",icon:["fas","gauge-high"]}),u(" "+a(c.counter.name),1)]),"header-right":r(()=>[u(a(s.formatNumberTopic(t.baseTopic+"/get/power",3,3,.001))+" kW",1)]),default:r(()=>[n(l,{title:"Aktuelle Werte",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[o[0]||(o[0]=e("div",{class:"row"},[e("div",{class:"col-6 text-right"},"Leistung"),e("div",{class:"col-6 text-right"},"Netzfrequenz")],-1)),e("div",_t,[e("div",ft,a(s.formatNumberTopic(t.baseTopic+"/get/power",3,3,.001)+" kW"),1),e("div",vt,a(s.formatNumberTopic(t.baseTopic+"/get/frequency",3)+" Hz"),1)])]),_:1}),n(l,{title:"Zählerstände",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[o[1]||(o[1]=e("div",{class:"row"},[e("div",{class:"col-6 text-right"},"Export"),e("div",{class:"col-6 text-right"},"Import")],-1)),e("div",yt,[e("div",Tt,a(s.formatNumberTopic(t.baseTopic+"/get/exported",3,3,.001)+" kWh"),1),e("div",wt,a(s.formatNumberTopic(t.baseTopic+"/get/imported",3,3,.001)+" kWh"),1)])]),_:1}),n(l,{title:"Werte pro Phase",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[e("div",xt,[o[2]||(o[2]=e("div",{class:"col-md-4 pr-0 text-center text-md-right"},"Spannung [V]",-1)),e("div",Wt,[e("div",kt,[e("div",Ct,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/voltages",1).split(" / ")[0]),1),e("div",Bt,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/voltages",1).split(" / ")[1]),1),e("div",Nt,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/voltages",1).split(" / ")[2]),1)])])]),e("div",$t,[o[3]||(o[3]=e("div",{class:"col-md-4 pr-0 text-center text-md-right"},"Strom [A]",-1)),e("div",qt,[e("div",St,[e("div",Pt,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/currents",2).split(" / ")[0]),1),e("div",At,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/currents",2).split(" / ")[1]),1),e("div",It,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/currents",2).split(" / ")[2]),1)])])]),e("div",Lt,[o[4]||(o[4]=e("div",{class:"col-md-4 pr-0 text-center text-md-right"},"Wirkleistung [kW]",-1)),e("div",jt,[e("div",Ot,[e("div",zt,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/powers",3,3,.001).split(" / ")[0]),1),e("div",Et,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/powers",3,3,.001).split(" / ")[1]),1),e("div",Rt,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/powers",3,3,.001).split(" / ")[2]),1)])])]),e("div",Vt,[o[5]||(o[5]=e("div",{class:"col-md-4 pr-0 text-center text-md-right"},"Leistungsfaktor",-1)),e("div",Mt,[e("div",Dt,[e("div",Gt,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/power_factors",2).split(" / ")[0]),1),e("div",Ht,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/power_factors",2).split(" / ")[1]),1),e("div",Ft,a(s.formatPhaseArrayNumberTopic(t.baseTopic+"/get/power_factors",2).split(" / ")[2]),1)])])])]),_:1})]),_:1},8,["component-id","state","state-message"])}const Kt=v(bt,[["render",Zt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/CounterCard.vue"]]);T.add(I);const Jt={name:"InverterSumCard",components:{StatusCard:W,FontAwesomeIcon:w},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/pv/get/+"]}},computed:{baseTopic:{get(){return"openWB/pv"}}}},Ut={class:"row"},Qt={class:"col text-right text-monospace"},Xt={class:"col text-right text-monospace"},Yt={class:"row"},es={class:"col text-right text-monospace"},ts={class:"col text-right text-monospace"},ss={class:"col text-right text-monospace"};function os(s,o,c,h,b,t){const p=i("font-awesome-icon"),l=i("openwb-base-card"),m=i("status-card");return d(),g(m,{subtype:"success",state:s.$store.state.mqtt[t.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[t.baseTopic+"/get/fault_str"]},{"header-left":r(()=>[n(p,{"fixed-width":"",icon:["fas","solar-panel"]}),o[0]||(o[0]=u(" Alle Wechselrichter "))]),"header-right":r(()=>[u(a(s.formatNumberTopic(t.baseTopic+"/get/power",3,3,.001))+" kW",1)]),default:r(()=>[n(l,{title:"Aktuelle Werte",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[o[1]||(o[1]=e("div",{class:"row"},[e("div",{class:"col text-right"},"Leistung"),e("div",{class:"col text-right"},"Zählerstand")],-1)),e("div",Ut,[e("div",Qt,a(s.formatNumberTopic(t.baseTopic+"/get/power",3,3,.001))+" kW ",1),e("div",Xt,a(s.formatNumberTopic(t.baseTopic+"/get/exported",3,3,.001))+" kWh ",1)])]),_:1}),n(l,{title:"Erträge",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[o[2]||(o[2]=e("div",{class:"row"},[e("div",{class:"col text-right"},"Heute"),e("div",{class:"col text-right"},"Monat"),e("div",{class:"col text-right"},"Jahr")],-1)),e("div",Yt,[e("div",es,a(s.formatNumberTopic(t.baseTopic+"/get/daily_exported",3,3,.001))+" kWh ",1),e("div",ts,a(s.formatNumberTopic(t.baseTopic+"/get/monthly_exported",1,1,.001))+" kWh ",1),e("div",ss,a(s.formatNumberTopic(t.baseTopic+"/get/yearly_exported",0,0,.001))+" kWh ",1)])]),_:1})]),_:1},8,["state","state-message"])}const as=v(Jt,[["render",os],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterSumCard.vue"]]);T.add(I);const rs={name:"InverterCard",components:{StatusCard:W,FontAwesomeIcon:w},mixins:[y],props:{inverter:{type:Object,required:!0}},data(){return{mqttTopicsToSubscribe:[`openWB/pv/${this.inverter.id}/get/+`]}},computed:{baseTopic:{get(){return"openWB/pv/"+this.inverter.id}}}},is={class:"row"},ns={class:"col text-right text-monospace"},cs={class:"col text-right text-monospace"},ds={class:"row"},ls={class:"col text-right text-monospace"},ps={class:"col text-right text-monospace"},ms={class:"col text-right text-monospace"};function us(s,o,c,h,b,t){const p=i("font-awesome-icon"),l=i("openwb-base-card"),m=i("status-card");return d(),g(m,{subtype:"success","component-id":c.inverter.id,state:s.$store.state.mqtt[t.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[t.baseTopic+"/get/fault_str"]},{"header-left":r(()=>[n(p,{"fixed-width":"",icon:["fas","solar-panel"]}),u(" "+a(c.inverter.name),1)]),"header-right":r(()=>[u(a(s.formatNumberTopic(t.baseTopic+"/get/power",3,3,.001))+" kW",1)]),default:r(()=>[n(l,{title:"Aktuelle Werte",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[o[0]||(o[0]=e("div",{class:"row"},[e("div",{class:"col text-right"},"Leistung"),e("div",{class:"col text-right"},"Zählerstand")],-1)),e("div",is,[e("div",ns,a(s.formatNumberTopic(t.baseTopic+"/get/power",3,3,.001))+" kW ",1),e("div",cs,a(s.formatNumberTopic(t.baseTopic+"/get/exported",3,3,.001))+" kWh ",1)])]),_:1}),n(l,{title:"Erträge",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[o[1]||(o[1]=e("div",{class:"row"},[e("div",{class:"col text-right"},"Heute"),e("div",{class:"col text-right"},"Monat"),e("div",{class:"col text-right"},"Jahr")],-1)),e("div",ds,[e("div",ls,a(s.formatNumberTopic(t.baseTopic+"/get/daily_exported",3,3,.001))+" kWh ",1),e("div",ps,a(s.formatNumberTopic(t.baseTopic+"/get/monthly_exported",1,1,.001))+" kWh ",1),e("div",ms,a(s.formatNumberTopic(t.baseTopic+"/get/yearly_exported",0,0,.001))+" kWh ",1)])]),_:1})]),_:1},8,["component-id","state","state-message"])}const gs=v(rs,[["render",us],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterCard.vue"]]);T.add(L);const hs={name:"BatterySumCard",components:{StatusCard:W,FontAwesomeIcon:w},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/bat/get/+"]}},computed:{baseTopic:{get(){return"openWB/bat"}}}},bs={class:"row"},_s={class:"col text-right text-monospace pl-0"},fs={class:"col text-right text-monospace pl-0"},vs={class:"row"},ys={class:"col text-right text-monospace"},Ts={class:"col text-right text-monospace"},ws={class:"row"},xs={class:"col text-right text-monospace"},Ws={class:"col text-right text-monospace"};function ks(s,o,c,h,b,t){const p=i("font-awesome-icon"),l=i("openwb-base-card"),m=i("status-card");return d(),g(m,{subtype:"warning",state:s.$store.state.mqtt[t.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[t.baseTopic+"/get/fault_str"]},{"header-left":r(()=>[n(p,{"fixed-width":"",icon:["fas","car-battery"]}),o[0]||(o[0]=u(" Alle Speicher "))]),"header-right":r(()=>[u(a(s.formatNumberTopic(t.baseTopic+"/get/power",1,1,.001))+" kW / "+a(s.$store.state.mqtt[t.baseTopic+"/get/soc"])+" % ",1)]),default:r(()=>[n(l,{title:"Aktuelle Werte",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[o[1]||(o[1]=e("div",{class:"row"},[e("div",{class:"col-6 text-right"},"Leistung"),e("div",{class:"col-6 text-right"},"Ladestand")],-1)),e("div",bs,[e("div",_s,a(s.formatNumberTopic(t.baseTopic+"/get/power",3,3,.001))+" kW ",1),e("div",fs,a(s.$store.state.mqtt[t.baseTopic+"/get/soc"])+" %",1)])]),_:1}),n(l,{title:"Zählerstände",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[o[4]||(o[4]=e("div",{class:"row"},[e("div",{class:"col"}),e("div",{class:"col text-right"},"Geladen"),e("div",{class:"col text-right"},"Entladen")],-1)),e("div",vs,[o[2]||(o[2]=e("div",{class:"col text-right"},"Heute",-1)),e("div",ys,a(s.formatNumberTopic(t.baseTopic+"/get/daily_imported",3,3,.001))+" kWh ",1),e("div",Ts,a(s.formatNumberTopic(t.baseTopic+"/get/daily_exported",3,3,.001))+" kWh ",1)]),e("div",ws,[o[3]||(o[3]=e("div",{class:"col text-right"},"Gesamt",-1)),e("div",xs,a(s.formatNumberTopic(t.baseTopic+"/get/imported",3,3,.001))+" kWh ",1),e("div",Ws,a(s.formatNumberTopic(t.baseTopic+"/get/exported",3,3,.001))+" kWh ",1)])]),_:1})]),_:1},8,["state","state-message"])}const Cs=v(hs,[["render",ks],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatterySumCard.vue"]]);T.add(L);const Bs={name:"BatteryCard",components:{StatusCard:W,FontAwesomeIcon:w},mixins:[y],props:{battery:{type:Object,required:!0}},data(){return{mqttTopicsToSubscribe:[`openWB/bat/${this.battery.id}/get/+`]}},computed:{baseTopic:{get(){return"openWB/bat/"+this.battery.id}}}},Ns={class:"row"},$s={class:"col text-right text-monospace pl-0"},qs={class:"col text-right text-monospace pl-0"},Ss={class:"row"},Ps={class:"col text-right text-monospace"},As={class:"col text-right text-monospace"},Is={class:"row"},Ls={class:"col text-right text-monospace"},js={class:"col text-right text-monospace"};function Os(s,o,c,h,b,t){const p=i("font-awesome-icon"),l=i("openwb-base-card"),m=i("status-card");return d(),g(m,{subtype:"warning","component-id":c.battery.id,state:s.$store.state.mqtt[t.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[t.baseTopic+"/get/fault_str"]},{"header-left":r(()=>[n(p,{"fixed-width":"",icon:["fas","car-battery"]}),u(" "+a(c.battery.name),1)]),"header-right":r(()=>[u(a(s.formatNumberTopic(t.baseTopic+"/get/power",1,1,.001))+" kW / "+a(s.$store.state.mqtt[t.baseTopic+"/get/soc"])+" % ",1)]),default:r(()=>[n(l,{title:"Aktuelle Werte",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[o[0]||(o[0]=e("div",{class:"row"},[e("div",{class:"col-6 text-right"},"Leistung"),e("div",{class:"col-6 text-right"},"Ladestand")],-1)),e("div",Ns,[e("div",$s,a(s.formatNumberTopic(t.baseTopic+"/get/power",3,3,.001))+" kW ",1),e("div",qs,a(s.$store.state.mqtt[t.baseTopic+"/get/soc"])+" %",1)])]),_:1}),n(l,{title:"Zählerstände",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[o[3]||(o[3]=e("div",{class:"row"},[e("div",{class:"col"}),e("div",{class:"col text-right"},"Geladen"),e("div",{class:"col text-right"},"Entladen")],-1)),e("div",Ss,[o[1]||(o[1]=e("div",{class:"col text-right"},"Heute",-1)),e("div",Ps,a(s.formatNumberTopic(t.baseTopic+"/get/daily_imported",3,3,.001))+" kWh ",1),e("div",As,a(s.formatNumberTopic(t.baseTopic+"/get/daily_exported",3,3,.001))+" kWh ",1)]),e("div",Is,[o[2]||(o[2]=e("div",{class:"col text-right"},"Gesamt",-1)),e("div",Ls,a(s.formatNumberTopic(t.baseTopic+"/get/imported",3,3,.001))+" kWh ",1),e("div",js,a(s.formatNumberTopic(t.baseTopic+"/get/exported",3,3,.001))+" kWh ",1)])]),_:1})]),_:1},8,["component-id","state","state-message"])}const zs=v(Bs,[["render",Os],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatteryCard.vue"]]);T.add(q,S,P,Q);const Es={name:"RippleControlReceiverCard",components:{FontAwesomeIcon:w},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/general/ripple_control_receiver/get/fault_state","openWB/general/ripple_control_receiver/get/fault_str","openWB/general/ripple_control_receiver/get/override_value","openWB/general/ripple_control_receiver/module"]}},computed:{baseTopic:{get(){return"openWB/general/ripple_control_receiver"}}}},Rs={class:"row"},Vs={key:0,class:"col"},Ms={key:1,class:"col"},Ds={style:{"white-space":"pre-wrap"}};function Gs(s,o,c,h,b,t){const p=i("font-awesome-icon"),l=i("openwb-base-card"),m=i("openwb-base-alert");return s.$store.state.mqtt[t.baseTopic+"/module"]&&s.$store.state.mqtt[t.baseTopic+"/module"].type?(d(),g(l,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0,class:"pb-0"},{header:r(()=>[n(p,{icon:["fas","tower-broadcast"]}),o[0]||(o[0]=u(" Steuerbare Verbrauchseinrichtung (RSE) "))]),footer:r(()=>[n(m,{subtype:s.getFaultStateSubtype(t.baseTopic)},{default:r(()=>[n(p,{"fixed-width":"",icon:s.stateIcon},null,8,["icon"]),o[2]||(o[2]=u(" Modulmeldung: ")),e("span",Ds,a(s.$store.state.mqtt[t.baseTopic+"/get/fault_str"]),1)]),_:1},8,["subtype"])]),default:r(()=>[n(l,{title:"Aktuelle Werte",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[e("div",Rs,[o[1]||(o[1]=e("div",{class:"col"},"Status",-1)),s.$store.state.mqtt[t.baseTopic+"/get/override_value"]==0?(d(),f("div",Vs," Laden gesperrt ")):(d(),f("div",Ms," Laden erlaubt ("+a(s.$store.state.mqtt[t.baseTopic+"/get/override_value"])+" %) ",1))])]),_:1})]),_:1})):x("",!0)}const Hs=v(Es,[["render",Gs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/RippleControlReceiver.vue"]]);T.add(X);const Fs={name:"VehicleCard",components:{StatusCard:W,FontAwesomeIcon:w},mixins:[y],props:{vehicleKey:{type:String,required:!0},vehicleName:{type:String,default:""}},data(){return{mqttTopicsToSubscribe:["openWB/vehicle/+/get/+"]}},computed:{vehicleIndex:{get(){return parseInt(this.vehicleKey.match(/(?:\/)(\d+)(?=\/)/)[1])}},soc:{get(){return this.formatNumberTopic(this.baseTopic+"/get/soc")}},socTimestamp:{get(){return this.$store.state.mqtt[this.baseTopic+"/get/soc_timestamp"]!==void 0?new Date(this.$store.state.mqtt[this.baseTopic+"/get/soc_timestamp"]*1e3).toLocaleString():"-"}},socRange:{get(){return this.$store.state.mqtt[this.baseTopic+"/get/range"]!==void 0?Math.round(this.$store.state.mqtt[this.baseTopic+"/get/range"]):0}},baseTopic:{get(){return"openWB/vehicle/"+this.vehicleIndex}}}},Zs={class:"row"},Ks={class:"col text-right text-monospace"},Js={class:"col text-right text-monospace"},Us={class:"col text-right text-monospace"};function Qs(s,o,c,h,b,t){const p=i("font-awesome-icon"),l=i("openwb-base-card"),m=i("status-card");return d(),g(m,{subtype:"info","component-id":t.vehicleIndex,state:s.$store.state.mqtt[t.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[t.baseTopic+"/get/fault_str"]},j({"header-left":r(()=>[n(p,{"fixed-width":"",icon:["fas","car"]}),u(" "+a(c.vehicleName),1)]),default:r(()=>[n(l,{title:"Fahrzeugdaten",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[o[0]||(o[0]=e("div",{class:"row"},[e("div",{class:"col pr-0 text-right"},"Ladestand"),e("div",{class:"col pr-0 text-right"},"Reichweite"),e("div",{class:"col pr-0 text-right"},"Letzter Zeitstempel")],-1)),e("div",Zs,[e("div",Ks,a(t.soc)+" %",1),e("div",Js,a(t.socRange)+" km",1),e("div",Us,a(t.socTimestamp),1)])]),_:1})]),_:2},[t.soc!="-"?{name:"header-right",fn:r(()=>[u(a(t.soc)+" % ",1)]),key:"0"}:void 0]),1032,["component-id","state","state-message"])}const Xs=v(Fs,[["render",Qs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/VehicleCard.vue"]]);T.add(Y);te.register(se,oe,ae,re,ie,ne,ce,de,le);const Ys={name:"ElectricityTariffCard",components:{StatusCard:W,FontAwesomeIcon:w,ChartjsLine:pe},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/optional/et/provider","openWB/optional/et/get/fault_state","openWB/optional/et/get/fault_str","openWB/optional/et/get/prices"],chartDatasets:{datasets:[{label:"Stromtarif",unit:"ct/kWh",type:"line",stepped:!0,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:void 0,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:"price"}}]},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0},legend:{display:!1}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"hour",text:"Zeit",maxTicksLimit:24},display:!0,title:{display:!0,text:"Uhrzeit"},ticks:{font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",title:{font:{size:12},display:!0,text:"Preis [ct/kWh]"},grid:{},ticks:{font:{size:12},stepSize:.01,maxTicksLimit:11}}}}}},computed:{electricityTariffConfigured(){const s=this.$store.state.mqtt["openWB/optional/et/provider"];return s!==void 0?s.type!==null:!1},chartDataRead(){return this.chartDataObject.datasets[0].data!=null},chartDataObject(){if(this.$store.state.mqtt["openWB/optional/et/get/prices"]){var s=this.$store.state.mqtt["openWB/optional/et/get/prices"],o=[];for(const[b,t]of Object.entries(s))o.push({timestamp:b*1e3,price:t*1e5});const h=o.slice(-1)[0];o.push({timestamp:h.timestamp+(60*60-1)*1e3,price:h.price})}const c=this.chartDatasets;return c.datasets[0].data=o,c},currentPrice(){return this.chartDataObject.datasets[0].data===void 0||this.chartDataObject.datasets[0].data.length===0?this.formatNumber(0,2):this.formatNumber(this.chartDataObject.datasets[0].data[0].price||0,2)},baseTopic:{get(){return"openWB/optional/et"}}}},eo={class:"openwb-chart"};function to(s,o,c,h,b,t){const p=i("font-awesome-icon"),l=i("chartjs-line"),m=i("openwb-base-card"),k=i("status-card");return t.electricityTariffConfigured?(d(),g(k,{key:0,subtype:"secondary",state:s.$store.state.mqtt[t.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[t.baseTopic+"/get/fault_str"]},{"header-left":r(()=>[n(p,{"fixed-width":"",icon:["fas","ranking-star"]}),o[0]||(o[0]=u(" Variabler Stromtarif "))]),"header-right":r(()=>[u(a(t.currentPrice)+" ct/kWh",1)]),default:r(()=>[n(m,{title:"Anbieter: "+s.$store.state.mqtt[t.baseTopic+"/provider"].name,subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:r(()=>[e("div",eo,[t.chartDataRead?(d(),g(l,{key:0,ref:"myChart",data:t.chartDataObject,options:b.chartOptions},null,8,["data","options"])):x("",!0)])]),_:1},8,["title"])]),_:1},8,["state","state-message"])):x("",!0)}const so=v(Ys,[["render",to],["__scopeId","data-v-f4769d2f"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ElectricityTariffCard.vue"]]);const oo={name:"OpenwbStatusView",components:{ChargePointSumCard:Pe,ChargePointCard:ht,CounterCard:Kt,InverterSumCard:as,InverterCard:gs,BatterySumCard:Cs,BatteryCard:zs,RippleControlReceiverCard:Hs,VehicleCard:Xs,ElectricityTariffCard:so},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/device/+/component/+/config","openWB/vehicle/+/name","openWB/chargepoint/+/config"]}},computed:{installedChargePoints:{get(){let s=this.getWildcardTopics("openWB/chargepoint/+/config"),o={};for(const[c,h]of Object.entries(s))(h.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(o[c]=h);return o}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(s,o){return Object.keys(s).filter(c=>s[c].type.includes(o)).reduce((c,h)=>({...c,[h]:s[h]}),{})}}},ao={class:"status"};function ro(s,o,c,h,b,t){const p=i("charge-point-sum-card"),l=i("charge-point-card"),m=i("counter-card"),k=i("inverter-sum-card"),O=i("inverter-card"),z=i("battery-sum-card"),E=i("battery-card"),R=i("vehicle-card"),V=i("electricity-tariff-card"),M=i("ripple-control-receiver-card");return d(),f("div",ao,[t.numChargePointsInstalled>1&&s.$store.state.mqtt["openWB/general/extern"]===!1?(d(),g(p,{key:0})):x("",!0),(d(!0),f(B,null,N(t.installedChargePoints,(_,C)=>(d(),g(l,{key:C,"installed-charge-point":_,"installed-charge-point-key":C},null,8,["installed-charge-point","installed-charge-point-key"]))),128)),(d(!0),f(B,null,N(t.counterConfigs,_=>(d(),g(m,{key:_.id,counter:_},null,8,["counter"]))),128)),t.numInvertersInstalled>1&&s.$store.state.mqtt["openWB/general/extern"]===!1?(d(),g(k,{key:1})):x("",!0),(d(!0),f(B,null,N(t.inverterConfigs,_=>(d(),g(O,{key:_.id,inverter:_},null,8,["inverter"]))),128)),t.numBatteriesInstalled>1&&s.$store.state.mqtt["openWB/general/extern"]===!1?(d(),g(z,{key:2})):x("",!0),(d(!0),f(B,null,N(t.batteryConfigs,_=>(d(),g(E,{key:_.id,battery:_},null,8,["battery"]))),128)),(d(!0),f(B,null,N(t.vehicleNames,(_,C)=>(d(),g(R,{key:C,"vehicle-key":C,"vehicle-name":_},null,8,["vehicle-key","vehicle-name"]))),128)),s.$store.state.mqtt["openWB/general/extern"]===!1?(d(),g(V,{key:3})):x("",!0),n(M)])}const bo=v(oo,[["render",ro],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{bo as default}; diff --git a/web/settings/assets/Status-9ecf39ed.css b/web/settings/assets/Status-9ecf39ed.css new file mode 100644 index 0000000000..3cd11b65aa --- /dev/null +++ b/web/settings/assets/Status-9ecf39ed.css @@ -0,0 +1 @@ +.openwb-chart[data-v-f4769d2f]{min-height:250px}.status[data-v-051028a3]{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:0 1em;gap:0 1em}.status .card[data-v-051028a3]{align-self:start}@media (max-width: 991px){.status[data-v-051028a3]{display:grid;grid-template-columns:repeat(1,1fr);grid-gap:10px;gap:10px}} diff --git a/web/settings/assets/Status-ae50cd10.js b/web/settings/assets/Status-ae50cd10.js deleted file mode 100644 index ac2275a28e..0000000000 --- a/web/settings/assets/Status-ae50cd10.js +++ /dev/null @@ -1 +0,0 @@ -import{C as x}from"./index-b236cee5.js";import{l as W,N as S,O as P,c as I,F as k,P as A,Q as G,R as H,S as R,T as Z,U as F,V as K,W as J,X as Q,Y as O,Z as L,_ as U,m as X,n as Y,o as tt,p as et,$ as st,a0 as at}from"./vendor-fortawesome-9d7cfdfb.js";import{_ as w,u as n,l as r,x as m,D,E as i,A as t,m as _,G as d,B as g,F as o,z as T,p as q,q as ot,M as C,N as B}from"./vendor-ad7c30fd.js";import{C as it,p as rt,a as nt,L as ct,b as dt,P as lt,c as pt,T as ut,i as mt,d as gt,e as ht}from"./vendor-chartjs-6a6474b3.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./vendor-luxon-8ddd27a0.js";W.add(S,P,I);const _t={name:"StatusCard",components:{FontAwesomeIcon:k},props:{subtype:{type:String,required:!0},state:{type:Number,required:!1,default:0},stateMessage:{type:String,required:!1,default:void 0},componentId:{type:Number,required:!1,default:void 0}},computed:{stateClass(){switch(this.state){case 0:return"success";case 1:return"warning";case 2:return"danger";default:return"dark"}},stateIcon(){switch(this.state){case 0:return["fas","check-circle"];case 1:return["fas","exclamation-triangle"];case 2:return["fas","times-circle"];default:return["fas","check-circle"]}}}},bt={class:"text-right"},ft={class:"container"},vt={class:"row justify-content-end"},yt={key:0,class:"col px-0"},Tt={style:{"white-space":"pre-wrap"}},wt={key:1,class:"col col-auto pr-0"},xt={class:"text-right"};function Wt(s,a,c,h,v,e){const p=n("font-awesome-icon"),l=n("openwb-base-alert"),u=n("openwb-base-card");return r(),m(u,{subtype:c.subtype,collapsible:!0,collapsed:!0,class:"pb-0"},D({header:i(()=>[q(s.$slots,"header-left")]),actions:i(()=>[t("div",bt,[q(s.$slots,"header-right")]),d(p,{class:ot([c.state===0?`text-${c.subtype}`:"","ml-1"]),"fixed-width":"",icon:e.stateIcon},null,8,["class","icon"])]),default:i(()=>[q(s.$slots,"default")]),_:2},[c.componentId!==void 0||c.stateMessage?{name:"footer",fn:i(()=>[t("div",ft,[t("div",vt,[c.stateMessage?(r(),_("div",yt,[d(l,{subtype:e.stateClass},{default:i(()=>[d(p,{"fixed-width":"",icon:e.stateIcon},null,8,["icon"]),a[0]||(a[0]=g(" Modulmeldung: ")),t("span",Tt,o(c.stateMessage),1)]),_:1},8,["subtype"])])):T("",!0),c.componentId!==void 0?(r(),_("div",wt,[t("div",xt,"ID: "+o(c.componentId),1)])):T("",!0)])])]),key:"0"}:void 0]),1032,["subtype"])}const $=w(_t,[["render",Wt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/StatusCard.vue"]]);W.add(A);const kt={name:"ChargePointSumCard",components:{StatusCard:$,FontAwesomeIcon:k},mixins:[x],data(){return{mqttTopicsToSubscribe:["openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported"]}},computed:{baseTopic:{get(){return"openWB/chargepoint"}}}},Ct={class:"text-right"},Bt={class:"row"},$t={class:"col text-right text-monospace"},Nt={class:"row"},qt={class:"col-4 text-right text-monospace"},St={class:"col-4 text-right text-monospace"},Pt={class:"row"},It={class:"col-4 text-right text-monospace"},At={class:"col-4 text-right text-monospace"};function Ot(s,a,c,h,v,e){const p=n("font-awesome-icon"),l=n("openwb-base-card"),u=n("status-card");return r(),m(u,{subtype:"primary"},{"header-left":i(()=>[d(p,{"fixed-width":"",icon:["fas","charging-station"]}),a[0]||(a[0]=g(" Alle Ladepunkte "))]),"header-right":i(()=>[t("span",Ct,o(s.formatNumberTopic(e.baseTopic+"/get/power",3,3,.001))+" kW ",1)]),default:i(()=>[d(l,{subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[a[1]||(a[1]=t("div",{class:"row py-2"},[t("div",{class:"col font-weight-bold"},"Ladevorgang"),t("div",{class:"col text-right"},"Leistung")],-1)),t("div",Bt,[t("div",$t,o(s.formatNumberTopic(e.baseTopic+"/get/power",3,3,.001)),1)])]),_:1}),d(l,{subtype:"white","body-bg":"white",class:"py-1 mb-2",title:"Zählerstände"},{default:i(()=>[a[4]||(a[4]=t("div",{class:"row justify-content-end"},[t("div",{class:"col-4 text-right"},"Geladen"),t("div",{class:"col-4 text-right"},"Entladen")],-1)),t("div",Nt,[a[2]||(a[2]=t("div",{class:"col text-right"},"Heute",-1)),t("div",qt,o(s.formatNumberTopic(e.baseTopic+"/get/daily_imported",3,3,.001)+" kWh"),1),t("div",St,o(s.formatNumberTopic(e.baseTopic+"/get/daily_exported",3,3,.001)+" kWh"),1)]),t("div",Pt,[a[3]||(a[3]=t("div",{class:"col text-right"},"Gesamt",-1)),t("div",It,o(s.formatNumberTopic(e.baseTopic+"/get/imported",3,3,.001)+" kWh"),1),t("div",At,o(s.formatNumberTopic(e.baseTopic+"/get/exported",3,3,.001)+" kWh"),1)])]),_:1})]),_:1})}const Lt=w(kt,[["render",Ot],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointSumCard.vue"]]);W.add(A,G,H,R,Z,F,K,J);const Dt={name:"ChargePointCard",components:{StatusCard:$,FontAwesomeIcon:k},mixins:[x],props:{installedChargePointKey:{type:String,required:!0},installedChargePoint:{type:Object,required:!0}},data(){return{mqttTopicsToSubscribe:[`openWB/chargepoint/${this.installedChargePoint.id}/get/+`,`openWB/chargepoint/${this.installedChargePoint.id}/get/connected_vehicle/info`,`openWB/chargepoint/${this.installedChargePoint.id}/set/+`,`openWB/internal_chargepoint/${this.installedChargePoint.id}/data/phases_to_use`]}},computed:{chargePointIndex:{get(){return this.installedChargePoint.id}},baseTopic:{get(){return"openWB/chargepoint/"+this.chargePointIndex}},chargingStatus:{get(){let s=this.$store.state.mqtt[this.baseTopic+"/get/plug_state"],a=this.$store.state.mqtt[this.baseTopic+"/get/charge_state"];return s==1&&a==1?{icon:["fas","plug-circle-bolt"],text:"Fahrzeug angesteckt, Ladevorgang aktiv"}:s==1?{icon:["fas","plug-circle-check"],text:"Fahrzeug angesteckt, kein Ladevorgang aktiv"}:{icon:["fas","plug-circle-minus"],text:"Kein Fahrzeug angesteckt"}}}}},jt={class:"row py-2"},zt={class:"col text-right"},Et={style:{"white-space":"pre-wrap"}},Mt={class:"row"},Vt={class:"col text-right text-monospace"},Gt={class:"col text-right text-monospace"},Ht={class:"row"},Rt={key:0,class:"col text-right text-monospace"},Zt={key:1,class:"col text-right text-monospace"},Ft={class:"col text-right text-monospace"},Kt={class:"row"},Jt={class:"col-4 text-right text-monospace"},Qt={class:"col-4 text-right text-monospace"},Ut={class:"row"},Xt={class:"col-4 text-right text-monospace"},Yt={class:"col-4 text-right text-monospace"},te={class:"row"},ee={class:"col text-right text-monospace"},se={class:"col text-right text-monospace"},ae={class:"col text-right text-monospace"},oe={class:"row"},ie={class:"col text-right text-monospace"},re={class:"col text-right text-monospace"},ne={class:"col text-right text-monospace"},ce={class:"row"},de={class:"col text-right text-monospace"},le={class:"col text-right text-monospace"},pe={class:"col text-right text-monospace"},ue={class:"row"},me={class:"col text-right text-monospace"},ge={class:"col text-right text-monospace"},he={class:"col text-right text-monospace"},_e={class:"row"},be={class:"col text-center text-monospace"};function fe(s,a,c,h,v,e){const p=n("font-awesome-icon"),l=n("openwb-base-alert"),u=n("openwb-base-card"),b=n("status-card");return r(),m(b,{subtype:"primary","component-id":e.chargePointIndex,state:s.$store.state.mqtt[e.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[e.baseTopic+"/get/fault_str"]},{"header-left":i(()=>[d(p,{"fixed-width":"",icon:["fas","charging-station"]}),g(" "+o(c.installedChargePoint.name),1)]),"header-right":i(()=>[g(o(s.formatNumberTopic(e.baseTopic+"/get/power",3,3,.001))+" kW",1)]),default:i(()=>[d(u,{subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[t("div",jt,[a[0]||(a[0]=t("div",{class:"col col-auto font-weight-bold"},"Status",-1)),t("div",zt,[d(p,{"fixed-width":"",icon:e.chargingStatus.icon,title:e.chargingStatus.text},null,8,["icon","title"]),g(" "+o(e.chargingStatus.text),1)])]),d(l,{subtype:"info"},{default:i(()=>[a[1]||(a[1]=g(" Statusmeldung: ")),t("span",Et,o(s.$store.state.mqtt[e.baseTopic+"/get/state_str"]),1)]),_:1}),t("div",null," max. Ladeleistung: "+o((s.max_power=s.formatNumberTopic(e.baseTopic+"/get/max_evse_current",0))=="-"?s.max_power:Math.floor(s.max_power*3*230/1e3))+" kW ",1)]),_:1}),d(u,{subtype:"white","body-bg":"white",class:"py-1 mb-2",title:"Ladevorgang"},{default:i(()=>[a[2]||(a[2]=t("div",{class:"row"},[t("div",{class:"col text-right"},"Ladestrom Vorgabe"),t("div",{class:"col text-right"},"Leistung")],-1)),t("div",Mt,[t("div",Vt,o(s.formatNumberTopic(e.baseTopic+"/set/current",2))+" A",1),t("div",Gt,o(s.formatNumberTopic(e.baseTopic+"/get/power",3,3,.001))+" kW ",1)]),a[3]||(a[3]=t("div",{class:"row"},[t("div",{class:"col text-right"},"Phasen Vorgabe"),t("div",{class:"col text-right"},"Phasen Aktuell")],-1)),t("div",Ht,[s.$store.state.mqtt["openWB/general/extern"]===!0?(r(),_("div",Rt,o(s.formatNumberTopic("openWB/internal_chargepoint/"+e.chargePointIndex+"/data/phases_to_use")),1)):(r(),_("div",Zt,o(s.formatNumberTopic(e.baseTopic+"/set/phases_to_use")),1)),t("div",Ft,o(s.formatNumberTopic(e.baseTopic+"/get/phases_in_use")),1)])]),_:1}),d(u,{subtype:"white","body-bg":"white",class:"py-1 mb-2",title:"Zählerstände"},{default:i(()=>[a[6]||(a[6]=t("div",{class:"row justify-content-end"},[t("div",{class:"col-4 text-right"},"Geladen"),t("div",{class:"col-4 text-right"},"Entladen")],-1)),t("div",Kt,[a[4]||(a[4]=t("div",{class:"col text-right"},"Heute",-1)),t("div",Jt,o(s.formatNumberTopic(e.baseTopic+"/get/daily_imported",3,3,.001))+" kWh ",1),t("div",Qt,o(s.formatNumberTopic(e.baseTopic+"/get/daily_exported",3,3,.001))+" kWh ",1)]),t("div",Ut,[a[5]||(a[5]=t("div",{class:"col text-right"},"Gesamt",-1)),t("div",Xt,o(s.formatNumberTopic(e.baseTopic+"/get/imported",3,3,.001))+" kWh ",1),t("div",Yt,o(s.formatNumberTopic(e.baseTopic+"/get/exported",3,3,.001))+" kWh ",1)])]),_:1}),d(u,{subtype:"white","body-bg":"white",class:"py-1 mb-2",title:"Werte pro Phase"},{default:i(()=>[t("div",te,[a[7]||(a[7]=t("div",{class:"col-md-4 pr-1 text-center text-md-right"},"Spannung [V]",-1)),t("div",ee,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/voltages",1).split(" / ")[0]),1),t("div",se,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/voltages",1).split(" / ")[1]),1),t("div",ae,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/voltages",1).split(" / ")[2]),1)]),t("div",oe,[a[8]||(a[8]=t("div",{class:"col-md-4 pr-1 text-center text-md-right"},"Strom [A]",-1)),t("div",ie,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/currents",2).split(" / ")[0]),1),t("div",re,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/currents",2).split(" / ")[1]),1),t("div",ne,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/currents",2).split(" / ")[2]),1)]),t("div",ce,[a[9]||(a[9]=t("div",{class:"col-md-4 pr-1 text-center text-md-right"},"Wirkleistung [kW]",-1)),t("div",de,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/powers",3,3,.001).split(" / ")[0]),1),t("div",le,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/powers",3,3,.001).split(" / ")[1]),1),t("div",pe,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/powers",3,3,.001).split(" / ")[2]),1)]),t("div",ue,[a[10]||(a[10]=t("div",{class:"col-md-4 pr-1 text-center text-md-right"},"Leistungsfaktor",-1)),t("div",me,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/power_factors",2).split(" / ")[0]),1),t("div",ge,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/power_factors",2).split(" / ")[1]),1),t("div",he,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/power_factors",2).split(" / ")[2]),1)]),t("div",_e,[a[11]||(a[11]=t("div",{class:"col-md-4 pr-1 text-center text-md-right"},"Netzfrequenz",-1)),t("div",be,o(s.formatNumberTopic(e.baseTopic+"/get/frequency",3))+" Hz ",1)])]),_:1})]),_:1},8,["component-id","state","state-message"])}const ve=w(Dt,[["render",fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointCard.vue"]]);W.add(Q);const ye={name:"CounterCard",components:{StatusCard:$,FontAwesomeIcon:k},mixins:[x],props:{counter:{type:Object,required:!0}},data(){return{mqttTopicsToSubscribe:[`openWB/counter/${this.counter.id}/get/+`]}},computed:{baseTopic:{get(){return"openWB/counter/"+this.counter.id}}}},Te={class:"row"},we={class:"col text-right text-monospace pl-0"},xe={class:"col text-right text-monospace pl-0"},We={class:"row"},ke={class:"col text-right text-monospace pl-0"},Ce={class:"col text-right text-monospace pl-0"},Be={class:"row"},$e={class:"col"},Ne={class:"row"},qe={class:"col text-right text-monospace pl-0"},Se={class:"col text-right text-monospace pl-0"},Pe={class:"col text-right text-monospace pl-0"},Ie={class:"row"},Ae={class:"col"},Oe={class:"row"},Le={class:"col text-right text-monospace pl-0"},De={class:"col text-right text-monospace pl-0"},je={class:"col text-right text-monospace pl-0"},ze={class:"row"},Ee={class:"col"},Me={class:"row"},Ve={class:"col text-right text-monospace pl-0"},Ge={class:"col text-right text-monospace pl-0"},He={class:"col text-right text-monospace pl-0"},Re={class:"row"},Ze={class:"col"},Fe={class:"row"},Ke={class:"col text-right text-monospace pl-0"},Je={class:"col text-right text-monospace pl-0"},Qe={class:"col text-right text-monospace pl-0"};function Ue(s,a,c,h,v,e){const p=n("font-awesome-icon"),l=n("openwb-base-card"),u=n("status-card");return r(),m(u,{subtype:"danger","component-id":c.counter.id,state:s.$store.state.mqtt[e.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[e.baseTopic+"/get/fault_str"]},{"header-left":i(()=>[d(p,{"fixed-width":"",icon:["fas","gauge-high"]}),g(" "+o(c.counter.name),1)]),"header-right":i(()=>[g(o(s.formatNumberTopic(e.baseTopic+"/get/power",3,3,.001))+" kW",1)]),default:i(()=>[d(l,{title:"Aktuelle Werte",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[a[0]||(a[0]=t("div",{class:"row"},[t("div",{class:"col-6 text-right"},"Leistung"),t("div",{class:"col-6 text-right"},"Netzfrequenz")],-1)),t("div",Te,[t("div",we,o(s.formatNumberTopic(e.baseTopic+"/get/power",3,3,.001)+" kW"),1),t("div",xe,o(s.formatNumberTopic(e.baseTopic+"/get/frequency",3)+" Hz"),1)])]),_:1}),d(l,{title:"Zählerstände",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[a[1]||(a[1]=t("div",{class:"row"},[t("div",{class:"col-6 text-right"},"Export"),t("div",{class:"col-6 text-right"},"Import")],-1)),t("div",We,[t("div",ke,o(s.formatNumberTopic(e.baseTopic+"/get/exported",3,3,.001)+" kWh"),1),t("div",Ce,o(s.formatNumberTopic(e.baseTopic+"/get/imported",3,3,.001)+" kWh"),1)])]),_:1}),d(l,{title:"Werte pro Phase",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[t("div",Be,[a[2]||(a[2]=t("div",{class:"col-md-4 pr-0 text-center text-md-right"},"Spannung [V]",-1)),t("div",$e,[t("div",Ne,[t("div",qe,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/voltages",1).split(" / ")[0]),1),t("div",Se,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/voltages",1).split(" / ")[1]),1),t("div",Pe,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/voltages",1).split(" / ")[2]),1)])])]),t("div",Ie,[a[3]||(a[3]=t("div",{class:"col-md-4 pr-0 text-center text-md-right"},"Strom [A]",-1)),t("div",Ae,[t("div",Oe,[t("div",Le,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/currents",2).split(" / ")[0]),1),t("div",De,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/currents",2).split(" / ")[1]),1),t("div",je,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/currents",2).split(" / ")[2]),1)])])]),t("div",ze,[a[4]||(a[4]=t("div",{class:"col-md-4 pr-0 text-center text-md-right"},"Wirkleistung [kW]",-1)),t("div",Ee,[t("div",Me,[t("div",Ve,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/powers",3,3,.001).split(" / ")[0]),1),t("div",Ge,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/powers",3,3,.001).split(" / ")[1]),1),t("div",He,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/powers",3,3,.001).split(" / ")[2]),1)])])]),t("div",Re,[a[5]||(a[5]=t("div",{class:"col-md-4 pr-0 text-center text-md-right"},"Leistungsfaktor",-1)),t("div",Ze,[t("div",Fe,[t("div",Ke,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/power_factors",2).split(" / ")[0]),1),t("div",Je,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/power_factors",2).split(" / ")[1]),1),t("div",Qe,o(s.formatPhaseArrayNumberTopic(e.baseTopic+"/get/power_factors",2).split(" / ")[2]),1)])])])]),_:1})]),_:1},8,["component-id","state","state-message"])}const Xe=w(ye,[["render",Ue],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/CounterCard.vue"]]);W.add(O);const Ye={name:"InverterSumCard",components:{StatusCard:$,FontAwesomeIcon:k},mixins:[x],data(){return{mqttTopicsToSubscribe:["openWB/pv/get/+"]}},computed:{baseTopic:{get(){return"openWB/pv"}}}},ts={class:"row"},es={class:"col text-right text-monospace"},ss={class:"col text-right text-monospace"},as={class:"row"},os={class:"col text-right text-monospace"},is={class:"col text-right text-monospace"},rs={class:"col text-right text-monospace"};function ns(s,a,c,h,v,e){const p=n("font-awesome-icon"),l=n("openwb-base-card"),u=n("status-card");return r(),m(u,{subtype:"success",state:s.$store.state.mqtt[e.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[e.baseTopic+"/get/fault_str"]},{"header-left":i(()=>[d(p,{"fixed-width":"",icon:["fas","solar-panel"]}),a[0]||(a[0]=g(" Alle Wechselrichter "))]),"header-right":i(()=>[g(o(s.formatNumberTopic(e.baseTopic+"/get/power",3,3,.001))+" kW",1)]),default:i(()=>[d(l,{title:"Aktuelle Werte",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[a[1]||(a[1]=t("div",{class:"row"},[t("div",{class:"col text-right"},"Leistung"),t("div",{class:"col text-right"},"Zählerstand")],-1)),t("div",ts,[t("div",es,o(s.formatNumberTopic(e.baseTopic+"/get/power",3,3,.001))+" kW ",1),t("div",ss,o(s.formatNumberTopic(e.baseTopic+"/get/exported",3,3,.001))+" kWh ",1)])]),_:1}),d(l,{title:"Erträge",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[a[2]||(a[2]=t("div",{class:"row"},[t("div",{class:"col text-right"},"Heute"),t("div",{class:"col text-right"},"Monat"),t("div",{class:"col text-right"},"Jahr")],-1)),t("div",as,[t("div",os,o(s.formatNumberTopic(e.baseTopic+"/get/daily_exported",3,3,.001))+" kWh ",1),t("div",is,o(s.formatNumberTopic(e.baseTopic+"/get/monthly_exported",1,1,.001))+" kWh ",1),t("div",rs,o(s.formatNumberTopic(e.baseTopic+"/get/yearly_exported",0,0,.001))+" kWh ",1)])]),_:1})]),_:1},8,["state","state-message"])}const cs=w(Ye,[["render",ns],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterSumCard.vue"]]);W.add(O);const ds={name:"InverterCard",components:{StatusCard:$,FontAwesomeIcon:k},mixins:[x],props:{inverter:{type:Object,required:!0}},data(){return{mqttTopicsToSubscribe:[`openWB/pv/${this.inverter.id}/get/+`]}},computed:{baseTopic:{get(){return"openWB/pv/"+this.inverter.id}}}},ls={class:"row"},ps={class:"col text-right text-monospace"},us={class:"col text-right text-monospace"},ms={class:"row"},gs={class:"col text-right text-monospace"},hs={class:"col text-right text-monospace"},_s={class:"col text-right text-monospace"};function bs(s,a,c,h,v,e){const p=n("font-awesome-icon"),l=n("openwb-base-card"),u=n("status-card");return r(),m(u,{subtype:"success","component-id":c.inverter.id,state:s.$store.state.mqtt[e.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[e.baseTopic+"/get/fault_str"]},{"header-left":i(()=>[d(p,{"fixed-width":"",icon:["fas","solar-panel"]}),g(" "+o(c.inverter.name),1)]),"header-right":i(()=>[g(o(s.formatNumberTopic(e.baseTopic+"/get/power",3,3,.001))+" kW",1)]),default:i(()=>[d(l,{title:"Aktuelle Werte",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[a[0]||(a[0]=t("div",{class:"row"},[t("div",{class:"col text-right"},"Leistung"),t("div",{class:"col text-right"},"Zählerstand")],-1)),t("div",ls,[t("div",ps,o(s.formatNumberTopic(e.baseTopic+"/get/power",3,3,.001))+" kW ",1),t("div",us,o(s.formatNumberTopic(e.baseTopic+"/get/exported",3,3,.001))+" kWh ",1)])]),_:1}),d(l,{title:"Erträge",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[a[1]||(a[1]=t("div",{class:"row"},[t("div",{class:"col text-right"},"Heute"),t("div",{class:"col text-right"},"Monat"),t("div",{class:"col text-right"},"Jahr")],-1)),t("div",ms,[t("div",gs,o(s.formatNumberTopic(e.baseTopic+"/get/daily_exported",3,3,.001))+" kWh ",1),t("div",hs,o(s.formatNumberTopic(e.baseTopic+"/get/monthly_exported",1,1,.001))+" kWh ",1),t("div",_s,o(s.formatNumberTopic(e.baseTopic+"/get/yearly_exported",0,0,.001))+" kWh ",1)])]),_:1})]),_:1},8,["component-id","state","state-message"])}const fs=w(ds,[["render",bs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterCard.vue"]]);W.add(L);const vs={name:"BatterySumCard",components:{StatusCard:$,FontAwesomeIcon:k},mixins:[x],data(){return{mqttTopicsToSubscribe:["openWB/bat/get/+"]}},computed:{baseTopic:{get(){return"openWB/bat"}}}},ys={class:"row"},Ts={class:"col text-right text-monospace pl-0"},ws={class:"col text-right text-monospace pl-0"},xs={class:"row"},Ws={class:"col text-right text-monospace"},ks={class:"col text-right text-monospace"},Cs={class:"row"},Bs={class:"col text-right text-monospace"},$s={class:"col text-right text-monospace"};function Ns(s,a,c,h,v,e){const p=n("font-awesome-icon"),l=n("openwb-base-card"),u=n("status-card");return r(),m(u,{subtype:"warning",state:s.$store.state.mqtt[e.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[e.baseTopic+"/get/fault_str"]},{"header-left":i(()=>[d(p,{"fixed-width":"",icon:["fas","car-battery"]}),a[0]||(a[0]=g(" Alle Speicher "))]),"header-right":i(()=>[g(o(s.formatNumberTopic(e.baseTopic+"/get/power",1,1,.001))+" kW / "+o(s.$store.state.mqtt[e.baseTopic+"/get/soc"])+" % ",1)]),default:i(()=>[d(l,{title:"Aktuelle Werte",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[a[1]||(a[1]=t("div",{class:"row"},[t("div",{class:"col-6 text-right"},"Leistung"),t("div",{class:"col-6 text-right"},"Ladestand")],-1)),t("div",ys,[t("div",Ts,o(s.formatNumberTopic(e.baseTopic+"/get/power",3,3,.001))+" kW ",1),t("div",ws,o(s.$store.state.mqtt[e.baseTopic+"/get/soc"])+" %",1)])]),_:1}),d(l,{title:"Zählerstände",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[a[4]||(a[4]=t("div",{class:"row"},[t("div",{class:"col"}),t("div",{class:"col text-right"},"Geladen"),t("div",{class:"col text-right"},"Entladen")],-1)),t("div",xs,[a[2]||(a[2]=t("div",{class:"col text-right"},"Heute",-1)),t("div",Ws,o(s.formatNumberTopic(e.baseTopic+"/get/daily_imported",3,3,.001))+" kWh ",1),t("div",ks,o(s.formatNumberTopic(e.baseTopic+"/get/daily_exported",3,3,.001))+" kWh ",1)]),t("div",Cs,[a[3]||(a[3]=t("div",{class:"col text-right"},"Gesamt",-1)),t("div",Bs,o(s.formatNumberTopic(e.baseTopic+"/get/imported",3,3,.001))+" kWh ",1),t("div",$s,o(s.formatNumberTopic(e.baseTopic+"/get/exported",3,3,.001))+" kWh ",1)])]),_:1})]),_:1},8,["state","state-message"])}const qs=w(vs,[["render",Ns],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatterySumCard.vue"]]);W.add(L);const Ss={name:"BatteryCard",components:{StatusCard:$,FontAwesomeIcon:k},mixins:[x],props:{battery:{type:Object,required:!0}},data(){return{mqttTopicsToSubscribe:[`openWB/bat/${this.battery.id}/get/+`]}},computed:{baseTopic:{get(){return"openWB/bat/"+this.battery.id}}}},Ps={class:"row"},Is={class:"col text-right text-monospace pl-0"},As={class:"col text-right text-monospace pl-0"},Os={class:"row"},Ls={class:"col text-right text-monospace"},Ds={class:"col text-right text-monospace"},js={class:"row"},zs={class:"col text-right text-monospace"},Es={class:"col text-right text-monospace"};function Ms(s,a,c,h,v,e){const p=n("font-awesome-icon"),l=n("openwb-base-card"),u=n("status-card");return r(),m(u,{subtype:"warning","component-id":c.battery.id,state:s.$store.state.mqtt[e.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[e.baseTopic+"/get/fault_str"]},{"header-left":i(()=>[d(p,{"fixed-width":"",icon:["fas","car-battery"]}),g(" "+o(c.battery.name),1)]),"header-right":i(()=>[g(o(s.formatNumberTopic(e.baseTopic+"/get/power",1,1,.001))+" kW / "+o(s.$store.state.mqtt[e.baseTopic+"/get/soc"])+" % ",1)]),default:i(()=>[d(l,{title:"Aktuelle Werte",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[a[0]||(a[0]=t("div",{class:"row"},[t("div",{class:"col-6 text-right"},"Leistung"),t("div",{class:"col-6 text-right"},"Ladestand")],-1)),t("div",Ps,[t("div",Is,o(s.formatNumberTopic(e.baseTopic+"/get/power",3,3,.001))+" kW ",1),t("div",As,o(s.$store.state.mqtt[e.baseTopic+"/get/soc"])+" %",1)])]),_:1}),d(l,{title:"Zählerstände",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[a[3]||(a[3]=t("div",{class:"row"},[t("div",{class:"col"}),t("div",{class:"col text-right"},"Geladen"),t("div",{class:"col text-right"},"Entladen")],-1)),t("div",Os,[a[1]||(a[1]=t("div",{class:"col text-right"},"Heute",-1)),t("div",Ls,o(s.formatNumberTopic(e.baseTopic+"/get/daily_imported",3,3,.001))+" kWh ",1),t("div",Ds,o(s.formatNumberTopic(e.baseTopic+"/get/daily_exported",3,3,.001))+" kWh ",1)]),t("div",js,[a[2]||(a[2]=t("div",{class:"col text-right"},"Gesamt",-1)),t("div",zs,o(s.formatNumberTopic(e.baseTopic+"/get/imported",3,3,.001))+" kWh ",1),t("div",Es,o(s.formatNumberTopic(e.baseTopic+"/get/exported",3,3,.001))+" kWh ",1)])]),_:1})]),_:1},8,["component-id","state","state-message"])}const Vs=w(Ss,[["render",Ms],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatteryCard.vue"]]);W.add(S,P,I,U,X,Y,tt,et);const Gs={name:"IoDeviceCard",components:{FontAwesomeIcon:k},mixins:[x],props:{ioDevice:{type:Object,required:!0}},data(){return{mqttTopicsToSubscribe:[`openWB/io/states/${this.ioDevice.id}/get/+`],state:{true:{icon:["fas","square"],title:"Geschlossen"},false:{icon:["far","square"],title:"Offen"}}}},computed:{baseTopic:{get(){return`openWB/io/states/${this.ioDevice.id}`}},faultState(){return this.$store.state.mqtt[`${this.baseTopic}/get/fault_state`]},faultStr(){return this.$store.state.mqtt[`${this.baseTopic}/get/fault_str`]},hasDigitalInputs(){return Object.keys(this.$store.state.mqtt[`${this.baseTopic}/get/digital_input`]||{}).length>0},hasDigitalOutputs(){return Object.keys(this.$store.state.mqtt[`${this.baseTopic}/get/digital_output`]||{}).length>0},hasAnalogInputs(){return Object.keys(this.$store.state.mqtt[`${this.baseTopic}/get/analog_input`]||{}).length>0},hasAnalogOutputs(){return Object.keys(this.$store.state.mqtt[`${this.baseTopic}/get/analog_output`]||{}).length>0},digitalInputStates(){return this.$store.state.mqtt[`${this.baseTopic}/get/digital_input`]},digitalOutputStates(){return this.$store.state.mqtt[`${this.baseTopic}/get/digital_output`]},analogInputStates(){return this.$store.state.mqtt[`${this.baseTopic}/get/analog_input`]},analogOutputStates(){return this.$store.state.mqtt[`${this.baseTopic}/get/analog_output`]}},methods:{getIcon(s){return this.state[s].icon},getTitle(s){return this.state[s].title}}},Hs={class:"row"},Rs={class:"row"},Zs={class:"row"},Fs={class:"row"},Ks={class:"container"},Js={class:"row"},Qs={class:"col px-0"},Us={style:{"white-space":"pre-wrap"}},Xs={class:"col col-auto pr-0"},Ys={class:"text-right"};function ta(s,a,c,h,v,e){const p=n("font-awesome-icon"),l=n("openwb-base-card"),u=n("openwb-base-alert");return r(),m(l,{subtype:"secondary",collapsible:!0,collapsed:!0,class:"pb-0"},{header:i(()=>[d(p,{"fixed-width":"",icon:["fas","tower-broadcast"]}),g(" "+o(c.ioDevice.name),1)]),footer:i(()=>[t("div",Ks,[t("div",Js,[t("div",Qs,[d(u,{subtype:s.getFaultStateSubtype(e.baseTopic)},{default:i(()=>[d(p,{"fixed-width":"",icon:s.stateIcon},null,8,["icon"]),a[0]||(a[0]=g(" Modulmeldung: ")),t("span",Us,o(s.$store.state.mqtt[e.baseTopic+"/get/fault_str"]),1)]),_:1},8,["subtype"])]),t("div",Xs,[t("div",Ys,"ID: "+o(c.ioDevice.id),1)])])])]),default:i(()=>[e.hasDigitalInputs?(r(),m(l,{key:0,title:"Digitale Eingänge",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[t("div",Hs,[(r(!0),_(B,null,C(e.digitalInputStates,(b,y)=>(r(),_("div",{key:y,class:"col io-state"},[g(o(y)+": ",1),d(p,{title:e.getTitle(b),icon:e.getIcon(b),class:"fa-fw"},null,8,["title","icon"])]))),128))])]),_:1})):T("",!0),e.hasDigitalOutputs?(r(),m(l,{key:1,title:"Digitale Ausgänge",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[t("div",Rs,[(r(!0),_(B,null,C(e.digitalOutputStates,(b,y)=>(r(),_("div",{key:y,class:"col io-state"},[g(o(y)+": ",1),d(p,{title:e.getTitle(b),icon:e.getIcon(b),class:"fa-fw"},null,8,["title","icon"])]))),128))])]),_:1})):T("",!0),e.hasAnalogInputs?(r(),m(l,{key:2,title:"Analoge Eingänge",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[t("div",Zs,[(r(!0),_(B,null,C(e.analogInputStates,(b,y)=>(r(),_("div",{key:y,class:"col io-state"},o(y)+": "+o(b),1))),128))])]),_:1})):T("",!0),e.hasAnalogOutputs?(r(),m(l,{key:3,title:"Analoge Ausgänge",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[t("div",Fs,[(r(!0),_(B,null,C(e.analogOutputStates,(b,y)=>(r(),_("div",{key:y,class:"col io-state"},o(y)+": "+o(b),1))),128))])]),_:1})):T("",!0)]),_:1})}const ea=w(Gs,[["render",ta],["__scopeId","data-v-356761d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/IoDeviceCard.vue"]]);W.add(st);const sa={name:"VehicleCard",components:{StatusCard:$,FontAwesomeIcon:k},mixins:[x],props:{vehicleKey:{type:String,required:!0},vehicleName:{type:String,default:""}},data(){return{mqttTopicsToSubscribe:["openWB/vehicle/+/get/+"]}},computed:{vehicleIndex:{get(){return parseInt(this.vehicleKey.match(/(?:\/)(\d+)(?=\/)/)[1])}},soc:{get(){return this.formatNumberTopic(this.baseTopic+"/get/soc")}},socTimestamp:{get(){return this.$store.state.mqtt[this.baseTopic+"/get/soc_timestamp"]!==void 0?new Date(this.$store.state.mqtt[this.baseTopic+"/get/soc_timestamp"]*1e3).toLocaleString():"-"}},socRange:{get(){return this.$store.state.mqtt[this.baseTopic+"/get/range"]!==void 0?Math.round(this.$store.state.mqtt[this.baseTopic+"/get/range"]):0}},baseTopic:{get(){return"openWB/vehicle/"+this.vehicleIndex}}}},aa={class:"row"},oa={class:"col text-right text-monospace"},ia={class:"col text-right text-monospace"},ra={class:"col text-right text-monospace"};function na(s,a,c,h,v,e){const p=n("font-awesome-icon"),l=n("openwb-base-card"),u=n("status-card");return r(),m(u,{subtype:"info","component-id":e.vehicleIndex,state:s.$store.state.mqtt[e.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[e.baseTopic+"/get/fault_str"]},D({"header-left":i(()=>[d(p,{"fixed-width":"",icon:["fas","car"]}),g(" "+o(c.vehicleName),1)]),default:i(()=>[d(l,{title:"Fahrzeugdaten",subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[a[0]||(a[0]=t("div",{class:"row"},[t("div",{class:"col pr-0 text-right"},"Ladestand"),t("div",{class:"col pr-0 text-right"},"Reichweite"),t("div",{class:"col pr-0 text-right"},"Letzter Zeitstempel")],-1)),t("div",aa,[t("div",oa,o(e.soc)+" %",1),t("div",ia,o(e.socRange)+" km",1),t("div",ra,o(e.socTimestamp),1)])]),_:1})]),_:2},[e.soc!="-"?{name:"header-right",fn:i(()=>[g(o(e.soc)+" % ",1)]),key:"0"}:void 0]),1032,["component-id","state","state-message"])}const ca=w(sa,[["render",na],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/VehicleCard.vue"]]);W.add(at);it.register(rt,nt,ct,dt,lt,pt,ut,mt,gt);const da={name:"ElectricityTariffCard",components:{StatusCard:$,FontAwesomeIcon:k,ChartjsLine:ht},mixins:[x],data(){return{mqttTopicsToSubscribe:["openWB/optional/et/provider","openWB/optional/et/get/fault_state","openWB/optional/et/get/fault_str","openWB/optional/et/get/prices"],chartDatasets:{datasets:[{label:"Stromtarif",unit:"ct/kWh",type:"line",stepped:!0,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:void 0,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:"price"}}]},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0},legend:{display:!1}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"hour",text:"Zeit",maxTicksLimit:24},display:!0,title:{display:!0,text:"Uhrzeit"},ticks:{font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",title:{font:{size:12},display:!0,text:"Preis [ct/kWh]"},grid:{},ticks:{font:{size:12},stepSize:.01,maxTicksLimit:11}}}}}},computed:{electricityTariffConfigured(){const s=this.$store.state.mqtt["openWB/optional/et/provider"];return s!==void 0?s.type!==null:!1},chartDataRead(){return this.chartDataObject.datasets[0].data!=null},chartDataObject(){if(this.$store.state.mqtt["openWB/optional/et/get/prices"]){var s=this.$store.state.mqtt["openWB/optional/et/get/prices"],a=[];for(const[v,e]of Object.entries(s))a.push({timestamp:v*1e3,price:e*1e5});const h=a.slice(-1)[0];a.push({timestamp:h.timestamp+(60*60-1)*1e3,price:h.price})}const c=this.chartDatasets;return c.datasets[0].data=a,c},currentPrice(){return this.chartDataObject.datasets[0].data===void 0||this.chartDataObject.datasets[0].data.length===0?this.formatNumber(0,2):this.formatNumber(this.chartDataObject.datasets[0].data[0].price||0,2)},baseTopic:{get(){return"openWB/optional/et"}}}},la={class:"openwb-chart"};function pa(s,a,c,h,v,e){const p=n("font-awesome-icon"),l=n("chartjs-line"),u=n("openwb-base-card"),b=n("status-card");return e.electricityTariffConfigured?(r(),m(b,{key:0,subtype:"secondary",state:s.$store.state.mqtt[e.baseTopic+"/get/fault_state"],"state-message":s.$store.state.mqtt[e.baseTopic+"/get/fault_str"]},{"header-left":i(()=>[d(p,{"fixed-width":"",icon:["fas","ranking-star"]}),a[0]||(a[0]=g(" Variabler Stromtarif "))]),"header-right":i(()=>[g(o(e.currentPrice)+" ct/kWh",1)]),default:i(()=>[d(u,{title:"Anbieter: "+s.$store.state.mqtt[e.baseTopic+"/provider"].name,subtype:"white","body-bg":"white",class:"py-1 mb-2"},{default:i(()=>[t("div",la,[e.chartDataRead?(r(),m(l,{key:0,ref:"myChart",data:e.chartDataObject,options:v.chartOptions},null,8,["data","options"])):T("",!0)])]),_:1},8,["title"])]),_:1},8,["state","state-message"])):T("",!0)}const ua=w(da,[["render",pa],["__scopeId","data-v-f4769d2f"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ElectricityTariffCard.vue"]]);const ma={name:"OpenwbStatusView",components:{ChargePointSumCard:Lt,ChargePointCard:ve,CounterCard:Xe,InverterSumCard:cs,InverterCard:fs,BatterySumCard:qs,BatteryCard:Vs,IoDeviceCard:ea,VehicleCard:ca,ElectricityTariffCard:ua},mixins:[x],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/device/+/component/+/config","openWB/system/io/+/config","openWB/vehicle/+/name","openWB/chargepoint/+/config"]}},computed:{installedChargePoints:{get(){let s=this.getWildcardTopics("openWB/chargepoint/+/config"),a={};for(const[c,h]of Object.entries(s))(h.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[c]=h);return a}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},ioDeviceConfigs:{get(){return this.getWildcardTopics("openWB/system/io/+/config")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(s,a){return Object.keys(s).filter(c=>s[c].type.includes(a)).reduce((c,h)=>({...c,[h]:s[h]}),{})}}},ga={class:"status"};function ha(s,a,c,h,v,e){const p=n("charge-point-sum-card"),l=n("charge-point-card"),u=n("counter-card"),b=n("inverter-sum-card"),y=n("inverter-card"),j=n("battery-sum-card"),z=n("battery-card"),E=n("vehicle-card"),M=n("io-device-card"),V=n("electricity-tariff-card");return r(),_("div",ga,[e.numChargePointsInstalled>1&&s.$store.state.mqtt["openWB/general/extern"]===!1?(r(),m(p,{key:0})):T("",!0),(r(!0),_(B,null,C(e.installedChargePoints,(f,N)=>(r(),m(l,{key:N,"installed-charge-point":f,"installed-charge-point-key":N},null,8,["installed-charge-point","installed-charge-point-key"]))),128)),(r(!0),_(B,null,C(e.counterConfigs,f=>(r(),m(u,{key:f.id,counter:f},null,8,["counter"]))),128)),e.numInvertersInstalled>1&&s.$store.state.mqtt["openWB/general/extern"]===!1?(r(),m(b,{key:1})):T("",!0),(r(!0),_(B,null,C(e.inverterConfigs,f=>(r(),m(y,{key:f.id,inverter:f},null,8,["inverter"]))),128)),e.numBatteriesInstalled>1&&s.$store.state.mqtt["openWB/general/extern"]===!1?(r(),m(j,{key:2})):T("",!0),(r(!0),_(B,null,C(e.batteryConfigs,f=>(r(),m(z,{key:f.id,battery:f},null,8,["battery"]))),128)),(r(!0),_(B,null,C(e.vehicleNames,(f,N)=>(r(),m(E,{key:N,"vehicle-key":N,"vehicle-name":f},null,8,["vehicle-key","vehicle-name"]))),128)),(r(!0),_(B,null,C(e.ioDeviceConfigs,f=>(r(),m(M,{key:f.id,"io-device":f},null,8,["io-device"]))),128)),s.$store.state.mqtt["openWB/general/extern"]===!1?(r(),m(V,{key:3})):T("",!0)])}const ka=w(ma,[["render",ha],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{ka as default}; diff --git a/web/settings/assets/Support-cb0a82f9.js b/web/settings/assets/Support-aeee7674.js similarity index 89% rename from web/settings/assets/Support-cb0a82f9.js rename to web/settings/assets/Support-aeee7674.js index 439a464771..bd6965c8d6 100644 --- a/web/settings/assets/Support-cb0a82f9.js +++ b/web/settings/assets/Support-aeee7674.js @@ -1,3 +1,3 @@ -import{l as D,g as V,F as W}from"./vendor-fortawesome-9d7cfdfb.js";import{C as A}from"./index-b236cee5.js";import{_ as z,u,l as f,m as c,A as r,x as k,E as s,G as o,D as C,z as w,B as n,q as F}from"./vendor-ad7c30fd.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";D.add(V);const x={name:"OpenwbSupportView",components:{FontAwesomeIcon:W},mixins:[A],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/serial_number","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/vehicle/+/name","openWB/vehicle/+/info"],email:void 0,components:void 0,vehicles:void 0,message:void 0,enableSendDebugButton:!0}},computed:{debugData(){return{email:this.email,serialNumber:this.$store.state.mqtt["openWB/system/serial_number"],installedComponents:this.installedComponents,vehicles:this.vehicleInfo,message:this.message}},installedComponents(){var b,m;if(this.components!==void 0)return this.components;let i="";const e=this.getWildcardTopics("openWB/system/device/+/component/+/config");for(const t of Object.values(e)){const a=t.id,d=((b=t.info)==null?void 0:b.manufacturer)||"N/A",p=((m=t.info)==null?void 0:m.model)||"N/A";i+=`(${a}) Hersteller: ${d}, Modell: ${p} +import{l as D,g as V,F as W}from"./vendor-fortawesome-433470db.js";import{C as z}from"./index-cc8f65ba.js";import{_ as A,u,l as f,m as c,x as r,z as k,E as s,G as o,D as C,B as w,y as n,q as F}from"./vendor-ea36120f.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";D.add(V);const x={name:"OpenwbSupportView",components:{FontAwesomeIcon:W},mixins:[z],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/serial_number","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/vehicle/+/name","openWB/vehicle/+/info"],email:void 0,components:void 0,vehicles:void 0,message:void 0,enableSendDebugButton:!0}},computed:{debugData(){return{email:this.email,serialNumber:this.$store.state.mqtt["openWB/system/serial_number"],installedComponents:this.installedComponents,vehicles:this.vehicleInfo,message:this.message}},installedComponents(){var b,m;if(this.components!==void 0)return this.components;let i="";const e=this.getWildcardTopics("openWB/system/device/+/component/+/config");for(const t of Object.values(e)){const a=t.id,d=((b=t.info)==null?void 0:b.manufacturer)||"N/A",p=((m=t.info)==null?void 0:m.model)||"N/A";i+=`(${a}) Hersteller: ${d}, Modell: ${p} `}return i.trim()},vehicleInfo(){if(this.vehicles!==void 0)return this.vehicles;let i="";const e=this.getWildcardTopics("openWB/vehicle/+/info");for(const[b,m]of Object.entries(e)){const t=parseInt(b.split("/")[2]);if(t!==0){const a=m.manufacturer||"N/A",d=m.model||"N/A";i+=`(${t}) Hersteller: ${a}, Modell: ${d} -`}}return i.trim()}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.debugData}),this.enableSendDebugButton=!1;else{console.warn("form invalid");return}}}},_={class:"support"},q={name:"supportForm"},I={key:1},N={key:0},T={class:"row justify-content-center"};function M(i,e,b,m,t,a){const d=u("router-link"),p=u("openwb-base-alert"),v=u("FontAwesomeIcon"),h=u("openwb-base-text-input"),g=u("openwb-base-textarea"),B=u("openwb-base-click-button"),y=u("openwb-base-card"),S=u("font-awesome-icon");return f(),c("div",_,[r("form",q,[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(f(),k(p,{key:0,subtype:"danger"},{default:s(()=>[e[6]||(e[6]=n(" Du musst der ")),o(d,{to:"/System/LegalSettings"},{default:s(()=>e[5]||(e[5]=[n(" Datenschutzerklärung ")])),_:1}),e[7]||(e[7]=n(" zustimmen, um einen Systembericht senden zu können. "))]),_:1})):(f(),c("div",I,[o(p,{subtype:"success"},{default:s(()=>[e[9]||(e[9]=n(" Du hast der ")),o(d,{to:"/System/LegalSettings"},{default:s(()=>e[8]||(e[8]=[n(" Datenschutzerklärung ")])),_:1}),e[10]||(e[10]=n(" zugestimmt und kannst Systemberichte senden. "))]),_:1}),o(y,{title:"Systembericht"},C({default:s(()=>[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(f(),c("div",N,[o(p,{subtype:"info"},{default:s(()=>[r("ul",null,[r("li",null,[e[11]||(e[11]=n(" Lies bitte den Hilfetext, der durch Klick auf das ")),o(v,{icon:["far","question-circle"]}),e[12]||(e[12]=n(" angezeigt wird. Nimm das Wiki zur Hilfe. "))]),e[13]||(e[13]=r("li",null,'Vergewissere Dich , dass mindestens die aktuelle "Release" Version installiert ist.',-1)),e[14]||(e[14]=r("li",null," Stelle beim Absenden des Berichtes die Fehlerkonditionen her. Lädt ein Fahrzeug nicht, sollte es angeschlossen und nicht voll geladen sein. Ist PV laden betroffen, sollte die Sonne auch scheinen. Der Systembericht muss dann versendet werden, wenn der Fehler aktuell vorliegt. ",-1)),e[15]||(e[15]=r("li",null," Stelle sicher, dass der Lademodus gewählt ist und im Falle von nicht ladenden ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1)),e[16]||(e[16]=r("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Du erhältst ca. 15 bis 30 Minuten nach Versand des Systemberichtes von uns automatisch eine E-Mail mit der Ticketnummer unter der die Anfrage bei uns registriert wurde. Wir melden uns bei Dir. Bitte kontrolliere daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhältst Du trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes vermutlich fehlgeschlagen. ",-1))])]),_:1}),o(h,{modelValue:t.email,"onUpdate:modelValue":e[0]||(e[0]=l=>t.email=l),title:"E-Mail",required:"",subtype:"email"},{help:s(()=>e[17]||(e[17]=[n(" Deine E-Mail-Adresse, an die der Support Dir antwortet. ")])),_:1},8,["modelValue"]),o(h,{title:"openWB Seriennummer",required:"","model-value":i.$store.state.mqtt["openWB/system/serial_number"],"onUpdate:modelValue":e[1]||(e[1]=l=>i.updateState("openWB/system/serial_number",l))},{help:s(()=>e[18]||(e[18]=[n(" Die Seriennummer der openWB findest Du außen am, bei älteren Installationen innen im Gehäuse. Du kannst uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden!"),r("br",null,null,-1),n(" Bei einer gekauften openWB wird die Seriennummer automatisch ermittelt. ")])),_:1},8,["model-value"]),o(g,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500","model-value":a.installedComponents,"onUpdate:modelValue":e[2]||(e[2]=l=>t.components=l)},{help:s(()=>[e[20]||(e[20]=n(" Gib hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind.")),e[21]||(e[21]=r("br",null,null,-1)),o(d,{to:"/HardwareInstallation"},{default:s(()=>e[19]||(e[19]=[n(" Die Angaben können auch direkt in der Konfiguration der Komponenten dauerhaft gespeichert werden. ")])),_:1})]),_:1},8,["model-value"]),o(g,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500","model-value":a.vehicleInfo,"onUpdate:modelValue":e[3]||(e[3]=l=>t.vehicles=l)},{help:s(()=>[e[23]||(e[23]=n(" Gib hier an, welche Fahrzeuge geladen (Hersteller, Modell, Baujahr).")),e[24]||(e[24]=r("br",null,null,-1)),o(d,{to:"/VehicleConfiguration"},{default:s(()=>e[22]||(e[22]=[n(" Die Angaben können auch direkt in der Konfiguration der Fahrzeuge dauerhaft gespeichert werden. ")])),_:1})]),_:1},8,["model-value"]),o(g,{modelValue:t.message,"onUpdate:modelValue":e[4]||(e[4]=l=>t.message=l),title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500"},null,8,["modelValue"])])):w("",!0)]),_:2},[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:s(()=>[r("div",T,[o(B,{class:F(["col-4",t.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!t.enableSendDebugButton,onButtonClicked:a.sendDebugMessage},{default:s(()=>e[25]||(e[25]=[n(" Absenden ")])),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),t.enableSendDebugButton?w("",!0):(f(),k(p,{key:0,subtype:"success"},{default:s(()=>[e[26]||(e[26]=n(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Du kannst diese Seite jetzt verlassen. ")),o(S,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const $=z(x,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{$ as default}; +`}}return i.trim()}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.debugData}),this.enableSendDebugButton=!1;else{console.warn("form invalid");return}}}},_={class:"support"},q={name:"supportForm"},I={key:1},N={key:0},T={class:"row justify-content-center"};function M(i,e,b,m,t,a){const d=u("router-link"),p=u("openwb-base-alert"),v=u("FontAwesomeIcon"),h=u("openwb-base-text-input"),g=u("openwb-base-textarea"),y=u("openwb-base-click-button"),B=u("openwb-base-card"),S=u("font-awesome-icon");return f(),c("div",_,[r("form",q,[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(f(),k(p,{key:0,subtype:"danger"},{default:s(()=>[e[6]||(e[6]=n(" Du musst der ")),o(d,{to:"/System/LegalSettings"},{default:s(()=>e[5]||(e[5]=[n(" Datenschutzerklärung ")])),_:1}),e[7]||(e[7]=n(" zustimmen, um einen Systembericht senden zu können. "))]),_:1})):(f(),c("div",I,[o(p,{subtype:"success"},{default:s(()=>[e[9]||(e[9]=n(" Du hast der ")),o(d,{to:"/System/LegalSettings"},{default:s(()=>e[8]||(e[8]=[n(" Datenschutzerklärung ")])),_:1}),e[10]||(e[10]=n(" zugestimmt und kannst Systemberichte senden. "))]),_:1}),o(B,{title:"Systembericht"},C({default:s(()=>[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(f(),c("div",N,[o(p,{subtype:"info"},{default:s(()=>[r("ul",null,[r("li",null,[e[11]||(e[11]=n(" Lies bitte den Hilfetext, der durch Klick auf das ")),o(v,{icon:["far","question-circle"]}),e[12]||(e[12]=n(" angezeigt wird. Nimm das Wiki zur Hilfe. "))]),e[13]||(e[13]=r("li",null,'Vergewissere Dich , dass mindestens die aktuelle "Release" Version installiert ist.',-1)),e[14]||(e[14]=r("li",null," Stelle beim Absenden des Berichtes die Fehlerkonditionen her. Lädt ein Fahrzeug nicht, sollte es angeschlossen und nicht voll geladen sein. Ist PV laden betroffen, sollte die Sonne auch scheinen. Der Systembericht muss dann versendet werden, wenn der Fehler aktuell vorliegt. ",-1)),e[15]||(e[15]=r("li",null," Stelle sicher, dass der Lademodus gewählt ist und im Falle von nicht ladenden ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1)),e[16]||(e[16]=r("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Du erhältst ca. 15 bis 30 Minuten nach Versand des Systemberichtes von uns automatisch eine E-Mail mit der Ticketnummer unter der die Anfrage bei uns registriert wurde. Wir melden uns bei Dir. Bitte kontrolliere daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhältst Du trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes vermutlich fehlgeschlagen. ",-1))])]),_:1}),o(h,{modelValue:t.email,"onUpdate:modelValue":e[0]||(e[0]=l=>t.email=l),title:"E-Mail",required:"",subtype:"email"},{help:s(()=>e[17]||(e[17]=[n(" Deine E-Mail-Adresse, an die der Support Dir antwortet. ")])),_:1},8,["modelValue"]),o(h,{title:"openWB Seriennummer",required:"","model-value":i.$store.state.mqtt["openWB/system/serial_number"],"onUpdate:modelValue":e[1]||(e[1]=l=>i.updateState("openWB/system/serial_number",l))},{help:s(()=>e[18]||(e[18]=[n(" Die Seriennummer der openWB findest Du außen am, bei älteren Installationen innen im Gehäuse. Du kannst uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden!"),r("br",null,null,-1),n(" Bei einer gekauften openWB wird die Seriennummer automatisch ermittelt. ")])),_:1},8,["model-value"]),o(g,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500","model-value":a.installedComponents,"onUpdate:modelValue":e[2]||(e[2]=l=>t.components=l)},{help:s(()=>[e[20]||(e[20]=n(" Gib hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind.")),e[21]||(e[21]=r("br",null,null,-1)),o(d,{to:"/HardwareInstallation"},{default:s(()=>e[19]||(e[19]=[n(" Die Angaben können auch direkt in der Konfiguration der Komponenten dauerhaft gespeichert werden. ")])),_:1})]),_:1},8,["model-value"]),o(g,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500","model-value":a.vehicleInfo,"onUpdate:modelValue":e[3]||(e[3]=l=>t.vehicles=l)},{help:s(()=>[e[23]||(e[23]=n(" Gib hier an, welche Fahrzeuge geladen (Hersteller, Modell, Baujahr).")),e[24]||(e[24]=r("br",null,null,-1)),o(d,{to:"/VehicleConfiguration"},{default:s(()=>e[22]||(e[22]=[n(" Die Angaben können auch direkt in der Konfiguration der Fahrzeuge dauerhaft gespeichert werden. ")])),_:1})]),_:1},8,["model-value"]),o(g,{modelValue:t.message,"onUpdate:modelValue":e[4]||(e[4]=l=>t.message=l),title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500"},null,8,["modelValue"])])):w("",!0)]),_:2},[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:s(()=>[r("div",T,[o(y,{class:F(["col-4",t.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!t.enableSendDebugButton,onButtonClicked:a.sendDebugMessage},{default:s(()=>e[25]||(e[25]=[n(" Absenden ")])),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),t.enableSendDebugButton?w("",!0):(f(),k(p,{key:0,subtype:"success"},{default:s(()=>[e[26]||(e[26]=n(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Du kannst diese Seite jetzt verlassen. ")),o(S,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const $=A(x,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{$ as default}; diff --git a/web/settings/assets/System-20e6cb5e.js b/web/settings/assets/System-20e6cb5e.js new file mode 100644 index 0000000000..aabd2a4b3a --- /dev/null +++ b/web/settings/assets/System-20e6cb5e.js @@ -0,0 +1 @@ +import{l as W,ai as q,p as A,a9 as C,_ as S,aj as $,F as U}from"./vendor-fortawesome-433470db.js";import{C as z}from"./index-cc8f65ba.js";import{_ as E,u as b,l as c,m as w,z as B,E as o,B as y,G as s,x as l,y as i,q as _,N as F,M as j,F as T}from"./vendor-ea36120f.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";W.add(q,A,C,S,$);const x={name:"OpenwbSystemView",components:{FontAwesomeIcon:U},mixins:[z],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/system/optionBackup","openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch","openWB/system/version","openWB/system/serial_number","openWB/system/ip_address","openWB/system/mac_address"],warningAcknowledged:!1,selectedTag:"*HEAD*"}},computed:{updateAvailable(){return this.$store.state.mqtt["openWB/system/current_branch_commit"]&&this.$store.state.mqtt["openWB/system/current_branch_commit"]!=this.$store.state.mqtt["openWB/system/current_commit"]},releaseChangeValid(){return this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]&&"tags"in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]]&&this.selectedTag in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getBranchGroups(){const t="Release",e="Beta",u="master",v=[t,e],p=(a,d)=>a.value==d.value?0:a.value==t?-1:d.value==t?1:a.value==e?-1:d.value==e?1:a.value==u?-1:d.value==u||a.value>d.value?1:a.value[e[15]||(e[15]=l("h2",null,"Achtung!",-1)),e[16]||(e[16]=l("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),s(f,{modelValue:p.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>p.warningAcknowledged=n),title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"])]),_:1})),p.warningAcknowledged||u.installAssistantActive?(c(),w("div",L,[s(d,{title:"System Information",subtype:"info",collapsible:!0,collapsed:!0},{default:o(()=>[s(a,{modelValue:t.$store.state.mqtt["openWB/system/serial_number"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.$store.state.mqtt["openWB/system/serial_number"]=n),title:"Seriennummer",readonly:""},null,8,["modelValue"]),s(a,{modelValue:t.$store.state.mqtt["openWB/system/ip_address"],"onUpdate:modelValue":e[2]||(e[2]=n=>t.$store.state.mqtt["openWB/system/ip_address"]=n),title:"IP-Adresse",readonly:""},null,8,["modelValue"]),s(a,{modelValue:t.$store.state.mqtt["openWB/system/mac_address"],"onUpdate:modelValue":e[3]||(e[3]=n=>t.$store.state.mqtt["openWB/system/mac_address"]=n),title:"MAC-Adresse",readonly:""},null,8,["modelValue"])]),_:1}),l("form",N,[s(d,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{footer:o(()=>[l("div",R,[l("div",Z,[s(h,{class:"btn-info",onButtonClicked:e[8]||(e[8]=n=>r.sendSystemCommand("systemFetchVersions"))},{default:o(()=>[e[19]||(e[19]=i(" Informationen aktualisieren ")),s(g,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),l("div",O,[s(h,{class:_(r.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!r.updateAvailable,onButtonClicked:e[9]||(e[9]=n=>r.systemUpdate())},{default:o(()=>[e[20]||(e[20]=i(" Update ")),s(g,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[s(a,{modelValue:t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[4]||(e[4]=n=>t.$store.state.mqtt["openWB/system/current_branch"]=n),title:"Entwicklungszweig",readonly:""},null,8,["modelValue"]),s(a,{modelValue:t.$store.state.mqtt["openWB/system/version"],"onUpdate:modelValue":e[5]||(e[5]=n=>t.$store.state.mqtt["openWB/system/version"]=n),title:"Bezeichnung",readonly:""},null,8,["modelValue"]),s(a,{modelValue:t.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[6]||(e[6]=n=>t.$store.state.mqtt["openWB/system/current_commit"]=n),title:"installierte Version",readonly:"",class:_(r.updateAvailable?"text-danger":"text-success")},null,8,["modelValue","class"]),s(a,{modelValue:t.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[7]||(e[7]=n=>t.$store.state.mqtt["openWB/system/current_branch_commit"]=n),title:"aktuellste Version",readonly:""},null,8,["modelValue"]),r.updateAvailable?(c(),B(d,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:o(()=>[l("ul",I,[(c(!0),w(F,null,j(t.$store.state.mqtt["openWB/system/current_missing_commits"],(n,V)=>(c(),w("li",{key:V},T(n),1))),128))])]),_:1})):y("",!0),s(m,{subtype:"danger"},{default:o(()=>e[17]||(e[17]=[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")])),_:1}),t.$store.state.mqtt["openWB/system/current_branch"]!="Release"?(c(),B(m,{key:1,subtype:"danger"},{default:o(()=>e[18]||(e[18]=[i(' Du bist nicht auf dem für den normalen Gebrauch empfohlenen Entwicklungszweig "Release". Wir empfehlen, auf diesen Zweig zu wechseln, sobald dort eine neue Version verfügbar ist.'),l("br",null,null,-1),i(" Bevor ein Update angestoßen wird, sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren. ")])),_:1})):y("",!0)]),_:1},8,["collapsed"])]),u.installAssistantActive?y("",!0):(c(),w("form",P,[s(d,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:o(()=>[l("div",G,[l("div",M,[s(h,{class:"btn-warning",onButtonClicked:e[10]||(e[10]=n=>r.sendSystemCommand("systemReboot"))},{default:o(()=>[e[22]||(e[22]=i(" Neustart ")),s(g,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),l("div",H,[s(h,{class:"btn-danger",onButtonClicked:e[11]||(e[11]=n=>r.sendSystemCommand("systemShutdown"))},{default:o(()=>[e[23]||(e[23]=i(" Ausschalten ")),s(g,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:o(()=>[s(m,{subtype:"danger"},{default:o(()=>e[21]||(e[21]=[i(" Wenn die Ladestation ausgeschaltet wird, muss sie komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")])),_:1})]),_:1})])),u.installAssistantActive?y("",!0):(c(),w("form",J,[s(d,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:o(()=>[l("div",K,[l("div",Q,[s(h,{class:_(r.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!r.releaseChangeValid,onButtonClicked:e[14]||(e[14]=n=>r.switchBranch())},{default:o(()=>[s(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),e[26]||(e[26]=i(" Branch und Tag wechseln ")),s(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[s(m,{subtype:"danger"},{default:o(()=>e[24]||(e[24]=[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")])),_:1}),s(m,{subtype:"warning"},{default:o(()=>e[25]||(e[25]=[i(" Bevor auf einen neuen Entwicklungszweig gewechselt wird sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren."),l("br",null,null,-1),i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),l("br",null,null,-1),i(' Der "Beta" Zweig beinhaltet Vorabversionen, bei denen die Entwicklung soweit abgeschlossen ist. Die enthaltenen Anpassungen wurden rudimentär getestet, können aber durchaus noch Fehler enthalten.'),l("br",null,null,-1),i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),l("br",null,null,-1),i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')])),_:1}),s(k,{title:"Entwicklungszweig",groups:r.getBranchGroups(),"model-value":t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[12]||(e[12]=n=>t.updateState("openWB/system/current_branch",n))},null,8,["groups","model-value"]),s(k,{modelValue:p.selectedTag,"onUpdate:modelValue":e[13]||(e[13]=n=>p.selectedTag=n),title:"Tag",options:r.getBranchTagOptions()},null,8,["modelValue","options"])]),_:1})]))])):y("",!0)])}const le=E(x,[["render",X],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{le as default}; diff --git a/web/settings/assets/System-71b2e67e.js b/web/settings/assets/System-71b2e67e.js deleted file mode 100644 index 2d8340af5b..0000000000 --- a/web/settings/assets/System-71b2e67e.js +++ /dev/null @@ -1 +0,0 @@ -import{l as W,am as q,t as A,ad as C,a2 as S,an as $,F as U}from"./vendor-fortawesome-9d7cfdfb.js";import{C as z}from"./index-b236cee5.js";import{_ as E,u as b,l as c,m as w,x as B,E as o,z as y,G as s,A as l,B as i,q as _,N as F,M as j,F as T}from"./vendor-ad7c30fd.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";W.add(q,A,C,S,$);const x={name:"OpenwbSystemView",components:{FontAwesomeIcon:U},mixins:[z],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/system/optionBackup","openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch","openWB/system/version","openWB/system/serial_number","openWB/system/ip_address","openWB/system/mac_address"],warningAcknowledged:!1,selectedTag:"*HEAD*"}},computed:{updateAvailable(){return this.$store.state.mqtt["openWB/system/current_branch_commit"]&&this.$store.state.mqtt["openWB/system/current_branch_commit"]!=this.$store.state.mqtt["openWB/system/current_commit"]},releaseChangeValid(){return this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]&&"tags"in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]]&&this.selectedTag in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getBranchGroups(){const t="Release",e="Beta",u="master",v=[t,e],p=(a,d)=>a.value==d.value?0:a.value==t?-1:d.value==t?1:a.value==e?-1:d.value==e?1:a.value==u?-1:d.value==u||a.value>d.value?1:a.value[e[15]||(e[15]=l("h2",null,"Achtung!",-1)),e[16]||(e[16]=l("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),s(f,{modelValue:p.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>p.warningAcknowledged=n),title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"])]),_:1})),p.warningAcknowledged||u.installAssistantActive?(c(),w("div",L,[s(d,{title:"System Information",subtype:"info",collapsible:!0,collapsed:!0},{default:o(()=>[s(a,{modelValue:t.$store.state.mqtt["openWB/system/serial_number"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.$store.state.mqtt["openWB/system/serial_number"]=n),title:"Seriennummer",readonly:""},null,8,["modelValue"]),s(a,{modelValue:t.$store.state.mqtt["openWB/system/ip_address"],"onUpdate:modelValue":e[2]||(e[2]=n=>t.$store.state.mqtt["openWB/system/ip_address"]=n),title:"IP-Adresse",readonly:""},null,8,["modelValue"]),s(a,{modelValue:t.$store.state.mqtt["openWB/system/mac_address"],"onUpdate:modelValue":e[3]||(e[3]=n=>t.$store.state.mqtt["openWB/system/mac_address"]=n),title:"MAC-Adresse",readonly:""},null,8,["modelValue"])]),_:1}),l("form",N,[s(d,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{footer:o(()=>[l("div",R,[l("div",Z,[s(h,{class:"btn-info",onButtonClicked:e[8]||(e[8]=n=>r.sendSystemCommand("systemFetchVersions"))},{default:o(()=>[e[19]||(e[19]=i(" Informationen aktualisieren ")),s(g,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),l("div",O,[s(h,{class:_(r.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!r.updateAvailable,onButtonClicked:e[9]||(e[9]=n=>r.systemUpdate())},{default:o(()=>[e[20]||(e[20]=i(" Update ")),s(g,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[s(a,{modelValue:t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[4]||(e[4]=n=>t.$store.state.mqtt["openWB/system/current_branch"]=n),title:"Entwicklungszweig",readonly:""},null,8,["modelValue"]),s(a,{modelValue:t.$store.state.mqtt["openWB/system/version"],"onUpdate:modelValue":e[5]||(e[5]=n=>t.$store.state.mqtt["openWB/system/version"]=n),title:"Bezeichnung",readonly:""},null,8,["modelValue"]),s(a,{modelValue:t.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[6]||(e[6]=n=>t.$store.state.mqtt["openWB/system/current_commit"]=n),title:"installierte Version",readonly:"",class:_(r.updateAvailable?"text-danger":"text-success")},null,8,["modelValue","class"]),s(a,{modelValue:t.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[7]||(e[7]=n=>t.$store.state.mqtt["openWB/system/current_branch_commit"]=n),title:"aktuellste Version",readonly:""},null,8,["modelValue"]),r.updateAvailable?(c(),B(d,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:o(()=>[l("ul",I,[(c(!0),w(F,null,j(t.$store.state.mqtt["openWB/system/current_missing_commits"],(n,V)=>(c(),w("li",{key:V},T(n),1))),128))])]),_:1})):y("",!0),s(m,{subtype:"danger"},{default:o(()=>e[17]||(e[17]=[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")])),_:1}),t.$store.state.mqtt["openWB/system/current_branch"]!="Release"?(c(),B(m,{key:1,subtype:"danger"},{default:o(()=>e[18]||(e[18]=[i(' Du bist nicht auf dem für den normalen Gebrauch empfohlenen Entwicklungszweig "Release". Wir empfehlen, auf diesen Zweig zu wechseln, sobald dort eine neue Version verfügbar ist.'),l("br",null,null,-1),i(" Bevor ein Update angestoßen wird, sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren. ")])),_:1})):y("",!0)]),_:1},8,["collapsed"])]),u.installAssistantActive?y("",!0):(c(),w("form",P,[s(d,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:o(()=>[l("div",G,[l("div",M,[s(h,{class:"btn-warning",onButtonClicked:e[10]||(e[10]=n=>r.sendSystemCommand("systemReboot"))},{default:o(()=>[e[22]||(e[22]=i(" Neustart ")),s(g,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),l("div",H,[s(h,{class:"btn-danger",onButtonClicked:e[11]||(e[11]=n=>r.sendSystemCommand("systemShutdown"))},{default:o(()=>[e[23]||(e[23]=i(" Ausschalten ")),s(g,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:o(()=>[s(m,{subtype:"danger"},{default:o(()=>e[21]||(e[21]=[i(" Wenn die Ladestation ausgeschaltet wird, muss sie komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")])),_:1})]),_:1})])),u.installAssistantActive?y("",!0):(c(),w("form",J,[s(d,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:o(()=>[l("div",K,[l("div",Q,[s(h,{class:_(r.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!r.releaseChangeValid,onButtonClicked:e[14]||(e[14]=n=>r.switchBranch())},{default:o(()=>[s(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),e[26]||(e[26]=i(" Branch und Tag wechseln ")),s(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[s(m,{subtype:"danger"},{default:o(()=>e[24]||(e[24]=[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")])),_:1}),s(m,{subtype:"warning"},{default:o(()=>e[25]||(e[25]=[i(" Bevor auf einen neuen Entwicklungszweig gewechselt wird sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren."),l("br",null,null,-1),i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),l("br",null,null,-1),i(' Der "Beta" Zweig beinhaltet Vorabversionen, bei denen die Entwicklung soweit abgeschlossen ist. Die enthaltenen Anpassungen wurden rudimentär getestet, können aber durchaus noch Fehler enthalten.'),l("br",null,null,-1),i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),l("br",null,null,-1),i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')])),_:1}),s(k,{title:"Entwicklungszweig",groups:r.getBranchGroups(),"model-value":t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[12]||(e[12]=n=>t.updateState("openWB/system/current_branch",n))},null,8,["groups","model-value"]),s(k,{modelValue:p.selectedTag,"onUpdate:modelValue":e[13]||(e[13]=n=>p.selectedTag=n),title:"Tag",options:r.getBranchTagOptions()},null,8,["modelValue","options"])]),_:1})]))])):y("",!0)])}const le=E(x,[["render",X],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{le as default}; diff --git a/web/settings/assets/TestingStore-96106450.js b/web/settings/assets/TestingStore-96106450.js new file mode 100644 index 0000000000..6c9a017854 --- /dev/null +++ b/web/settings/assets/TestingStore-96106450.js @@ -0,0 +1 @@ +import{C as k}from"./index-cc8f65ba.js";import{S as B}from"./OpenwbSortableList-bde71f66.js";import{_ as O,u as s,l as T,m as z,x as u,G as o,E as n,y as a,F as g}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";const N={name:"OpenwbTestingStoreView",components:{SortableList:B},mixins:[k],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:[]}}},Z={class:"testingStore"},G={name:"testingStoreForm"};function L(t,e,D,j,A,J){const d=s("OpenwbBaseHeading"),S=s("OpenwbBaseSettingElement"),w=s("openwb-base-button-input"),b=s("openwb-base-button-group-input"),i=s("openwb-base-card"),p=s("openwb-base-text-input"),m=s("openwb-base-number-input"),x=s("openwb-base-textarea"),v=s("openwb-base-range-input"),f=s("openwb-base-select-input"),$=s("openwb-base-checkbox-input"),V=s("openwb-base-array-input"),E=s("openwb-base-heading"),r=s("openwb-base-alert"),U=s("sortable-list"),y=s("openwb-base-submit-buttons");return T(),z("div",Z,[u("form",G,[o(i,{title:"Elemente mit BaseSettingElement"},{default:n(()=>[o(d,null,{default:n(()=>e[28]||(e[28]=[a(" Basiselement ")])),_:1}),o(S,null,{help:n(()=>e[29]||(e[29]=[a(" Basis-Element für alle weiteren Elemente. Das ist ein "),u("a",{href:"test"},"Link",-1),a(". ")])),_:1}),o(d,null,{default:n(()=>e[30]||(e[30]=[a(" Abgeleitete Elemente ")])),_:1}),o(w,{title:"Button Input","button-text":"Klick mich",subtype:"info"},{help:n(()=>e[31]||(e[31]=[a(" Einfacher Click-Button für Aktionen. ")])),_:1}),o(b,{title:"Button Group Input",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":t.$store.state.examples.buttonGroup1,"onUpdate:modelValue":e[0]||(e[0]=l=>t.updateState("buttonGroup1",l))},{help:n(()=>e[32]||(e[32]=[a(" Button-Group Element zur Auswahl weniger Optionen. Bei vielen Optionen besser ein Dropdown verwenden. "),u("a",{href:"test"},"Link",-1),a(". ")])),_:1},8,["model-value"])]),_:1}),o(i,{title:"Einfache Eingabefelder"},{default:n(()=>[o(p,{title:"1. Text","model-value":t.$store.state.examples.text1,"onUpdate:modelValue":e[1]||(e[1]=l=>t.updateState("text1",l))},{help:n(()=>e[33]||(e[33]=[a(" Einfacher Text ")])),_:1},8,["model-value"]),o(p,{title:"2. Text (E-Mail)",subtype:"email","model-value":t.$store.state.examples.text2,"onUpdate:modelValue":e[2]||(e[2]=l=>t.updateState("text2",l))},{help:n(()=>e[34]||(e[34]=[a(" Eingabefeld für E-Mailadressen ")])),_:1},8,["model-value"]),o(p,{title:"3. Text (Host)",subtype:"host","model-value":t.$store.state.examples.text3,"onUpdate:modelValue":e[3]||(e[3]=l=>t.updateState("text3",l))},{help:n(()=>e[35]||(e[35]=[a(" Eingabefeld für Hosts (IP oder Namen) ")])),_:1},8,["model-value"]),o(p,{title:"4. Text (URL)",subtype:"url","model-value":t.$store.state.examples.text4,"onUpdate:modelValue":e[4]||(e[4]=l=>t.updateState("text4",l))},{help:n(()=>e[36]||(e[36]=[a(" Eingabefeld für URLs ")])),_:1},8,["model-value"]),o(p,{title:"5. Text (User)",subtype:"user","model-value":t.$store.state.examples.text5,"onUpdate:modelValue":e[5]||(e[5]=l=>t.updateState("text5",l))},{help:n(()=>e[37]||(e[37]=[a(" Eingabefeld für Benutzernamen ")])),_:1},8,["model-value"]),o(p,{title:"6. Text (Time)",subtype:"time","model-value":t.$store.state.examples.text6,"onUpdate:modelValue":e[6]||(e[6]=l=>t.updateState("text6",l))},{help:n(()=>e[38]||(e[38]=[a(" Eingabefeld für Zeiten ")])),_:1},8,["model-value"]),o(p,{title:"7. Text (Date)",subtype:"date","model-value":t.$store.state.examples.text7,"onUpdate:modelValue":e[7]||(e[7]=l=>t.updateState("text7",l))},{help:n(()=>e[39]||(e[39]=[a(" Eingabefeld für ein Datum ")])),_:1},8,["model-value"]),e[45]||(e[45]=u("hr",null,null,-1)),o(m,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":t.$store.state.examples.number1,"onUpdate:modelValue":e[8]||(e[8]=l=>t.updateState("number1",l))},{help:n(()=>e[40]||(e[40]=[a(" Zahl mit Einheit ")])),_:1},8,["model-value"]),o(m,{title:"2. Zahl",min:10,max:32,step:2,"model-value":t.$store.state.examples.number2,"onUpdate:modelValue":e[9]||(e[9]=l=>t.updateState("number2",l))},{help:n(()=>e[41]||(e[41]=[a(" Eingabefeld für Zahlen ohne Einheit ")])),_:1},8,["model-value"]),o(m,{title:"3. Zahl",min:-30,max:30,step:.01,precision:2,unit:"ct/kWh","model-value":t.$store.state.examples.number3*1e5,"onUpdate:modelValue":e[10]||(e[10]=l=>t.updateState("number3",parseFloat((l/1e5).toFixed(7))))},{help:n(()=>e[42]||(e[42]=[a(" Eingabefeld für Zahlen mit Einheit und Nachkommastellen"),u("br",null,null,-1),a(' Zusätzlich zum optionalen Parameter "step" sollte immer auch "precision" gesetzt sein, um unvermeidbare Darstellungsfehler zu vermeiden.'),u("br",null,null,-1),a(" Wenn der dargestellte Wert eine andere Genauigkeit/Einheit als der Wert im Backend hat (z.B. €/Wh <-> ct/kWh), dann ist bei der Umrechnung darauf zu achten, dass es nicht erneut zu Ungenauigkeiten bei Dezimalzahlen kommt. ")])),_:1},8,["model-value"]),o(p,{title:"1. Passwort",subtype:"password","model-value":t.$store.state.examples.password1,"onUpdate:modelValue":e[11]||(e[11]=l=>t.updateState("password1",l))},{help:n(()=>e[43]||(e[43]=[a(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")])),_:1},8,["model-value"]),e[46]||(e[46]=u("hr",null,null,-1)),o(x,{title:"1. Textarea",maxlength:"50","model-value":t.$store.state.examples.textarea1,"onUpdate:modelValue":e[12]||(e[12]=l=>t.updateState("textarea1",l))},{help:n(()=>e[44]||(e[44]=[a(" Textarea mit maximaler Länge von 50 Zeichen. ")])),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:n(()=>[o(v,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":t.$store.state.examples.range1,"onUpdate:modelValue":e[13]||(e[13]=l=>t.updateState("range1",l))},{help:n(()=>e[47]||(e[47]=[a(" Range ohne spezielle Labels ")])),_:1},8,["model-value"]),o(v,{title:"2. Range",min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":t.$store.state.examples.range2,"onUpdate:modelValue":e[14]||(e[14]=l=>t.updateState("range2",l))},{help:n(()=>e[48]||(e[48]=[a(" Range mit speziellen Labels ")])),_:1},8,["model-value"]),e[53]||(e[53]=u("hr",null,null,-1)),o(f,{title:"1. Select","not-selected":"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":t.$store.state.examples.select1,"onUpdate:modelValue":e[15]||(e[15]=l=>t.updateState("select1",l))},{help:n(()=>e[49]||(e[49]=[a(" Select mit einfachen Optionen ")])),_:1},8,["model-value"]),o(f,{title:"2. Select",groups:[{label:"Gruppe 1 (Number)",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}]},{label:"Gruppe 2 (String)",options:[{value:"three",text:"Drei"},{value:"four",text:"Vier"}]}],"not-selected":"Bitte auswählen","add-button":!0,"model-value":t.$store.state.examples.select2,"onUpdate:modelValue":e[16]||(e[16]=l=>t.updateState("select2",l)),"onInput:add":e[17]||(e[17]=l=>t.alert("add button pressed"))},{help:n(()=>e[50]||(e[50]=[a(" Select mit Gruppen und Add-Button. ")])),_:1},8,["model-value"]),e[54]||(e[54]=u("hr",null,null,-1)),o(b,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":t.$store.state.examples.buttonGroup1,"onUpdate:modelValue":e[18]||(e[18]=l=>t.updateState("buttonGroup1",l))},{help:n(()=>e[51]||(e[51]=[a(" Hilfetext ")])),_:1},8,["model-value"]),e[55]||(e[55]=u("hr",null,null,-1)),o($,{title:"1. Checkbox","model-value":t.$store.state.examples.checkbox1,"onUpdate:modelValue":e[19]||(e[19]=l=>t.updateState("checkbox1",l))},{help:n(()=>e[52]||(e[52]=[a(" Hilfetext ")])),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:n(()=>[o(p,{title:"JSON 1",subtype:"json","model-value":t.$store.state.examples.json1,"onUpdate:modelValue":e[20]||(e[20]=l=>t.updateState("json1",l))},{help:n(()=>e[56]||(e[56]=[a(" JSON Objekt ")])),_:1},8,["model-value"]),o(p,{title:"JSON 1 Text","model-value":t.$store.state.examples.json1.text,"onUpdate:modelValue":e[21]||(e[21]=l=>t.updateState("json1",l,"text"))},{help:n(()=>e[57]||(e[57]=[a(" Text im JSON Objekt ")])),_:1},8,["model-value"]),o(m,{title:"JSON 1 Zahl","model-value":t.$store.state.examples.json1.number,"onUpdate:modelValue":e[22]||(e[22]=l=>t.updateState("json1",l,"number"))},{help:n(()=>e[58]||(e[58]=[a(" Zahl im JSON Objekt ")])),_:1},8,["model-value"]),o(V,{title:"Tag Array","model-value":t.$store.state.examples.tags,"onUpdate:modelValue":e[23]||(e[23]=l=>t.updateState("tags",l))},{help:n(()=>[u("pre",null,g(JSON.stringify(t.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:n(()=>e[59]||(e[59]=[u("span",{style:{"text-decoration":"underline","font-style":"italic"}},[a(" Styled "),u("span",{style:{"font-weight":"initial"}},"Header"),a(" Slot ")],-1)])),default:n(()=>[o(E,null,{help:n(()=>e[60]||(e[60]=[a(" Es sind auch Hilfetexte im #help Slot möglich. "),u("a",{href:"test"},"Link",-1)])),default:n(()=>[e[61]||(e[61]=a(" Das ist eine Überschrift "))]),_:1}),o(r,null,{default:n(()=>e[62]||(e[62]=[a(" Meldung ohne speziellen Subtype. ")])),_:1}),o(r,{subtype:"info"},{default:n(()=>e[63]||(e[63]=[a(" Infomeldung ")])),_:1}),o(r,{subtype:"warning"},{default:n(()=>e[64]||(e[64]=[a(" Warnmeldung ")])),_:1}),o(r,{subtype:"danger"},{default:n(()=>e[65]||(e[65]=[a(" Fehlermeldung ")])),_:1})]),_:1}),o(i,{title:"Listen"},{default:n(()=>[o(U,{modelValue:t.$store.state.examples.hierarchy1,"onUpdate:modelValue":e[24]||(e[24]=l=>t.$store.state.examples.hierarchy1=l),title:"Liste 1",labels:t.$store.state.examples.hierarchy1Labels},{help:n(()=>[u("pre",null,g(JSON.stringify(t.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o(y,{"form-name":"testingStoreForm",onSave:e[25]||(e[25]=l=>t.$emit("save")),onReset:e[26]||(e[26]=l=>t.$emit("reset")),onDefaults:e[27]||(e[27]=l=>t.$emit("defaults"))})])])}const K=O(N,[["render",L],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{K as default}; diff --git a/web/settings/assets/TestingStore-e8ef24a7.js b/web/settings/assets/TestingStore-e8ef24a7.js deleted file mode 100644 index 1e2e9bd43c..0000000000 --- a/web/settings/assets/TestingStore-e8ef24a7.js +++ /dev/null @@ -1 +0,0 @@ -import{C as k}from"./index-b236cee5.js";import{S as B}from"./OpenwbSortableList-13147a4b.js";import{_ as T,u,l as O,m as z,A as s,G as o,E as n,B as a,F as S}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";const Z={name:"OpenwbTestingStoreView",components:{SortableList:B},mixins:[k],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:[]}}},N={class:"testingStore"},G={name:"testingStoreForm"};function L(t,e,D,j,A,J){const b=u("OpenwbBaseHeading"),w=u("OpenwbBaseSettingElement"),x=u("openwb-base-button-input"),v=u("openwb-base-button-group-input"),i=u("openwb-base-card"),p=u("openwb-base-text-input"),m=u("openwb-base-number-input"),$=u("openwb-base-textarea"),f=u("openwb-base-range-input"),r=u("openwb-base-select-input"),g=u("openwb-base-heading"),E=u("openwb-base-checkbox-input"),V=u("openwb-base-array-input"),d=u("openwb-base-alert"),y=u("sortable-list"),U=u("openwb-base-submit-buttons");return O(),z("div",N,[s("form",G,[o(i,{title:"Elemente mit BaseSettingElement"},{default:n(()=>[o(b,null,{default:n(()=>e[29]||(e[29]=[a(" Basiselement ")])),_:1}),o(w,null,{title:n(()=>e[30]||(e[30]=[s("span",{style:{"font-style":"italic"}},[a(" Styled "),s("span",{style:{"font-weight":"bold"}},"Title"),a(" Slot ")],-1)])),help:n(()=>e[31]||(e[31]=[a(" Basis-Element für alle weiteren Elemente. Das ist ein "),s("a",{href:"test"},"Link",-1),a(". ")])),_:1}),o(b,null,{default:n(()=>e[32]||(e[32]=[a(" Abgeleitete Elemente ")])),_:1}),o(x,{title:"Button Input","button-text":"Klick mich",subtype:"info"},{help:n(()=>e[33]||(e[33]=[a(" Einfacher Click-Button für Aktionen. ")])),_:1}),o(v,{title:"Button Group Input",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":t.$store.state.examples.buttonGroup1,"onUpdate:modelValue":e[0]||(e[0]=l=>t.updateState("buttonGroup1",l))},{help:n(()=>e[34]||(e[34]=[a(" Button-Group Element zur Auswahl weniger Optionen. Bei vielen Optionen besser ein Dropdown verwenden. "),s("a",{href:"test"},"Link",-1),a(". ")])),_:1},8,["model-value"])]),_:1}),o(i,{title:"Einfache Eingabefelder"},{default:n(()=>[o(p,{title:"1. Text","model-value":t.$store.state.examples.text1,"onUpdate:modelValue":e[1]||(e[1]=l=>t.updateState("text1",l))},{help:n(()=>e[35]||(e[35]=[a(" Einfacher Text ")])),_:1},8,["model-value"]),o(p,{title:"2. Text (E-Mail)",subtype:"email","model-value":t.$store.state.examples.text2,"onUpdate:modelValue":e[2]||(e[2]=l=>t.updateState("text2",l))},{help:n(()=>e[36]||(e[36]=[a(" Eingabefeld für E-Mailadressen ")])),_:1},8,["model-value"]),o(p,{title:"3. Text (Host)",subtype:"host","model-value":t.$store.state.examples.text3,"onUpdate:modelValue":e[3]||(e[3]=l=>t.updateState("text3",l))},{help:n(()=>e[37]||(e[37]=[a(" Eingabefeld für Hosts (IP oder Namen) ")])),_:1},8,["model-value"]),o(p,{title:"4. Text (URL)",subtype:"url","model-value":t.$store.state.examples.text4,"onUpdate:modelValue":e[4]||(e[4]=l=>t.updateState("text4",l))},{help:n(()=>e[38]||(e[38]=[a(" Eingabefeld für URLs ")])),_:1},8,["model-value"]),o(p,{title:"5. Text (User)",subtype:"user","model-value":t.$store.state.examples.text5,"onUpdate:modelValue":e[5]||(e[5]=l=>t.updateState("text5",l))},{help:n(()=>e[39]||(e[39]=[a(" Eingabefeld für Benutzernamen ")])),_:1},8,["model-value"]),o(p,{title:"6. Text (Time)",subtype:"time","model-value":t.$store.state.examples.text6,"onUpdate:modelValue":e[6]||(e[6]=l=>t.updateState("text6",l))},{help:n(()=>e[40]||(e[40]=[a(" Eingabefeld für Zeiten ")])),_:1},8,["model-value"]),o(p,{title:"7. Text (Date)",subtype:"date","model-value":t.$store.state.examples.text7,"onUpdate:modelValue":e[7]||(e[7]=l=>t.updateState("text7",l))},{help:n(()=>e[41]||(e[41]=[a(" Eingabefeld für ein Datum ")])),_:1},8,["model-value"]),e[47]||(e[47]=s("hr",null,null,-1)),o(m,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":t.$store.state.examples.number1,"onUpdate:modelValue":e[8]||(e[8]=l=>t.updateState("number1",l))},{help:n(()=>e[42]||(e[42]=[a(" Zahl mit Einheit ")])),_:1},8,["model-value"]),o(m,{title:"2. Zahl",min:10,max:32,step:2,"model-value":t.$store.state.examples.number2,"onUpdate:modelValue":e[9]||(e[9]=l=>t.updateState("number2",l))},{help:n(()=>e[43]||(e[43]=[a(" Eingabefeld für Zahlen ohne Einheit ")])),_:1},8,["model-value"]),o(m,{title:"3. Zahl",min:-30,max:30,step:.01,precision:2,unit:"ct/kWh","model-value":t.$store.state.examples.number3*1e5,"onUpdate:modelValue":e[10]||(e[10]=l=>t.updateState("number3",parseFloat((l/1e5).toFixed(7))))},{help:n(()=>e[44]||(e[44]=[a(" Eingabefeld für Zahlen mit Einheit und Nachkommastellen"),s("br",null,null,-1),a(' Zusätzlich zum optionalen Parameter "step" sollte immer auch "precision" gesetzt sein, um unvermeidbare Darstellungsfehler zu vermeiden.'),s("br",null,null,-1),a(" Wenn der dargestellte Wert eine andere Genauigkeit/Einheit als der Wert im Backend hat (z.B. €/Wh <-> ct/kWh), dann ist bei der Umrechnung darauf zu achten, dass es nicht erneut zu Ungenauigkeiten bei Dezimalzahlen kommt. ")])),_:1},8,["model-value"]),o(p,{title:"1. Passwort",subtype:"password","model-value":t.$store.state.examples.password1,"onUpdate:modelValue":e[11]||(e[11]=l=>t.updateState("password1",l))},{help:n(()=>e[45]||(e[45]=[a(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")])),_:1},8,["model-value"]),e[48]||(e[48]=s("hr",null,null,-1)),o($,{title:"1. Textarea",maxlength:"50","model-value":t.$store.state.examples.textarea1,"onUpdate:modelValue":e[12]||(e[12]=l=>t.updateState("textarea1",l))},{help:n(()=>e[46]||(e[46]=[a(" Textarea mit maximaler Länge von 50 Zeichen. ")])),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:n(()=>[o(f,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":t.$store.state.examples.range1,"onUpdate:modelValue":e[13]||(e[13]=l=>t.updateState("range1",l))},{help:n(()=>e[49]||(e[49]=[a(" Range ohne spezielle Labels ")])),_:1},8,["model-value"]),o(f,{title:"2. Range",min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":t.$store.state.examples.range2,"onUpdate:modelValue":e[14]||(e[14]=l=>t.updateState("range2",l))},{help:n(()=>e[50]||(e[50]=[a(" Range mit speziellen Labels ")])),_:1},8,["model-value"]),e[56]||(e[56]=s("hr",null,null,-1)),o(r,{title:"1. Select","not-selected":"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":t.$store.state.examples.select1,"onUpdate:modelValue":e[15]||(e[15]=l=>t.updateState("select1",l))},{help:n(()=>e[51]||(e[51]=[a(" Select mit einfachen Optionen ")])),_:1},8,["model-value"]),o(r,{title:"2. Select",groups:[{label:"Gruppe 1 (Number)",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}]},{label:"Gruppe 2 (String)",options:[{value:"three",text:"Drei"},{value:"four",text:"Vier"}]}],"not-selected":"Bitte auswählen","add-button":!0,"model-value":t.$store.state.examples.select2,"onUpdate:modelValue":e[16]||(e[16]=l=>t.updateState("select2",l)),"onInput:add":e[17]||(e[17]=l=>t.alert("add button pressed"))},{help:n(()=>e[52]||(e[52]=[a(" Select mit Gruppen und Add-Button. ")])),_:1},8,["model-value"]),e[57]||(e[57]=s("hr",null,null,-1)),o(v,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":t.$store.state.examples.buttonGroup1,"onUpdate:modelValue":e[18]||(e[18]=l=>t.updateState("buttonGroup1",l))},{help:n(()=>e[53]||(e[53]=[a(" Hilfetext ")])),_:1},8,["model-value"]),o(g,null,{default:n(()=>[e[54]||(e[54]=a(" Select Element ohne Label: ")),o(r,{class:"mb-1","not-selected":"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":t.$store.state.examples.select1,"onUpdate:modelValue":e[19]||(e[19]=l=>t.updateState("select1",l))},null,8,["model-value"])]),_:1}),e[58]||(e[58]=s("hr",null,null,-1)),o(E,{title:"1. Checkbox","model-value":t.$store.state.examples.checkbox1,"onUpdate:modelValue":e[20]||(e[20]=l=>t.updateState("checkbox1",l))},{help:n(()=>e[55]||(e[55]=[a(" Hilfetext ")])),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:n(()=>[o(p,{title:"JSON 1",subtype:"json","model-value":t.$store.state.examples.json1,"onUpdate:modelValue":e[21]||(e[21]=l=>t.updateState("json1",l))},{help:n(()=>e[59]||(e[59]=[a(" JSON Objekt ")])),_:1},8,["model-value"]),o(p,{title:"JSON 1 Text","model-value":t.$store.state.examples.json1.text,"onUpdate:modelValue":e[22]||(e[22]=l=>t.updateState("json1",l,"text"))},{help:n(()=>e[60]||(e[60]=[a(" Text im JSON Objekt ")])),_:1},8,["model-value"]),o(m,{title:"JSON 1 Zahl","model-value":t.$store.state.examples.json1.number,"onUpdate:modelValue":e[23]||(e[23]=l=>t.updateState("json1",l,"number"))},{help:n(()=>e[61]||(e[61]=[a(" Zahl im JSON Objekt ")])),_:1},8,["model-value"]),o(V,{title:"Tag Array","model-value":t.$store.state.examples.tags,"onUpdate:modelValue":e[24]||(e[24]=l=>t.updateState("tags",l))},{help:n(()=>[s("pre",null,S(JSON.stringify(t.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:n(()=>e[62]||(e[62]=[s("span",{style:{"text-decoration":"underline","font-style":"italic"}},[a(" Styled "),s("span",{style:{"font-weight":"initial"}},"Header"),a(" Slot ")],-1)])),default:n(()=>[o(g,null,{help:n(()=>e[63]||(e[63]=[a(" Es sind auch Hilfetexte im #help Slot möglich. "),s("a",{href:"test"},"Link",-1)])),default:n(()=>[e[64]||(e[64]=a(" Das ist eine Überschrift "))]),_:1}),o(d,null,{default:n(()=>e[65]||(e[65]=[a(" Meldung ohne speziellen Subtype. ")])),_:1}),o(d,{subtype:"info"},{default:n(()=>e[66]||(e[66]=[a(" Infomeldung ")])),_:1}),o(d,{subtype:"warning"},{default:n(()=>e[67]||(e[67]=[a(" Warnmeldung ")])),_:1}),o(d,{subtype:"danger"},{default:n(()=>e[68]||(e[68]=[a(" Fehlermeldung ")])),_:1})]),_:1}),o(i,{title:"Listen"},{default:n(()=>[o(y,{modelValue:t.$store.state.examples.hierarchy1,"onUpdate:modelValue":e[25]||(e[25]=l=>t.$store.state.examples.hierarchy1=l),title:"Liste 1",labels:t.$store.state.examples.hierarchy1Labels},{help:n(()=>[s("pre",null,S(JSON.stringify(t.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o(U,{"form-name":"testingStoreForm",onSave:e[26]||(e[26]=l=>t.$emit("save")),onReset:e[27]||(e[27]=l=>t.$emit("reset")),onDefaults:e[28]||(e[28]=l=>t.$emit("defaults"))})])])}const K=T(Z,[["render",L],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{K as default}; diff --git a/web/settings/assets/TimeChargeConfig-1a5d2dde.js b/web/settings/assets/TimeChargeConfig-d3210f64.js similarity index 84% rename from web/settings/assets/TimeChargeConfig-1a5d2dde.js rename to web/settings/assets/TimeChargeConfig-d3210f64.js index 843fdb361b..46858facb4 100644 --- a/web/settings/assets/TimeChargeConfig-1a5d2dde.js +++ b/web/settings/assets/TimeChargeConfig-d3210f64.js @@ -1 +1 @@ -import{C as l}from"./index-b236cee5.js";import{_ as b,u as o,l as i,m as a,A as _,G as s,E as r,B as m}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";const f={name:"OpenwbTimeChargeConfigView",mixins:[l],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},h={class:"timeChargeConfig"},c={name:"timeChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const u=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return i(),a("div",h,[_("form",c,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),a("div",v,[s(u,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),a("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/time_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/time_charging/phases_to_use",n))},{help:r(()=>e[5]||(e[5]=[m(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zeitladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (sog. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),s(d,{"form-name":"timeChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const q=b(f,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{q as default}; +import{C as l}from"./index-cc8f65ba.js";import{_ as b,u as o,l as i,m as a,x as _,G as s,E as r,y as m}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";const f={name:"OpenwbTimeChargeConfigView",mixins:[l],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},h={class:"timeChargeConfig"},c={name:"timeChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const u=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return i(),a("div",h,[_("form",c,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),a("div",v,[s(u,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),a("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/time_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/time_charging/phases_to_use",n))},{help:r(()=>e[5]||(e[5]=[m(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zeitladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (sog. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),s(d,{"form-name":"timeChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const q=b(f,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{q as default}; diff --git a/web/settings/assets/VehicleConfig-e49e5ddc.js b/web/settings/assets/VehicleConfig-a49bda81.js similarity index 85% rename from web/settings/assets/VehicleConfig-e49e5ddc.js rename to web/settings/assets/VehicleConfig-a49bda81.js index 303fa2e1c5..8500bd1458 100644 --- a/web/settings/assets/VehicleConfig-e49e5ddc.js +++ b/web/settings/assets/VehicleConfig-a49bda81.js @@ -1 +1 @@ -import{l as $,d as H,a9 as j,E as J,aj as G,ak as Q,D as X,Z as Y,R as K,$ as ee,al as te,Q as ne,F as ae,L as le}from"./vendor-fortawesome-9d7cfdfb.js";import{_ as k,C as ie}from"./index-b236cee5.js";import{_ as oe}from"./dynamic-import-helper-be004503.js";import{_ as M,u as V,l as d,m as g,x as p,E as l,B as i,F as C,G as a,A as h,a1 as re,a2 as de,N as P,z as m,M as y,D as F,q as x,y as N}from"./vendor-ad7c30fd.js";const ue={props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},se=M(ue,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/VehicleConfigMixin.vue"]]),me={name:"VehicleConfigFallback",mixins:[se]},ge={class:"vehicle-fallback"},he={key:1};function ce(t,e,b,B,f,s){const W=V("openwb-base-alert"),v=V("openwb-base-textarea");return d(),g("div",ge,[Object.keys(t.vehicle.configuration).length==0?(d(),p(W,{key:0,subtype:"info"},{default:l(()=>[i(' Der Fahrzeug-Typ "'+C(t.vehicle.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(d(),g("div",he,[a(W,{subtype:"warning"},{default:l(()=>[i(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+C(t.vehicle.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(v,{title:"Konfiguration",subtype:"json","model-value":t.vehicle.configuration,"onUpdate:modelValue":e[0]||(e[0]=T=>t.updateConfiguration(T,"configuration"))},{help:l(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),a(W,{subtype:"info"},{default:l(()=>[h("pre",null,C(JSON.stringify(t.vehicle.configuration,void 0,2)),1)]),_:1})]))])}const pe=M(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),be={name:"OpenwbVehicleProxy",props:{vehicleId:{type:Number,required:!0},vehicle:{type:Object,required:!0}},emits:["update:configuration"],methods:{getVehicleComponent(){return console.debug(`loading vehicle: ${this.vehicle.type}`),re({loader:()=>oe(Object.assign({"./aiways/vehicle.vue":()=>k(()=>import("./vehicle-711a16c0.js"),["assets/vehicle-711a16c0.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./bmwbc/vehicle.vue":()=>k(()=>import("./vehicle-048a17cd.js"),["assets/vehicle-048a17cd.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./evcc/vehicle.vue":()=>k(()=>import("./vehicle-0cab1a3e.js"),["assets/vehicle-0cab1a3e.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./evnotify/vehicle.vue":()=>k(()=>import("./vehicle-2530ac78.js"),["assets/vehicle-2530ac78.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./http/vehicle.vue":()=>k(()=>import("./vehicle-9213f7f9.js"),["assets/vehicle-9213f7f9.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./json/vehicle.vue":()=>k(()=>import("./vehicle-6006f37f.js"),["assets/vehicle-6006f37f.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kia/vehicle.vue":()=>k(()=>import("./vehicle-e12b30b1.js"),["assets/vehicle-e12b30b1.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./manual/vehicle.vue":()=>k(()=>import("./vehicle-3f811862.js"),["assets/vehicle-3f811862.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mercedeseq/vehicle.vue":()=>k(()=>import("./vehicle-dfe6b66d.js"),["assets/vehicle-dfe6b66d.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mqtt/vehicle.vue":()=>k(()=>import("./vehicle-5227ffda.js"),["assets/vehicle-5227ffda.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./ovms/vehicle.vue":()=>k(()=>import("./vehicle-d18e5ce2.js"),["assets/vehicle-d18e5ce2.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./psa/vehicle.vue":()=>k(()=>import("./vehicle-14a72276.js"),["assets/vehicle-14a72276.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./psacc/vehicle.vue":()=>k(()=>import("./vehicle-94956e80.js"),["assets/vehicle-94956e80.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./renault/vehicle.vue":()=>k(()=>import("./vehicle-b63b1879.js"),["assets/vehicle-b63b1879.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./skodaconnect/vehicle.vue":()=>k(()=>import("./vehicle-d5f5aff5.js"),["assets/vehicle-d5f5aff5.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smarthello/vehicle.vue":()=>k(()=>import("./vehicle-c305e7fc.js"),["assets/vehicle-c305e7fc.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/vehicle.vue":()=>k(()=>import("./vehicle-18edee3a.js"),["assets/vehicle-18edee3a.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-axios-8313efad.js","assets/index-b236cee5.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tronity/vehicle.vue":()=>k(()=>import("./vehicle-7ee8a745.js"),["assets/vehicle-7ee8a745.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./vwid/vehicle.vue":()=>k(()=>import("./vehicle-865f01e8.js"),["assets/vehicle-865f01e8.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/index-b236cee5.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.vehicle.type}/vehicle.vue`),errorComponent:pe})},updateConfiguration(t){this.$emit("update:configuration",t)}}};function ve(t,e,b,B,f,s){const W=V("openwb-base-heading");return d(),g(P,null,[a(W,null,{default:l(()=>[i(' Einstellungen für SoC-Modul "'+C(b.vehicle.name)+'" ',1)]),_:1}),(d(),p(de(s.getVehicleComponent()),{"vehicle-id":b.vehicleId,vehicle:b.vehicle,"onUpdate:configuration":e[0]||(e[0]=v=>s.updateConfiguration(v))},null,40,["vehicle-id","vehicle"]))],64)}const fe=M(be,[["render",ve],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);$.add(H,j,J,G,Q,X,Y,K,ee,te,ne);const _e={name:"OpenwbVehicleConfigView",components:{FontAwesomeIcon:ae,FontAwesomeLayers:le,OpenwbVehicleProxy:fe},mixins:[ie],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/et/provider","openWB/optional/rfid/active","openWB/vehicle/template/ev_template/+","openWB/vehicle/template/charge_template/+","openWB/vehicle/template/charge_template/+/chargemode/scheduled_charging/plans/+","openWB/vehicle/template/charge_template/+/time_charging/plans/+","openWB/vehicle/+/name","openWB/vehicle/+/info","openWB/vehicle/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/general_config","openWB/vehicle/+/soc_module/config"],showVehicleModal:!1,modalVehicleIndex:void 0,showEvTemplateModal:!1,modalEvTemplateIndex:void 0,showChargeTemplateModal:!1,modalChargeTemplateIndex:void 0,showChargeTemplateSchedulePlanModal:!1,modalChargeTemplateSchedulePlanIndex:void 0,showChargeTemplateTimeChargingPlanModal:!1,modalChargeTemplateTimeChargingPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let t=[];return Object.keys(this.evTemplates).forEach(e=>{let b=parseInt(e.match(/([0-9]+)$/g)[0]),B=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+b].name;t.push({value:b,text:B})}),t}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let t=[];return Object.keys(this.chargeTemplates).forEach(e=>{let b=parseInt(e.match(/([0-9]+)$/g)[0]),B=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+b].name;t.push({value:b,text:B})}),t}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(t){let e=t.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(t){let e=t.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/+")},addVehicle(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(t,e){e.stopPropagation(),this.modalVehicleIndex=t,this.showVehicleModal=!0},removeVehicle(t,e){this.showVehicleModal=!1,e=="confirm"&&this.$emit("sendCommand",{command:"removeVehicle",data:{id:t}})},getVehicleName(t){return this.$store.state.mqtt["openWB/vehicle/"+t+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+t+"/name"]:"Fahrzeug "+t},getSocDefaultConfiguration(t){const e=this.socModuleList.find(b=>b.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for soc type!",t),{})},updateSelectedSocModule(t,e){this.updateState("openWB/vehicle/"+t+"/soc_module/config",e,"type"),this.updateState("openWB/vehicle/"+t+"/soc_module/config",this.getSocDefaultConfiguration(e))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},addEvTemplate(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(t,e){e.stopPropagation(),this.modalEvTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(t,e){this.showEvTemplateModal=!1,e=="confirm"&&this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:t}})},getEvTemplateName(t){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+t]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+t].name:"Fahrzeug-Profil "+t},addChargeTemplate(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(t){return parseInt(t.match(/([^/]+)$/)[0])},removeChargeTemplateModal(t,e){e.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(t),this.showChargeTemplateModal=!0},removeChargeTemplate(t,e){this.showChargeTemplateModal=!1,e=="confirm"&&this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:t}})},getChargeTemplateName(t){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t].name:"Lade-Profil "+t},getChargeTemplateSchedulePlanName(t,e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/chargemode/scheduled_charging/plans/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/chargemode/scheduled_charging/plans/"+e].name:"Zielladen Zeitplan "+t+"/"+e},addChargeTemplateSchedulePlan(t,e){e.stopPropagation();let b=parseInt(t.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:b}})},removeChargeTemplateSchedulePlanModal(t,e,b){b.stopPropagation(),this.modalChargeTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(t,e,b){this.showChargeTemplateSchedulePlanModal=!1,b=="confirm"&&this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:t,plan:e}})},getChargeTemplateTimeChargingPlanName(t,e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/time_charging/plans/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/time_charging/plans/"+e].name:"Zeitladen Zeitplan "+t+"/"+e},addChargeTemplateTimeChargingPlan(t,e){e.stopPropagation();let b=parseInt(t.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:b}})},removeChargeTemplateTimeChargingPlanModal(t,e,b){b.stopPropagation(),this.modalChargeTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(t,e,b){this.showChargeTemplateTimeChargingPlanModal=!1,b=="confirm"&&this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:t,plan:e}})}}},we={class:"vehicleConfig"},ke={name:"vehicleConfigForm"},Ve={key:0},Ce={key:1},Se={key:2},ze=["innerHTML"],Ue={key:3},Te={key:0},We={key:1},Le={key:0},Pe={key:1},Ae={key:0},Ee={key:0},ye={key:3},Be={key:0},Fe={key:1},Me={key:0},qe={key:0},De={key:0},Ze=["onClick"],xe={key:0},Ne={key:1},Oe={key:2},Ie={key:3},Re={key:4},$e={key:5},He={key:4},je=["onClick"],Je={key:0},Ge={key:1},Qe={key:2},Xe={key:3},Ye={key:4},Ke={key:5};function et(t,e,b,B,f,s){const W=V("openwb-base-modal-dialog"),v=V("font-awesome-icon"),T=V("openwb-base-avatar"),E=V("openwb-base-alert"),z=V("openwb-base-text-input"),q=V("openwb-base-select-input"),O=V("openwb-base-array-input"),_=V("openwb-base-button-group-input"),L=V("openwb-base-heading"),w=V("openwb-base-number-input"),I=V("openwb-vehicle-proxy"),A=V("openwb-base-card"),Z=V("font-awesome-layers"),S=V("openwb-base-range-input"),R=V("openwb-base-submit-buttons");return d(),g(P,null,[a(W,{show:f.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=o=>s.removeVehicle(f.modalVehicleIndex,o))},{default:l(()=>[i(' Wollen Sie das Fahrzeug "'+C(s.getVehicleName(f.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[1]||(e[1]=o=>s.removeEvTemplate(f.modalEvTemplateIndex,o))},{default:l(()=>[i(' Wollen Sie das Fahrzeug-Profil "'+C(s.getEvTemplateName(f.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[2]||(e[2]=o=>s.removeChargeTemplate(f.modalChargeTemplateIndex,o))},{default:l(()=>[i(' Wollen Sie das Lade-Profil "'+C(s.getChargeTemplateName(f.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[3]||(e[3]=o=>s.removeChargeTemplateSchedulePlan(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex,o))},{default:l(()=>[i(' Wollen Sie den Zielladen Zeitplan "'+C(s.getChargeTemplateSchedulePlanName(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[4]||(e[4]=o=>s.removeChargeTemplateTimeChargingPlan(f.modalChargeTemplateIndex,f.modalChargeTemplateTimeChargingPlanIndex,o))},{default:l(()=>[i(' Wollen Sie den Zeitladen Zeitplan "'+C(s.getChargeTemplateTimeChargingPlanName(f.modalChargeTemplateIndex,f.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),h("div",we,[h("form",ke,[a(A,{subtype:"info",collapsible:!0,collapsed:t.$route.params.section!="vehicle"},{header:l(()=>[a(v,{"fixed-width":"",icon:["fas","car"]}),e[8]||(e[8]=i(" Fahrzeuge "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:s.addVehicle},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Ve,[a(E,{subtype:"info"},{default:l(()=>e[9]||(e[9]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",Ce,[(d(!0),g(P,null,y(s.vehicleIndexes,o=>(d(),p(A,{key:o,title:s.getVehicleName(o),collapsible:!0,collapsed:!(t.$route.params.section=="vehicle"&&parseInt(t.$route.params.section_index)==o),subtype:"info"},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/name"],disabled:o===0,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/name",r)},F({_:2},[o===0?{name:"help",fn:l(()=>[e[10]||(e[10]=i(" Das Standard-Fahrzeug kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),o!==0?(d(),p(z,{key:0,title:"Fahrzeughersteller ","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/info"].manufacturer,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/info",r,"manufacturer")},{help:l(()=>[...e[11]||(e[11]=[i(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),o!==0?(d(),p(z,{key:1,title:"Fahrzeugmodell","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/info"].model,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/info",r,"model")},{help:l(()=>[...e[12]||(e[12]=[i(" Optional: zusätzliche Information für den Systembericht."),h("br",null,null,-1),i(" Nach Möglichkeit auch Angabe des Baujahres, da es durchaus beim Verhalten des Fahrzeugs Unterschiede geben kann. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(E,{subtype:"info"},{default:l(()=>[...e[13]||(e[13]=[i(" Ein anderes Fahrzeug-Profil wird erst NACH dem Abstecken übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")])]),_:1}),a(q,{title:"Fahrzeug-Profil",options:s.evTemplateList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/ev_template"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/ev_template",r)},null,8,["options","model-value","onUpdate:modelValue"]),a(q,{title:"Lade-Profil",options:s.chargeTemplateList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/charge_template"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/charge_template",r)},null,8,["options","model-value","onUpdate:modelValue"]),e[24]||(e[24]=h("hr",null,null,-1)),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!b.installAssistantActive?(d(),g("div",Se,[a(O,{title:"Zugeordnete ID-Tags","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/tag_id"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/tag_id",r)},null,8,["model-value","onUpdate:modelValue"]),a(E,{subtype:"info"},{default:l(()=>[e[14]||(e[14]=i(" Die hier eingetragenen ID-Tags dienen ausschließlich der Fahrzeugzuordnung.")),e[15]||(e[15]=h("br",null,null,-1)),h("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,ze)]),_:1}),e[16]||(e[16]=h("hr",null,null,-1))])):m("",!0),a(q,{class:"mb-2",title:"SoC-Modul des Fahrzeugs",options:s.socModuleList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"].type,"onUpdate:modelValue":r=>s.updateSelectedSocModule(o,r)},{help:l(()=>[...e[17]||(e[17]=[i(" Mit einem SoC-Modul kann der Ladestand des Fahrzeugs ermittelt und geregelt werden. Z.B. lassen sich unabhängig vom Fahrzeug bestimmte SoC-Werte einstellen, um den Fahrzeugakku zu schonen. Aktuell werden die SoC-Werte mittels der App-Zugangsdaten aus dem Herstellerserver des Fahrzeuges ausgelesen. Zukünftig soll auch eine direkte SoC-Auslesung aus dem Fahrzeug möglich werden (openWB Pro)."),h("br",null,null,-1),i(" Die SoC-Abfrage erfolgt automatisch beim Anstecken des Fahrzeuges und zusätzlich über einstellbare Abfrageintervalle während des Ladens und Nichtladens. Die Abfrage kann auch manuell durch Klick auf den Reload-Pfeil auf der Hauptseite ausgelöst werden."),h("br",null,null,-1),i(" Wenn eine Abfrage fehlschlägt, wird noch drei weitere Male im Abstand von 5 Minuten versucht, den SoC abzufragen. Wenn dies nicht erfolgreich ist, wird der SoC auf 0% gesetzt um zu vermeiden, dass ein Auto beim SoC-basierten Laden nicht geladen wird. Die Abfrage erfolgt dann wieder in den oben genannten Intervallen."),h("br",null,null,-1),i(" Da aktuell die SoC-Abfragen über Onlineserver der Fahrzeughersteller laufen, ist infolge möglicher Umstellungen/Wartungen keine 100%-ig sichere SoC-Abfrage garantiert. Auch kann es zu SoC-Abweichungen infolge von zeitlicher Verzögerungen kommen. Hilfestellung erfolgt primär im openWB-Forum. ")])]),_:2},1032,["options","model-value","onUpdate:modelValue"]),t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"].type?(d(),g("div",Ue,[a(_,{title:"SoC direkt aus Fahrzeug auslesen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].use_soc_from_cp,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r,"use_soc_from_cp")},{help:l(()=>[...e[18]||(e[18]=[i(" Wenn Ladepunkt und Fahrzeug das direkte Auslesen des SoCs über das Ladekabel unterstützen, wird der SoC nach dem Anstecken aus dem Fahrzeug ausgelesen und während der Ladung berechnet. Das direkte Auslesen des SoC aus dem Fahrzeug ist aktuell nur mit einer openWB Pro möglich. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(L,null,{help:l(()=>[...e[19]||(e[19]=[i(" Einige Hersteller begrenzen die möglichen Abfragen. Sobald ein gewisses Limit in einem Zeitraum überschritten wird, werden weitere Anfragen blockiert. Die Zeitintervalle sollten daher nicht zu klein gewählt werden. ")])]),default:l(()=>[e[20]||(e[20]=i(" Aktualisierung der Fahrzeugdaten "))]),_:1}),a(w,{title:"Während der Ladung",unit:"Min.",min:1,required:"","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_interval_charging/60,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r*60,"request_interval_charging")},{help:l(()=>[...e[21]||(e[21]=[i(" Der Ladestand des Fahrzeugs (SoC) wird bei einem laufenden Ladevorgang in dem hier eingestellten Intervall in Minuten abgefragt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Ohne laufende Ladung",unit:"Min.",min:1,required:"","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_interval_not_charging/60,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r*60,"request_interval_not_charging")},{help:l(()=>[...e[22]||(e[22]=[i(" Der Ladestand des Fahrzeugs (SoC) wird in dem hier eingestellten Intervall in Minuten abgefragt, falls kein Ladevorgang aktiv ist. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Nur aktualisieren wenn angesteckt",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_only_plugged,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r,"request_only_plugged")},{help:l(()=>[...e[23]||(e[23]=[i(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(I,{"vehicle-id":o,vehicle:t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"],"onUpdate:configuration":r=>s.updateConfiguration("openWB/vehicle/"+o+"/soc_module/config",r)},null,8,["vehicle-id","vehicle","onUpdate:configuration"])])):m("",!0)]),_:2},[o!==0?{name:"actions",fn:l(r=>[r.collapsed?m("",!0):(d(),p(T,{key:0,class:"bg-danger clickable",onClick:n=>s.removeVehicleModal(o,n)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),e[81]||(e[81]=h("hr",{class:"border-secondary"},null,-1)),a(L,null,{default:l(()=>e[25]||(e[25]=[i("Profile")])),_:1}),a(A,{collapsible:!0,collapsed:!0},{header:l(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:l(()=>[a(v,{"fixed-width":"",icon:["far","file"]}),a(v,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),e[26]||(e[26]=i(" Fahrzeug-Profile "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:s.addEvTemplate},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Te,[a(E,{subtype:"info"},{default:l(()=>e[27]||(e[27]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",We,[a(E,{subtype:"info"},{default:l(()=>e[28]||(e[28]=[i(" Ein anderes Fahrzeug-Profil wird erst "),h("span",{class:"text-uppercase font-weight-bold"}," nach dem Abstecken ",-1),i(" übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")])),_:1}),(d(!0),g(P,null,y(s.evTemplates,(o,r)=>(d(),p(A,{key:r,title:o.name?o.name:r,collapsible:!0,collapsed:!0},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":o.name,disabled:r.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(r,n,"name")},F({_:2},[r.endsWith("/0")?{name:"help",fn:l(()=>[e[29]||(e[29]=i(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),a(L,null,{default:l(()=>[...e[30]||(e[30]=[i(" Angaben zur Batterie ")])]),_:1}),a(w,{title:"Kapazität der Batterie",unit:"kWh",min:1,step:1,required:"","model-value":o.battery_capacity/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"battery_capacity")},{help:l(()=>[...e[31]||(e[31]=[i(" Angabe der Netto-Kapazität der Fahrzeugbatterie. Dient zur Berechnung des manuellen SoC und der geladenen Reichweite. Die Netto-Kapazität unterscheidet sich meist von den Angaben der Fahrzeughersteller. So besitzt ein Tesla Model S 90 z. B. nur ca. 83kWh und nicht die durch die Typenbezeichnung suggerierten 90kWh. Andere Hersteller begrenzen die nutzbare Kapazität absichtlich, um eine höhere Lebensdauer der Akkus zu erreichen. Gängig sind eine Drosselung auf 90% der angegebenen Brutto-Kapazität. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),g("div",Le,[a(w,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",min:1,max:100,required:"","model-value":o.efficiency,"onUpdate:modelValue":n=>t.updateState(r,n,"efficiency")},{help:l(()=>[...e[32]||(e[32]=[i(" Durch Verluste in der Ladeelektronik (z. B. Umwandlung Wechselspannung in Gleichspannung) gelangt nicht die komplette Energie, welche durch den Zähler in der Wallbox gemessen wird, in den Akku des Fahrzeugs. Der anzugebende Wert liegt bei gängigen Fahrzeugen im Bereich 90-95%. Eine Ausnahme stellt der Zoe dar, dessen Chameleon-Lader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),h("br",null,null,-1),i(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),h("br",null,null,-1),i(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),h("br",null,null,-1),i(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),h("br",null,null,-1)])]),_:2},1032,["model-value","onUpdate:modelValue"])])),a(w,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:1,step:.1,required:"","model-value":o.average_consump/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),g("div",Pe,[a(L,null,{default:l(()=>[...e[33]||(e[33]=[i(" Angaben zur Ladeleistung (DC) ")])]),_:1}),a(w,{title:"Mindestleistung",min:0,unit:"kW","model-value":t.ac_current2dc_power(o.dc_min_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"dc_min_current")},null,8,["model-value","onUpdate:modelValue"]),a(w,{title:"Maximalleistung",unit:"kW","model-value":t.ac_current2dc_power(o.dc_max_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])])):m("",!0),a(L,null,{default:l(()=>[e[34]||(e[34]=i(" Angaben zum Ladestrom ")),s.dcChargingEnabled===!0?(d(),g("span",Ae," (AC) ")):m("",!0)]),_:1}),a(S,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":o.min_current,"onUpdate:modelValue":n=>t.updateState(r,n,"min_current")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":o.max_current_single_phase,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":o.max_current_multi_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),a(w,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":o.nominal_difference,"onUpdate:modelValue":n=>t.updateState(r,n,"nominal_difference")},{help:l(()=>[...e[35]||(e[35]=[i(" In manchen Lademodi, z.B. bei der automatischen Phasenumschaltung, wird geprüft, ob das Fahrzeug mit der vorgegebenen Stromstärke lädt. Manche Fahrzeuge laden nicht exakt mit der vorgegebenen Stromstärke. Die erlaubte Abweichung kann hier eingestellt werden. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(L,null,{default:l(()=>[e[36]||(e[36]=i(" Angaben zur Handhabung von Phasen ")),s.dcChargingEnabled===!0?(d(),g("span",Ee," (AC) ")):m("",!0)]),_:1}),a(_,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":o.max_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"max_phases")},{help:l(()=>[...e[37]||(e[37]=[i(" Anzahl der Phasen, die der Fahrzeuglader (s.g. OBC - OnboardCharger) bereitstellt. Plugin-Hybride haben meist nur eine Phase, reine E-Autos meist 2 bis 3 Phasen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"CP-Unterbrechung",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.control_pilot_interruption,"onUpdate:modelValue":n=>t.updateState(r,n,"control_pilot_interruption")},{help:l(()=>[...e[38]||(e[38]=[i(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o.control_pilot_interruption?(d(),p(w,{key:2,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":o.control_pilot_interruption_duration,"onUpdate:modelValue":n=>t.updateState(r,n,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.prevent_phase_switch,"onUpdate:modelValue":n=>t.updateState(r,n,"prevent_phase_switch")},{help:l(()=>[...e[39]||(e[39]=[i(' Erläuterung zu 1p3p siehe "Ladeeinstellungen" ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Ladung aktiv halten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.prevent_charge_stop,"onUpdate:modelValue":n=>t.updateState(r,n,"prevent_charge_stop")},{help:l(()=>[...e[40]||(e[40]=[i(" Der Ladevorgang wird in den Lademodi PV- und Zielladen nach Ladebeginn nicht unterbrochen, selbst wenn nicht mehr genug Überschuss vorhanden ist. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach einer Ladungsunterbrechung keine Ladung mehr starten. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,required:"","model-value":o.phase_switch_pause,"onUpdate:modelValue":n=>t.updateState(r,n,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),g("div",ye,[a(w,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,required:"","model-value":o.keep_charge_active_duration,"onUpdate:modelValue":n=>t.updateState(r,n,"keep_charge_active_duration")},{help:l(()=>[...e[41]||(e[41]=[i(" Manche Fahrzeuge benötigen nach der Umschaltung einige Zeit, bis sie mit der vorgegebenen Phasenzahl laden. In dieser Zeit wird keine neue Phasenumschaltung angestoßen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]))]),_:2},[r.endsWith("/0")?void 0:{name:"actions",fn:l(n=>[t.$store.state.mqtt["openWB/general/extern"]===!1&&!n.collapsed?(d(),p(T,{key:0,class:"bg-danger clickable",onClick:c=>s.removeEvTemplateModal(r,c)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),a(A,{collapsible:!0,collapsed:t.$route.params.section!="charge_template"},{header:l(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:l(()=>[a(v,{"fixed-width":"",icon:["far","file"]}),a(v,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),e[42]||(e[42]=i(" Lade-Profile "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:s.addChargeTemplate},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Be,[a(E,{subtype:"info"},{default:l(()=>e[43]||(e[43]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",Fe,[(d(!0),g(P,null,y(s.chargeTemplates,(o,r)=>(d(),p(A,{key:r,title:o.name?o.name:r,collapsible:!0,collapsed:!(t.$route.params.section=="charge_template"&&parseInt(t.$route.params.section_index)==s.getChargeTemplateIndex(r))},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":o.name,disabled:r.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(r,n,"name")},F({_:2},[r.endsWith("/0")?{name:"help",fn:l(()=>[e[44]||(e[44]=i(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),a(L,null,{default:l(()=>[...e[45]||(e[45]=[i(" Allgemeine Optionen ")])]),_:1}),a(_,{title:"Aktiver Lademodus",buttons:[{buttonValue:"instant_charging",text:"Sofortladen",class:"btn-outline-danger"},{buttonValue:"pv_charging",text:"PV",class:"btn-outline-success"},{buttonValue:"scheduled_charging",text:"Zielladen",class:"btn-outline-primary"},{buttonValue:"standby",text:"Standby",class:"btn-outline-secondary"},{buttonValue:"stop",text:"Stop",class:"btn-outline-dark"}],"model-value":o.chargemode.selected,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.selected")},{help:l(()=>[...e[46]||(e[46]=[i(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),h("br",null,null,-1),i(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),h("br",null,null,-1),h("ol",null,[h("li",null,"Zielladen (Sofortladen) mit Priorität"),h("li",null,"Zielladen (Sofortladen)"),h("li",null,"Zeitladen mit Priorität"),h("li",null,"Zeitladen"),h("li",null,"Sofortladen mit Priorität"),h("li",null,"Sofortladen"),h("li",null,"PV (Min-Anteil) mit Priorität"),h("li",null,"PV (Min-Anteil)"),h("li",null,"Zielladen (PV) mit Priorität"),h("li",null,"Zielladen (PV)"),h("li",null,"PV (PV-Anteil) mit Priorität"),h("li",null,"PV (PV-Anteil)")],-1)])]),_:2},1032,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),g("div",Me,[a(_,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.prio,"onUpdate:modelValue":n=>t.updateState(r,n,"prio")},{help:l(()=>[...e[47]||(e[47]=[i(" Die Ladefreigabe mit dem jeweils eingestellten Mindeststrom erfolgt für alle Fahrzeuge, soweit die verfügbare Leistung ausreicht. Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, wird auch für Fahrzeuge ohne Priorität mehr Leistung freigegeben. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitladen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.time_charging.active,"onUpdate:modelValue":n=>t.updateState(r,n,"time_charging.active")},{help:l(()=>[...e[48]||(e[48]=[i(' Der Lademodus Zeitladen kann parallel zu einem der anderen Lademodi aktiviert werden. Die Auswahl des Lademodus, der in der Regelung genutzt wird, erfolgt anhand der Übersicht in der Hilfe bei "Aktiver Lademodus". Wenn kein Zeitplan aktiv ist oder das Limit des Zeitplans erreicht wurde, wird der Lademodus verwendet, der bei "Aktiver Lademodus" ausgewählt ist. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Standard nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.load_default,"onUpdate:modelValue":n=>t.updateState(r,n,"load_default")},{help:l(()=>[...e[49]||(e[49]=[i(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Fahrzeug zurückgesetzt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Strompreisbasiert Laden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.et.active,"onUpdate:modelValue":n=>t.updateState(r,n,"et.active")},null,8,["model-value","onUpdate:modelValue"]),o.et.active==!0?(d(),g("div",qe,[!t.$store.state.mqtt["openWB/optional/et/provider"]||!t.$store.state.mqtt["openWB/optional/et/provider"].type?(d(),g("div",De,[a(E,{subtype:"danger"},{default:l(()=>[...e[50]||(e[50]=[i(" Bitte in den übergreifenden Ladeeinstellungen einen Strompreis-Anbieter konfigurieren. ")])]),_:1})])):m("",!0),a(w,{title:"Preisgrenze für Zeit- & Sofortladen",min:"-80",max:"80",step:"0.01",precision:2,unit:"ct/kWh","model-value":o.et.max_price*1e5,"onUpdate:modelValue":n=>t.updateState(r,parseFloat((n/1e5).toFixed(7)),"et.max_price")},{help:l(()=>[...e[51]||(e[51]=[i(" Für Zielladen werden die günstigsten Stunden ermittelt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])])):m("",!0),e[52]||(e[52]=h("hr",null,null,-1))])),a(L,null,{default:l(()=>[...e[53]||(e[53]=[i("Sofortladen")])]),_:1}),a(S,{title:"Soll-Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":o.chargemode.instant_charging.current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:1,title:"Soll-Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.instant_charging.dc_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.instant_charging.dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":o.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.limit.selected")},{help:l(()=>[...e[54]||(e[54]=[i(" Sofortladen kann ohne Fahrzeug-SoC-Begrenzung (Aus), mit Begrenzung des Fahrzeug-SoC (SoC) bei konfiguriertem SoC-Auslesemodul oder mittels Vorgabe eine gewünschten Energiemenge in kWh (Energie) genutzt werden. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"SoC-Limit für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":o.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.limit.soc")},{help:l(()=>[...e[55]||(e[55]=[i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Energie-Limit",unit:"kWh",min:1,step:1,"model-value":o.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"chargemode.instant_charging.limit.amount")},{help:l(()=>[...e[56]||(e[56]=[i(" Die geladene Energiemenge wird beim Wechsel des Lademodus oder nach dem Anstecken, wenn Sofortladen schon ausgewählt ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[79]||(e[79]=h("hr",null,null,-1)),a(L,null,{default:l(()=>[...e[57]||(e[57]=[i("PV-Laden")])]),_:1}),a(S,{title:"Minimaler Dauerstrom"+(s.dcChargingEnabled?" (AC)":""),min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":o.chargemode.pv_charging.min_current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_current")},{help:l(()=>[...e[58]||(e[58]=[i(' Hier kann eine Stromstärke eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Stromwert empfohlen wird. Diese Einstellung entspricht weitestgehend dem Lademodus "Min+PV" der Version 1.x. ')])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:2,title:"Minimale Dauerleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.pv_charging.dc_min_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.pv_charging.dc_min_current")},{help:l(()=>[...e[59]||(e[59]=[i(" Hier kann eine Leistung eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Leistungswert empfohlen wird. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(S,{title:"SoC-Limit für das Fahrzeug",min:0,max:20,step:1,unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":o.chargemode.pv_charging.max_soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.max_soc")},{help:l(()=>[...e[60]||(e[60]=[i(' Bei der Einstellung "100%" wird die Ladung sofort mit Erreichen der 100% beendet. Dadurch erfolgt KEIN Balancing der Batteriezellen. Ist dies gewünscht (sollte ab und an durchgeführt werden), muss hier "Aus" gewählt werden (Schieberegler ganz nach rechts stellen), um die Ladung MIT Balancing bis zur Beendigung durch das Fahrzeug weiterlaufen zu lassen.'),h("br",null,null,-1),i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Mindest-SoC für das Fahrzeug",min:0,max:19,step:1,unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":o.chargemode.pv_charging.min_soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_soc")},{help:l(()=>[...e[61]||(e[61]=[i(' Liegt der Fahrzeug-Ladestand (SoC) unter dem hier eingestellten Wert, dann wird bis zum Erreichen dieses Wertes mit dem eingestellten "Mindest-SoC-Strom" geladen. Dies dient der Sicherstellung eines "Mindest-SoC" - z.B. für eine immer abzudeckende Fahrzeugreichweite - auch wenn kein oder zu wenig Überschuss verfügbar ist (=> Laden mit anteilig Netzstrom). Nach dem Erreichen des "Mindest-SoC" wird bei verfügbarem Überschuss geladen.'),h("br",null,null,-1),i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Mindest-SoC-Strom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":o.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_soc_current")},{help:l(()=>[...e[62]||(e[62]=[i(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit dem hier festgelegten "Mindest-SoC-Strom" initiiert (ggf. mit anteilig Netzbezug). ')])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:3,title:"Mindest-SoC-Leistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.pv_charging.dc_min_soc_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.pv_charging.dc_min_soc_current")},{help:l(()=>[...e[63]||(e[63]=[i(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit der hier festgelegten "Mindest-SoC-Leistung" initiiert (ggf. mit anteilig Netzbezug). ')])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.feed_in_limit")},{help:l(()=>[...e[64]||(e[64]=[i(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[80]||(e[80]=h("hr",null,null,-1)),a(L,null,{actions:l(()=>[a(T,{class:"bg-success clickable",onClick:n=>s.addChargeTemplateSchedulePlan(r,n)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:l(()=>[...e[65]||(e[65]=[i(' Im Lademodus "Zielladen" wird der Ladestrom so angepasst, dass das Fahrzeug zum angegebenen Zeitpunkt den eingestellten SoC bzw. die einzuladende Energiemenge erreicht. Anhand des vorgegebenen Ladestroms wird der Zeitpunkt berechnet, an dem die Ladung spätestens starten muss.'),h("br",null,null,-1),i(' Ist der berechnete Zeitpunkt des Ladestarts noch nicht erreicht, wird mit Überschuss geladen. Auch nach Erreichen des Ziel-SoCs wird mit Überschuss geladen, solange bis das "SoC-Limit für das Fahrzeug" erreicht wird.'),h("br",null,null,-1),i(" Kann der Ziel-SoC bzw. die Energiemenge NICHT erreicht werden, z.B. weil das Auto zu spät angesteckt wurde oder das Lastmanagement eingegriffen hat, wird bis 20 Minuten nach dem angegebenen Termin mit der Maximalstromstärke geladen. Danach wird der Termin verworfen und mit Überschuss geladen. ")])]),default:l(()=>[e[66]||(e[66]=i(" Zielladen "))]),_:2},1024),(d(!0),g(P,null,y(s.getChargeTemplateScheduledChargingPlans(r),(n,c)=>(d(),p(A,{key:c,title:n.name,collapsible:!0,collapsed:!0},{actions:l(u=>[u.collapsed==!0?(d(),g("span",{key:0,class:x(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:N(U=>t.updateState(c,!n.active,"active"),["stop"])},[n.limit.selected=="soc"?(d(),g("span",xe,[a(v,{"fixed-width":"",icon:["fas","car-battery"]}),i(" "+C(n.limit.soc_scheduled)+"% ",1)])):m("",!0),n.limit.selected=="amount"?(d(),g("span",Ne,[a(v,{"fixed-width":"",icon:["fas","bolt"]}),i(" "+C(n.limit.amount/1e3)+"kWh ",1)])):m("",!0),a(v,{"fixed-width":"",icon:["fas","clock"]}),i(" "+C(n.time)+" ",1),n.frequency.selected=="once"?(d(),g("span",Oe,[a(v,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+C(t.formatDate(n.frequency.once)),1)])):m("",!0),n.frequency.selected=="daily"?(d(),g("span",Ie,[a(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),n.frequency.selected=="weekly"?(d(),g("span",Re,[a(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,Ze)):m("",!0),u.collapsed==!1?(d(),p(T,{key:1,class:"bg-danger clickable",onClick:U=>s.removeChargeTemplateSchedulePlanModal(r,c,U)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:l(()=>[a(z,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":u=>t.updateState(c,u,"name")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitpunkt aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":u=>t.updateState(c,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(z,{title:"Ziel-Uhrzeit",subtype:"time","model-value":n.time,"onUpdate:modelValue":u=>t.updateState(c,u,"time")},{help:l(()=>[...e[67]||(e[67]=[i(" Hier ist die gewünschte Uhrzeit einzustellen, zu welcher das Fahrzeug den gewünschten SoC bzw. die zu ladende Energiemenge BEREITS ERREICHT haben soll. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":n.current,"onUpdate:modelValue":u=>t.updateState(c,u,"current")},{help:l(()=>[...e[68]||(e[68]=[i(" Mit dieser Stromstärke wird der Zeitpunkt berechnet, wann die Ladung mit Netzbezug gestartet werden muss. Wird der Ziel-SoC nicht zum angegebenen Termin erreicht, weil z.B. das Auto erst später angesteckt wurde, wird auch mit einer höheren Stromstärke geladen. Um etwas Puffer zu haben, empfiehlt es sich, etwas weniger als die Maximalstromstärke des Fahrzeugs zu wählen. ")])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(n.dc_current),"onUpdate:modelValue":u=>t.updateState(c,t.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Ziel",buttons:[{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":n.limit.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.selected")},{help:l(()=>[...e[69]||(e[69]=[i(" Bestimmt die Art der Grenze für den Ladevorgang. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),n.limit.selected=="soc"?(d(),p(S,{key:1,title:"Fahrzeug-SoC zum Zielzeitpunkt",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc_scheduled,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc_scheduled")},{help:l(()=>[...e[70]||(e[70]=[i(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll (Ziel-SoC). ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n.limit.selected=="soc"?(d(),p(S,{key:2,title:"Fahrzeug-SoC mit Überschuss",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc_limit,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc_limit")},{help:l(()=>[...e[71]||(e[71]=[i(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. Sobald das SoC-Limit erreicht wurde, findet keine Ladung mehr mit Überschuss statt! ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n.limit.selected=="amount"?(d(),p(w,{key:3,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":n.limit.amount/1e3,"onUpdate:modelValue":u=>t.updateState(c,u*1e3,"limit.amount")},{help:l(()=>[...e[72]||(e[72]=[i(" Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zielladen schon ausgewählt ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(d(),p(z,{key:4,title:"Datum",subtype:"date","model-value":n.frequency.once,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n.frequency.selected=="weekly"?(d(),g("div",$e,[(d(!0),g(P,null,y(t.weekdays,(u,U)=>(d(),p(_,{key:U,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[U],"onUpdate:modelValue":D=>t.updateState(c,D,"frequency.weekly."+U)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128)),b.installAssistantActive?m("",!0):(d(),g("div",He,[e[75]||(e[75]=h("hr",null,null,-1)),a(L,null,{actions:l(()=>[a(T,{class:"bg-success clickable",onClick:n=>s.addChargeTemplateTimeChargingPlan(r,n)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:l(()=>[...e[73]||(e[73]=[i(" Mit einem Zeitplan kann ein klar abgegrenzter Zeitbereich zum Fahrzeugladen definiert werden. Dies wird häufig genutzt, um einem Fahrzeug kurz vor der Abfahrt Strom anzubieten, damit dessen Vorklimatisierung nicht aus dem Fahrzeugakku, sondern aus der openWB bezogen wird (Enteisung, Vorwärmung, Abkühlung). Nicht von der Vorklimatisierung benötigter Strom erhöht dabei den Fahrzeug-SoC. Um das Stromnetz am Morgen nicht unnötig zu strapazieren, sollte eine moderate Stromvorgabe und ein beschränkter Zeitbereich vorgegeben werden (z.B. max. 10A; 30min - in Übereinstimmung mit den Fahrzeug-App-Vorklimatisierungsvorgaben). ")])]),default:l(()=>[e[74]||(e[74]=i(" Laden nach Zeitplan "))]),_:2},1024)])),(d(!0),g(P,null,y(s.getChargeTemplateTimeChargingPlans(r),(n,c)=>(d(),p(A,{key:c,title:n.name,collapsible:!0,collapsed:!0},{actions:l(u=>[u.collapsed==!0?(d(),g("span",{key:0,class:x(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:N(U=>t.updateState(c,!n.active,"active"),["stop"])},[n.limit.selected=="soc"?(d(),g("span",Je,[a(v,{"fixed-width":"",icon:["fas","car-battery"]}),i(" "+C(n.limit.soc)+"% ",1)])):m("",!0),n.limit.selected=="amount"?(d(),g("span",Ge,[a(v,{"fixed-width":"",icon:["fas","bolt"]}),i(" "+C(n.limit.amount/1e3)+"kWh ",1)])):m("",!0),a(v,{"fixed-width":"",icon:["fas","clock"]}),i(" "+C(n.time[0])+" - "+C(n.time[1])+" ",1),n.frequency.selected=="once"?(d(),g("span",Qe,[a(v,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+C(t.formatDate(n.frequency.once[0])==t.formatDate(n.frequency.once[1])?t.formatDate(n.frequency.once[0]):t.formatDate(n.frequency.once[0])+" - "+t.formatDate(n.frequency.once[1])),1)])):m("",!0),n.frequency.selected=="daily"?(d(),g("span",Xe,[a(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),n.frequency.selected=="weekly"?(d(),g("span",Ye,[a(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,je)):m("",!0),u.collapsed==!1?(d(),p(T,{key:1,class:"bg-danger clickable",onClick:U=>s.removeChargeTemplateTimeChargingPlanModal(r,c,U)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:l(()=>[a(z,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":u=>t.updateState(c,u,"name")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":u=>t.updateState(c,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":n.current,"onUpdate:modelValue":u=>t.updateState(c,u,"current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(n.dc_current),"onUpdate:modelValue":u=>t.updateState(c,t.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":n.limit.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.selected")},{help:l(()=>[...e[76]||(e[76]=[i(" Bestimmt die Art der Grenze für den Ladevorgang. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),n.limit.selected=="soc"?(d(),p(S,{key:1,title:"Ziel-SoC für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc")},{help:l(()=>[...e[77]||(e[77]=[i(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n.limit.selected=="amount"?(d(),p(w,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":n.limit.amount/1e3,"onUpdate:modelValue":u=>t.updateState(c,u*1e3,"limit.amount")},{help:l(()=>[...e[78]||(e[78]=[i(" Maximal zu ladende Energie innerhalb des Zeitfensters. Eignet sich immer dann wenn kein SoC zur Verfügung steht. Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zeitladen schon aktiv ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(z,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":n.time[0],"onUpdate:modelValue":u=>t.updateState(c,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(z,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":n.time[1],"onUpdate:modelValue":u=>t.updateState(c,u,"time.1")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(d(),p(z,{key:3,title:"Gültig ab",subtype:"date","model-value":n.frequency.once[0],"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n.frequency.selected=="once"?(d(),p(z,{key:4,title:"Gültig bis",subtype:"date",min:n.frequency.once[0],"model-value":n.frequency.once[1],"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):m("",!0),n.frequency.selected=="weekly"?(d(),g("div",Ke,[(d(!0),g(P,null,y(t.weekdays,(u,U)=>(d(),p(_,{key:U,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[U],"onUpdate:modelValue":D=>t.updateState(c,D,"frequency.weekly."+U)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128))]),_:2},[r.endsWith("/0")?void 0:{name:"actions",fn:l(n=>[n.collapsed?m("",!0):(d(),p(T,{key:0,class:"bg-danger clickable",onClick:c=>s.removeChargeTemplateModal(r,c)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),a(R,{"form-name":"vehicleConfigForm",onSave:e[5]||(e[5]=o=>t.$emit("save")),onReset:e[6]||(e[6]=o=>t.$emit("reset")),onDefaults:e[7]||(e[7]=o=>t.$emit("defaults"))})])])],64)}const tt=M(_e,[["render",et],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]),ot=Object.freeze(Object.defineProperty({__proto__:null,default:tt},Symbol.toStringTag,{value:"Module"}));export{se as V,tt as a,ot as b}; +import{l as $,d as H,a6 as j,A as J,af as G,ag as X,z as Q,V as Y,N as K,X as ee,ah as te,M as ne,F as ae,H as le}from"./vendor-fortawesome-433470db.js";import{_ as k,C as ie}from"./index-cc8f65ba.js";import{_ as oe}from"./dynamic-import-helper-be004503.js";import{_ as M,u as V,l as d,m as g,z as p,E as l,y as i,F as C,G as a,x as h,a1 as re,a2 as de,N as P,B as m,M as E,D as F,q as x,A as N}from"./vendor-ea36120f.js";const ue={props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},se=M(ue,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/VehicleConfigMixin.vue"]]),me={name:"VehicleConfigFallback",mixins:[se]},ge={class:"vehicle-fallback"},he={key:1};function ce(t,e,b,B,f,s){const W=V("openwb-base-alert"),v=V("openwb-base-textarea");return d(),g("div",ge,[Object.keys(t.vehicle.configuration).length==0?(d(),p(W,{key:0,subtype:"info"},{default:l(()=>[i(' Der Fahrzeug-Typ "'+C(t.vehicle.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(d(),g("div",he,[a(W,{subtype:"warning"},{default:l(()=>[i(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+C(t.vehicle.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(v,{title:"Konfiguration",subtype:"json","model-value":t.vehicle.configuration,"onUpdate:modelValue":e[0]||(e[0]=T=>t.updateConfiguration(T,"configuration"))},{help:l(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),a(W,{subtype:"info"},{default:l(()=>[h("pre",null,C(JSON.stringify(t.vehicle.configuration,void 0,2)),1)]),_:1})]))])}const pe=M(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),be={name:"OpenwbVehicleProxy",props:{vehicleId:{type:Number,required:!0},vehicle:{type:Object,required:!0}},emits:["update:configuration"],methods:{getVehicleComponent(){return console.debug(`loading vehicle: ${this.vehicle.type}`),re({loader:()=>oe(Object.assign({"./aiways/vehicle.vue":()=>k(()=>import("./vehicle-1c25409c.js"),["assets/vehicle-1c25409c.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./bmwbc/vehicle.vue":()=>k(()=>import("./vehicle-2da6d3ec.js"),["assets/vehicle-2da6d3ec.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./evcc/vehicle.vue":()=>k(()=>import("./vehicle-0f1f6912.js"),["assets/vehicle-0f1f6912.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./evnotify/vehicle.vue":()=>k(()=>import("./vehicle-da54a31e.js"),["assets/vehicle-da54a31e.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./http/vehicle.vue":()=>k(()=>import("./vehicle-0951b87d.js"),["assets/vehicle-0951b87d.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./json/vehicle.vue":()=>k(()=>import("./vehicle-9fdd28f6.js"),["assets/vehicle-9fdd28f6.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./kia/vehicle.vue":()=>k(()=>import("./vehicle-561e20d5.js"),["assets/vehicle-561e20d5.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./manual/vehicle.vue":()=>k(()=>import("./vehicle-47f7fadf.js"),["assets/vehicle-47f7fadf.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mercedeseq/vehicle.vue":()=>k(()=>import("./vehicle-837ef917.js"),["assets/vehicle-837ef917.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./mqtt/vehicle.vue":()=>k(()=>import("./vehicle-47a5b0e6.js"),["assets/vehicle-47a5b0e6.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./ovms/vehicle.vue":()=>k(()=>import("./vehicle-56b45282.js"),["assets/vehicle-56b45282.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./psa/vehicle.vue":()=>k(()=>import("./vehicle-9a78a8ba.js"),["assets/vehicle-9a78a8ba.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./psacc/vehicle.vue":()=>k(()=>import("./vehicle-f595aaa1.js"),["assets/vehicle-f595aaa1.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./renault/vehicle.vue":()=>k(()=>import("./vehicle-b464d124.js"),["assets/vehicle-b464d124.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./skodaconnect/vehicle.vue":()=>k(()=>import("./vehicle-28d453ca.js"),["assets/vehicle-28d453ca.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./smarthello/vehicle.vue":()=>k(()=>import("./vehicle-5d229e55.js"),["assets/vehicle-5d229e55.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/vehicle.vue":()=>k(()=>import("./vehicle-1fd068b4.js"),["assets/vehicle-1fd068b4.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-axios-1f03ee31.js","assets/index-cc8f65ba.js","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./tronity/vehicle.vue":()=>k(()=>import("./vehicle-74dc0824.js"),["assets/vehicle-74dc0824.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"]),"./vwid/vehicle.vue":()=>k(()=>import("./vehicle-5cb1a571.js"),["assets/vehicle-5cb1a571.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/index-cc8f65ba.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/index-27ba6225.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.vehicle.type}/vehicle.vue`),errorComponent:pe})},updateConfiguration(t){this.$emit("update:configuration",t)}}};function ve(t,e,b,B,f,s){const W=V("openwb-base-heading");return d(),g(P,null,[a(W,null,{default:l(()=>[i(' Einstellungen für SoC-Modul "'+C(b.vehicle.name)+'" ',1)]),_:1}),(d(),p(de(s.getVehicleComponent()),{"vehicle-id":b.vehicleId,vehicle:b.vehicle,"onUpdate:configuration":e[0]||(e[0]=v=>s.updateConfiguration(v))},null,40,["vehicle-id","vehicle"]))],64)}const fe=M(be,[["render",ve],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);$.add(H,j,J,G,X,Q,Y,K,ee,te,ne);const _e={name:"OpenwbVehicleConfigView",components:{FontAwesomeIcon:ae,FontAwesomeLayers:le,OpenwbVehicleProxy:fe},mixins:[ie],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/et/provider","openWB/optional/rfid/active","openWB/vehicle/template/ev_template/+","openWB/vehicle/template/charge_template/+","openWB/vehicle/template/charge_template/+/chargemode/scheduled_charging/plans/+","openWB/vehicle/template/charge_template/+/time_charging/plans/+","openWB/vehicle/+/name","openWB/vehicle/+/info","openWB/vehicle/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/general_config","openWB/vehicle/+/soc_module/config"],showVehicleModal:!1,modalVehicleIndex:void 0,showEvTemplateModal:!1,modalEvTemplateIndex:void 0,showChargeTemplateModal:!1,modalChargeTemplateIndex:void 0,showChargeTemplateSchedulePlanModal:!1,modalChargeTemplateSchedulePlanIndex:void 0,showChargeTemplateTimeChargingPlanModal:!1,modalChargeTemplateTimeChargingPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let t=[];return Object.keys(this.evTemplates).forEach(e=>{let b=parseInt(e.match(/([0-9]+)$/g)[0]),B=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+b].name;t.push({value:b,text:B})}),t}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let t=[];return Object.keys(this.chargeTemplates).forEach(e=>{let b=parseInt(e.match(/([0-9]+)$/g)[0]),B=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+b].name;t.push({value:b,text:B})}),t}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(t){let e=t.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(t){let e=t.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/+")},addVehicle(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(t,e){e.stopPropagation(),this.modalVehicleIndex=t,this.showVehicleModal=!0},removeVehicle(t,e){this.showVehicleModal=!1,e=="confirm"&&this.$emit("sendCommand",{command:"removeVehicle",data:{id:t}})},getVehicleName(t){return this.$store.state.mqtt["openWB/vehicle/"+t+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+t+"/name"]:"Fahrzeug "+t},getSocDefaultConfiguration(t){const e=this.socModuleList.find(b=>b.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for soc type!",t),{})},updateSelectedSocModule(t,e){this.updateState("openWB/vehicle/"+t+"/soc_module/config",e,"type"),this.updateState("openWB/vehicle/"+t+"/soc_module/config",this.getSocDefaultConfiguration(e))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},addEvTemplate(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(t,e){e.stopPropagation(),this.modalEvTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(t,e){this.showEvTemplateModal=!1,e=="confirm"&&this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:t}})},getEvTemplateName(t){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+t]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+t].name:"Fahrzeug-Profil "+t},addChargeTemplate(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(t){return parseInt(t.match(/([^/]+)$/)[0])},removeChargeTemplateModal(t,e){e.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(t),this.showChargeTemplateModal=!0},removeChargeTemplate(t,e){this.showChargeTemplateModal=!1,e=="confirm"&&this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:t}})},getChargeTemplateName(t){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t].name:"Lade-Profil "+t},getChargeTemplateSchedulePlanName(t,e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/chargemode/scheduled_charging/plans/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/chargemode/scheduled_charging/plans/"+e].name:"Zielladen Zeitplan "+t+"/"+e},addChargeTemplateSchedulePlan(t,e){e.stopPropagation();let b=parseInt(t.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:b}})},removeChargeTemplateSchedulePlanModal(t,e,b){b.stopPropagation(),this.modalChargeTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(t,e,b){this.showChargeTemplateSchedulePlanModal=!1,b=="confirm"&&this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:t,plan:e}})},getChargeTemplateTimeChargingPlanName(t,e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/time_charging/plans/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/time_charging/plans/"+e].name:"Zeitladen Zeitplan "+t+"/"+e},addChargeTemplateTimeChargingPlan(t,e){e.stopPropagation();let b=parseInt(t.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:b}})},removeChargeTemplateTimeChargingPlanModal(t,e,b){b.stopPropagation(),this.modalChargeTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(t,e,b){this.showChargeTemplateTimeChargingPlanModal=!1,b=="confirm"&&this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:t,plan:e}})}}},we={class:"vehicleConfig"},ke={name:"vehicleConfigForm"},Ve={key:0},Ce={key:1},Se={key:2},ze=["innerHTML"],Ue={key:3},Te={key:0},We={key:1},Le={key:0},Pe={key:1},Ae={key:0},ye={key:0},Ee={key:3},Be={key:0},Fe={key:1},Me={key:0},qe={key:0},De={key:0},Ze=["onClick"],xe={key:0},Ne={key:1},Oe={key:2},Ie={key:3},Re={key:4},$e={key:5},He={key:4},je=["onClick"],Je={key:0},Ge={key:1},Xe={key:2},Qe={key:3},Ye={key:4},Ke={key:5};function et(t,e,b,B,f,s){const W=V("openwb-base-modal-dialog"),v=V("font-awesome-icon"),T=V("openwb-base-avatar"),y=V("openwb-base-alert"),z=V("openwb-base-text-input"),q=V("openwb-base-select-input"),O=V("openwb-base-array-input"),_=V("openwb-base-button-group-input"),L=V("openwb-base-heading"),w=V("openwb-base-number-input"),I=V("openwb-vehicle-proxy"),A=V("openwb-base-card"),Z=V("font-awesome-layers"),S=V("openwb-base-range-input"),R=V("openwb-base-submit-buttons");return d(),g(P,null,[a(W,{show:f.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=o=>s.removeVehicle(f.modalVehicleIndex,o))},{default:l(()=>[i(' Wollen Sie das Fahrzeug "'+C(s.getVehicleName(f.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[1]||(e[1]=o=>s.removeEvTemplate(f.modalEvTemplateIndex,o))},{default:l(()=>[i(' Wollen Sie das Fahrzeug-Profil "'+C(s.getEvTemplateName(f.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[2]||(e[2]=o=>s.removeChargeTemplate(f.modalChargeTemplateIndex,o))},{default:l(()=>[i(' Wollen Sie das Lade-Profil "'+C(s.getChargeTemplateName(f.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[3]||(e[3]=o=>s.removeChargeTemplateSchedulePlan(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex,o))},{default:l(()=>[i(' Wollen Sie den Zielladen Zeitplan "'+C(s.getChargeTemplateSchedulePlanName(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[4]||(e[4]=o=>s.removeChargeTemplateTimeChargingPlan(f.modalChargeTemplateIndex,f.modalChargeTemplateTimeChargingPlanIndex,o))},{default:l(()=>[i(' Wollen Sie den Zeitladen Zeitplan "'+C(s.getChargeTemplateTimeChargingPlanName(f.modalChargeTemplateIndex,f.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),h("div",we,[h("form",ke,[a(A,{subtype:"info",collapsible:!0,collapsed:t.$route.params.section!="vehicle"},{header:l(()=>[a(v,{"fixed-width":"",icon:["fas","car"]}),e[8]||(e[8]=i(" Fahrzeuge "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:s.addVehicle},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Ve,[a(y,{subtype:"info"},{default:l(()=>e[9]||(e[9]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",Ce,[(d(!0),g(P,null,E(s.vehicleIndexes,o=>(d(),p(A,{key:o,title:s.getVehicleName(o),collapsible:!0,collapsed:!(t.$route.params.section=="vehicle"&&parseInt(t.$route.params.section_index)==o),subtype:"info"},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/name"],disabled:o===0,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/name",r)},F({_:2},[o===0?{name:"help",fn:l(()=>[e[10]||(e[10]=i(" Das Standard-Fahrzeug kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),o!==0?(d(),p(z,{key:0,title:"Fahrzeughersteller ","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/info"].manufacturer,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/info",r,"manufacturer")},{help:l(()=>[...e[11]||(e[11]=[i(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),o!==0?(d(),p(z,{key:1,title:"Fahrzeugmodell","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/info"].model,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/info",r,"model")},{help:l(()=>[...e[12]||(e[12]=[i(" Optional: zusätzliche Information für den Systembericht."),h("br",null,null,-1),i(" Nach Möglichkeit auch Angabe des Baujahres, da es durchaus beim Verhalten des Fahrzeugs Unterschiede geben kann. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(y,{subtype:"info"},{default:l(()=>[...e[13]||(e[13]=[i(" Ein anderes Fahrzeug-Profil wird erst NACH dem Abstecken übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")])]),_:1}),a(q,{title:"Fahrzeug-Profil",options:s.evTemplateList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/ev_template"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/ev_template",r)},null,8,["options","model-value","onUpdate:modelValue"]),a(q,{title:"Lade-Profil",options:s.chargeTemplateList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/charge_template"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/charge_template",r)},null,8,["options","model-value","onUpdate:modelValue"]),e[24]||(e[24]=h("hr",null,null,-1)),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!b.installAssistantActive?(d(),g("div",Se,[a(O,{title:"Zugeordnete ID-Tags","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/tag_id"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/tag_id",r)},null,8,["model-value","onUpdate:modelValue"]),a(y,{subtype:"info"},{default:l(()=>[e[14]||(e[14]=i(" Die hier eingetragenen ID-Tags dienen ausschließlich der Fahrzeugzuordnung.")),e[15]||(e[15]=h("br",null,null,-1)),h("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,ze)]),_:1}),e[16]||(e[16]=h("hr",null,null,-1))])):m("",!0),a(q,{class:"mb-2",title:"SoC-Modul des Fahrzeugs",options:s.socModuleList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"].type,"onUpdate:modelValue":r=>s.updateSelectedSocModule(o,r)},{help:l(()=>[...e[17]||(e[17]=[i(" Mit einem SoC-Modul kann der Ladestand des Fahrzeugs ermittelt und geregelt werden. Z.B. lassen sich unabhängig vom Fahrzeug bestimmte SoC-Werte einstellen, um den Fahrzeugakku zu schonen. Aktuell werden die SoC-Werte mittels der App-Zugangsdaten aus dem Herstellerserver des Fahrzeuges ausgelesen. Zukünftig soll auch eine direkte SoC-Auslesung aus dem Fahrzeug möglich werden (openWB Pro)."),h("br",null,null,-1),i(" Die SoC-Abfrage erfolgt automatisch beim Anstecken des Fahrzeuges und zusätzlich über einstellbare Abfrageintervalle während des Ladens und Nichtladens. Die Abfrage kann auch manuell durch Klick auf den Reload-Pfeil auf der Hauptseite ausgelöst werden."),h("br",null,null,-1),i(" Wenn eine Abfrage fehlschlägt, wird noch drei weitere Male im Abstand von 5 Minuten versucht, den SoC abzufragen. Wenn dies nicht erfolgreich ist, wird der SoC auf 0% gesetzt um zu vermeiden, dass ein Auto beim SoC-basierten Laden nicht geladen wird. Die Abfrage erfolgt dann wieder in den oben genannten Intervallen."),h("br",null,null,-1),i(" Da aktuell die SoC-Abfragen über Onlineserver der Fahrzeughersteller laufen, ist infolge möglicher Umstellungen/Wartungen keine 100%-ig sichere SoC-Abfrage garantiert. Auch kann es zu SoC-Abweichungen infolge von zeitlicher Verzögerungen kommen. Hilfestellung erfolgt primär im openWB-Forum. ")])]),_:2},1032,["options","model-value","onUpdate:modelValue"]),t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"].type?(d(),g("div",Ue,[a(_,{title:"SoC direkt aus Fahrzeug auslesen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].use_soc_from_cp,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r,"use_soc_from_cp")},{help:l(()=>[...e[18]||(e[18]=[i(" Wenn Ladepunkt und Fahrzeug das direkte Auslesen des SoCs über das Ladekabel unterstützen, wird der SoC nach dem Anstecken aus dem Fahrzeug ausgelesen und während der Ladung berechnet. Das direkte Auslesen des SoC aus dem Fahrzeug ist aktuell nur mit einer openWB Pro möglich. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(L,null,{help:l(()=>[...e[19]||(e[19]=[i(" Einige Hersteller begrenzen die möglichen Abfragen. Sobald ein gewisses Limit in einem Zeitraum überschritten wird, werden weitere Anfragen blockiert. Die Zeitintervalle sollten daher nicht zu klein gewählt werden. ")])]),default:l(()=>[e[20]||(e[20]=i(" Aktualisierung der Fahrzeugdaten "))]),_:1}),a(w,{title:"Während der Ladung",unit:"Min.",min:1,required:"","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_interval_charging/60,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r*60,"request_interval_charging")},{help:l(()=>[...e[21]||(e[21]=[i(" Der Ladestand des Fahrzeugs (SoC) wird bei einem laufenden Ladevorgang in dem hier eingestellten Intervall in Minuten abgefragt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Ohne laufende Ladung",unit:"Min.",min:1,required:"","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_interval_not_charging/60,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r*60,"request_interval_not_charging")},{help:l(()=>[...e[22]||(e[22]=[i(" Der Ladestand des Fahrzeugs (SoC) wird in dem hier eingestellten Intervall in Minuten abgefragt, falls kein Ladevorgang aktiv ist. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Nur aktualisieren wenn angesteckt",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_only_plugged,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r,"request_only_plugged")},{help:l(()=>[...e[23]||(e[23]=[i(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(I,{"vehicle-id":o,vehicle:t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"],"onUpdate:configuration":r=>s.updateConfiguration("openWB/vehicle/"+o+"/soc_module/config",r)},null,8,["vehicle-id","vehicle","onUpdate:configuration"])])):m("",!0)]),_:2},[o!==0?{name:"actions",fn:l(r=>[r.collapsed?m("",!0):(d(),p(T,{key:0,class:"bg-danger clickable",onClick:n=>s.removeVehicleModal(o,n)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),e[81]||(e[81]=h("hr",{class:"border-secondary"},null,-1)),a(L,null,{default:l(()=>e[25]||(e[25]=[i("Profile")])),_:1}),a(A,{collapsible:!0,collapsed:!0},{header:l(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:l(()=>[a(v,{"fixed-width":"",icon:["far","file"]}),a(v,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),e[26]||(e[26]=i(" Fahrzeug-Profile "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:s.addEvTemplate},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Te,[a(y,{subtype:"info"},{default:l(()=>e[27]||(e[27]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",We,[a(y,{subtype:"info"},{default:l(()=>e[28]||(e[28]=[i(" Ein anderes Fahrzeug-Profil wird erst "),h("span",{class:"text-uppercase font-weight-bold"}," nach dem Abstecken ",-1),i(" übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")])),_:1}),(d(!0),g(P,null,E(s.evTemplates,(o,r)=>(d(),p(A,{key:r,title:o.name?o.name:r,collapsible:!0,collapsed:!0},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":o.name,disabled:r.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(r,n,"name")},F({_:2},[r.endsWith("/0")?{name:"help",fn:l(()=>[e[29]||(e[29]=i(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),a(L,null,{default:l(()=>[...e[30]||(e[30]=[i(" Angaben zur Batterie ")])]),_:1}),a(w,{title:"Kapazität der Batterie",unit:"kWh",min:1,step:1,required:"","model-value":o.battery_capacity/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"battery_capacity")},{help:l(()=>[...e[31]||(e[31]=[i(" Angabe der Netto-Kapazität der Fahrzeugbatterie. Dient zur Berechnung des manuellen SoC und der geladenen Reichweite. Die Netto-Kapazität unterscheidet sich meist von den Angaben der Fahrzeughersteller. So besitzt ein Tesla Model S 90 z. B. nur ca. 83kWh und nicht die durch die Typenbezeichnung suggerierten 90kWh. Andere Hersteller begrenzen die nutzbare Kapazität absichtlich, um eine höhere Lebensdauer der Akkus zu erreichen. Gängig sind eine Drosselung auf 90% der angegebenen Brutto-Kapazität. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),g("div",Le,[a(w,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",min:1,max:100,required:"","model-value":o.efficiency,"onUpdate:modelValue":n=>t.updateState(r,n,"efficiency")},{help:l(()=>[...e[32]||(e[32]=[i(" Durch Verluste in der Ladeelektronik (z. B. Umwandlung Wechselspannung in Gleichspannung) gelangt nicht die komplette Energie, welche durch den Zähler in der Wallbox gemessen wird, in den Akku des Fahrzeugs. Der anzugebende Wert liegt bei gängigen Fahrzeugen im Bereich 90-95%. Eine Ausnahme stellt der Zoe dar, dessen Chameleon-Lader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),h("br",null,null,-1),i(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),h("br",null,null,-1),i(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),h("br",null,null,-1),i(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),h("br",null,null,-1)])]),_:2},1032,["model-value","onUpdate:modelValue"])])),a(w,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:1,step:.1,required:"","model-value":o.average_consump/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),g("div",Pe,[a(L,null,{default:l(()=>[...e[33]||(e[33]=[i(" Angaben zur Ladeleistung (DC) ")])]),_:1}),a(w,{title:"Mindestleistung",min:0,unit:"kW","model-value":t.ac_current2dc_power(o.dc_min_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"dc_min_current")},null,8,["model-value","onUpdate:modelValue"]),a(w,{title:"Maximalleistung",unit:"kW","model-value":t.ac_current2dc_power(o.dc_max_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])])):m("",!0),a(L,null,{default:l(()=>[e[34]||(e[34]=i(" Angaben zum Ladestrom ")),s.dcChargingEnabled===!0?(d(),g("span",Ae," (AC) ")):m("",!0)]),_:1}),a(S,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":o.min_current,"onUpdate:modelValue":n=>t.updateState(r,n,"min_current")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":o.max_current_single_phase,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":o.max_current_multi_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),a(w,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":o.nominal_difference,"onUpdate:modelValue":n=>t.updateState(r,n,"nominal_difference")},{help:l(()=>[...e[35]||(e[35]=[i(" In manchen Lademodi, z.B. bei der automatischen Phasenumschaltung, wird geprüft, ob das Fahrzeug mit der vorgegebenen Stromstärke lädt. Manche Fahrzeuge laden nicht exakt mit der vorgegebenen Stromstärke. Die erlaubte Abweichung kann hier eingestellt werden. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(L,null,{default:l(()=>[e[36]||(e[36]=i(" Angaben zur Handhabung von Phasen ")),s.dcChargingEnabled===!0?(d(),g("span",ye," (AC) ")):m("",!0)]),_:1}),a(_,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":o.max_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"max_phases")},{help:l(()=>[...e[37]||(e[37]=[i(" Anzahl der Phasen, die der Fahrzeuglader (s.g. OBC - OnboardCharger) bereitstellt. Plugin-Hybride haben meist nur eine Phase, reine E-Autos meist 2 bis 3 Phasen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"CP-Unterbrechung",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.control_pilot_interruption,"onUpdate:modelValue":n=>t.updateState(r,n,"control_pilot_interruption")},{help:l(()=>[...e[38]||(e[38]=[i(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o.control_pilot_interruption?(d(),p(w,{key:2,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":o.control_pilot_interruption_duration,"onUpdate:modelValue":n=>t.updateState(r,n,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.prevent_phase_switch,"onUpdate:modelValue":n=>t.updateState(r,n,"prevent_phase_switch")},{help:l(()=>[...e[39]||(e[39]=[i(' Erläuterung zu 1p3p siehe "Ladeeinstellungen" ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Ladung aktiv halten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.prevent_charge_stop,"onUpdate:modelValue":n=>t.updateState(r,n,"prevent_charge_stop")},{help:l(()=>[...e[40]||(e[40]=[i(" Der Ladevorgang wird in den Lademodi PV- und Zielladen nach Ladebeginn nicht unterbrochen, selbst wenn nicht mehr genug Überschuss vorhanden ist. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach einer Ladungsunterbrechung keine Ladung mehr starten. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,required:"","model-value":o.phase_switch_pause,"onUpdate:modelValue":n=>t.updateState(r,n,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),g("div",Ee,[a(w,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,required:"","model-value":o.keep_charge_active_duration,"onUpdate:modelValue":n=>t.updateState(r,n,"keep_charge_active_duration")},{help:l(()=>[...e[41]||(e[41]=[i(" Manche Fahrzeuge benötigen nach der Umschaltung einige Zeit, bis sie mit der vorgegebenen Phasenzahl laden. In dieser Zeit wird keine neue Phasenumschaltung angestoßen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]))]),_:2},[r.endsWith("/0")?void 0:{name:"actions",fn:l(n=>[t.$store.state.mqtt["openWB/general/extern"]===!1&&!n.collapsed?(d(),p(T,{key:0,class:"bg-danger clickable",onClick:c=>s.removeEvTemplateModal(r,c)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),a(A,{collapsible:!0,collapsed:t.$route.params.section!="charge_template"},{header:l(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:l(()=>[a(v,{"fixed-width":"",icon:["far","file"]}),a(v,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),e[42]||(e[42]=i(" Lade-Profile "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:s.addChargeTemplate},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Be,[a(y,{subtype:"info"},{default:l(()=>e[43]||(e[43]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",Fe,[(d(!0),g(P,null,E(s.chargeTemplates,(o,r)=>(d(),p(A,{key:r,title:o.name?o.name:r,collapsible:!0,collapsed:!(t.$route.params.section=="charge_template"&&parseInt(t.$route.params.section_index)==s.getChargeTemplateIndex(r))},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":o.name,disabled:r.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(r,n,"name")},F({_:2},[r.endsWith("/0")?{name:"help",fn:l(()=>[e[44]||(e[44]=i(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),a(L,null,{default:l(()=>[...e[45]||(e[45]=[i(" Allgemeine Optionen ")])]),_:1}),a(_,{title:"Aktiver Lademodus",buttons:[{buttonValue:"instant_charging",text:"Sofortladen",class:"btn-outline-danger"},{buttonValue:"pv_charging",text:"PV",class:"btn-outline-success"},{buttonValue:"scheduled_charging",text:"Zielladen",class:"btn-outline-primary"},{buttonValue:"standby",text:"Standby",class:"btn-outline-secondary"},{buttonValue:"stop",text:"Stop",class:"btn-outline-dark"}],"model-value":o.chargemode.selected,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.selected")},{help:l(()=>[...e[46]||(e[46]=[i(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),h("br",null,null,-1),i(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),h("br",null,null,-1),h("ol",null,[h("li",null,"Zielladen (Sofortladen) mit Priorität"),h("li",null,"Zielladen (Sofortladen)"),h("li",null,"Zeitladen mit Priorität"),h("li",null,"Zeitladen"),h("li",null,"Sofortladen mit Priorität"),h("li",null,"Sofortladen"),h("li",null,"PV (Min-Anteil) mit Priorität"),h("li",null,"PV (Min-Anteil)"),h("li",null,"Zielladen (PV) mit Priorität"),h("li",null,"Zielladen (PV)"),h("li",null,"PV (PV-Anteil) mit Priorität"),h("li",null,"PV (PV-Anteil)")],-1)])]),_:2},1032,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),g("div",Me,[a(_,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.prio,"onUpdate:modelValue":n=>t.updateState(r,n,"prio")},{help:l(()=>[...e[47]||(e[47]=[i(" Die Ladefreigabe mit dem jeweils eingestellten Mindeststrom erfolgt für alle Fahrzeuge, soweit die verfügbare Leistung ausreicht. Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, wird auch für Fahrzeuge ohne Priorität mehr Leistung freigegeben. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitladen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.time_charging.active,"onUpdate:modelValue":n=>t.updateState(r,n,"time_charging.active")},{help:l(()=>[...e[48]||(e[48]=[i(' Der Lademodus Zeitladen kann parallel zu einem der anderen Lademodi aktiviert werden. Die Auswahl des Lademodus, der in der Regelung genutzt wird, erfolgt anhand der Übersicht in der Hilfe bei "Aktiver Lademodus". Wenn kein Zeitplan aktiv ist oder das Limit des Zeitplans erreicht wurde, wird der Lademodus verwendet, der bei "Aktiver Lademodus" ausgewählt ist. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Standard nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.load_default,"onUpdate:modelValue":n=>t.updateState(r,n,"load_default")},{help:l(()=>[...e[49]||(e[49]=[i(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Fahrzeug zurückgesetzt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Strompreisbasiert Laden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.et.active,"onUpdate:modelValue":n=>t.updateState(r,n,"et.active")},null,8,["model-value","onUpdate:modelValue"]),o.et.active==!0?(d(),g("div",qe,[!t.$store.state.mqtt["openWB/optional/et/provider"]||!t.$store.state.mqtt["openWB/optional/et/provider"].type?(d(),g("div",De,[a(y,{subtype:"danger"},{default:l(()=>[...e[50]||(e[50]=[i(" Bitte in den übergreifenden Ladeeinstellungen einen Strompreis-Anbieter konfigurieren. ")])]),_:1})])):m("",!0),a(w,{title:"Preisgrenze für Zeit- & Sofortladen",min:"-80",max:"80",step:"0.01",precision:2,unit:"ct/kWh","model-value":o.et.max_price*1e5,"onUpdate:modelValue":n=>t.updateState(r,parseFloat((n/1e5).toFixed(7)),"et.max_price")},{help:l(()=>[...e[51]||(e[51]=[i(" Für Zielladen werden die günstigsten Stunden ermittelt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])])):m("",!0),e[52]||(e[52]=h("hr",null,null,-1))])),a(L,null,{default:l(()=>[...e[53]||(e[53]=[i("Sofortladen")])]),_:1}),a(S,{title:"Soll-Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":o.chargemode.instant_charging.current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:1,title:"Soll-Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.instant_charging.dc_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.instant_charging.dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":o.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.limit.selected")},{help:l(()=>[...e[54]||(e[54]=[i(" Sofortladen kann ohne Fahrzeug-SoC-Begrenzung (Aus), mit Begrenzung des Fahrzeug-SoC (SoC) bei konfiguriertem SoC-Auslesemodul oder mittels Vorgabe eine gewünschten Energiemenge in kWh (Energie) genutzt werden. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"SoC-Limit für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":o.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.limit.soc")},{help:l(()=>[...e[55]||(e[55]=[i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Energie-Limit",unit:"kWh",min:1,step:1,"model-value":o.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"chargemode.instant_charging.limit.amount")},{help:l(()=>[...e[56]||(e[56]=[i(" Die geladene Energiemenge wird beim Wechsel des Lademodus oder nach dem Anstecken, wenn Sofortladen schon ausgewählt ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[79]||(e[79]=h("hr",null,null,-1)),a(L,null,{default:l(()=>[...e[57]||(e[57]=[i("PV-Laden")])]),_:1}),a(S,{title:"Minimaler Dauerstrom"+(s.dcChargingEnabled?" (AC)":""),min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":o.chargemode.pv_charging.min_current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_current")},{help:l(()=>[...e[58]||(e[58]=[i(' Hier kann eine Stromstärke eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Stromwert empfohlen wird. Diese Einstellung entspricht weitestgehend dem Lademodus "Min+PV" der Version 1.x. ')])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:2,title:"Minimale Dauerleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.pv_charging.dc_min_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.pv_charging.dc_min_current")},{help:l(()=>[...e[59]||(e[59]=[i(" Hier kann eine Leistung eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Leistungswert empfohlen wird. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(S,{title:"SoC-Limit für das Fahrzeug",min:0,max:20,step:1,unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":o.chargemode.pv_charging.max_soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.max_soc")},{help:l(()=>[...e[60]||(e[60]=[i(' Bei der Einstellung "100%" wird die Ladung sofort mit Erreichen der 100% beendet. Dadurch erfolgt KEIN Balancing der Batteriezellen. Ist dies gewünscht (sollte ab und an durchgeführt werden), muss hier "Aus" gewählt werden (Schieberegler ganz nach rechts stellen), um die Ladung MIT Balancing bis zur Beendigung durch das Fahrzeug weiterlaufen zu lassen.'),h("br",null,null,-1),i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Mindest-SoC für das Fahrzeug",min:0,max:19,step:1,unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":o.chargemode.pv_charging.min_soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_soc")},{help:l(()=>[...e[61]||(e[61]=[i(' Liegt der Fahrzeug-Ladestand (SoC) unter dem hier eingestellten Wert, dann wird bis zum Erreichen dieses Wertes mit dem eingestellten "Mindest-SoC-Strom" geladen. Dies dient der Sicherstellung eines "Mindest-SoC" - z.B. für eine immer abzudeckende Fahrzeugreichweite - auch wenn kein oder zu wenig Überschuss verfügbar ist (=> Laden mit anteilig Netzstrom). Nach dem Erreichen des "Mindest-SoC" wird bei verfügbarem Überschuss geladen.'),h("br",null,null,-1),i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Mindest-SoC-Strom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":o.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_soc_current")},{help:l(()=>[...e[62]||(e[62]=[i(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit dem hier festgelegten "Mindest-SoC-Strom" initiiert (ggf. mit anteilig Netzbezug). ')])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:3,title:"Mindest-SoC-Leistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.pv_charging.dc_min_soc_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.pv_charging.dc_min_soc_current")},{help:l(()=>[...e[63]||(e[63]=[i(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit der hier festgelegten "Mindest-SoC-Leistung" initiiert (ggf. mit anteilig Netzbezug). ')])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.feed_in_limit")},{help:l(()=>[...e[64]||(e[64]=[i(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[80]||(e[80]=h("hr",null,null,-1)),a(L,null,{actions:l(()=>[a(T,{class:"bg-success clickable",onClick:n=>s.addChargeTemplateSchedulePlan(r,n)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:l(()=>[...e[65]||(e[65]=[i(' Im Lademodus "Zielladen" wird der Ladestrom so angepasst, dass das Fahrzeug zum angegebenen Zeitpunkt den eingestellten SoC bzw. die einzuladende Energiemenge erreicht. Anhand des vorgegebenen Ladestroms wird der Zeitpunkt berechnet, an dem die Ladung spätestens starten muss.'),h("br",null,null,-1),i(' Ist der berechnete Zeitpunkt des Ladestarts noch nicht erreicht, wird mit Überschuss geladen. Auch nach Erreichen des Ziel-SoCs wird mit Überschuss geladen, solange bis das "SoC-Limit für das Fahrzeug" erreicht wird.'),h("br",null,null,-1),i(" Kann der Ziel-SoC bzw. die Energiemenge NICHT erreicht werden, z.B. weil das Auto zu spät angesteckt wurde oder das Lastmanagement eingegriffen hat, wird bis 20 Minuten nach dem angegebenen Termin mit der Maximalstromstärke geladen. Danach wird der Termin verworfen und mit Überschuss geladen. ")])]),default:l(()=>[e[66]||(e[66]=i(" Zielladen "))]),_:2},1024),(d(!0),g(P,null,E(s.getChargeTemplateScheduledChargingPlans(r),(n,c)=>(d(),p(A,{key:c,title:n.name,collapsible:!0,collapsed:!0},{actions:l(u=>[u.collapsed==!0?(d(),g("span",{key:0,class:x(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:N(U=>t.updateState(c,!n.active,"active"),["stop"])},[n.limit.selected=="soc"?(d(),g("span",xe,[a(v,{"fixed-width":"",icon:["fas","car-battery"]}),i(" "+C(n.limit.soc_scheduled)+"% ",1)])):m("",!0),n.limit.selected=="amount"?(d(),g("span",Ne,[a(v,{"fixed-width":"",icon:["fas","bolt"]}),i(" "+C(n.limit.amount/1e3)+"kWh ",1)])):m("",!0),a(v,{"fixed-width":"",icon:["fas","clock"]}),i(" "+C(n.time)+" ",1),n.frequency.selected=="once"?(d(),g("span",Oe,[a(v,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+C(t.formatDate(n.frequency.once)),1)])):m("",!0),n.frequency.selected=="daily"?(d(),g("span",Ie,[a(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),n.frequency.selected=="weekly"?(d(),g("span",Re,[a(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,Ze)):m("",!0),u.collapsed==!1?(d(),p(T,{key:1,class:"bg-danger clickable",onClick:U=>s.removeChargeTemplateSchedulePlanModal(r,c,U)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:l(()=>[a(z,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":u=>t.updateState(c,u,"name")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitpunkt aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":u=>t.updateState(c,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(z,{title:"Ziel-Uhrzeit",subtype:"time","model-value":n.time,"onUpdate:modelValue":u=>t.updateState(c,u,"time")},{help:l(()=>[...e[67]||(e[67]=[i(" Hier ist die gewünschte Uhrzeit einzustellen, zu welcher das Fahrzeug den gewünschten SoC bzw. die zu ladende Energiemenge BEREITS ERREICHT haben soll. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":n.current,"onUpdate:modelValue":u=>t.updateState(c,u,"current")},{help:l(()=>[...e[68]||(e[68]=[i(" Mit dieser Stromstärke wird der Zeitpunkt berechnet, wann die Ladung mit Netzbezug gestartet werden muss. Wird der Ziel-SoC nicht zum angegebenen Termin erreicht, weil z.B. das Auto erst später angesteckt wurde, wird auch mit einer höheren Stromstärke geladen. Um etwas Puffer zu haben, empfiehlt es sich, etwas weniger als die Maximalstromstärke des Fahrzeugs zu wählen. ")])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(n.dc_current),"onUpdate:modelValue":u=>t.updateState(c,t.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Ziel",buttons:[{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":n.limit.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.selected")},{help:l(()=>[...e[69]||(e[69]=[i(" Bestimmt die Art der Grenze für den Ladevorgang. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),n.limit.selected=="soc"?(d(),p(S,{key:1,title:"Fahrzeug-SoC zum Zielzeitpunkt",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc_scheduled,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc_scheduled")},{help:l(()=>[...e[70]||(e[70]=[i(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll (Ziel-SoC). ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n.limit.selected=="soc"?(d(),p(S,{key:2,title:"Fahrzeug-SoC mit Überschuss",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc_limit,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc_limit")},{help:l(()=>[...e[71]||(e[71]=[i(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. Sobald das SoC-Limit erreicht wurde, findet keine Ladung mehr mit Überschuss statt! ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n.limit.selected=="amount"?(d(),p(w,{key:3,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":n.limit.amount/1e3,"onUpdate:modelValue":u=>t.updateState(c,u*1e3,"limit.amount")},{help:l(()=>[...e[72]||(e[72]=[i(" Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zielladen schon ausgewählt ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(d(),p(z,{key:4,title:"Datum",subtype:"date","model-value":n.frequency.once,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n.frequency.selected=="weekly"?(d(),g("div",$e,[(d(!0),g(P,null,E(t.weekdays,(u,U)=>(d(),p(_,{key:U,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[U],"onUpdate:modelValue":D=>t.updateState(c,D,"frequency.weekly."+U)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128)),b.installAssistantActive?m("",!0):(d(),g("div",He,[e[75]||(e[75]=h("hr",null,null,-1)),a(L,null,{actions:l(()=>[a(T,{class:"bg-success clickable",onClick:n=>s.addChargeTemplateTimeChargingPlan(r,n)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:l(()=>[...e[73]||(e[73]=[i(" Mit einem Zeitplan kann ein klar abgegrenzter Zeitbereich zum Fahrzeugladen definiert werden. Dies wird häufig genutzt, um einem Fahrzeug kurz vor der Abfahrt Strom anzubieten, damit dessen Vorklimatisierung nicht aus dem Fahrzeugakku, sondern aus der openWB bezogen wird (Enteisung, Vorwärmung, Abkühlung). Nicht von der Vorklimatisierung benötigter Strom erhöht dabei den Fahrzeug-SoC. Um das Stromnetz am Morgen nicht unnötig zu strapazieren, sollte eine moderate Stromvorgabe und ein beschränkter Zeitbereich vorgegeben werden (z.B. max. 10A; 30min - in Übereinstimmung mit den Fahrzeug-App-Vorklimatisierungsvorgaben). ")])]),default:l(()=>[e[74]||(e[74]=i(" Laden nach Zeitplan "))]),_:2},1024)])),(d(!0),g(P,null,E(s.getChargeTemplateTimeChargingPlans(r),(n,c)=>(d(),p(A,{key:c,title:n.name,collapsible:!0,collapsed:!0},{actions:l(u=>[u.collapsed==!0?(d(),g("span",{key:0,class:x(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:N(U=>t.updateState(c,!n.active,"active"),["stop"])},[n.limit.selected=="soc"?(d(),g("span",Je,[a(v,{"fixed-width":"",icon:["fas","car-battery"]}),i(" "+C(n.limit.soc)+"% ",1)])):m("",!0),n.limit.selected=="amount"?(d(),g("span",Ge,[a(v,{"fixed-width":"",icon:["fas","bolt"]}),i(" "+C(n.limit.amount/1e3)+"kWh ",1)])):m("",!0),a(v,{"fixed-width":"",icon:["fas","clock"]}),i(" "+C(n.time[0])+" - "+C(n.time[1])+" ",1),n.frequency.selected=="once"?(d(),g("span",Xe,[a(v,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+C(t.formatDate(n.frequency.once[0])==t.formatDate(n.frequency.once[1])?t.formatDate(n.frequency.once[0]):t.formatDate(n.frequency.once[0])+" - "+t.formatDate(n.frequency.once[1])),1)])):m("",!0),n.frequency.selected=="daily"?(d(),g("span",Qe,[a(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),n.frequency.selected=="weekly"?(d(),g("span",Ye,[a(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,je)):m("",!0),u.collapsed==!1?(d(),p(T,{key:1,class:"bg-danger clickable",onClick:U=>s.removeChargeTemplateTimeChargingPlanModal(r,c,U)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:l(()=>[a(z,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":u=>t.updateState(c,u,"name")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":u=>t.updateState(c,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":n.current,"onUpdate:modelValue":u=>t.updateState(c,u,"current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(n.dc_current),"onUpdate:modelValue":u=>t.updateState(c,t.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":n.limit.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.selected")},{help:l(()=>[...e[76]||(e[76]=[i(" Bestimmt die Art der Grenze für den Ladevorgang. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),n.limit.selected=="soc"?(d(),p(S,{key:1,title:"Ziel-SoC für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc")},{help:l(()=>[...e[77]||(e[77]=[i(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n.limit.selected=="amount"?(d(),p(w,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":n.limit.amount/1e3,"onUpdate:modelValue":u=>t.updateState(c,u*1e3,"limit.amount")},{help:l(()=>[...e[78]||(e[78]=[i(" Maximal zu ladende Energie innerhalb des Zeitfensters. Eignet sich immer dann wenn kein SoC zur Verfügung steht. Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zeitladen schon aktiv ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(z,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":n.time[0],"onUpdate:modelValue":u=>t.updateState(c,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(z,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":n.time[1],"onUpdate:modelValue":u=>t.updateState(c,u,"time.1")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(d(),p(z,{key:3,title:"Gültig ab",subtype:"date","model-value":n.frequency.once[0],"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n.frequency.selected=="once"?(d(),p(z,{key:4,title:"Gültig bis",subtype:"date",min:n.frequency.once[0],"model-value":n.frequency.once[1],"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):m("",!0),n.frequency.selected=="weekly"?(d(),g("div",Ke,[(d(!0),g(P,null,E(t.weekdays,(u,U)=>(d(),p(_,{key:U,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[U],"onUpdate:modelValue":D=>t.updateState(c,D,"frequency.weekly."+U)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128))]),_:2},[r.endsWith("/0")?void 0:{name:"actions",fn:l(n=>[n.collapsed?m("",!0):(d(),p(T,{key:0,class:"bg-danger clickable",onClick:c=>s.removeChargeTemplateModal(r,c)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),a(R,{"form-name":"vehicleConfigForm",onSave:e[5]||(e[5]=o=>t.$emit("save")),onReset:e[6]||(e[6]=o=>t.$emit("reset")),onDefaults:e[7]||(e[7]=o=>t.$emit("defaults"))})])])],64)}const tt=M(_e,[["render",et],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]),ot=Object.freeze(Object.defineProperty({__proto__:null,default:tt},Symbol.toStringTag,{value:"Module"}));export{se as V,tt as a,ot as b}; diff --git a/web/settings/assets/backup_cloud-42fd7d1e.js b/web/settings/assets/backup_cloud-30cf5664.js similarity index 70% rename from web/settings/assets/backup_cloud-42fd7d1e.js rename to web/settings/assets/backup_cloud-30cf5664.js index 240c6878e8..c23bd4af45 100644 --- a/web/settings/assets/backup_cloud-42fd7d1e.js +++ b/web/settings/assets/backup_cloud-30cf5664.js @@ -1 +1 @@ -import{B as s}from"./DataManagement-714df651.js";import{_ as a,u as r,l as i,m as l,G as u,E as d,B as p}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"BackupCloudNextCloud",mixins:[s]},c={class:"backup-cloud-next-cloud"};function f(o,e,b,k,C,g){const n=r("openwb-base-text-input");return i(),l("div",c,[u(n,{title:"Cloud-URL",subtype:"host",required:"","model-value":o.backupCloud.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},{help:d(()=>e[3]||(e[3]=[p(" Die Cloud-URL wird in der Form 'https://nextcloud-url' und Benutzername im Eingabefeld oder mit Zugangstoken erwartet. Die URL kann je nach NextCloud Installation so 'https://nextcloud-url/s/user_token' oder so 'https://nextcloud-url/index.php/s/user_token' aussehen. ")])),_:1},8,["model-value"]),u(n,{title:"Benutzername",subtype:"user","model-value":o.backupCloud.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),u(n,{title:"Passwort",subtype:"password","model-value":o.backupCloud.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const h=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nextcloud/backup_cloud.vue"]]);export{h as default}; +import{B as s}from"./DataManagement-f14600c5.js";import{_ as a,u as r,l as i,m as l,G as u,E as d,y as p}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"BackupCloudNextCloud",mixins:[s]},c={class:"backup-cloud-next-cloud"};function f(o,e,b,k,C,g){const n=r("openwb-base-text-input");return i(),l("div",c,[u(n,{title:"Cloud-URL",subtype:"host",required:"","model-value":o.backupCloud.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},{help:d(()=>e[3]||(e[3]=[p(" Die Cloud-URL wird in der Form 'https://nextcloud-url' und Benutzername im Eingabefeld oder mit Zugangstoken erwartet. Die URL kann je nach NextCloud Installation so 'https://nextcloud-url/s/user_token' oder so 'https://nextcloud-url/index.php/s/user_token' aussehen. ")])),_:1},8,["model-value"]),u(n,{title:"Benutzername",subtype:"user","model-value":o.backupCloud.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),u(n,{title:"Passwort",subtype:"password","model-value":o.backupCloud.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const $=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nextcloud/backup_cloud.vue"]]);export{$ as default}; diff --git a/web/settings/assets/backup_cloud-cbe0285e.js b/web/settings/assets/backup_cloud-30fea215.js similarity index 89% rename from web/settings/assets/backup_cloud-cbe0285e.js rename to web/settings/assets/backup_cloud-30fea215.js index d067950798..f8eee9e8ce 100644 --- a/web/settings/assets/backup_cloud-cbe0285e.js +++ b/web/settings/assets/backup_cloud-30fea215.js @@ -1 +1 @@ -import{B as c}from"./DataManagement-714df651.js";import{_ as m,u as a,l as b,m as f,G as t,E as r,B as n,A as i}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const g={name:"BackupCloudOneDrive",mixins:[c]},v={class:"backup-cloud-one-drive"};function k(o,e,h,w,B,C){const d=a("openwb-base-alert"),u=a("openwb-base-text-input"),p=a("openwb-base-heading"),l=a("openwb-base-button-input");return b(),f("div",v,[t(d,{subtype:"info"},{default:r(()=>e[3]||(e[3]=[n(" Zum Abruf der Zugangsberechtigung bitte die Konfiguration speichern, dann die Schritte 1-4 durchführen und danach die Konfiguration erneut speichern. "),i("br",null,null,-1),n(" Auth Code und URL werden nur einmal benötigt werden nach erfolgreicher Autorisierung wieder gelöscht. ")])),_:1}),t(u,{title:"Backupverzeichnis in OneDrive",subtype:"text",required:"",pattern:"^/(.*/)*","model-value":o.backupCloud.configuration.backuppath,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.backuppath"))},{help:r(()=>e[4]||(e[4]=[n(" In diesem Verzeichnis werden die Backupdateien erstellt. Bitte den Pfad mit / beenden. "),i("br",null,null,-1),n(" Beispiel: /openWB/Backup/ ")])),_:1},8,["model-value"]),t(u,{title:"Anmeldedaten auf openWB gespeichert",readonly:"","model-value":o.backupCloud.configuration.persistent_tokencache?"Ja":"Nein"},null,8,["model-value"]),t(p,null,{default:r(()=>e[5]||(e[5]=[n(" Zugang zu OneDrive für diese openWB autorisieren ")])),_:1}),t(l,{title:"1. Anmeldeanforderung erstellen","button-text":"Autorisierungs-Code anfordern",subtype:"success",onButtonClicked:e[1]||(e[1]=s=>o.sendSystemCommand("requestMSALAuthCode",{}))},{help:r(()=>e[6]||(e[6]=[n(" Es werden Zugangstokens für OneDrive angefordert. Diese werden nur lokal auf dieser openWB gespeichert. Genutzt wird Device Flow mit public application."),i("br",null,null,-1),n(" Weitere Infos:"),i("br",null,null,-1),i("a",{href:"https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code",target:"_blank",rel:"noopener noreferrer"},"https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code",-1),i("a",{href:"https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications",target:"_blank",rel:"noopener noreferrer"},"https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications",-1)])),_:1}),t(u,{title:"2. Diesen Code kopieren",subtype:"text",readonly:"","model-value":o.backupCloud.configuration.authcode},null,8,["model-value"]),t(u,{title:"3. Anmelde-URL aufrufen",subtype:"url",readonly:"","model-value":o.backupCloud.configuration.authurl},{help:r(()=>e[7]||(e[7]=[n(" Diese URL im Browser öffnen und den Code eingeben. Dies erzeugt die notwendigen Zugangsberechtigung für diese openWB. ")])),_:1},8,["model-value"]),t(l,{title:"4. Token abrufen und speichern","button-text":"Autorisierungs-Token abrufen",subtype:"success",onButtonClicked:e[2]||(e[2]=s=>o.sendSystemCommand("retrieveMSALTokens",{}))},{help:r(()=>e[8]||(e[8]=[n(" Zugangstoken wird abgerufen und gespeichert, damit das Backup durchgeführt werden kann. Zugangstoken werden nur lokal auf dieser openWB gespeichert. ")])),_:1})])}const L=m(g,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/onedrive/backup_cloud.vue"]]);export{L as default}; +import{B as c}from"./DataManagement-f14600c5.js";import{_ as m,u as a,l as b,m as f,G as t,E as r,y as n,x as i}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const g={name:"BackupCloudOneDrive",mixins:[c]},v={class:"backup-cloud-one-drive"};function k(o,e,h,w,B,C){const d=a("openwb-base-alert"),u=a("openwb-base-text-input"),p=a("openwb-base-heading"),l=a("openwb-base-button-input");return b(),f("div",v,[t(d,{subtype:"info"},{default:r(()=>e[3]||(e[3]=[n(" Zum Abruf der Zugangsberechtigung bitte die Konfiguration speichern, dann die Schritte 1-4 durchführen und danach die Konfiguration erneut speichern. "),i("br",null,null,-1),n(" Auth Code und URL werden nur einmal benötigt werden nach erfolgreicher Autorisierung wieder gelöscht. ")])),_:1}),t(u,{title:"Backupverzeichnis in OneDrive",subtype:"text",required:"",pattern:"^/(.*/)*","model-value":o.backupCloud.configuration.backuppath,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.backuppath"))},{help:r(()=>e[4]||(e[4]=[n(" In diesem Verzeichnis werden die Backupdateien erstellt. Bitte den Pfad mit / beenden. "),i("br",null,null,-1),n(" Beispiel: /openWB/Backup/ ")])),_:1},8,["model-value"]),t(u,{title:"Anmeldedaten auf openWB gespeichert",readonly:"","model-value":o.backupCloud.configuration.persistent_tokencache?"Ja":"Nein"},null,8,["model-value"]),t(p,null,{default:r(()=>e[5]||(e[5]=[n(" Zugang zu OneDrive für diese openWB autorisieren ")])),_:1}),t(l,{title:"1. Anmeldeanforderung erstellen","button-text":"Autorisierungs-Code anfordern",subtype:"success",onButtonClicked:e[1]||(e[1]=s=>o.sendSystemCommand("requestMSALAuthCode",{}))},{help:r(()=>e[6]||(e[6]=[n(" Es werden Zugangstokens für OneDrive angefordert. Diese werden nur lokal auf dieser openWB gespeichert. Genutzt wird Device Flow mit public application."),i("br",null,null,-1),n(" Weitere Infos:"),i("br",null,null,-1),i("a",{href:"https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code",target:"_blank",rel:"noopener noreferrer"},"https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code",-1),i("a",{href:"https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications",target:"_blank",rel:"noopener noreferrer"},"https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications",-1)])),_:1}),t(u,{title:"2. Diesen Code kopieren",subtype:"text",readonly:"","model-value":o.backupCloud.configuration.authcode},null,8,["model-value"]),t(u,{title:"3. Anmelde-URL aufrufen",subtype:"url",readonly:"","model-value":o.backupCloud.configuration.authurl},{help:r(()=>e[7]||(e[7]=[n(" Diese URL im Browser öffnen und den Code eingeben. Dies erzeugt die notwendigen Zugangsberechtigung für diese openWB. ")])),_:1},8,["model-value"]),t(l,{title:"4. Token abrufen und speichern","button-text":"Autorisierungs-Token abrufen",subtype:"success",onButtonClicked:e[2]||(e[2]=s=>o.sendSystemCommand("retrieveMSALTokens",{}))},{help:r(()=>e[8]||(e[8]=[n(" Zugangstoken wird abgerufen und gespeichert, damit das Backup durchgeführt werden kann. Zugangstoken werden nur lokal auf dieser openWB gespeichert. ")])),_:1})])}const L=m(g,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/onedrive/backup_cloud.vue"]]);export{L as default}; diff --git a/web/settings/assets/backup_cloud-b4673e75.js b/web/settings/assets/backup_cloud-b39f2e48.js similarity index 64% rename from web/settings/assets/backup_cloud-b4673e75.js rename to web/settings/assets/backup_cloud-b39f2e48.js index 9220a928e2..3942fb9204 100644 --- a/web/settings/assets/backup_cloud-b4673e75.js +++ b/web/settings/assets/backup_cloud-b39f2e48.js @@ -1 +1 @@ -import{B as r}from"./DataManagement-714df651.js";import{_ as p,u,l as i,m as l,G as d,E as c,B as o,A as n}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"BackupCloudNfs",mixins:[r]},f={class:"backup-cloud-nfs"};function _(t,e,b,k,v,B){const a=u("openwb-base-text-input");return i(),l("div",f,[d(a,{title:"Pfad zum NFS Share",pattern:"^([^/: ]+):(\\/[^/: ]+)+$",required:"","model-value":t.backupCloud.configuration.nfs_share,"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.nfs_share"))},{help:c(()=>e[1]||(e[1]=[o(" 1. IP basierter Pfad: 1.2.3.4:/pfad/zum/nfs-share"),n("br",null,null,-1),o(" 2. Host (FQDN) basierter Pfad: backupserver.domain.net:/pfad/zum/nfs-share"),n("br",null,null,-1),o(" Bitte entgegen der Syntax das Protokoll nicht davor schreiben. Falsch wäre, “nfs://” davor zu setzen. ")])),_:1},8,["model-value"])])}const V=p(m,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nfs/backup_cloud.vue"]]);export{V as default}; +import{B as r}from"./DataManagement-f14600c5.js";import{_ as p,u,l as i,m as l,G as d,E as c,y as o,x as n}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"BackupCloudNfs",mixins:[r]},f={class:"backup-cloud-nfs"};function _(t,e,b,k,v,x){const a=u("openwb-base-text-input");return i(),l("div",f,[d(a,{title:"Pfad zum NFS Share",pattern:"^([^/: ]+):(\\/[^/: ]+)+$",required:"","model-value":t.backupCloud.configuration.nfs_share,"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.nfs_share"))},{help:c(()=>e[1]||(e[1]=[o(" 1. IP basierter Pfad: 1.2.3.4:/pfad/zum/nfs-share"),n("br",null,null,-1),o(" 2. Host (FQDN) basierter Pfad: backupserver.domain.net:/pfad/zum/nfs-share"),n("br",null,null,-1),o(" Bitte entgegen der Syntax das Protokoll nicht davor schreiben. Falsch wäre, “nfs://” davor zu setzen. ")])),_:1},8,["model-value"])])}const V=p(m,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nfs/backup_cloud.vue"]]);export{V as default}; diff --git a/web/settings/assets/backup_cloud-36fc78b8.js b/web/settings/assets/backup_cloud-c3181aad.js similarity index 81% rename from web/settings/assets/backup_cloud-36fc78b8.js rename to web/settings/assets/backup_cloud-c3181aad.js index d1bfbf5d89..912d6e851d 100644 --- a/web/settings/assets/backup_cloud-36fc78b8.js +++ b/web/settings/assets/backup_cloud-c3181aad.js @@ -1 +1 @@ -import{B as r}from"./DataManagement-714df651.js";import{_ as i,u as s,l as p,m as d,G as t,E as m,B as a,A as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"BackupCloudSamba",mixins:[r]},f={class:"backup-cloud-samba"};function g(o,e,v,C,c,k){const u=s("openwb-base-text-input");return p(),d("div",f,[t(u,{title:"Server",subtype:"host",required:"","model-value":o.backupCloud.configuration.smb_server,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.smb_server"))},null,8,["model-value"]),t(u,{title:"Freigabe",required:"","model-value":o.backupCloud.configuration.smb_share,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.smb_share"))},null,8,["model-value"]),t(u,{title:"Unterordner (optional)","model-value":o.backupCloud.configuration.smb_path,pattern:'(^\\/$)|(^([^\\\\:"\\|*?<>]+\\/)+$)',required:"","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.smb_path"))},{help:m(()=>e[5]||(e[5]=[a(" Jeder Unterordner muss mit / enden."),l("br",null,null,-1),a(' Die Zeichen \\:"|*?<> sind verboten!'),l("br",null,null,-1),a(" Beispiel 1: openwb/ "),l("br",null,null,-1),a(" Beispiel 2: openwb/lp2/ ")])),_:1},8,["model-value"]),t(u,{title:"Benutzer",subtype:"user","model-value":o.backupCloud.configuration.smb_user,"onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.smb_user"))},null,8,["model-value"]),t(u,{title:"Kennwort",subtype:"password","model-value":o.backupCloud.configuration.smb_password,"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateConfiguration(n,"configuration.smb_password"))},null,8,["model-value"])])}const E=i(b,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/samba/backup_cloud.vue"]]);export{E as default}; +import{B as r}from"./DataManagement-f14600c5.js";import{_ as i,u as s,l as p,m as d,G as t,E as m,y as a,x as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"BackupCloudSamba",mixins:[r]},f={class:"backup-cloud-samba"};function g(o,e,v,C,c,k){const u=s("openwb-base-text-input");return p(),d("div",f,[t(u,{title:"Server",subtype:"host",required:"","model-value":o.backupCloud.configuration.smb_server,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.smb_server"))},null,8,["model-value"]),t(u,{title:"Freigabe",required:"","model-value":o.backupCloud.configuration.smb_share,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.smb_share"))},null,8,["model-value"]),t(u,{title:"Unterordner (optional)","model-value":o.backupCloud.configuration.smb_path,pattern:'(^\\/$)|(^([^\\\\:"\\|*?<>]+\\/)+$)',required:"","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.smb_path"))},{help:m(()=>e[5]||(e[5]=[a(" Jeder Unterordner muss mit / enden."),l("br",null,null,-1),a(' Die Zeichen \\:"|*?<> sind verboten!'),l("br",null,null,-1),a(" Beispiel 1: openwb/ "),l("br",null,null,-1),a(" Beispiel 2: openwb/lp2/ ")])),_:1},8,["model-value"]),t(u,{title:"Benutzer",subtype:"user","model-value":o.backupCloud.configuration.smb_user,"onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.smb_user"))},null,8,["model-value"]),t(u,{title:"Kennwort",subtype:"password","model-value":o.backupCloud.configuration.smb_password,"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateConfiguration(n,"configuration.smb_password"))},null,8,["model-value"])])}const E=i(b,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/samba/backup_cloud.vue"]]);export{E as default}; diff --git a/web/settings/assets/bat-e525273f.js b/web/settings/assets/bat-09e11c39.js similarity index 60% rename from web/settings/assets/bat-e525273f.js rename to web/settings/assets/bat-09e11c39.js index 654116e55d..988bb975c7 100644 --- a/web/settings/assets/bat-e525273f.js +++ b/web/settings/assets/bat-09e11c39.js @@ -1 +1 @@ -import{C as m}from"./HardwareInstallation-727b5962.js";import{_ as d,u as n,l as u,m as l,G as t,E as i,B as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSigenergyBat",mixins:[m]},b={class:"device-sigenergy-bat"};function _(o,e,c,f,v,w){const r=n("openwb-base-heading"),a=n("openwb-base-number-input");return u(),l("div",b,[t(r,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für Sigenergy Batteriespeicher ")])),_:1}),t(a,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[s(" Die Standard-Modbus-ID von Sigenergy ist 247 ")])),_:1},8,["model-value"])])}const V=d(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/bat.vue"]]);export{V as default}; +import{C as m}from"./HardwareInstallation-3a644290.js";import{_ as d,u as n,l as u,m as l,G as t,E as i,y as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSigenergyBat",mixins:[m]},b={class:"device-sigenergy-bat"};function _(o,e,c,f,v,y){const r=n("openwb-base-heading"),a=n("openwb-base-number-input");return u(),l("div",b,[t(r,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für Sigenergy Batteriespeicher ")])),_:1}),t(a,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[s(" Die Standard-Modbus-ID von Sigenergy ist 247 ")])),_:1},8,["model-value"])])}const V=d(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/bat.vue"]]);export{V as default}; diff --git a/web/settings/assets/bat-53f2b2dc.js b/web/settings/assets/bat-13f506c4.js similarity index 63% rename from web/settings/assets/bat-53f2b2dc.js rename to web/settings/assets/bat-13f506c4.js index 36bf4d6de0..f481d79568 100644 --- a/web/settings/assets/bat-53f2b2dc.js +++ b/web/settings/assets/bat-13f506c4.js @@ -1 +1 @@ -import{C as a}from"./HardwareInstallation-727b5962.js";import{_ as p,u as n,l as m,m as u,G as t,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceFroniusBat",mixins:[a]},_={class:"device-fronius-bat"};function f(o,e,b,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Fronius Batteriespeicher ")])),_:1}),t(r,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":o.component.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.meter_id"))},null,8,["model-value"])])}const F=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/bat.vue"]]);export{F as default}; +import{C as a}from"./HardwareInstallation-3a644290.js";import{_ as p,u as n,l as m,m as u,G as t,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceFroniusBat",mixins:[a]},_={class:"device-fronius-bat"};function f(o,e,b,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Fronius Batteriespeicher ")])),_:1}),t(r,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":o.component.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.meter_id"))},null,8,["model-value"])])}const F=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/bat.vue"]]);export{F as default}; diff --git a/web/settings/assets/bat-8276d217.js b/web/settings/assets/bat-1c531740.js similarity index 64% rename from web/settings/assets/bat-8276d217.js rename to web/settings/assets/bat-1c531740.js index 61157d971a..6b17f89104 100644 --- a/web/settings/assets/bat-8276d217.js +++ b/web/settings/assets/bat-1c531740.js @@ -1 +1 @@ -import{C as r}from"./HardwareInstallation-727b5962.js";import{_ as p,u as o,l as m,m as u,G as t,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSunnyIslandBat",mixins:[r]},c={class:"device-sunnyisland-bat"};function b(n,e,f,v,g,w){const s=o("openwb-base-heading"),i=o("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Sunny Island Batteriespeicher ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const k=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_island/bat.vue"]]);export{k as default}; +import{C as r}from"./HardwareInstallation-3a644290.js";import{_ as p,u as o,l as m,m as u,G as t,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSunnyIslandBat",mixins:[r]},c={class:"device-sunnyisland-bat"};function b(n,e,f,v,g,w){const s=o("openwb-base-heading"),i=o("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Sunny Island Batteriespeicher ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const k=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_island/bat.vue"]]);export{k as default}; diff --git a/web/settings/assets/bat-515bb8b9.js b/web/settings/assets/bat-434d0404.js similarity index 63% rename from web/settings/assets/bat-515bb8b9.js rename to web/settings/assets/bat-434d0404.js index 67f649d1d7..5510ffef81 100644 --- a/web/settings/assets/bat-515bb8b9.js +++ b/web/settings/assets/bat-434d0404.js @@ -1 +1 @@ -import{C as a}from"./HardwareInstallation-727b5962.js";import{_ as p,u as n,l as m,m as u,G as t,E as d,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceVictronBat",mixins:[a]},_={class:"device-victron-bat"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[c(" Einstellungen für Victron Batteriespeicher ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const M=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/bat.vue"]]);export{M as default}; +import{C as a}from"./HardwareInstallation-3a644290.js";import{_ as p,u as n,l as m,m as u,G as t,E as d,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceVictronBat",mixins:[a]},_={class:"device-victron-bat"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[c(" Einstellungen für Victron Batteriespeicher ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const M=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/bat.vue"]]);export{M as default}; diff --git a/web/settings/assets/bat-96814af1.js b/web/settings/assets/bat-47aea623.js similarity index 58% rename from web/settings/assets/bat-96814af1.js rename to web/settings/assets/bat-47aea623.js index 878a8f04a5..70c9a662fa 100644 --- a/web/settings/assets/bat-96814af1.js +++ b/web/settings/assets/bat-47aea623.js @@ -1 +1 @@ -import{C as r}from"./HardwareInstallation-727b5962.js";import{_ as p,u as n,l as m,m as u,G as t,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSunnyBoyBat",mixins:[r]},b={class:"device-sunnyboy-bat"};function c(o,e,f,v,g,y){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),u("div",b,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für SMA Sunny Boy/Tripower Batteriespeicher ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const h=p(_,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/bat.vue"]]);export{h as default}; +import{C as r}from"./HardwareInstallation-3a644290.js";import{_ as p,u as n,l as m,m as u,G as t,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSunnyBoyBat",mixins:[r]},b={class:"device-sunnyboy-bat"};function c(o,e,f,v,y,g){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),u("div",b,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für SMA Sunny Boy/Tripower Batteriespeicher ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const h=p(_,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/bat.vue"]]);export{h as default}; diff --git a/web/settings/assets/bat-7e2bb1f0.js b/web/settings/assets/bat-508dda8e.js similarity index 67% rename from web/settings/assets/bat-7e2bb1f0.js rename to web/settings/assets/bat-508dda8e.js index 4a86e28e3c..afcf9992d4 100644 --- a/web/settings/assets/bat-7e2bb1f0.js +++ b/web/settings/assets/bat-508dda8e.js @@ -1 +1 @@ -import{C as a}from"./HardwareInstallation-727b5962.js";import{_ as r,u as o,l,m as u,G as n,E as m,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitBat",mixins:[a]},_={class:"device-openwb-evukit-bat"};function v(t,e,b,f,w,g){const i=o("openwb-base-heading"),s=o("openwb-base-select-input");return l(),u("div",_,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Batteriespeicher ")])),_:1}),n(s,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.version"))},null,8,["model-value"])])}const $=r(d,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/bat.vue"]]);export{$ as default}; +import{C as a}from"./HardwareInstallation-3a644290.js";import{_ as r,u as o,l,m as u,G as n,E as m,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitBat",mixins:[a]},_={class:"device-openwb-evukit-bat"};function v(t,e,b,f,w,g){const i=o("openwb-base-heading"),s=o("openwb-base-select-input");return l(),u("div",_,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Batteriespeicher ")])),_:1}),n(s,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.version"))},null,8,["model-value"])])}const $=r(d,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-46ed5214.js b/web/settings/assets/bat-5bcb481a.js similarity index 83% rename from web/settings/assets/bat-46ed5214.js rename to web/settings/assets/bat-5bcb481a.js index 49f27abf3c..7209785ba0 100644 --- a/web/settings/assets/bat-46ed5214.js +++ b/web/settings/assets/bat-5bcb481a.js @@ -1 +1 @@ -import{C as m}from"./HardwareInstallation-727b5962.js";import{_ as a,u as p,l as b,m as g,G as l,E as i,B as t,A as n,F as r}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceMqttBat",mixins:[m]},B={class:"device-mqtt-bat"};function k(o,e,z,w,x,W){const u=p("openwb-base-heading"),s=p("openwb-base-copy-to-clipboard"),d=p("openwb-base-alert");return b(),g("div",B,[l(u,null,{default:i(()=>e[0]||(e[0]=[t(" Einstellungen für MQTT Batteriespeicher ")])),_:1}),l(d,{subtype:"info"},{default:i(()=>[e[26]||(e[26]=t(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: ")),n("ul",null,[n("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/bat/"+r(o.component.id)+"/get/power ",1)]),_:1}),e[1]||(e[1]=n("br",null,null,-1)),e[2]||(e[2]=t(" Speicherleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Ladung, negativ Entladung")),e[3]||(e[3]=n("br",null,null,-1)),e[4]||(e[4]=t(" Beispiel: ")),e[5]||(e[5]=n("span",{class:"text-info"},"-123",-1))]),n("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/bat/"+r(o.component.id)+"/get/imported ",1)]),_:1}),e[6]||(e[6]=n("br",null,null,-1)),e[7]||(e[7]=t(" Geladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),e[8]||(e[8]=n("br",null,null,-1)),e[9]||(e[9]=t(" Beispiel: ")),e[10]||(e[10]=n("span",{class:"text-info"},"123.45",-1))]),n("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/bat/"+r(o.component.id)+"/get/exported ",1)]),_:1}),e[11]||(e[11]=n("br",null,null,-1)),e[12]||(e[12]=t(" Entladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),e[13]||(e[13]=n("br",null,null,-1)),e[14]||(e[14]=t(" Beispiel: ")),e[15]||(e[15]=n("span",{class:"text-info"},"123.45",-1))]),n("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/bat/"+r(o.component.id)+"/get/soc ",1)]),_:1}),e[16]||(e[16]=n("br",null,null,-1)),e[17]||(e[17]=t(" Ladestand des Speichers, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, gültige Werte 0 bis 100")),e[18]||(e[18]=n("br",null,null,-1)),e[19]||(e[19]=t(" Beispiel: ")),e[20]||(e[20]=n("span",{class:"text-info"},"95",-1))])]),e[27]||(e[27]=t(" Optional: Wenn der Speicher dies unterstützt, kann folgendes Topic abonniert werden, um die Entladeleistung im Speicher zu setzen. Der Modus, um die Speicher-Entladung ins Fahrzeug zu steuern, kann in den übergreifenden Ladeeinstellungen gesetzt werden. ")),n("ul",null,[n("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/bat/"+r(o.component.id)+"/set/power_limit ",1)]),_:1}),e[21]||(e[21]=n("br",null,null,-1)),e[22]||(e[22]=t(" Entladeleistung in Watt (Float), die im Speicher gesetzt werden muss.")),e[23]||(e[23]=n("br",null,null,-1)),e[24]||(e[24]=t(" Beispiel: ")),e[25]||(e[25]=n("span",{class:"text-info"},"123.0",-1))])])]),_:1})])}const I=a(f,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/bat.vue"]]);export{I as default}; +import{C as m}from"./HardwareInstallation-3a644290.js";import{_ as a,u as p,l as b,m as g,G as l,E as i,y as t,x as n,F as r}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceMqttBat",mixins:[m]},k={class:"device-mqtt-bat"};function B(o,e,z,x,w,W){const u=p("openwb-base-heading"),s=p("openwb-base-copy-to-clipboard"),d=p("openwb-base-alert");return b(),g("div",k,[l(u,null,{default:i(()=>e[0]||(e[0]=[t(" Einstellungen für MQTT Batteriespeicher ")])),_:1}),l(d,{subtype:"info"},{default:i(()=>[e[26]||(e[26]=t(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: ")),n("ul",null,[n("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/bat/"+r(o.component.id)+"/get/power ",1)]),_:1}),e[1]||(e[1]=n("br",null,null,-1)),e[2]||(e[2]=t(" Speicherleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Ladung, negativ Entladung")),e[3]||(e[3]=n("br",null,null,-1)),e[4]||(e[4]=t(" Beispiel: ")),e[5]||(e[5]=n("span",{class:"text-info"},"-123",-1))]),n("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/bat/"+r(o.component.id)+"/get/imported ",1)]),_:1}),e[6]||(e[6]=n("br",null,null,-1)),e[7]||(e[7]=t(" Geladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),e[8]||(e[8]=n("br",null,null,-1)),e[9]||(e[9]=t(" Beispiel: ")),e[10]||(e[10]=n("span",{class:"text-info"},"123.45",-1))]),n("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/bat/"+r(o.component.id)+"/get/exported ",1)]),_:1}),e[11]||(e[11]=n("br",null,null,-1)),e[12]||(e[12]=t(" Entladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),e[13]||(e[13]=n("br",null,null,-1)),e[14]||(e[14]=t(" Beispiel: ")),e[15]||(e[15]=n("span",{class:"text-info"},"123.45",-1))]),n("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/bat/"+r(o.component.id)+"/get/soc ",1)]),_:1}),e[16]||(e[16]=n("br",null,null,-1)),e[17]||(e[17]=t(" Ladestand des Speichers, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, gültige Werte 0 bis 100")),e[18]||(e[18]=n("br",null,null,-1)),e[19]||(e[19]=t(" Beispiel: ")),e[20]||(e[20]=n("span",{class:"text-info"},"95",-1))])]),e[27]||(e[27]=t(" Optional: Wenn der Speicher dies unterstützt, kann folgendes Topic abonniert werden, um die Entladeleistung im Speicher zu setzen. Der Modus, um die Speicher-Entladung ins Fahrzeug zu steuern, kann in den übergreifenden Ladeeinstellungen gesetzt werden. ")),n("ul",null,[n("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/bat/"+r(o.component.id)+"/set/power_limit ",1)]),_:1}),e[21]||(e[21]=n("br",null,null,-1)),e[22]||(e[22]=t(" Entladeleistung in Watt (Float), die im Speicher gesetzt werden muss.")),e[23]||(e[23]=n("br",null,null,-1)),e[24]||(e[24]=t(" Beispiel: ")),e[25]||(e[25]=n("span",{class:"text-info"},"123.0",-1))])])]),_:1})])}const I=a(f,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/bat.vue"]]);export{I as default}; diff --git a/web/settings/assets/bat-b0b74fda.js b/web/settings/assets/bat-5d80d1b1.js similarity index 63% rename from web/settings/assets/bat-b0b74fda.js rename to web/settings/assets/bat-5d80d1b1.js index 1611be2de4..bf8a1e7da8 100644 --- a/web/settings/assets/bat-b0b74fda.js +++ b/web/settings/assets/bat-5d80d1b1.js @@ -1 +1 @@ -import{C as r}from"./HardwareInstallation-727b5962.js";import{_ as p,u as n,l as m,m as l,G as t,E as u,B as d}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisBat",mixins:[r]},_={class:"device-solis-bat"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),l("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[d(" Einstellungen für Solis Batteriespeicher ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const M=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/bat.vue"]]);export{M as default}; +import{C as r}from"./HardwareInstallation-3a644290.js";import{_ as p,u as n,l as m,m as l,G as t,E as u,y as d}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisBat",mixins:[r]},_={class:"device-solis-bat"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),l("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[d(" Einstellungen für Solis Batteriespeicher ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const M=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/bat.vue"]]);export{M as default}; diff --git a/web/settings/assets/bat-00ee042f.js b/web/settings/assets/bat-5d86d2d0.js similarity index 84% rename from web/settings/assets/bat-00ee042f.js rename to web/settings/assets/bat-5d86d2d0.js index fde31cdb23..e1d4c0080a 100644 --- a/web/settings/assets/bat-00ee042f.js +++ b/web/settings/assets/bat-5d86d2d0.js @@ -1 +1 @@ -import{C as u}from"./HardwareInstallation-727b5962.js";import{_ as m,u as s,l as p,m as g,G as r,E as i,B as n,A as o}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceHttpBat",mixins:[u]},b={class:"device-http-bat"};function f(t,e,v,w,c,k){const d=s("openwb-base-heading"),l=s("openwb-base-text-input");return p(),g("div",b,[r(d,null,{default:i(()=>e[4]||(e[4]=[n(" Einstellungen für Http Batteriespeicher ")])),_:1}),r(l,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=a=>t.updateConfiguration(a,"configuration.power_path"))},{help:i(()=>e[5]||(e[5]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")])),_:1},8,["model-value"]),r(l,{title:"Pfad für Ladestand",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.soc_path,"onUpdate:modelValue":e[1]||(e[1]=a=>t.updateConfiguration(a,"configuration.soc_path"))},{help:i(()=>e[6]||(e[6]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen Ladestand (SoC) in Prozent darstellt. ")])),_:1},8,["model-value"]),r(l,{title:"Pfad für Zählerstand laden",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.imported_path,"onUpdate:modelValue":e[2]||(e[2]=a=>t.updateConfiguration(a,"configuration.imported_path"))},{help:i(()=>e[7]||(e[7]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt. ")])),_:1},8,["model-value"]),r(l,{title:"Pfad für Zählerstand entladen",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.exported_path,"onUpdate:modelValue":e[3]||(e[3]=a=>t.updateConfiguration(a,"configuration.exported_path"))},{help:i(()=>e[8]||(e[8]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),o("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"])])}const U=m(h,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/bat.vue"]]);export{U as default}; +import{C as u}from"./HardwareInstallation-3a644290.js";import{_ as m,u as s,l as p,m as g,G as r,E as i,y as n,x as o}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceHttpBat",mixins:[u]},b={class:"device-http-bat"};function f(t,e,v,w,c,k){const d=s("openwb-base-heading"),l=s("openwb-base-text-input");return p(),g("div",b,[r(d,null,{default:i(()=>e[4]||(e[4]=[n(" Einstellungen für Http Batteriespeicher ")])),_:1}),r(l,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=a=>t.updateConfiguration(a,"configuration.power_path"))},{help:i(()=>e[5]||(e[5]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")])),_:1},8,["model-value"]),r(l,{title:"Pfad für Ladestand",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.soc_path,"onUpdate:modelValue":e[1]||(e[1]=a=>t.updateConfiguration(a,"configuration.soc_path"))},{help:i(()=>e[6]||(e[6]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen Ladestand (SoC) in Prozent darstellt. ")])),_:1},8,["model-value"]),r(l,{title:"Pfad für Zählerstand laden",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.imported_path,"onUpdate:modelValue":e[2]||(e[2]=a=>t.updateConfiguration(a,"configuration.imported_path"))},{help:i(()=>e[7]||(e[7]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt. ")])),_:1},8,["model-value"]),r(l,{title:"Pfad für Zählerstand entladen",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.exported_path,"onUpdate:modelValue":e[3]||(e[3]=a=>t.updateConfiguration(a,"configuration.exported_path"))},{help:i(()=>e[8]||(e[8]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),o("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"])])}const A=m(h,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/bat.vue"]]);export{A as default}; diff --git a/web/settings/assets/bat-8ecd087b.js b/web/settings/assets/bat-655f55cd.js similarity index 59% rename from web/settings/assets/bat-8ecd087b.js rename to web/settings/assets/bat-655f55cd.js index d4b9c81030..1a508d0927 100644 --- a/web/settings/assets/bat-8ecd087b.js +++ b/web/settings/assets/bat-655f55cd.js @@ -1 +1 @@ -import{C as r}from"./HardwareInstallation-727b5962.js";import{_ as m,u as t,l as p,m as l,G as n,E as u,B as d}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolarmaxBat",mixins:[r]},b={class:"device-solarmax-bat"};function _(o,e,f,x,v,g){const a=t("openwb-base-alert"),s=t("openwb-base-number-input");return p(),l("div",b,[n(a,{subtype:"info"},{default:u(()=>e[1]||(e[1]=[d(" Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher sind Teil eines Hybridsystems. Daher muss auch eine Komponente Wechselrichter angelegt werden. ")])),_:1}),n(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.modbus_id"))},null,8,["model-value"])])}const $=m(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/bat.vue"]]);export{$ as default}; +import{C as r}from"./HardwareInstallation-3a644290.js";import{_ as m,u as t,l as p,m as l,G as n,E as u,y as d}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolarmaxBat",mixins:[r]},b={class:"device-solarmax-bat"};function _(o,e,f,x,v,g){const a=t("openwb-base-alert"),s=t("openwb-base-number-input");return p(),l("div",b,[n(a,{subtype:"info"},{default:u(()=>e[1]||(e[1]=[d(" Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher sind Teil eines Hybridsystems. Daher muss auch eine Komponente Wechselrichter angelegt werden. ")])),_:1}),n(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.modbus_id"))},null,8,["model-value"])])}const T=m(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/bat.vue"]]);export{T as default}; diff --git a/web/settings/assets/bat-41f81d7c.js b/web/settings/assets/bat-6ae70208.js similarity index 64% rename from web/settings/assets/bat-41f81d7c.js rename to web/settings/assets/bat-6ae70208.js index 9feb974a3e..9801711104 100644 --- a/web/settings/assets/bat-41f81d7c.js +++ b/web/settings/assets/bat-6ae70208.js @@ -1 +1 @@ -import{C as s}from"./HardwareInstallation-727b5962.js";import{_ as p,u as n,l as m,m as d,G as t,E as l,B as u}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolaredgeBat",mixins:[s]},_={class:"device-solaredge-bat"};function b(o,e,f,g,v,w){const i=n("openwb-base-heading"),a=n("openwb-base-number-input");return m(),d("div",_,[t(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für SolarEdge Batteriespeicher ")])),_:1}),t(a,{title:"SolarEdge-Geräte-ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const D=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/bat.vue"]]);export{D as default}; +import{C as s}from"./HardwareInstallation-3a644290.js";import{_ as p,u as n,l as m,m as d,G as t,E as l,y as u}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolaredgeBat",mixins:[s]},_={class:"device-solaredge-bat"};function b(o,e,f,g,v,w){const i=n("openwb-base-heading"),a=n("openwb-base-number-input");return m(),d("div",_,[t(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für SolarEdge Batteriespeicher ")])),_:1}),t(a,{title:"SolarEdge-Geräte-ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const D=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/bat.vue"]]);export{D as default}; diff --git a/web/settings/assets/bat-161a0b3f.js b/web/settings/assets/bat-845b945a.js similarity index 63% rename from web/settings/assets/bat-161a0b3f.js rename to web/settings/assets/bat-845b945a.js index 4abd15edd5..a1a1765445 100644 --- a/web/settings/assets/bat-161a0b3f.js +++ b/web/settings/assets/bat-845b945a.js @@ -1 +1 @@ -import{C as r}from"./HardwareInstallation-727b5962.js";import{_ as p,u as n,l as m,m as u,G as t,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssBat",mixins:[r]},c={class:"device-fox_ess-bat"};function b(o,e,f,x,v,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für FoxEss Batteriespeicher ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const F=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/bat.vue"]]);export{F as default}; +import{C as r}from"./HardwareInstallation-3a644290.js";import{_ as p,u as n,l as m,m as u,G as t,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssBat",mixins:[r]},c={class:"device-fox_ess-bat"};function b(o,e,f,x,v,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für FoxEss Batteriespeicher ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const F=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/bat.vue"]]);export{F as default}; diff --git a/web/settings/assets/bat-b13c576b.js b/web/settings/assets/bat-8885d269.js similarity index 72% rename from web/settings/assets/bat-b13c576b.js rename to web/settings/assets/bat-8885d269.js index c6fbed4fd4..c291c02b75 100644 --- a/web/settings/assets/bat-b13c576b.js +++ b/web/settings/assets/bat-8885d269.js @@ -1 +1 @@ -import{C as l}from"./HardwareInstallation-727b5962.js";import{_ as r,u as t,l as u,m,G as i,E as d,B as b}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceOpenwbFlexBat",mixins:[l]},f={class:"device-openwb-flex-bat"};function _(o,e,v,w,g,x){const a=t("openwb-base-heading"),p=t("openwb-base-select-input"),s=t("openwb-base-number-input");return u(),m("div",f,[i(a,null,{default:d(()=>e[2]||(e[2]=[b(" Einstellungen für openWB-Flex Batteriespeicher ")])),_:1}),i(p,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":o.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(s,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":o.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const k=r(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/bat.vue"]]);export{k as default}; +import{C as l}from"./HardwareInstallation-3a644290.js";import{_ as r,u as t,l as u,m,G as i,E as d,y as b}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceOpenwbFlexBat",mixins:[l]},f={class:"device-openwb-flex-bat"};function _(o,e,v,w,g,x){const a=t("openwb-base-heading"),p=t("openwb-base-select-input"),s=t("openwb-base-number-input");return u(),m("div",f,[i(a,null,{default:d(()=>e[2]||(e[2]=[b(" Einstellungen für openWB-Flex Batteriespeicher ")])),_:1}),i(p,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":o.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(s,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":o.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const k=r(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/bat.vue"]]);export{k as default}; diff --git a/web/settings/assets/bat-500fac88.js b/web/settings/assets/bat-a09a1026.js similarity index 61% rename from web/settings/assets/bat-500fac88.js rename to web/settings/assets/bat-a09a1026.js index bb648458ce..524bf1954a 100644 --- a/web/settings/assets/bat-500fac88.js +++ b/web/settings/assets/bat-a09a1026.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as r,u as o,l,m,G as n,E as u,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbBatkitBat",mixins:[p]},_={class:"device-openwb-batkit-bat"};function b(t,e,f,v,w,B){const i=o("openwb-base-heading"),s=o("openwb-base-select-input");return l(),m("div",_,[n(i,null,{default:u(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Batteriespeicher ")])),_:1}),n(s,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=a=>t.updateConfiguration(a,"configuration.version"))},null,8,["model-value"])])}const $=r(d,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_bat_kit/bat.vue"]]);export{$ as default}; +import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as r,u as o,l,m,G as n,E as u,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbBatkitBat",mixins:[p]},_={class:"device-openwb-batkit-bat"};function b(t,e,f,v,w,g){const i=o("openwb-base-heading"),s=o("openwb-base-select-input");return l(),m("div",_,[n(i,null,{default:u(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Batteriespeicher ")])),_:1}),n(s,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=a=>t.updateConfiguration(a,"configuration.version"))},null,8,["model-value"])])}const $=r(d,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_bat_kit/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-b04f324c.js b/web/settings/assets/bat-b459c554.js similarity index 68% rename from web/settings/assets/bat-b04f324c.js rename to web/settings/assets/bat-b459c554.js index ab2c6293de..325ace8832 100644 --- a/web/settings/assets/bat-b04f324c.js +++ b/web/settings/assets/bat-b459c554.js @@ -1 +1 @@ -import{C as m}from"./HardwareInstallation-727b5962.js";import{_ as l,u as t,l as d,m as c,G as i,E as a,B as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceMTecBat",mixins:[m]},_={class:"device-mtec-bat"};function f(o,e,v,g,w,B){const p=t("openwb-base-heading"),r=t("openwb-base-select-input"),u=t("openwb-base-number-input");return d(),c("div",_,[i(p,null,{default:a(()=>e[2]||(e[2]=[s(" Einstellungen für M-Tec Batteriespeicher ")])),_:1}),i(r,{title:"Generation","not-selected":"Bitte auswählen",options:[{value:2,text:"Gen 2"},{value:3,text:"Gen 3"}],"model-value":o.component.configuration.generation,required:"","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.generation"))},null,8,["model-value"]),i(u,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},{help:a(()=>e[3]||(e[3]=[s(" Die Standard-Modbus-ID von M-Tec ist 247 ")])),_:1},8,["model-value"])])}const k=l(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/bat.vue"]]);export{k as default}; +import{C as m}from"./HardwareInstallation-3a644290.js";import{_ as l,u as t,l as d,m as c,G as i,E as a,y as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceMTecBat",mixins:[m]},_={class:"device-mtec-bat"};function f(o,e,v,g,w,C){const p=t("openwb-base-heading"),r=t("openwb-base-select-input"),u=t("openwb-base-number-input");return d(),c("div",_,[i(p,null,{default:a(()=>e[2]||(e[2]=[s(" Einstellungen für M-Tec Batteriespeicher ")])),_:1}),i(r,{title:"Generation","not-selected":"Bitte auswählen",options:[{value:2,text:"Gen 2"},{value:3,text:"Gen 3"}],"model-value":o.component.configuration.generation,required:"","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.generation"))},null,8,["model-value"]),i(u,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},{help:a(()=>e[3]||(e[3]=[s(" Die Standard-Modbus-ID von M-Tec ist 247 ")])),_:1},8,["model-value"])])}const k=l(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/bat.vue"]]);export{k as default}; diff --git a/web/settings/assets/bat-09618e87.js b/web/settings/assets/bat-ba97b9ec.js similarity index 64% rename from web/settings/assets/bat-09618e87.js rename to web/settings/assets/bat-ba97b9ec.js index 9efa71cca1..148d9b340b 100644 --- a/web/settings/assets/bat-09618e87.js +++ b/web/settings/assets/bat-ba97b9ec.js @@ -1 +1 @@ -import{C as s}from"./HardwareInstallation-727b5962.js";import{_ as m,u as t,l as p,m as u,G as n,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceHuaweiSmartLoggerBat",mixins:[s]},c={class:"device-huawei-smart-logger-bat"};function b(o,e,g,f,w,v){const i=t("openwb-base-heading"),a=t("openwb-base-number-input");return p(),u("div",c,[n(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Huawei SmartLogger Batteriespeicher ")])),_:1}),n(a,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const H=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/bat.vue"]]);export{H as default}; +import{C as s}from"./HardwareInstallation-3a644290.js";import{_ as m,u as t,l as p,m as u,G as n,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceHuaweiSmartLoggerBat",mixins:[s]},c={class:"device-huawei-smart-logger-bat"};function b(o,e,g,f,w,v){const i=t("openwb-base-heading"),a=t("openwb-base-number-input");return p(),u("div",c,[n(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Huawei SmartLogger Batteriespeicher ")])),_:1}),n(a,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const H=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/bat.vue"]]);export{H as default}; diff --git a/web/settings/assets/bat-177cd510.js b/web/settings/assets/bat-c05ee012.js similarity index 63% rename from web/settings/assets/bat-177cd510.js rename to web/settings/assets/bat-c05ee012.js index c2089edd1d..c675af9b17 100644 --- a/web/settings/assets/bat-177cd510.js +++ b/web/settings/assets/bat-c05ee012.js @@ -1 +1 @@ -import{C as a}from"./HardwareInstallation-727b5962.js";import{_ as p,u as t,l as m,m as u,G as n,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceStuderBat",mixins:[a]},_={class:"device-studer-bat"};function b(o,e,f,v,g,w){const i=t("openwb-base-heading"),s=t("openwb-base-number-input");return m(),u("div",_,[n(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Studer Batteriespeicher ")])),_:1}),n(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const M=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/bat.vue"]]);export{M as default}; +import{C as a}from"./HardwareInstallation-3a644290.js";import{_ as p,u as t,l as m,m as u,G as n,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceStuderBat",mixins:[a]},_={class:"device-studer-bat"};function b(o,e,f,v,g,w){const i=t("openwb-base-heading"),s=t("openwb-base-number-input");return m(),u("div",_,[n(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Studer Batteriespeicher ")])),_:1}),n(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const M=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/bat.vue"]]);export{M as default}; diff --git a/web/settings/assets/bat-386b6a71.js b/web/settings/assets/bat-d47d1fd1.js similarity index 64% rename from web/settings/assets/bat-386b6a71.js rename to web/settings/assets/bat-d47d1fd1.js index 2724333620..9f8d911b63 100644 --- a/web/settings/assets/bat-386b6a71.js +++ b/web/settings/assets/bat-d47d1fd1.js @@ -1 +1 @@ -import{C as r}from"./HardwareInstallation-727b5962.js";import{_ as p,u as o,l as m,m as u,G as t,E as l,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceFemsBat",mixins:[r]},f={class:"device-fems-bat"};function _(n,e,b,v,g,C){const i=o("openwb-base-heading"),s=o("openwb-base-number-input");return m(),u("div",f,[t(i,null,{default:l(()=>e[1]||(e[1]=[c(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control Batteriespeicher ")])),_:1}),t(s,{title:"Anzahl der verbauten Speicher",required:"",min:1,max:2,"model-value":n.component.configuration.num,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.num"))},null,8,["model-value"])])}const S=p(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/bat.vue"]]);export{S as default}; +import{C as r}from"./HardwareInstallation-3a644290.js";import{_ as p,u as o,l as m,m as u,G as t,E as l,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceFemsBat",mixins:[r]},f={class:"device-fems-bat"};function _(n,e,b,v,g,C){const i=o("openwb-base-heading"),s=o("openwb-base-number-input");return m(),u("div",f,[t(i,null,{default:l(()=>e[1]||(e[1]=[c(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control Batteriespeicher ")])),_:1}),t(s,{title:"Anzahl der verbauten Speicher",required:"",min:1,max:2,"model-value":n.component.configuration.num,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.num"))},null,8,["model-value"])])}const S=p(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/bat.vue"]]);export{S as default}; diff --git a/web/settings/assets/bat-575ac984.js b/web/settings/assets/bat-d9cdd38d.js similarity index 80% rename from web/settings/assets/bat-575ac984.js rename to web/settings/assets/bat-d9cdd38d.js index d6e729c26b..dd40013db3 100644 --- a/web/settings/assets/bat-575ac984.js +++ b/web/settings/assets/bat-d9cdd38d.js @@ -1 +1 @@ -import{C as d}from"./HardwareInstallation-727b5962.js";import{_ as u,u as l,l as p,m,G as o,E as a,B as r,A as g}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceJsonBat",mixins:[d]},b={class:"device-json-bat"};function w(t,e,v,j,q,_){const s=l("openwb-base-heading"),i=l("openwb-base-text-input");return p(),m("div",b,[o(s,null,{default:a(()=>e[4]||(e[4]=[r(" Einstellungen für JSON Batteriespeicher ")])),_:1}),o(i,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":t.component.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateConfiguration(n,"configuration.jq_power"))},{help:a(()=>e[5]||(e[5]=[r(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),g("br",null,null,-1),r(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt (positiv Ladung, negativ Entladung) darstellt. ")])),_:1},8,["model-value"]),o(i,{title:"Abfrage für Ladestand",subtype:"text",required:"","model-value":t.component.configuration.jq_soc,"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateConfiguration(n,"configuration.jq_soc"))},null,8,["model-value"]),o(i,{title:"Abfrage für Zählerstand Ladung",subtype:"text","model-value":t.component.configuration.jq_imported,"onUpdate:modelValue":e[2]||(e[2]=n=>t.updateConfiguration(n,"configuration.jq_imported"))},{help:a(()=>e[6]||(e[6]=[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"]),o(i,{title:"Abfrage für Zählerstand Entladung",subtype:"text","model-value":t.component.configuration.jq_exported,"onUpdate:modelValue":e[3]||(e[3]=n=>t.updateConfiguration(n,"configuration.jq_exported"))},{help:a(()=>e[7]||(e[7]=[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"])])}const Z=u(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/bat.vue"]]);export{Z as default}; +import{C as d}from"./HardwareInstallation-3a644290.js";import{_ as u,u as l,l as p,m,G as o,E as a,y as r,x as g}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceJsonBat",mixins:[d]},b={class:"device-json-bat"};function w(t,e,v,j,q,_){const s=l("openwb-base-heading"),i=l("openwb-base-text-input");return p(),m("div",b,[o(s,null,{default:a(()=>e[4]||(e[4]=[r(" Einstellungen für JSON Batteriespeicher ")])),_:1}),o(i,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":t.component.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateConfiguration(n,"configuration.jq_power"))},{help:a(()=>e[5]||(e[5]=[r(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),g("br",null,null,-1),r(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt (positiv Ladung, negativ Entladung) darstellt. ")])),_:1},8,["model-value"]),o(i,{title:"Abfrage für Ladestand",subtype:"text",required:"","model-value":t.component.configuration.jq_soc,"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateConfiguration(n,"configuration.jq_soc"))},null,8,["model-value"]),o(i,{title:"Abfrage für Zählerstand Ladung",subtype:"text","model-value":t.component.configuration.jq_imported,"onUpdate:modelValue":e[2]||(e[2]=n=>t.updateConfiguration(n,"configuration.jq_imported"))},{help:a(()=>e[6]||(e[6]=[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"]),o(i,{title:"Abfrage für Zählerstand Entladung",subtype:"text","model-value":t.component.configuration.jq_exported,"onUpdate:modelValue":e[3]||(e[3]=n=>t.updateConfiguration(n,"configuration.jq_exported"))},{help:a(()=>e[7]||(e[7]=[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"])])}const E=u(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/bat.vue"]]);export{E as default}; diff --git a/web/settings/assets/bat-8eeb809e.js b/web/settings/assets/bat-e36a210d.js similarity index 62% rename from web/settings/assets/bat-8eeb809e.js rename to web/settings/assets/bat-e36a210d.js index 28b4dfe262..e74c34bea1 100644 --- a/web/settings/assets/bat-8eeb809e.js +++ b/web/settings/assets/bat-e36a210d.js @@ -1 +1 @@ -import{C as r}from"./HardwareInstallation-727b5962.js";import{_ as p,u as n,l as m,m as d,G as t,E as u,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDeyeBat",mixins:[r]},_={class:"device-deye-bat"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),d("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[l(" Einstellungen für Deye Batteriespeicher ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const k=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/bat.vue"]]);export{k as default}; +import{C as r}from"./HardwareInstallation-3a644290.js";import{_ as p,u as n,l as m,m as d,G as t,E as u,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDeyeBat",mixins:[r]},_={class:"device-deye-bat"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),d("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[l(" Einstellungen für Deye Batteriespeicher ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const k=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/bat.vue"]]);export{k as default}; diff --git a/web/settings/assets/bat_smart_energy-99926987.js b/web/settings/assets/bat_smart_energy-8db62ce9.js similarity index 59% rename from web/settings/assets/bat_smart_energy-99926987.js rename to web/settings/assets/bat_smart_energy-8db62ce9.js index a2089a8bf2..14fb6601f1 100644 --- a/web/settings/assets/bat_smart_energy-99926987.js +++ b/web/settings/assets/bat_smart_energy-8db62ce9.js @@ -1 +1 @@ -import{C as a}from"./HardwareInstallation-727b5962.js";import{_ as m,u as o,l as p,m as u,G as t,E as d,B as _}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceSunnyBoyBatSmartEnergy",mixins:[a]},b={class:"device-sunnyboy-bat-smart-energy"};function c(n,e,f,g,y,v){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return p(),u("div",b,[t(s,null,{default:d(()=>e[1]||(e[1]=[_(" Einstellungen für SMA Sunny Boy Smart Energy Batteriespeicher ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.modbus_id"))},null,8,["model-value"])])}const h=m(l,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/bat_smart_energy.vue"]]);export{h as default}; +import{C as a}from"./HardwareInstallation-3a644290.js";import{_ as m,u as o,l as p,m as u,G as t,E as d,y as _}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceSunnyBoyBatSmartEnergy",mixins:[a]},b={class:"device-sunnyboy-bat-smart-energy"};function c(n,e,f,y,g,v){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return p(),u("div",b,[t(s,null,{default:d(()=>e[1]||(e[1]=[_(" Einstellungen für SMA Sunny Boy Smart Energy Batteriespeicher ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.modbus_id"))},null,8,["model-value"])])}const h=m(l,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/bat_smart_energy.vue"]]);export{h as default}; diff --git a/web/settings/assets/chargePoint-5487f7d8.js b/web/settings/assets/chargePoint-542a9664.js similarity index 59% rename from web/settings/assets/chargePoint-5487f7d8.js rename to web/settings/assets/chargePoint-542a9664.js index ab8f91e93a..fd01051cd1 100644 --- a/web/settings/assets/chargePoint-5487f7d8.js +++ b/web/settings/assets/chargePoint-542a9664.js @@ -1 +1 @@ -import{C as r}from"./ChargePointInstallation-7e51ce35.js";import{_ as i,u as p,l as s,m as a,G as m}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"ChargePointOpenwbPro",mixins:[r]},d={class:"charge-point-openwb-pro"};function u(o,e,_,l,f,g){const t=p("openwb-base-text-input");return s(),a("div",d,[m(t,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])])}const k=i(c,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/chargePoint.vue"]]);export{k as default}; +import{C as r}from"./ChargePointInstallation-408ee2ed.js";import{_ as i,u as p,l as s,m as a,G as m}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"ChargePointOpenwbPro",mixins:[r]},d={class:"charge-point-openwb-pro"};function u(o,e,_,l,f,g){const t=p("openwb-base-text-input");return s(),a("div",d,[m(t,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])])}const k=i(c,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/chargePoint.vue"]]);export{k as default}; diff --git a/web/settings/assets/chargePoint-f1ddcbb4.js b/web/settings/assets/chargePoint-6c271d6b.js similarity index 72% rename from web/settings/assets/chargePoint-f1ddcbb4.js rename to web/settings/assets/chargePoint-6c271d6b.js index 034d1d37ec..b93abebe53 100644 --- a/web/settings/assets/chargePoint-f1ddcbb4.js +++ b/web/settings/assets/chargePoint-6c271d6b.js @@ -1 +1 @@ -import{C as p}from"./ChargePointInstallation-7e51ce35.js";import{_ as s,u as t,l as u,m,G as i,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"ChargePointExternalOpenwb",mixins:[p]},c={class:"charge-point-external-openwb"};function g(n,e,b,f,h,w){const r=t("openwb-base-text-input"),a=t("openwb-base-number-input");return u(),m("div",c,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":n.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o-1,"configuration.duo_num"))},{help:d(()=>e[2]||(e[2]=[l(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')])),_:1},8,["model-value"])])}const E=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/external_openwb/chargePoint.vue"]]);export{E as default}; +import{C as p}from"./ChargePointInstallation-408ee2ed.js";import{_ as s,u as t,l as u,m,G as i,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"ChargePointExternalOpenwb",mixins:[p]},c={class:"charge-point-external-openwb"};function g(n,e,b,f,h,w){const r=t("openwb-base-text-input"),a=t("openwb-base-number-input");return u(),m("div",c,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":n.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o-1,"configuration.duo_num"))},{help:d(()=>e[2]||(e[2]=[l(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')])),_:1},8,["model-value"])])}const E=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/external_openwb/chargePoint.vue"]]);export{E as default}; diff --git a/web/settings/assets/chargePoint-3eb75766.js b/web/settings/assets/chargePoint-776647d8.js similarity index 94% rename from web/settings/assets/chargePoint-3eb75766.js rename to web/settings/assets/chargePoint-776647d8.js index 100f0103ee..21a3d8e3c2 100644 --- a/web/settings/assets/chargePoint-3eb75766.js +++ b/web/settings/assets/chargePoint-776647d8.js @@ -1 +1 @@ -import{C as d}from"./ChargePointInstallation-7e51ce35.js";import{_ as g,u,l as a,m,G as e,E as i,B as t,A as l,F as r}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"ChargePointMqtt",mixins:[d]},b={class:"charge-point-mqtt"};function k(o,n,B,v,w,W){const p=u("openwb-base-alert"),s=u("openwb-base-copy-to-clipboard");return a(),m("div",b,[e(p,{subtype:"danger"},{default:i(()=>n[0]||(n[0]=[t(" Dieser Ladepunkt-Typ darf nur in Kombination mit dem Simulator zur Fehleranalyse genutzt werden. Eine andere Verwendung ist laut den Nutzungsbedingungen untersagt. ")])),_:1}),e(p,{subtype:"info"},{default:i(()=>[n[72]||(n[72]=t(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten von speziellen Topics im Broker gelesen bzw. geschrieben werden.")),n[73]||(n[73]=l("br",null,null,-1)),n[74]||(n[74]=t(" Alle Daten werden als gültiges JSON gesendet und auch so erwartet! Zahlen mit Nachkommastellen (Float) verwenden einen Punkt als Dezimaltrenner (internationales Format). ")),l("ol",null,[l("li",null,[n[11]||(n[11]=t(" von openWB gesendete Topics ")),l("ul",null,[l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/chargepoint/"+r(o.chargePoint.id)+"/set/current ",1)]),_:1}),n[1]||(n[1]=l("br",null,null,-1)),n[2]||(n[2]=t(" Sollwert des Ladestroms, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt).")),n[3]||(n[3]=l("br",null,null,-1)),n[4]||(n[4]=t(" Beispiel: ")),n[5]||(n[5]=l("span",{class:"text-info"},"12.34",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/chargepoint/"+r(o.chargePoint.id)+"/set/phases_to_use ",1)]),_:1}),n[6]||(n[6]=l("br",null,null,-1)),n[7]||(n[7]=t(" Sollwert für die Anzahl Phasen als Ganzzahl (Integer). Mögliche Werte: 1 oder 3")),n[8]||(n[8]=l("br",null,null,-1)),n[9]||(n[9]=t(" Beispiel: ")),n[10]||(n[10]=l("span",{class:"text-info"},"1",-1))])])]),l("li",null,[n[37]||(n[37]=t(" von openWB zwingend erwartete Topics ")),l("ul",null,[l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/currents ",1)]),_:1}),n[12]||(n[12]=l("br",null,null,-1)),n[13]||(n[13]=t(" Aktuelle Phasenströme des Ladepunktes, Array mit drei Zahlen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt).")),n[14]||(n[14]=l("br",null,null,-1)),n[15]||(n[15]=t(" Beispiel: ")),n[16]||(n[16]=l("span",{class:"text-info"},"[6.78,6.89,6.94]",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/power ",1)]),_:1}),n[17]||(n[17]=l("br",null,null,-1)),n[18]||(n[18]=t(" Leistung in Watt, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt).")),n[19]||(n[19]=l("br",null,null,-1)),n[20]||(n[20]=t(" Beispiel: ")),n[21]||(n[21]=l("span",{class:"text-info"},"123.45",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/plug_state ",1)]),_:1}),n[22]||(n[22]=l("br",null,null,-1)),n[23]||(n[23]=t(" Zeigt an, ob aktuell ein Fahrzeug angesteckt ist, Wahrheitswert (Bool).")),n[24]||(n[24]=l("br",null,null,-1)),n[25]||(n[25]=t(" Beispiel: ")),n[26]||(n[26]=l("span",{class:"text-info"},"true",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/charge_state ",1)]),_:1}),n[27]||(n[27]=l("br",null,null,-1)),n[28]||(n[28]=t(" Zeigt an, ob ein Ladevorgang aktiv ist, Wahrheitswert (Bool).")),n[29]||(n[29]=l("br",null,null,-1)),n[30]||(n[30]=t(" Beispiel: ")),n[31]||(n[31]=l("span",{class:"text-info"},"true",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/phases_in_use ",1)]),_:1}),n[32]||(n[32]=l("br",null,null,-1)),n[33]||(n[33]=t(" Anzahl der Phasen, mit denen geladen wird, Ganzzahl (Integer). Mögliche Werte: 0 bis 3")),n[34]||(n[34]=l("br",null,null,-1)),n[35]||(n[35]=t(" Beispiel: ")),n[36]||(n[36]=l("span",{class:"text-info"},"3",-1))])])]),l("li",null,[n[71]||(n[71]=t(" optionale Topics ")),l("ul",null,[l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/imported ",1)]),_:1}),n[38]||(n[38]=l("br",null,null,-1)),n[39]||(n[39]=t(" Geladene Energie in Wh, mit Nachkommastellen (Float), nur positiv")),n[40]||(n[40]=l("br",null,null,-1)),n[41]||(n[41]=t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert.")),n[42]||(n[42]=l("br",null,null,-1)),n[43]||(n[43]=t(" Beispiel: ")),n[44]||(n[44]=l("span",{class:"text-info"},"123.45",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/exported ",1)]),_:1}),n[45]||(n[45]=l("br",null,null,-1)),n[46]||(n[46]=t(" Entladene Energie in Wh, mit Nachkommastellen (Float), nur positiv")),n[47]||(n[47]=l("br",null,null,-1)),n[48]||(n[48]=t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert.")),n[49]||(n[49]=l("br",null,null,-1)),n[50]||(n[50]=t(" Beispiel: ")),n[51]||(n[51]=l("span",{class:"text-info"},"123.45",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/voltages ",1)]),_:1}),n[52]||(n[52]=l("br",null,null,-1)),n[53]||(n[53]=t(" Aktuelle Phasenspannungen des Ladepunktes, Array mit drei Zahlen (Float), nur positiv.")),n[54]||(n[54]=l("br",null,null,-1)),n[55]||(n[55]=t(" Die Spannungen werden nicht verarbeitet, sondern lediglich im Status angezeigt.")),n[56]||(n[56]=l("br",null,null,-1)),n[57]||(n[57]=t(" Beispiel: ")),n[58]||(n[58]=l("span",{class:"text-info"},"[230.12,231.08,232.54]",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/power_factors ",1)]),_:1}),n[59]||(n[59]=l("br",null,null,-1)),n[60]||(n[60]=t(" Aktuelle Leistungsfaktoren des Ladepunktes, Array mit drei Zahlen (Float), Wertebereich von -1 bis 1.")),n[61]||(n[61]=l("br",null,null,-1)),n[62]||(n[62]=t(" Die Leistungsfaktoren werden nicht verarbeitet, sondern lediglich im Status angezeigt.")),n[63]||(n[63]=l("br",null,null,-1)),n[64]||(n[64]=t(" Beispiel: ")),n[65]||(n[65]=l("span",{class:"text-info"},"[-0.87,0.96,1.0]",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/rfid_tag ",1)]),_:1}),n[66]||(n[66]=l("br",null,null,-1)),n[67]||(n[67]=t(" Eine Zeichenfolge, die einen eingelesenen Tag für openWB repräsentiert.")),n[68]||(n[68]=l("br",null,null,-1)),n[69]||(n[69]=t(" Beispiel: ")),n[70]||(n[70]=l("span",{class:"text-info"},'"123654"',-1))])])])])]),_:1})])}const Z=g(f,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/mqtt/chargePoint.vue"]]);export{Z as default}; +import{C as d}from"./ChargePointInstallation-408ee2ed.js";import{_ as g,u,l as a,m,G as e,E as i,y as t,x as l,F as r}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"ChargePointMqtt",mixins:[d]},b={class:"charge-point-mqtt"};function k(o,n,B,v,w,W){const p=u("openwb-base-alert"),s=u("openwb-base-copy-to-clipboard");return a(),m("div",b,[e(p,{subtype:"danger"},{default:i(()=>n[0]||(n[0]=[t(" Dieser Ladepunkt-Typ darf nur in Kombination mit dem Simulator zur Fehleranalyse genutzt werden. Eine andere Verwendung ist laut den Nutzungsbedingungen untersagt. ")])),_:1}),e(p,{subtype:"info"},{default:i(()=>[n[72]||(n[72]=t(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten von speziellen Topics im Broker gelesen bzw. geschrieben werden.")),n[73]||(n[73]=l("br",null,null,-1)),n[74]||(n[74]=t(" Alle Daten werden als gültiges JSON gesendet und auch so erwartet! Zahlen mit Nachkommastellen (Float) verwenden einen Punkt als Dezimaltrenner (internationales Format). ")),l("ol",null,[l("li",null,[n[11]||(n[11]=t(" von openWB gesendete Topics ")),l("ul",null,[l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/chargepoint/"+r(o.chargePoint.id)+"/set/current ",1)]),_:1}),n[1]||(n[1]=l("br",null,null,-1)),n[2]||(n[2]=t(" Sollwert des Ladestroms, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt).")),n[3]||(n[3]=l("br",null,null,-1)),n[4]||(n[4]=t(" Beispiel: ")),n[5]||(n[5]=l("span",{class:"text-info"},"12.34",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/chargepoint/"+r(o.chargePoint.id)+"/set/phases_to_use ",1)]),_:1}),n[6]||(n[6]=l("br",null,null,-1)),n[7]||(n[7]=t(" Sollwert für die Anzahl Phasen als Ganzzahl (Integer). Mögliche Werte: 1 oder 3")),n[8]||(n[8]=l("br",null,null,-1)),n[9]||(n[9]=t(" Beispiel: ")),n[10]||(n[10]=l("span",{class:"text-info"},"1",-1))])])]),l("li",null,[n[37]||(n[37]=t(" von openWB zwingend erwartete Topics ")),l("ul",null,[l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/currents ",1)]),_:1}),n[12]||(n[12]=l("br",null,null,-1)),n[13]||(n[13]=t(" Aktuelle Phasenströme des Ladepunktes, Array mit drei Zahlen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt).")),n[14]||(n[14]=l("br",null,null,-1)),n[15]||(n[15]=t(" Beispiel: ")),n[16]||(n[16]=l("span",{class:"text-info"},"[6.78,6.89,6.94]",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/power ",1)]),_:1}),n[17]||(n[17]=l("br",null,null,-1)),n[18]||(n[18]=t(" Leistung in Watt, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt).")),n[19]||(n[19]=l("br",null,null,-1)),n[20]||(n[20]=t(" Beispiel: ")),n[21]||(n[21]=l("span",{class:"text-info"},"123.45",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/plug_state ",1)]),_:1}),n[22]||(n[22]=l("br",null,null,-1)),n[23]||(n[23]=t(" Zeigt an, ob aktuell ein Fahrzeug angesteckt ist, Wahrheitswert (Bool).")),n[24]||(n[24]=l("br",null,null,-1)),n[25]||(n[25]=t(" Beispiel: ")),n[26]||(n[26]=l("span",{class:"text-info"},"true",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/charge_state ",1)]),_:1}),n[27]||(n[27]=l("br",null,null,-1)),n[28]||(n[28]=t(" Zeigt an, ob ein Ladevorgang aktiv ist, Wahrheitswert (Bool).")),n[29]||(n[29]=l("br",null,null,-1)),n[30]||(n[30]=t(" Beispiel: ")),n[31]||(n[31]=l("span",{class:"text-info"},"true",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/phases_in_use ",1)]),_:1}),n[32]||(n[32]=l("br",null,null,-1)),n[33]||(n[33]=t(" Anzahl der Phasen, mit denen geladen wird, Ganzzahl (Integer). Mögliche Werte: 0 bis 3")),n[34]||(n[34]=l("br",null,null,-1)),n[35]||(n[35]=t(" Beispiel: ")),n[36]||(n[36]=l("span",{class:"text-info"},"3",-1))])])]),l("li",null,[n[71]||(n[71]=t(" optionale Topics ")),l("ul",null,[l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/imported ",1)]),_:1}),n[38]||(n[38]=l("br",null,null,-1)),n[39]||(n[39]=t(" Geladene Energie in Wh, mit Nachkommastellen (Float), nur positiv")),n[40]||(n[40]=l("br",null,null,-1)),n[41]||(n[41]=t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert.")),n[42]||(n[42]=l("br",null,null,-1)),n[43]||(n[43]=t(" Beispiel: ")),n[44]||(n[44]=l("span",{class:"text-info"},"123.45",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/exported ",1)]),_:1}),n[45]||(n[45]=l("br",null,null,-1)),n[46]||(n[46]=t(" Entladene Energie in Wh, mit Nachkommastellen (Float), nur positiv")),n[47]||(n[47]=l("br",null,null,-1)),n[48]||(n[48]=t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert.")),n[49]||(n[49]=l("br",null,null,-1)),n[50]||(n[50]=t(" Beispiel: ")),n[51]||(n[51]=l("span",{class:"text-info"},"123.45",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/voltages ",1)]),_:1}),n[52]||(n[52]=l("br",null,null,-1)),n[53]||(n[53]=t(" Aktuelle Phasenspannungen des Ladepunktes, Array mit drei Zahlen (Float), nur positiv.")),n[54]||(n[54]=l("br",null,null,-1)),n[55]||(n[55]=t(" Die Spannungen werden nicht verarbeitet, sondern lediglich im Status angezeigt.")),n[56]||(n[56]=l("br",null,null,-1)),n[57]||(n[57]=t(" Beispiel: ")),n[58]||(n[58]=l("span",{class:"text-info"},"[230.12,231.08,232.54]",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/power_factors ",1)]),_:1}),n[59]||(n[59]=l("br",null,null,-1)),n[60]||(n[60]=t(" Aktuelle Leistungsfaktoren des Ladepunktes, Array mit drei Zahlen (Float), Wertebereich von -1 bis 1.")),n[61]||(n[61]=l("br",null,null,-1)),n[62]||(n[62]=t(" Die Leistungsfaktoren werden nicht verarbeitet, sondern lediglich im Status angezeigt.")),n[63]||(n[63]=l("br",null,null,-1)),n[64]||(n[64]=t(" Beispiel: ")),n[65]||(n[65]=l("span",{class:"text-info"},"[-0.87,0.96,1.0]",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/rfid_tag ",1)]),_:1}),n[66]||(n[66]=l("br",null,null,-1)),n[67]||(n[67]=t(" Eine Zeichenfolge, die einen eingelesenen Tag für openWB repräsentiert.")),n[68]||(n[68]=l("br",null,null,-1)),n[69]||(n[69]=t(" Beispiel: ")),n[70]||(n[70]=l("span",{class:"text-info"},'"123654"',-1))])])])])]),_:1})])}const Z=g(f,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/mqtt/chargePoint.vue"]]);export{Z as default}; diff --git a/web/settings/assets/chargePoint-57970a5b.js b/web/settings/assets/chargePoint-84c8e28d.js similarity index 59% rename from web/settings/assets/chargePoint-57970a5b.js rename to web/settings/assets/chargePoint-84c8e28d.js index 69fd6a2611..c5b6042550 100644 --- a/web/settings/assets/chargePoint-57970a5b.js +++ b/web/settings/assets/chargePoint-84c8e28d.js @@ -1 +1 @@ -import{C as r}from"./ChargePointInstallation-7e51ce35.js";import{_ as i,u as a,l as p,m as s,G as d}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"ChargePointOpenwbDcAdapter",mixins:[r]},m={class:"charge-point-openwb-dc-adapter"};function u(e,o,_,l,f,g){const t=a("openwb-base-text-input");return p(),s("div",m,[d(t,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.chargePoint.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])])}const k=i(c,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_dc_adapter/chargePoint.vue"]]);export{k as default}; +import{C as r}from"./ChargePointInstallation-408ee2ed.js";import{_ as i,u as a,l as p,m as s,G as d}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"ChargePointOpenwbDcAdapter",mixins:[r]},m={class:"charge-point-openwb-dc-adapter"};function u(e,o,_,l,f,g){const t=a("openwb-base-text-input");return p(),s("div",m,[d(t,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.chargePoint.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])])}const k=i(c,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_dc_adapter/chargePoint.vue"]]);export{k as default}; diff --git a/web/settings/assets/chargePoint-e13a3df6.js b/web/settings/assets/chargePoint-ba464cf4.js similarity index 78% rename from web/settings/assets/chargePoint-e13a3df6.js rename to web/settings/assets/chargePoint-ba464cf4.js index afc7da719c..442109b406 100644 --- a/web/settings/assets/chargePoint-e13a3df6.js +++ b/web/settings/assets/chargePoint-ba464cf4.js @@ -1 +1 @@ -import{C as u}from"./ChargePointInstallation-7e51ce35.js";import{_ as p,u as t,l as i,m as d,G as m,x as l,E as c,B as g,z as _}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"ChargePointInternalOpenwb",mixins:[u],methods:{updateMode(e){["series","socket","pro_plus"].includes(e)&&this.updateConfiguration(0,"configuration.duo_num"),this.updateConfiguration(e,"configuration.mode")}}},b={class:"charge-point-internal-openwb"};function h(e,o,B,v,w,a){const r=t("openwb-base-select-input"),s=t("openwb-base-number-input");return i(),d("div",b,[m(r,{title:"Bauart","not-selected":"Bitte auswählen",required:"",options:[{value:"series",text:"openWB series1/2 in den Varianten custom, standard & standard+"},{value:"duo",text:"openWB series1/2 Duo"},{value:"socket",text:"openWB series1/2 Buchse"},{value:"pro_plus",text:"openWB Pro+"}],"model-value":e.chargePoint.configuration.mode,"onUpdate:modelValue":o[0]||(o[0]=n=>a.updateMode(n))},null,8,["model-value"]),e.chargePoint.configuration.mode=="duo"?(i(),l(s,{key:0,title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":e.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n-1,"configuration.duo_num"))},{help:c(()=>o[2]||(o[2]=[g(' Bei einer openWB Duo können mit "1" oder "2" die beiden enthaltenen Ladepunkte angesprochen werden. ')])),_:1},8,["model-value"])):_("",!0)])}const q=p(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/internal_openwb/chargePoint.vue"]]);export{q as default}; +import{C as u}from"./ChargePointInstallation-408ee2ed.js";import{_ as p,u as t,l as i,m as d,G as m,z as l,E as c,y as g,B as _}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"ChargePointInternalOpenwb",mixins:[u],methods:{updateMode(e){["series","socket","pro_plus"].includes(e)&&this.updateConfiguration(0,"configuration.duo_num"),this.updateConfiguration(e,"configuration.mode")}}},b={class:"charge-point-internal-openwb"};function h(e,o,B,v,w,a){const r=t("openwb-base-select-input"),s=t("openwb-base-number-input");return i(),d("div",b,[m(r,{title:"Bauart","not-selected":"Bitte auswählen",required:"",options:[{value:"series",text:"openWB series1/2 in den Varianten custom, standard & standard+"},{value:"duo",text:"openWB series1/2 Duo"},{value:"socket",text:"openWB series1/2 Buchse"},{value:"pro_plus",text:"openWB Pro+"}],"model-value":e.chargePoint.configuration.mode,"onUpdate:modelValue":o[0]||(o[0]=n=>a.updateMode(n))},null,8,["model-value"]),e.chargePoint.configuration.mode=="duo"?(i(),l(s,{key:0,title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":e.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n-1,"configuration.duo_num"))},{help:c(()=>o[2]||(o[2]=[g(' Bei einer openWB Duo können mit "1" oder "2" die beiden enthaltenen Ladepunkte angesprochen werden. ')])),_:1},8,["model-value"])):_("",!0)])}const q=p(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/internal_openwb/chargePoint.vue"]]);export{q as default}; diff --git a/web/settings/assets/chargePoint-d73403a3.js b/web/settings/assets/chargePoint-e230a14a.js similarity index 72% rename from web/settings/assets/chargePoint-d73403a3.js rename to web/settings/assets/chargePoint-e230a14a.js index e133a1f5b8..6a1bf1e57e 100644 --- a/web/settings/assets/chargePoint-d73403a3.js +++ b/web/settings/assets/chargePoint-e230a14a.js @@ -1 +1 @@ -import{C as s}from"./ChargePointInstallation-7e51ce35.js";import{_ as p,u as n,l as u,m,G as i,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const g={name:"ChargePointSmartwb",mixins:[s]},b={class:"charge-point-smartwb"};function c(t,e,f,_,w,v){const r=n("openwb-base-text-input"),a=n("openwb-base-number-input");return u(),m("div",b,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Wartezeit",required:"",min:2,max:10,unit:"s","model-value":t.chargePoint.configuration.timeout,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.timeout"))},{help:d(()=>e[2]||(e[2]=[l(" Zeitangabe in Sekunden, für die auf eine Antwort des Ladepunktes gewartet wird. Wird diese Zeit überschritten, so wird von einer Kommunikationsstörung ausgegangen. ")])),_:1},8,["model-value"])])}const q=p(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/smartwb/chargePoint.vue"]]);export{q as default}; +import{C as s}from"./ChargePointInstallation-408ee2ed.js";import{_ as p,u as n,l as u,m,G as i,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const g={name:"ChargePointSmartwb",mixins:[s]},b={class:"charge-point-smartwb"};function c(t,e,f,_,w,v){const r=n("openwb-base-text-input"),a=n("openwb-base-number-input");return u(),m("div",b,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Wartezeit",required:"",min:2,max:10,unit:"s","model-value":t.chargePoint.configuration.timeout,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.timeout"))},{help:d(()=>e[2]||(e[2]=[l(" Zeitangabe in Sekunden, für die auf eine Antwort des Ladepunktes gewartet wird. Wird diese Zeit überschritten, so wird von einer Kommunikationsstörung ausgegangen. ")])),_:1},8,["model-value"])])}const q=p(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/smartwb/chargePoint.vue"]]);export{q as default}; diff --git a/web/settings/assets/chargePoint-61378497.js b/web/settings/assets/chargePoint-f16b10ce.js similarity index 72% rename from web/settings/assets/chargePoint-61378497.js rename to web/settings/assets/chargePoint-f16b10ce.js index bfbd9c5f7c..16b19b1b18 100644 --- a/web/settings/assets/chargePoint-61378497.js +++ b/web/settings/assets/chargePoint-f16b10ce.js @@ -1 +1 @@ -import{C as p}from"./ChargePointInstallation-7e51ce35.js";import{_ as s,u as t,l as u,m,G as i,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"ChargePointSatellite",mixins:[p]},c={class:"charge-point-openwb-satellite"};function g(n,e,f,b,h,w){const r=t("openwb-base-text-input"),a=t("openwb-base-number-input");return u(),m("div",c,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":n.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o-1,"configuration.duo_num"))},{help:d(()=>e[2]||(e[2]=[l(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')])),_:1},8,["model-value"])])}const N=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_series2_satellit/chargePoint.vue"]]);export{N as default}; +import{C as p}from"./ChargePointInstallation-408ee2ed.js";import{_ as s,u as t,l as u,m,G as i,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"ChargePointSatellite",mixins:[p]},c={class:"charge-point-openwb-satellite"};function g(n,e,f,b,h,w){const r=t("openwb-base-text-input"),a=t("openwb-base-number-input");return u(),m("div",c,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":n.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o-1,"configuration.duo_num"))},{help:d(()=>e[2]||(e[2]=[l(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')])),_:1},8,["model-value"])])}const N=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_series2_satellit/chargePoint.vue"]]);export{N as default}; diff --git a/web/settings/assets/commands-f10e74ce.js b/web/settings/assets/commands-38fd7ea5.js similarity index 86% rename from web/settings/assets/commands-f10e74ce.js rename to web/settings/assets/commands-38fd7ea5.js index 046663f8e2..a5a40be55b 100644 --- a/web/settings/assets/commands-f10e74ce.js +++ b/web/settings/assets/commands-38fd7ea5.js @@ -1 +1 @@ -import{a as g}from"./ChargePointInstallation-7e51ce35.js";import{_ as h,u,l as a,m as c,G as d,E as r,B as i,x as _,F as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"ChargePointCommandsInternalOpenwb",mixins:[g],computed:{mode(){switch(this.chargePoint.configuration.mode){case"series":return"openWB series1/2 custom, standard & standard+";case"duo":return"openWB series1/2 Duo";case"socket":return"openWB series1/2 Buchse";case"pro_plus":return"openWB Pro+";default:return this.chargePoint.configuration.mode}}},methods:{async triggerUpdate(){let n=new FormData;n.append("command","update_pro_plus");const t="Die Aktualisierung der openWB Pro+ wird gestartet...";this.$root.postClientMessage(t,"info"),console.debug(location),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/charge_points/internal_openwb/commands.php",n,{timeout:5e3}).then(()=>{const e="Die Aktualisierung der openWB Pro+ wurde erfolgreich gestartet.";this.$root.postClientMessage(e,"success")}).catch(e=>{var s="Aktualisierung fehlgeschlagen!
";e.response?(console.error(e.response.status,e.response.data),s+=e.response.status+": "+e.response.data):e.request?(console.error(e.request),s+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",e.message),s+="Es ist ein unbekannter Fehler aufgetreten."),this.$root.postClientMessage(s,"danger")})},openSettings(){window.open("http://"+location.hostname+":8080","_blank")}}},b={class:"charge-point-commands-internal-openwb"},k={key:0};function B(n,t,e,s,w,o){const p=u("openwb-base-button-input"),m=u("openwb-base-alert");return a(),c("div",b,[n.chargePoint.configuration.mode=="pro_plus"?(a(),c("div",k,[d(p,{title:"Ladepunkt aktualisieren","button-text":"Update anfordern",subtype:"success",onButtonClicked:o.triggerUpdate},{help:r(()=>t[0]||(t[0]=[i(" Hier können Sie die Aktualisierung der openWB Pro anstoßen. Bitte stellen Sie sicher, dass kein Fahrzeug angesteckt ist. ")])),_:1},8,["onButtonClicked"]),d(p,{title:"Einstellungen öffnen","button-text":"Zu den Einstellungen",subtype:"success",onButtonClicked:o.openSettings},{help:r(()=>t[1]||(t[1]=[i(" Mit diesem Befehl können Sie die Einstellungen der openWB Pro in einem neuen Browser-Tab oder -Fenster öffnen. ")])),_:1},8,["onButtonClicked"])])):(a(),_(m,{key:1,subtype:"secondary"},{default:r(()=>[i(' Der Ladepunkt-Typ "'+l(n.chargePoint.type)+'" bietet für die Bauart "'+l(o.mode)+'" keine Befehle an. ',1)]),_:1}))])}const S=h(f,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/internal_openwb/commands.vue"]]);export{S as default}; +import{a as g}from"./ChargePointInstallation-408ee2ed.js";import{_ as h,u,l as a,m as c,G as d,E as r,y as i,z as _,F as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"ChargePointCommandsInternalOpenwb",mixins:[g],computed:{mode(){switch(this.chargePoint.configuration.mode){case"series":return"openWB series1/2 custom, standard & standard+";case"duo":return"openWB series1/2 Duo";case"socket":return"openWB series1/2 Buchse";case"pro_plus":return"openWB Pro+";default:return this.chargePoint.configuration.mode}}},methods:{async triggerUpdate(){let n=new FormData;n.append("command","update_pro_plus");const t="Die Aktualisierung der openWB Pro+ wird gestartet...";this.$root.postClientMessage(t,"info"),console.debug(location),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/charge_points/internal_openwb/commands.php",n,{timeout:5e3}).then(()=>{const e="Die Aktualisierung der openWB Pro+ wurde erfolgreich gestartet.";this.$root.postClientMessage(e,"success")}).catch(e=>{var s="Aktualisierung fehlgeschlagen!
";e.response?(console.error(e.response.status,e.response.data),s+=e.response.status+": "+e.response.data):e.request?(console.error(e.request),s+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",e.message),s+="Es ist ein unbekannter Fehler aufgetreten."),this.$root.postClientMessage(s,"danger")})},openSettings(){window.open("http://"+location.hostname+":8080","_blank")}}},b={class:"charge-point-commands-internal-openwb"},k={key:0};function B(n,t,e,s,w,o){const p=u("openwb-base-button-input"),m=u("openwb-base-alert");return a(),c("div",b,[n.chargePoint.configuration.mode=="pro_plus"?(a(),c("div",k,[d(p,{title:"Ladepunkt aktualisieren","button-text":"Update anfordern",subtype:"success",onButtonClicked:o.triggerUpdate},{help:r(()=>t[0]||(t[0]=[i(" Hier können Sie die Aktualisierung der openWB Pro anstoßen. Bitte stellen Sie sicher, dass kein Fahrzeug angesteckt ist. ")])),_:1},8,["onButtonClicked"]),d(p,{title:"Einstellungen öffnen","button-text":"Zu den Einstellungen",subtype:"success",onButtonClicked:o.openSettings},{help:r(()=>t[1]||(t[1]=[i(" Mit diesem Befehl können Sie die Einstellungen der openWB Pro in einem neuen Browser-Tab oder -Fenster öffnen. ")])),_:1},8,["onButtonClicked"])])):(a(),_(m,{key:1,subtype:"secondary"},{default:r(()=>[i(' Der Ladepunkt-Typ "'+l(n.chargePoint.type)+'" bietet für die Bauart "'+l(o.mode)+'" keine Befehle an. ',1)]),_:1}))])}const S=h(f,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/internal_openwb/commands.vue"]]);export{S as default}; diff --git a/web/settings/assets/commands-ae4d3051.js b/web/settings/assets/commands-b3575711.js similarity index 84% rename from web/settings/assets/commands-ae4d3051.js rename to web/settings/assets/commands-b3575711.js index e7480a3b93..74588112c5 100644 --- a/web/settings/assets/commands-ae4d3051.js +++ b/web/settings/assets/commands-b3575711.js @@ -1 +1 @@ -import{a as d}from"./ChargePointInstallation-7e51ce35.js";import{_ as u,u as c,l,m as g,G as a,E as r,B as p}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"ChargePointCommandsOpenwbPro",mixins:[d],methods:{async triggerUpdate(){let t=new FormData;t.append("command","update"),t.append("data",'{"ip_address":"'+this.chargePoint.configuration.ip_address+'"}');const n="Die Aktualisierung der openWB Pro wird gestartet...";this.$root.postClientMessage(n,"info"),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/charge_points/openwb_pro/commands.php",t,{timeout:5e3}).then(()=>{const e="Die Aktualisierung der openWB Pro wurde erfolgreich gestartet.";this.$root.postClientMessage(e,"success")}).catch(e=>{var s="Aktualisierung fehlgeschlagen!
";e.response?(console.error(e.response.status,e.response.data),s+=e.response.status+": "+e.response.data):e.request?(console.error(e.request),s+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",e.message),s+="Es ist ein unbekannter Fehler aufgetreten."),this.$root.postClientMessage(s,"danger")})},openSettings(){window.open("http://"+this.chargePoint.configuration.ip_address,"_blank")}}},h={class:"charge-point-commands-openwb-pro"};function f(t,n,e,s,b,o){const i=c("openwb-base-button-input");return l(),g("div",h,[a(i,{title:"Ladepunkt aktualisieren","button-text":"Update anfordern",subtype:"success",disabled:t.chargePoint.configuration.ip_address==null,onButtonClicked:o.triggerUpdate},{help:r(()=>n[0]||(n[0]=[p(" Mit diesem Befehl können Sie die Aktualisierung der openWB Pro anstoßen. Bitte beachten Sie, dass kein Fahrzeug angesteckt ist. ")])),_:1},8,["disabled","onButtonClicked"]),a(i,{title:"Einstellungen öffnen","button-text":"Zu den Einstellungen",subtype:"success",disabled:t.chargePoint.configuration.ip_address==null,onButtonClicked:o.openSettings},{help:r(()=>n[1]||(n[1]=[p(" Mit diesem Befehl können Sie die Einstellungen der openWB Pro in einem neuen Browser-Tab oder -Fenster öffnen. ")])),_:1},8,["disabled","onButtonClicked"])])}const v=u(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/commands.vue"]]);export{v as default}; +import{a as d}from"./ChargePointInstallation-408ee2ed.js";import{_ as u,u as c,l,m as g,G as a,E as r,y as p}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"ChargePointCommandsOpenwbPro",mixins:[d],methods:{async triggerUpdate(){let t=new FormData;t.append("command","update"),t.append("data",'{"ip_address":"'+this.chargePoint.configuration.ip_address+'"}');const n="Die Aktualisierung der openWB Pro wird gestartet...";this.$root.postClientMessage(n,"info"),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/charge_points/openwb_pro/commands.php",t,{timeout:5e3}).then(()=>{const e="Die Aktualisierung der openWB Pro wurde erfolgreich gestartet.";this.$root.postClientMessage(e,"success")}).catch(e=>{var s="Aktualisierung fehlgeschlagen!
";e.response?(console.error(e.response.status,e.response.data),s+=e.response.status+": "+e.response.data):e.request?(console.error(e.request),s+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",e.message),s+="Es ist ein unbekannter Fehler aufgetreten."),this.$root.postClientMessage(s,"danger")})},openSettings(){window.open("http://"+this.chargePoint.configuration.ip_address,"_blank")}}},h={class:"charge-point-commands-openwb-pro"};function f(t,n,e,s,b,o){const i=c("openwb-base-button-input");return l(),g("div",h,[a(i,{title:"Ladepunkt aktualisieren","button-text":"Update anfordern",subtype:"success",disabled:t.chargePoint.configuration.ip_address==null,onButtonClicked:o.triggerUpdate},{help:r(()=>n[0]||(n[0]=[p(" Mit diesem Befehl können Sie die Aktualisierung der openWB Pro anstoßen. Bitte beachten Sie, dass kein Fahrzeug angesteckt ist. ")])),_:1},8,["disabled","onButtonClicked"]),a(i,{title:"Einstellungen öffnen","button-text":"Zu den Einstellungen",subtype:"success",disabled:t.chargePoint.configuration.ip_address==null,onButtonClicked:o.openSettings},{help:r(()=>n[1]||(n[1]=[p(" Mit diesem Befehl können Sie die Einstellungen der openWB Pro in einem neuen Browser-Tab oder -Fenster öffnen. ")])),_:1},8,["disabled","onButtonClicked"])])}const v=u(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/commands.vue"]]);export{v as default}; diff --git a/web/settings/assets/consumption_counter-d132c159.js b/web/settings/assets/consumption_counter-704c01f7.js similarity index 75% rename from web/settings/assets/consumption_counter-d132c159.js rename to web/settings/assets/consumption_counter-704c01f7.js index 87eb07b36e..ea8d312a9a 100644 --- a/web/settings/assets/consumption_counter-d132c159.js +++ b/web/settings/assets/consumption_counter-704c01f7.js @@ -1 +1 @@ -import{C as d}from"./HardwareInstallation-727b5962.js";import{_ as m,u as o,l as b,m as c,G as t,E as s,B as r}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceOpenwbFlexConsumptionCounter",mixins:[d]},f={class:"device-openwb-flex-consumption-counter"};function g(n,e,w,v,B,x){const l=o("openwb-base-heading"),u=o("openwb-base-alert"),p=o("openwb-base-select-input"),a=o("openwb-base-number-input");return b(),c("div",f,[t(l,null,{default:s(()=>e[2]||(e[2]=[r(" Einstellungen für openWB-Flex Verbrauchszähler ")])),_:1}),t(u,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[r(" Bei saldierenden Zählern (B23) werden die Zählerstände für Einspeisung und Bezug aus dem Zähler ausgelesen. Bei Zählern, die nicht saldierend arbeiten (SDM120, SDM630, SDM72D-M), wird der Zählerstand für den Bezug aus dem Zähler ausgelesen. Eine Messung der Einspeisung ist nicht möglich. ")])),_:1}),t(p,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:"sdm120",text:"SDM120"},{value:"sdm630",text:"SDM630/SDM72D-M"},{value:"b23",text:"B23"}],"model-value":n.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.version"))},null,8,["model-value"]),t(a,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":n.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.id"))},null,8,["model-value"])])}const z=m(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/consumption_counter.vue"]]);export{z as default}; +import{C as d}from"./HardwareInstallation-3a644290.js";import{_ as m,u as o,l as b,m as c,G as t,E as s,y as r}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceOpenwbFlexConsumptionCounter",mixins:[d]},f={class:"device-openwb-flex-consumption-counter"};function g(n,e,w,v,x,B){const l=o("openwb-base-heading"),u=o("openwb-base-alert"),p=o("openwb-base-select-input"),a=o("openwb-base-number-input");return b(),c("div",f,[t(l,null,{default:s(()=>e[2]||(e[2]=[r(" Einstellungen für openWB-Flex Verbrauchszähler ")])),_:1}),t(u,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[r(" Bei saldierenden Zählern (B23) werden die Zählerstände für Einspeisung und Bezug aus dem Zähler ausgelesen. Bei Zählern, die nicht saldierend arbeiten (SDM120, SDM630, SDM72D-M), wird der Zählerstand für den Bezug aus dem Zähler ausgelesen. Eine Messung der Einspeisung ist nicht möglich. ")])),_:1}),t(p,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:"sdm120",text:"SDM120"},{value:"sdm630",text:"SDM630/SDM72D-M"},{value:"b23",text:"B23"}],"model-value":n.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.version"))},null,8,["model-value"]),t(a,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":n.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.id"))},null,8,["model-value"])])}const z=m(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/consumption_counter.vue"]]);export{z as default}; diff --git a/web/settings/assets/counter-40260f20.js b/web/settings/assets/counter-00141858.js similarity index 60% rename from web/settings/assets/counter-40260f20.js rename to web/settings/assets/counter-00141858.js index 5f3fff444c..adc470143b 100644 --- a/web/settings/assets/counter-40260f20.js +++ b/web/settings/assets/counter-00141858.js @@ -1 +1 @@ -import{C as m}from"./HardwareInstallation-727b5962.js";import{_ as u,u as n,l as d,m as l,G as t,E as i,B as r}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSigenergyCounter",mixins:[m]},_={class:"device-sigenergy-counter"};function c(o,e,b,f,v,C){const s=n("openwb-base-heading"),p=n("openwb-base-number-input");return d(),l("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Sigenergy Zähler ")])),_:1}),t(p,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[r(" Die Standard-Modbus-ID von Sigenergy ist 247 ")])),_:1},8,["model-value"])])}const V=u(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/counter.vue"]]);export{V as default}; +import{C as m}from"./HardwareInstallation-3a644290.js";import{_ as u,u as n,l as d,m as l,G as t,E as i,y as r}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSigenergyCounter",mixins:[m]},_={class:"device-sigenergy-counter"};function c(o,e,b,f,v,y){const s=n("openwb-base-heading"),p=n("openwb-base-number-input");return d(),l("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Sigenergy Zähler ")])),_:1}),t(p,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[r(" Die Standard-Modbus-ID von Sigenergy ist 247 ")])),_:1},8,["model-value"])])}const V=u(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/counter.vue"]]);export{V as default}; diff --git a/web/settings/assets/counter-01848dd0.js b/web/settings/assets/counter-01848dd0.js deleted file mode 100644 index 71413d3d60..0000000000 --- a/web/settings/assets/counter-01848dd0.js +++ /dev/null @@ -1 +0,0 @@ -import{C as o}from"./HardwareInstallation-727b5962.js";import{_ as n,u as i,l as s,m as a,G as r,E as p,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceJanitzaBat",mixins:[o]},u={class:"device-janitza-counter"};function _(d,e,f,l,v,b){const t=i("openwb-base-alert");return s(),a("div",u,[r(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(' ModbusTCP muss im Janitza auf Port 502 aktiv und die ID auf "1" eingestellt sein. ')])),_:1})])}const D=n(m,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/janitza/counter.vue"]]);export{D as default}; diff --git a/web/settings/assets/counter-b5c55995.js b/web/settings/assets/counter-018e7196.js similarity index 64% rename from web/settings/assets/counter-b5c55995.js rename to web/settings/assets/counter-018e7196.js index 2acaddd79e..7e3fd1a1b6 100644 --- a/web/settings/assets/counter-b5c55995.js +++ b/web/settings/assets/counter-018e7196.js @@ -1 +1 @@ -import{C as r}from"./HardwareInstallation-727b5962.js";import{_ as s,u as n,l as i,m as a,G as p,E as c,B as o,A as m}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceKostalPikoCounter",mixins:[r]},u={class:"device-kostal-piko-counter"};function _(d,e,f,b,h,k){const t=n("openwb-base-alert");return i(),a("div",u,[p(t,{subtype:"info"},{default:c(()=>e[0]||(e[0]=[o(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),m("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1),o(" beschrieben, angeordnet werden. ")])),_:1})])}const $=s(l,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/counter.vue"]]);export{$ as default}; +import{C as r}from"./HardwareInstallation-3a644290.js";import{_ as s,u as n,l as i,m as a,G as p,E as c,y as o,x as m}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceKostalPikoCounter",mixins:[r]},u={class:"device-kostal-piko-counter"};function _(d,e,f,b,h,k){const t=n("openwb-base-alert");return i(),a("div",u,[p(t,{subtype:"info"},{default:c(()=>e[0]||(e[0]=[o(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),m("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1),o(" beschrieben, angeordnet werden. ")])),_:1})])}const $=s(l,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/counter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/counter-70674361.js b/web/settings/assets/counter-19e7f139.js similarity index 64% rename from web/settings/assets/counter-70674361.js rename to web/settings/assets/counter-19e7f139.js index f2ad438119..36d5890297 100644 --- a/web/settings/assets/counter-70674361.js +++ b/web/settings/assets/counter-19e7f139.js @@ -1 +1 @@ -import{C as r}from"./HardwareInstallation-727b5962.js";import{_ as n,u as s,l as i,m as a,G as c,E as p,B as o,A as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceKostalPlenticoreCounter",mixins:[r]},u={class:"device-kostal-plenticore-counter"};function _(d,e,f,b,h,v){const t=s("openwb-base-alert");return i(),a("div",u,[c(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[o(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),l("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1),o(" beschrieben, angeordnet werden. ")])),_:1})])}const $=n(m,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/counter.vue"]]);export{$ as default}; +import{C as r}from"./HardwareInstallation-3a644290.js";import{_ as n,u as s,l as i,m as a,G as c,E as p,y as o,x as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceKostalPlenticoreCounter",mixins:[r]},u={class:"device-kostal-plenticore-counter"};function _(d,e,f,b,h,v){const t=s("openwb-base-alert");return i(),a("div",u,[c(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[o(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),l("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1),o(" beschrieben, angeordnet werden. ")])),_:1})])}const $=n(m,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/counter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/counter-1b273ac4.js b/web/settings/assets/counter-1b273ac4.js new file mode 100644 index 0000000000..17bbba8552 --- /dev/null +++ b/web/settings/assets/counter-1b273ac4.js @@ -0,0 +1 @@ +import{C as t}from"./HardwareInstallation-3a644290.js";import{_ as o,u as s,l as i,m as r,G as a,E as p,y as m}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSonnenbatterieCounter",mixins:[t]},d={class:"device-sonnenbatterie-counter"};function _(l,e,u,f,b,v){const n=s("openwb-base-alert");return i(),r("div",d,[a(n,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[m(" Mit diesem Modul ist kein phasenbasiertes Lastmanagement möglich, da keine Ströme der einzelnen Phasen gemessen werden. ")])),_:1})])}const y=o(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/counter.vue"]]);export{y as default}; diff --git a/web/settings/assets/counter-32cca269.js b/web/settings/assets/counter-32cca269.js deleted file mode 100644 index f31176f25d..0000000000 --- a/web/settings/assets/counter-32cca269.js +++ /dev/null @@ -1 +0,0 @@ -import{C as n}from"./HardwareInstallation-727b5962.js";import{_ as o,u as s,l as r,m as a,G as i,E as m,B as p}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceTeslaCounter",mixins:[n]},l={class:"device-tesla-counter"};function _(d,e,u,f,v,x){const t=s("openwb-base-alert");return r(),a("div",l,[i(t,{subtype:"info"},{default:m(()=>e[0]||(e[0]=[p(" Je nach Firmware-Version ist nur ein Lastmanagement anhand der Gesamtleistung möglich, da nicht alle Firmware-Versionen Phasenströme liefern. ")])),_:1})])}const E=o(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/counter.vue"]]);export{E as default}; diff --git a/web/settings/assets/counter-021c90c7.js b/web/settings/assets/counter-3492fd19.js similarity index 71% rename from web/settings/assets/counter-021c90c7.js rename to web/settings/assets/counter-3492fd19.js index 9225d01824..3d6f504708 100644 --- a/web/settings/assets/counter-021c90c7.js +++ b/web/settings/assets/counter-3492fd19.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as l,u as t,l as m,m as d,G as o,E as i,B as r}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceVirtualCounter",mixins:[p]},_={class:"device-virtual-counter"};function f(n,e,b,g,v,h){const s=t("openwb-base-heading"),a=t("openwb-base-number-input");return m(),d("div",_,[o(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für virtuelle Zähler ")])),_:1}),o(a,{title:"Zusätzlicher Verbrauch",min:0,step:.05,unit:"kW",required:"","model-value":n.component.configuration.external_consumption/1e3,"onUpdate:modelValue":e[0]||(e[0]=u=>n.updateConfiguration(u*1e3,"configuration.external_consumption"))},{help:i(()=>e[2]||(e[2]=[r(" Die hier angegebene Leistung wird pauschal zu dem Leistungen der hinter dem Zähler liegenden Komponenten addiert. Damit lässt sich z. B. eine Reserve für nicht erfasste Verbraucher einstellen. ")])),_:1},8,["model-value"])])}const E=l(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/virtual/counter.vue"]]);export{E as default}; +import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as l,u as t,l as m,m as d,G as o,E as i,y as r}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceVirtualCounter",mixins:[p]},_={class:"device-virtual-counter"};function f(n,e,b,g,v,h){const s=t("openwb-base-heading"),a=t("openwb-base-number-input");return m(),d("div",_,[o(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für virtuelle Zähler ")])),_:1}),o(a,{title:"Zusätzlicher Verbrauch",min:0,step:.05,unit:"kW",required:"","model-value":n.component.configuration.external_consumption/1e3,"onUpdate:modelValue":e[0]||(e[0]=u=>n.updateConfiguration(u*1e3,"configuration.external_consumption"))},{help:i(()=>e[2]||(e[2]=[r(" Die hier angegebene Leistung wird pauschal zu dem Leistungen der hinter dem Zähler liegenden Komponenten addiert. Damit lässt sich z. B. eine Reserve für nicht erfasste Verbraucher einstellen. ")])),_:1},8,["model-value"])])}const E=l(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/virtual/counter.vue"]]);export{E as default}; diff --git a/web/settings/assets/counter-11d67ba8.js b/web/settings/assets/counter-394e8014.js similarity index 63% rename from web/settings/assets/counter-11d67ba8.js rename to web/settings/assets/counter-394e8014.js index d44d66c138..b077f84612 100644 --- a/web/settings/assets/counter-11d67ba8.js +++ b/web/settings/assets/counter-394e8014.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as a,u as n,l as m,m as u,G as t,E as l,B as d}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisCounter",mixins:[p]},_={class:"device-solis-counter"};function b(o,e,f,v,g,C){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:l(()=>e[1]||(e[1]=[d(" Einstellungen für Solis Zähler ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const M=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/counter.vue"]]);export{M as default}; +import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as a,u as n,l as m,m as u,G as t,E as l,y as d}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisCounter",mixins:[p]},_={class:"device-solis-counter"};function b(o,e,f,v,g,C){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:l(()=>e[1]||(e[1]=[d(" Einstellungen für Solis Zähler ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const M=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/counter.vue"]]);export{M as default}; diff --git a/web/settings/assets/counter-ffe6f59d.js b/web/settings/assets/counter-40d2f2a6.js similarity index 90% rename from web/settings/assets/counter-ffe6f59d.js rename to web/settings/assets/counter-40d2f2a6.js index 62d261120e..9a9869d515 100644 --- a/web/settings/assets/counter-ffe6f59d.js +++ b/web/settings/assets/counter-40d2f2a6.js @@ -1 +1 @@ -import{C as d}from"./HardwareInstallation-727b5962.js";import{_ as p,u,l as m,m as f,G as t,E as a,B as l,A as g}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceJsonCounter",mixins:[d]},w={class:"device-json-counter"};function v(n,e,j,q,P,C){const i=u("openwb-base-heading"),r=u("openwb-base-text-input"),s=u("openwb-base-alert");return m(),f("div",w,[t(i,null,{default:a(()=>e[9]||(e[9]=[l(" Einstellungen für JSON Zähler ")])),_:1}),t(r,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":n.component.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.jq_power"))},{help:a(()=>e[10]||(e[10]=[l(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),g("br",null,null,-1),l(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")])),_:1},8,["model-value"]),t(r,{title:"Abfrage für Zählerstand Bezug",subtype:"text","model-value":n.component.configuration.jq_imported,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.jq_imported"))},{help:a(()=>e[11]||(e[11]=[l(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"]),t(r,{title:"Abfrage für Zählerstand Einspeisung",subtype:"text","model-value":n.component.configuration.jq_exported,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.jq_exported"))},{help:a(()=>e[12]||(e[12]=[l(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"]),t(s,{subtype:"info"},{default:a(()=>e[13]||(e[13]=[l(" Werden sowohl Leistung als auch Strom auf den Einzelphasen leer gelassen, erfolgt das Lastmanagement am EVU-Punkt nur anhand der Gesamtleistung am EVU-Punkt. Wird der Zähler als Zwischenzähler verwendet, wird in diesem Fall kein Lastmanagement durchgeführt. ")])),_:1}),t(r,{title:"Abfrage für Leistung auf Phase 1",subtype:"text","model-value":n.component.configuration.jq_power_l1,"onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.jq_power_l1"))},null,8,["model-value"]),t(r,{title:"Abfrage für Leistung auf Phase 2",subtype:"text","model-value":n.component.configuration.jq_power_l2,"onUpdate:modelValue":e[4]||(e[4]=o=>n.updateConfiguration(o,"configuration.jq_power_l2"))},null,8,["model-value"]),t(r,{title:"Abfrage für Leistung auf Phase 3",subtype:"text","model-value":n.component.configuration.jq_power_l3,"onUpdate:modelValue":e[5]||(e[5]=o=>n.updateConfiguration(o,"configuration.jq_power_l3"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 1",subtype:"text","model-value":n.component.configuration.jq_current_l1,"onUpdate:modelValue":e[6]||(e[6]=o=>n.updateConfiguration(o,"configuration.jq_current_l1"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 2",subtype:"text","model-value":n.component.configuration.jq_current_l2,"onUpdate:modelValue":e[7]||(e[7]=o=>n.updateConfiguration(o,"configuration.jq_current_l2"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 3",subtype:"text","model-value":n.component.configuration.jq_current_l3,"onUpdate:modelValue":e[8]||(e[8]=o=>n.updateConfiguration(o,"configuration.jq_current_l3"))},null,8,["model-value"])])}const L=p(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/counter.vue"]]);export{L as default}; +import{C as d}from"./HardwareInstallation-3a644290.js";import{_ as p,u,l as m,m as f,G as t,E as a,y as l,x as g}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceJsonCounter",mixins:[d]},w={class:"device-json-counter"};function v(n,e,j,q,P,C){const i=u("openwb-base-heading"),r=u("openwb-base-text-input"),s=u("openwb-base-alert");return m(),f("div",w,[t(i,null,{default:a(()=>e[9]||(e[9]=[l(" Einstellungen für JSON Zähler ")])),_:1}),t(r,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":n.component.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.jq_power"))},{help:a(()=>e[10]||(e[10]=[l(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),g("br",null,null,-1),l(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")])),_:1},8,["model-value"]),t(r,{title:"Abfrage für Zählerstand Bezug",subtype:"text","model-value":n.component.configuration.jq_imported,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.jq_imported"))},{help:a(()=>e[11]||(e[11]=[l(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"]),t(r,{title:"Abfrage für Zählerstand Einspeisung",subtype:"text","model-value":n.component.configuration.jq_exported,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.jq_exported"))},{help:a(()=>e[12]||(e[12]=[l(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"]),t(s,{subtype:"info"},{default:a(()=>e[13]||(e[13]=[l(" Werden sowohl Leistung als auch Strom auf den Einzelphasen leer gelassen, erfolgt das Lastmanagement am EVU-Punkt nur anhand der Gesamtleistung am EVU-Punkt. Wird der Zähler als Zwischenzähler verwendet, wird in diesem Fall kein Lastmanagement durchgeführt. ")])),_:1}),t(r,{title:"Abfrage für Leistung auf Phase 1",subtype:"text","model-value":n.component.configuration.jq_power_l1,"onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.jq_power_l1"))},null,8,["model-value"]),t(r,{title:"Abfrage für Leistung auf Phase 2",subtype:"text","model-value":n.component.configuration.jq_power_l2,"onUpdate:modelValue":e[4]||(e[4]=o=>n.updateConfiguration(o,"configuration.jq_power_l2"))},null,8,["model-value"]),t(r,{title:"Abfrage für Leistung auf Phase 3",subtype:"text","model-value":n.component.configuration.jq_power_l3,"onUpdate:modelValue":e[5]||(e[5]=o=>n.updateConfiguration(o,"configuration.jq_power_l3"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 1",subtype:"text","model-value":n.component.configuration.jq_current_l1,"onUpdate:modelValue":e[6]||(e[6]=o=>n.updateConfiguration(o,"configuration.jq_current_l1"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 2",subtype:"text","model-value":n.component.configuration.jq_current_l2,"onUpdate:modelValue":e[7]||(e[7]=o=>n.updateConfiguration(o,"configuration.jq_current_l2"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 3",subtype:"text","model-value":n.component.configuration.jq_current_l3,"onUpdate:modelValue":e[8]||(e[8]=o=>n.updateConfiguration(o,"configuration.jq_current_l3"))},null,8,["model-value"])])}const L=p(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/counter.vue"]]);export{L as default}; diff --git a/web/settings/assets/counter-c4ea528f.js b/web/settings/assets/counter-48217739.js similarity index 61% rename from web/settings/assets/counter-c4ea528f.js rename to web/settings/assets/counter-48217739.js index c9239052de..483f9dc4a9 100644 --- a/web/settings/assets/counter-c4ea528f.js +++ b/web/settings/assets/counter-48217739.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as m,u as t,l as c,m as u,G as o,E as s,B as l,A as n,F as d}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceShellyCounter",mixins:[p]},f={class:"device-shelly-counter"},h={class:"small"};function b(r,e,g,y,v,w){const i=t("openwb-base-heading"),a=t("openwb-base-alert");return c(),u("div",f,[o(i,null,{default:s(()=>[e[0]||(e[0]=l(" Einstellungen für Shelly Zähler ")),n("span",h,"(Modul: "+d(r.$options.name)+")",1)]),_:1}),o(a,{subtype:"info"},{default:s(()=>e[1]||(e[1]=[n("span",{class:"text-danger"}," Als EVU-Zähler werden nur dreiphasige Shelly unterstützt (z.B. Shelly 3EM, Shelly Pro 3EM)",-1),n("br",null,null,-1),l(" Diese Komponente benötigt keine Einstellungen. ")])),_:1})])}const D=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/counter.vue"]]);export{D as default}; +import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as m,u as t,l as c,m as u,G as o,E as s,y as l,x as n,F as d}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceShellyCounter",mixins:[p]},f={class:"device-shelly-counter"},h={class:"small"};function b(r,e,y,g,x,v){const i=t("openwb-base-heading"),a=t("openwb-base-alert");return c(),u("div",f,[o(i,null,{default:s(()=>[e[0]||(e[0]=l(" Einstellungen für Shelly Zähler ")),n("span",h,"(Modul: "+d(r.$options.name)+")",1)]),_:1}),o(a,{subtype:"info"},{default:s(()=>e[1]||(e[1]=[n("span",{class:"text-danger"}," Als EVU-Zähler werden nur dreiphasige Shelly unterstützt (z.B. Shelly 3EM, Shelly Pro 3EM)",-1),n("br",null,null,-1),l(" Diese Komponente benötigt keine Einstellungen. ")])),_:1})])}const D=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/counter.vue"]]);export{D as default}; diff --git a/web/settings/assets/counter-0e51da5e.js b/web/settings/assets/counter-55c27daf.js similarity index 65% rename from web/settings/assets/counter-0e51da5e.js rename to web/settings/assets/counter-55c27daf.js index bcb3bf341a..73165ccfdc 100644 --- a/web/settings/assets/counter-0e51da5e.js +++ b/web/settings/assets/counter-55c27daf.js @@ -1 +1 @@ -import{C as a}from"./HardwareInstallation-727b5962.js";import{_ as u,u as n,l as d,m as c,G as t,E as i,B as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceMTecCounter",mixins:[a]},_={class:"device-mtec-counter"};function b(o,e,f,v,g,C){const r=n("openwb-base-heading"),m=n("openwb-base-number-input");return d(),c("div",_,[t(r,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für M-Tec Zähler ")])),_:1}),t(m,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[s(" Die Standard-Modbus-ID von M-Tec ist 247 ")])),_:1},8,["model-value"])])}const k=u(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/counter.vue"]]);export{k as default}; +import{C as a}from"./HardwareInstallation-3a644290.js";import{_ as u,u as n,l as d,m as c,G as t,E as i,y as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceMTecCounter",mixins:[a]},_={class:"device-mtec-counter"};function b(o,e,f,v,g,C){const r=n("openwb-base-heading"),m=n("openwb-base-number-input");return d(),c("div",_,[t(r,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für M-Tec Zähler ")])),_:1}),t(m,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[s(" Die Standard-Modbus-ID von M-Tec ist 247 ")])),_:1},8,["model-value"])])}const k=u(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-f257201f.js b/web/settings/assets/counter-5a3251ce.js similarity index 57% rename from web/settings/assets/counter-f257201f.js rename to web/settings/assets/counter-5a3251ce.js index 94e8cf81d4..0e1138fa30 100644 --- a/web/settings/assets/counter-f257201f.js +++ b/web/settings/assets/counter-5a3251ce.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as u,u as n,l as a,m,G as t,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyBoyCounter",mixins:[p]},_={class:"device-sunnyboy-counter"};function b(o,e,f,v,g,y){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return a(),m("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für SMA Sunny Boy/Tripower Zähler ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const h=u(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/counter.vue"]]);export{h as default}; +import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as u,u as n,l as a,m,G as t,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyBoyCounter",mixins:[p]},_={class:"device-sunnyboy-counter"};function b(o,e,f,v,y,g){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return a(),m("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für SMA Sunny Boy/Tripower Zähler ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const h=u(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/counter.vue"]]);export{h as default}; diff --git a/web/settings/assets/counter-5bbed3f1.js b/web/settings/assets/counter-5bbed3f1.js deleted file mode 100644 index fdfefc7514..0000000000 --- a/web/settings/assets/counter-5bbed3f1.js +++ /dev/null @@ -1 +0,0 @@ -import{C as t}from"./HardwareInstallation-727b5962.js";import{_ as n,u as r,l as s,m as a,G as i,E as p,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceCarloGavazziCounter",mixins:[t]},_={class:"device-carlo-gavazzi-counter"};function l(u,e,d,v,f,z){const o=r("openwb-base-alert");return s(),a("div",_,[i(o,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(" ModbusTCP muss aktiviert sein. ")])),_:1})])}const G=n(m,[["render",l],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/carlo_gavazzi/counter.vue"]]);export{G as default}; diff --git a/web/settings/assets/counter-c0fbd699.js b/web/settings/assets/counter-7311f96b.js similarity index 92% rename from web/settings/assets/counter-c0fbd699.js rename to web/settings/assets/counter-7311f96b.js index 26db9f8703..7f63b6416e 100644 --- a/web/settings/assets/counter-c0fbd699.js +++ b/web/settings/assets/counter-7311f96b.js @@ -1 +1 @@ -import{C as u}from"./HardwareInstallation-727b5962.js";import{_ as m,u as s,l as p,m as g,G as i,E as a,B as n,A as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceHttpCounter",mixins:[u]},b={class:"device-http-counter"};function f(t,e,w,v,k,S){const d=s("openwb-base-heading"),o=s("openwb-base-text-input");return p(),g("div",b,[i(d,null,{default:a(()=>e[6]||(e[6]=[n(" Einstellungen für Http Zähler ")])),_:1}),i(o,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateConfiguration(r,"configuration.power_path"))},{help:a(()=>e[7]||(e[7]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Zählerstand Bezug",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.imported_path,"onUpdate:modelValue":e[1]||(e[1]=r=>t.updateConfiguration(r,"configuration.imported_path"))},{help:a(()=>e[8]||(e[8]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Zählerstand Einspeisung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.exported_path,"onUpdate:modelValue":e[2]||(e[2]=r=>t.updateConfiguration(r,"configuration.exported_path"))},{help:a(()=>e[9]||(e[9]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Strom Phase 1",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.current_l1_path,"onUpdate:modelValue":e[3]||(e[3]=r=>t.updateConfiguration(r,"configuration.current_l1_path"))},{help:a(()=>e[10]||(e[10]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 1. Phase in Ampere darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Strom Phase 2",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.current_l2_path,"onUpdate:modelValue":e[4]||(e[4]=r=>t.updateConfiguration(r,"configuration.current_l2_path"))},{help:a(()=>e[11]||(e[11]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 2. Phase in Ampere darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Strom Phase 3",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.current_l3_path,"onUpdate:modelValue":e[5]||(e[5]=r=>t.updateConfiguration(r,"configuration.current_l3_path"))},{help:a(()=>e[12]||(e[12]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 3. Phase in Ampere darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"])])}const F=m(h,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/counter.vue"]]);export{F as default}; +import{C as u}from"./HardwareInstallation-3a644290.js";import{_ as m,u as s,l as p,m as g,G as i,E as a,y as n,x as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceHttpCounter",mixins:[u]},b={class:"device-http-counter"};function f(t,e,w,v,k,S){const d=s("openwb-base-heading"),o=s("openwb-base-text-input");return p(),g("div",b,[i(d,null,{default:a(()=>e[6]||(e[6]=[n(" Einstellungen für Http Zähler ")])),_:1}),i(o,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateConfiguration(r,"configuration.power_path"))},{help:a(()=>e[7]||(e[7]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Zählerstand Bezug",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.imported_path,"onUpdate:modelValue":e[1]||(e[1]=r=>t.updateConfiguration(r,"configuration.imported_path"))},{help:a(()=>e[8]||(e[8]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Zählerstand Einspeisung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.exported_path,"onUpdate:modelValue":e[2]||(e[2]=r=>t.updateConfiguration(r,"configuration.exported_path"))},{help:a(()=>e[9]||(e[9]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Strom Phase 1",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.current_l1_path,"onUpdate:modelValue":e[3]||(e[3]=r=>t.updateConfiguration(r,"configuration.current_l1_path"))},{help:a(()=>e[10]||(e[10]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 1. Phase in Ampere darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Strom Phase 2",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.current_l2_path,"onUpdate:modelValue":e[4]||(e[4]=r=>t.updateConfiguration(r,"configuration.current_l2_path"))},{help:a(()=>e[11]||(e[11]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 2. Phase in Ampere darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Strom Phase 3",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.current_l3_path,"onUpdate:modelValue":e[5]||(e[5]=r=>t.updateConfiguration(r,"configuration.current_l3_path"))},{help:a(()=>e[12]||(e[12]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 3. Phase in Ampere darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"])])}const F=m(h,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/counter.vue"]]);export{F as default}; diff --git a/web/settings/assets/counter-48702b69.js b/web/settings/assets/counter-75e3d92e.js similarity index 72% rename from web/settings/assets/counter-48702b69.js rename to web/settings/assets/counter-75e3d92e.js index 107e999570..ff8ba597d8 100644 --- a/web/settings/assets/counter-48702b69.js +++ b/web/settings/assets/counter-75e3d92e.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as a,u as t,l as m,m as l,G as i,E as d,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceVictronCounter",mixins:[p]},_={class:"device-victron-counter"};function f(o,e,g,v,C,V){const r=t("openwb-base-heading"),u=t("openwb-base-number-input"),s=t("openwb-base-button-group-input");return m(),l("div",_,[i(r,null,{default:d(()=>e[2]||(e[2]=[c(" Einstellungen für Victron Zähler ")])),_:1}),i(u,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(s,{title:"Messgerät",buttons:[{buttonValue:!1,text:"AC-In Victron GX"},{buttonValue:!0,text:"Energy Meter"}],"model-value":o.component.configuration.energy_meter,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.energy_meter"))},null,8,["model-value"])])}const G=a(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/counter.vue"]]);export{G as default}; +import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as a,u as t,l as m,m as l,G as i,E as d,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceVictronCounter",mixins:[p]},_={class:"device-victron-counter"};function f(o,e,g,v,C,V){const r=t("openwb-base-heading"),u=t("openwb-base-number-input"),s=t("openwb-base-button-group-input");return m(),l("div",_,[i(r,null,{default:d(()=>e[2]||(e[2]=[c(" Einstellungen für Victron Zähler ")])),_:1}),i(u,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(s,{title:"Messgerät",buttons:[{buttonValue:!1,text:"AC-In Victron GX"},{buttonValue:!0,text:"Energy Meter"}],"model-value":o.component.configuration.energy_meter,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.energy_meter"))},null,8,["model-value"])])}const G=a(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/counter.vue"]]);export{G as default}; diff --git a/web/settings/assets/counter-1306a4c6.js b/web/settings/assets/counter-7668209b.js similarity index 63% rename from web/settings/assets/counter-1306a4c6.js rename to web/settings/assets/counter-7668209b.js index fab93ffa53..4981a9eac0 100644 --- a/web/settings/assets/counter-1306a4c6.js +++ b/web/settings/assets/counter-7668209b.js @@ -1 +1 @@ -import{C as u}from"./HardwareInstallation-727b5962.js";import{_ as l,u as t,l as m,m as c,G as r,E as i,B as n,A as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfoxCounter",mixins:[u]},b={class:"device-powerfox-counter"};function g(o,e,w,_,x,h){const a=t("openwb-base-heading"),p=t("openwb-base-text-input");return m(),c("div",b,[r(a,null,{default:i(()=>e[1]||(e[1]=[n(" Einstellungen für Powerfox Zähler ")])),_:1}),r(p,{title:"ID",required:"","model-value":o.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>o.updateConfiguration(d,"configuration.id"))},{help:i(()=>e[2]||(e[2]=[n(" Um die ID herauszufinden mit dem Browser die Adresse "),s("a",{href:"https://backend.powerfox.energy/api/2.0/my/all/devices",target:"_blank",rel:"noopener noreferrer"}," https://backend.powerfox.energy/api/2.0/my/all/devices ",-1),n(" aufrufen und dort Benutzername und Passwort eingeben. Die DeviceID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/Kleinschreibung ist zu beachten! In dem Feld ist nur die Zeichenfolge direkt hinter "),s("span",{class:"font-weight-bold text-monospace",style:{display:"contents"}},' "DeviceID" ',-1),n(" ohne den Doppelpunkt und Anführungszeichen einzutragen. ")])),_:1},8,["model-value"])])}const V=l(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/counter.vue"]]);export{V as default}; +import{C as u}from"./HardwareInstallation-3a644290.js";import{_ as l,u as t,l as m,m as c,G as r,E as i,y as n,x as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfoxCounter",mixins:[u]},b={class:"device-powerfox-counter"};function g(o,e,w,x,_,h){const a=t("openwb-base-heading"),p=t("openwb-base-text-input");return m(),c("div",b,[r(a,null,{default:i(()=>e[1]||(e[1]=[n(" Einstellungen für Powerfox Zähler ")])),_:1}),r(p,{title:"ID",required:"","model-value":o.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>o.updateConfiguration(d,"configuration.id"))},{help:i(()=>e[2]||(e[2]=[n(" Um die ID herauszufinden mit dem Browser die Adresse "),s("a",{href:"https://backend.powerfox.energy/api/2.0/my/all/devices",target:"_blank",rel:"noopener noreferrer"}," https://backend.powerfox.energy/api/2.0/my/all/devices ",-1),n(" aufrufen und dort Benutzername und Passwort eingeben. Die DeviceID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/Kleinschreibung ist zu beachten! In dem Feld ist nur die Zeichenfolge direkt hinter "),s("span",{class:"font-weight-bold text-monospace",style:{display:"contents"}},' "DeviceID" ',-1),n(" ohne den Doppelpunkt und Anführungszeichen einzutragen. ")])),_:1},8,["model-value"])])}const $=l(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/counter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/counter-76ed3a15.js b/web/settings/assets/counter-76ed3a15.js deleted file mode 100644 index 39802bbcee..0000000000 --- a/web/settings/assets/counter-76ed3a15.js +++ /dev/null @@ -1 +0,0 @@ -import{C as t}from"./HardwareInstallation-727b5962.js";import{_ as o,u as s,l as i,m as r,G as a,E as p,B as m}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSonnenbatterieCounter",mixins:[t]},d={class:"device-sonnenbatterie-counter"};function _(l,e,u,f,b,v){const n=s("openwb-base-alert");return i(),r("div",d,[a(n,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[m(" Mit diesem Modul ist kein phasenbasiertes Lastmanagement möglich, da keine Ströme der einzelnen Phasen gemessen werden. ")])),_:1})])}const E=o(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/counter.vue"]]);export{E as default}; diff --git a/web/settings/assets/counter-de0030ac.js b/web/settings/assets/counter-76eff543.js similarity index 58% rename from web/settings/assets/counter-de0030ac.js rename to web/settings/assets/counter-76eff543.js index 93d00211c4..aa82baac29 100644 --- a/web/settings/assets/counter-de0030ac.js +++ b/web/settings/assets/counter-76eff543.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as u,u as t,l,m as d,G as r,E as i,B as n,A as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSmahmCounter",mixins:[p]},f={class:"device-smahm-counter"};function b(o,e,g,v,M,h){const s=t("openwb-base-heading"),a=t("openwb-base-number-input");return l(),d("div",f,[r(s,null,{default:i(()=>e[1]||(e[1]=[n(" Einstellungen für SMA-HM/EM Zähler ")])),_:1}),r(a,{title:"Seriennummer","model-value":o.component.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=m=>o.updateConfiguration(m,"configuration.serials"))},{help:i(()=>e[2]||(e[2]=[n(" Eine Seriennummer ist nur erforderlich, wenn mehrere SMA HomeManager in Betrieb sind."),c("br",null,null,-1),n(" Funktioniert auch mit Energy Meter anstatt Home Manager. ")])),_:1},8,["model-value"])])}const A=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_shm/counter.vue"]]);export{A as default}; +import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as u,u as t,l,m as d,G as r,E as i,y as n,x as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSmahmCounter",mixins:[p]},f={class:"device-smahm-counter"};function b(o,e,g,v,M,h){const s=t("openwb-base-heading"),a=t("openwb-base-number-input");return l(),d("div",f,[r(s,null,{default:i(()=>e[1]||(e[1]=[n(" Einstellungen für SMA-HM/EM Zähler ")])),_:1}),r(a,{title:"Seriennummer","model-value":o.component.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=m=>o.updateConfiguration(m,"configuration.serials"))},{help:i(()=>e[2]||(e[2]=[n(" Eine Seriennummer ist nur erforderlich, wenn mehrere SMA HomeManager in Betrieb sind."),c("br",null,null,-1),n(" Funktioniert auch mit Energy Meter anstatt Home Manager. ")])),_:1},8,["model-value"])])}const H=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_shm/counter.vue"]]);export{H as default}; diff --git a/web/settings/assets/counter-7a033879.js b/web/settings/assets/counter-7a033879.js new file mode 100644 index 0000000000..cd248b9686 --- /dev/null +++ b/web/settings/assets/counter-7a033879.js @@ -0,0 +1 @@ +import{C as o}from"./HardwareInstallation-3a644290.js";import{_ as n,u as i,l as s,m as a,G as r,E as p,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceJanitzaBat",mixins:[o]},u={class:"device-janitza-counter"};function _(d,e,f,l,v,b){const t=i("openwb-base-alert");return s(),a("div",u,[r(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(' ModbusTCP muss im Janitza auf Port 502 aktiv und die ID auf "1" eingestellt sein. ')])),_:1})])}const y=n(m,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/janitza/counter.vue"]]);export{y as default}; diff --git a/web/settings/assets/counter-986853af.js b/web/settings/assets/counter-8520ea8e.js similarity index 62% rename from web/settings/assets/counter-986853af.js rename to web/settings/assets/counter-8520ea8e.js index 83a07a3a0c..7d2a2c327b 100644 --- a/web/settings/assets/counter-986853af.js +++ b/web/settings/assets/counter-8520ea8e.js @@ -1 +1 @@ -import{C as a}from"./HardwareInstallation-727b5962.js";import{_ as m,u as t,l as p,m as u,G as n,E as l,B as d}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartMeCounter",mixins:[a]},_={class:"device-smart-me-counter"};function f(o,e,b,v,g,x){const r=t("openwb-base-heading"),i=t("openwb-base-text-input");return p(),u("div",_,[n(r,null,{default:l(()=>e[1]||(e[1]=[d(" Einstellungen für smart-me Zähler ")])),_:1}),n(i,{title:"Geräte-ID",required:"","model-value":o.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.id"))},null,8,["model-value"])])}const G=m(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/counter.vue"]]);export{G as default}; +import{C as a}from"./HardwareInstallation-3a644290.js";import{_ as m,u as t,l as p,m as u,G as n,E as l,y as d}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartMeCounter",mixins:[a]},_={class:"device-smart-me-counter"};function f(o,e,b,v,g,x){const r=t("openwb-base-heading"),i=t("openwb-base-text-input");return p(),u("div",_,[n(r,null,{default:l(()=>e[1]||(e[1]=[d(" Einstellungen für smart-me Zähler ")])),_:1}),n(i,{title:"Geräte-ID",required:"","model-value":o.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.id"))},null,8,["model-value"])])}const G=m(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/counter.vue"]]);export{G as default}; diff --git a/web/settings/assets/counter-dd217c03.js b/web/settings/assets/counter-8b96457f.js similarity index 63% rename from web/settings/assets/counter-dd217c03.js rename to web/settings/assets/counter-8b96457f.js index 311ff828df..f3541240c8 100644 --- a/web/settings/assets/counter-dd217c03.js +++ b/web/settings/assets/counter-8b96457f.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as a,u as n,l as m,m as u,G as t,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssCounter",mixins:[p]},c={class:"device-fox_ess-counter"};function f(o,e,b,x,v,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für FoxEss Zähler ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const F=a(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/counter.vue"]]);export{F as default}; +import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as a,u as n,l as m,m as u,G as t,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssCounter",mixins:[p]},c={class:"device-fox_ess-counter"};function f(o,e,b,x,v,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für FoxEss Zähler ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const F=a(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/counter.vue"]]);export{F as default}; diff --git a/web/settings/assets/counter-28bcfaac.js b/web/settings/assets/counter-8d45ef9c.js similarity index 87% rename from web/settings/assets/counter-28bcfaac.js rename to web/settings/assets/counter-8d45ef9c.js index 87a1d6a7c3..725fd75637 100644 --- a/web/settings/assets/counter-28bcfaac.js +++ b/web/settings/assets/counter-8d45ef9c.js @@ -1 +1 @@ -import{C as d}from"./HardwareInstallation-727b5962.js";import{_ as a,u,l as f,m as g,G as l,E as o,B as t,A as e,F as r}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceMqttCounter",mixins:[d]},B={class:"device-mqtt-counter"};function k(i,n,z,x,v,w){const p=u("openwb-base-heading"),s=u("openwb-base-copy-to-clipboard"),m=u("openwb-base-alert");return f(),g("div",B,[l(p,null,{default:o(()=>n[0]||(n[0]=[t(" Einstellungen für MQTT Zähler ")])),_:1}),l(m,{subtype:"info"},{default:o(()=>[n[41]||(n[41]=t(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: ")),e("ul",null,[e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/power ",1)]),_:1}),n[1]||(n[1]=e("br",null,null,-1)),n[2]||(n[2]=t(" Bezugsleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Bezug, negativ Einspeisung")),n[3]||(n[3]=e("br",null,null,-1)),n[4]||(n[4]=t(" Beispiel: ")),n[5]||(n[5]=e("span",{class:"text-info"},"-123.45",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/imported ",1)]),_:1}),n[6]||(n[6]=e("br",null,null,-1)),n[7]||(n[7]=t(" Bezogene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),n[8]||(n[8]=e("br",null,null,-1)),n[9]||(n[9]=t(" Beispiel: ")),n[10]||(n[10]=e("span",{class:"text-info"},"123.45",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/exported ",1)]),_:1}),n[11]||(n[11]=e("br",null,null,-1)),n[12]||(n[12]=t(" Eingespeiste Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),n[13]||(n[13]=e("br",null,null,-1)),n[14]||(n[14]=t(" Beispiel: ")),n[15]||(n[15]=e("span",{class:"text-info"},"123.45",-1))])]),n[42]||(n[42]=t(" Ströme je Phase sind für phasenbasiertes Lastmanagement unbedingt erforderlich, sonst erfolgt das Lastmanagement ausschließlich auf Basis der Gesamtleistung am EVU-Punkt: ")),e("ul",null,[e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/currents ",1)]),_:1}),n[16]||(n[16]=e("br",null,null,-1)),n[17]||(n[17]=t(" Array mit den Strömen je Phase in Ampere, mit Nachkommastellen (Float), positiv Bezug, negativ Einspeisung")),n[18]||(n[18]=e("br",null,null,-1)),n[19]||(n[19]=t(" Beispiel: ")),n[20]||(n[20]=e("span",{class:"text-info"},"[1.2,2.3,-2.1]",-1))])]),n[43]||(n[43]=t(" Die Netzfrequenz, Spannungen, Leistungen und Leistungsfaktoren jeder Phase werden ausschließlich zu Anzeigezwecken verwendet: ")),e("ul",null,[e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/frequency ",1)]),_:1}),n[21]||(n[21]=e("br",null,null,-1)),n[22]||(n[22]=t(" Netzfrequenz in Hz, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen")),n[23]||(n[23]=e("br",null,null,-1)),n[24]||(n[24]=t(" Beispiel: ")),n[25]||(n[25]=e("span",{class:"text-info"},"50.12",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/voltages ",1)]),_:1}),n[26]||(n[26]=e("br",null,null,-1)),n[27]||(n[27]=t(" Array mit den Spannungen je Phase in Volt, mit Nachkommastellen (Float)")),n[28]||(n[28]=e("br",null,null,-1)),n[29]||(n[29]=t(" Beispiel: ")),n[30]||(n[30]=e("span",{class:"text-info"},"[222.2,223.3,222.3]",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/powers ",1)]),_:1}),n[31]||(n[31]=e("br",null,null,-1)),n[32]||(n[32]=t(" Array mit den Leistungen je Phase in Watt, mit Nachkommastellen (Float)")),n[33]||(n[33]=e("br",null,null,-1)),n[34]||(n[34]=t(" Beispiel: ")),n[35]||(n[35]=e("span",{class:"text-info"},"[12.3,23.4,-12.3]",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/power_factors ",1)]),_:1}),n[36]||(n[36]=e("br",null,null,-1)),n[37]||(n[37]=t(" Array mit den Leistungsfaktoren je Phase, mit Nachkommastellen (Float), Wertebereich -1 bis 1")),n[38]||(n[38]=e("br",null,null,-1)),n[39]||(n[39]=t(" Beispiel: ")),n[40]||(n[40]=e("span",{class:"text-info"},"[0.95,0.96,-0.95]",-1))])])]),_:1})])}const j=a(b,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/counter.vue"]]);export{j as default}; +import{C as d}from"./HardwareInstallation-3a644290.js";import{_ as a,u,l as f,m as g,G as l,E as o,y as t,x as e,F as r}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceMqttCounter",mixins:[d]},k={class:"device-mqtt-counter"};function B(i,n,z,x,v,w){const p=u("openwb-base-heading"),s=u("openwb-base-copy-to-clipboard"),m=u("openwb-base-alert");return f(),g("div",k,[l(p,null,{default:o(()=>n[0]||(n[0]=[t(" Einstellungen für MQTT Zähler ")])),_:1}),l(m,{subtype:"info"},{default:o(()=>[n[41]||(n[41]=t(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: ")),e("ul",null,[e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/power ",1)]),_:1}),n[1]||(n[1]=e("br",null,null,-1)),n[2]||(n[2]=t(" Bezugsleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Bezug, negativ Einspeisung")),n[3]||(n[3]=e("br",null,null,-1)),n[4]||(n[4]=t(" Beispiel: ")),n[5]||(n[5]=e("span",{class:"text-info"},"-123.45",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/imported ",1)]),_:1}),n[6]||(n[6]=e("br",null,null,-1)),n[7]||(n[7]=t(" Bezogene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),n[8]||(n[8]=e("br",null,null,-1)),n[9]||(n[9]=t(" Beispiel: ")),n[10]||(n[10]=e("span",{class:"text-info"},"123.45",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/exported ",1)]),_:1}),n[11]||(n[11]=e("br",null,null,-1)),n[12]||(n[12]=t(" Eingespeiste Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),n[13]||(n[13]=e("br",null,null,-1)),n[14]||(n[14]=t(" Beispiel: ")),n[15]||(n[15]=e("span",{class:"text-info"},"123.45",-1))])]),n[42]||(n[42]=t(" Ströme je Phase sind für phasenbasiertes Lastmanagement unbedingt erforderlich, sonst erfolgt das Lastmanagement ausschließlich auf Basis der Gesamtleistung am EVU-Punkt: ")),e("ul",null,[e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/currents ",1)]),_:1}),n[16]||(n[16]=e("br",null,null,-1)),n[17]||(n[17]=t(" Array mit den Strömen je Phase in Ampere, mit Nachkommastellen (Float), positiv Bezug, negativ Einspeisung")),n[18]||(n[18]=e("br",null,null,-1)),n[19]||(n[19]=t(" Beispiel: ")),n[20]||(n[20]=e("span",{class:"text-info"},"[1.2,2.3,-2.1]",-1))])]),n[43]||(n[43]=t(" Die Netzfrequenz, Spannungen, Leistungen und Leistungsfaktoren jeder Phase werden ausschließlich zu Anzeigezwecken verwendet: ")),e("ul",null,[e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/frequency ",1)]),_:1}),n[21]||(n[21]=e("br",null,null,-1)),n[22]||(n[22]=t(" Netzfrequenz in Hz, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen")),n[23]||(n[23]=e("br",null,null,-1)),n[24]||(n[24]=t(" Beispiel: ")),n[25]||(n[25]=e("span",{class:"text-info"},"50.12",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/voltages ",1)]),_:1}),n[26]||(n[26]=e("br",null,null,-1)),n[27]||(n[27]=t(" Array mit den Spannungen je Phase in Volt, mit Nachkommastellen (Float)")),n[28]||(n[28]=e("br",null,null,-1)),n[29]||(n[29]=t(" Beispiel: ")),n[30]||(n[30]=e("span",{class:"text-info"},"[222.2,223.3,222.3]",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/powers ",1)]),_:1}),n[31]||(n[31]=e("br",null,null,-1)),n[32]||(n[32]=t(" Array mit den Leistungen je Phase in Watt, mit Nachkommastellen (Float)")),n[33]||(n[33]=e("br",null,null,-1)),n[34]||(n[34]=t(" Beispiel: ")),n[35]||(n[35]=e("span",{class:"text-info"},"[12.3,23.4,-12.3]",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/power_factors ",1)]),_:1}),n[36]||(n[36]=e("br",null,null,-1)),n[37]||(n[37]=t(" Array mit den Leistungsfaktoren je Phase, mit Nachkommastellen (Float), Wertebereich -1 bis 1")),n[38]||(n[38]=e("br",null,null,-1)),n[39]||(n[39]=t(" Beispiel: ")),n[40]||(n[40]=e("span",{class:"text-info"},"[0.95,0.96,-0.95]",-1))])])]),_:1})])}const q=a(b,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/counter.vue"]]);export{q as default}; diff --git a/web/settings/assets/counter-2d03ca61.js b/web/settings/assets/counter-958da48c.js similarity index 78% rename from web/settings/assets/counter-2d03ca61.js rename to web/settings/assets/counter-958da48c.js index 94b97f0bcb..3412ac9d95 100644 --- a/web/settings/assets/counter-2d03ca61.js +++ b/web/settings/assets/counter-958da48c.js @@ -1 +1 @@ -import{C as d}from"./HardwareInstallation-727b5962.js";import{_ as m,u as o,l as b,m as c,G as t,E as r,B as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceOpenwbFlexCounter",mixins:[d]},_={class:"device-openwb-flex-counter"};function v(n,e,w,g,M,x){const l=o("openwb-base-heading"),a=o("openwb-base-alert"),p=o("openwb-base-select-input"),u=o("openwb-base-number-input");return b(),c("div",_,[t(l,null,{default:r(()=>e[2]||(e[2]=[s(" Einstellungen für openWB-Flex Zähler ")])),_:1}),t(a,{subtype:"info"},{default:r(()=>e[3]||(e[3]=[s(" Bei saldierenden Zählern (MPM3PM, B23) werden die Zählerstände für Einspeisung und Bezug aus dem Zähler ausgelesen. Bei Zählern, die nicht saldierend arbeiten (Lovato, SDM630, SDM72D-M), werden die Zählerstände von der openWB berechnet. ")])),_:1}),t(p,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:3,text:"B23"},{value:1,text:"Lovato"},{value:0,text:"MPM3PM"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":n.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.version"))},null,8,["model-value"]),t(u,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":n.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.id"))},null,8,["model-value"])])}const $=m(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/counter.vue"]]);export{$ as default}; +import{C as d}from"./HardwareInstallation-3a644290.js";import{_ as m,u as o,l as b,m as c,G as t,E as r,y as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceOpenwbFlexCounter",mixins:[d]},_={class:"device-openwb-flex-counter"};function v(n,e,w,g,M,x){const l=o("openwb-base-heading"),a=o("openwb-base-alert"),p=o("openwb-base-select-input"),u=o("openwb-base-number-input");return b(),c("div",_,[t(l,null,{default:r(()=>e[2]||(e[2]=[s(" Einstellungen für openWB-Flex Zähler ")])),_:1}),t(a,{subtype:"info"},{default:r(()=>e[3]||(e[3]=[s(" Bei saldierenden Zählern (MPM3PM, B23) werden die Zählerstände für Einspeisung und Bezug aus dem Zähler ausgelesen. Bei Zählern, die nicht saldierend arbeiten (Lovato, SDM630, SDM72D-M), werden die Zählerstände von der openWB berechnet. ")])),_:1}),t(p,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:3,text:"B23"},{value:1,text:"Lovato"},{value:0,text:"MPM3PM"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":n.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.version"))},null,8,["model-value"]),t(u,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":n.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.id"))},null,8,["model-value"])])}const $=m(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/counter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/counter-6c87b676.js b/web/settings/assets/counter-95bdcdb7.js similarity index 71% rename from web/settings/assets/counter-6c87b676.js rename to web/settings/assets/counter-95bdcdb7.js index e8815306d2..8904106055 100644 --- a/web/settings/assets/counter-6c87b676.js +++ b/web/settings/assets/counter-95bdcdb7.js @@ -1 +1 @@ -import{C as n}from"./HardwareInstallation-727b5962.js";import{_ as s,u as a,l as i,m as l,G as m,E as p,A as e,B as r}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolarLogCounter",mixins:[n]},u={class:"device-solar_log-counter"};function d(_,o,g,h,f,b){const t=a("openwb-base-alert");return i(),l("div",u,[m(t,{subtype:"info"},{default:p(()=>o[0]||(o[0]=[e("span",{class:"text-danger"},[r(" Solar-Log Zähler geben keine Ströme aus, sodass nur ein Lastmanagement anhand der Gesamtleistung, aber nicht phasenbasiert möglich ist."),e("br")],-1),r(" Solar-Log Zähler sind Hausverbrauchs-Zähler. Um die Werte am EVU-Punkt zu ermitteln, muss ein virtueller Zähler konfiguriert werden. Eine Beispiel-Konfiguration mit Solar-Log Zähler findest Du im "),e("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"}," Wiki für Hausverbrauchs-Zähler ",-1),r(". ")])),_:1})])}const E=s(c,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/solar_log/counter.vue"]]);export{E as default}; +import{C as n}from"./HardwareInstallation-3a644290.js";import{_ as s,u as a,l as i,m as l,G as m,E as p,x as e,y as r}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolarLogCounter",mixins:[n]},u={class:"device-solar_log-counter"};function d(_,o,g,h,f,b){const t=a("openwb-base-alert");return i(),l("div",u,[m(t,{subtype:"info"},{default:p(()=>o[0]||(o[0]=[e("span",{class:"text-danger"},[r(" Solar-Log Zähler geben keine Ströme aus, sodass nur ein Lastmanagement anhand der Gesamtleistung, aber nicht phasenbasiert möglich ist."),e("br")],-1),r(" Solar-Log Zähler sind Hausverbrauchs-Zähler. Um die Werte am EVU-Punkt zu ermitteln, muss ein virtueller Zähler konfiguriert werden. Eine Beispiel-Konfiguration mit Solar-Log Zähler findest Du im "),e("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"}," Wiki für Hausverbrauchs-Zähler ",-1),r(". ")])),_:1})])}const E=s(c,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/solar_log/counter.vue"]]);export{E as default}; diff --git a/web/settings/assets/counter-9e94ca6b.js b/web/settings/assets/counter-a31f5e7d.js similarity index 75% rename from web/settings/assets/counter-9e94ca6b.js rename to web/settings/assets/counter-a31f5e7d.js index 25d5ca6e86..aae50d9f7a 100644 --- a/web/settings/assets/counter-9e94ca6b.js +++ b/web/settings/assets/counter-a31f5e7d.js @@ -1 +1 @@ -import{C as m}from"./HardwareInstallation-727b5962.js";import{_ as d,u as r,l as p,m as f,G as n,E as s,B as a}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSolaredgeCounter",mixins:[m]},b={class:"device-solaredge-counter"};function c(o,e,_,v,w,C){const l=r("openwb-base-heading"),u=r("openwb-base-alert"),i=r("openwb-base-number-input");return p(),f("div",b,[n(l,null,{default:s(()=>e[2]||(e[2]=[a(" Einstellungen für SolarEdge Zähler ")])),_:1}),n(u,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[a(" Hierfür muss ein EVU-Zähler am SolarEdge Wechselrichter per Modbus angebunden sein. Der Zähler muss an erster Position im Wechselrichter konfiguriert sein. ")])),_:1}),n(i,{title:"SolarEdge-Geräte-ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),n(i,{title:"SolarEdge-Meter-ID","model-value":o.component.configuration.meter_id,min:"1",max:"255",required:"","onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"])])}const M=d(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/counter.vue"]]);export{M as default}; +import{C as m}from"./HardwareInstallation-3a644290.js";import{_ as d,u as r,l as p,m as f,G as n,E as s,y as a}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSolaredgeCounter",mixins:[m]},b={class:"device-solaredge-counter"};function c(o,e,_,v,w,C){const l=r("openwb-base-heading"),u=r("openwb-base-alert"),i=r("openwb-base-number-input");return p(),f("div",b,[n(l,null,{default:s(()=>e[2]||(e[2]=[a(" Einstellungen für SolarEdge Zähler ")])),_:1}),n(u,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[a(" Hierfür muss ein EVU-Zähler am SolarEdge Wechselrichter per Modbus angebunden sein. Der Zähler muss an erster Position im Wechselrichter konfiguriert sein. ")])),_:1}),n(i,{title:"SolarEdge-Geräte-ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),n(i,{title:"SolarEdge-Meter-ID","model-value":o.component.configuration.meter_id,min:"1",max:"255",required:"","onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"])])}const M=d(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/counter.vue"]]);export{M as default}; diff --git a/web/settings/assets/counter-7680421b.js b/web/settings/assets/counter-ab315ba3.js similarity index 59% rename from web/settings/assets/counter-7680421b.js rename to web/settings/assets/counter-ab315ba3.js index 604099a845..028adf75ea 100644 --- a/web/settings/assets/counter-7680421b.js +++ b/web/settings/assets/counter-ab315ba3.js @@ -1 +1 @@ -import{C as o}from"./HardwareInstallation-727b5962.js";import{_ as s,u as n,l as r,m as i,G as a,E as p,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceKostalSemCounter",mixins:[o]},l={class:"device-kostal-sem-counter"};function d(_,e,u,f,b,h){const t=n("openwb-base-alert");return r(),i("div",l,[a(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(" Diese Komponente ist nur richtig, wenn der Zähler NICHT direkt am Wechselrichter (Kostal Plenticore) angeschlossen ist und daher separat abgefragt werden muss. ")])),_:1})])}const N=s(m,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_sem/counter.vue"]]);export{N as default}; +import{C as o}from"./HardwareInstallation-3a644290.js";import{_ as s,u as n,l as r,m as i,G as a,E as p,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceKostalSemCounter",mixins:[o]},l={class:"device-kostal-sem-counter"};function d(_,e,u,f,b,h){const t=n("openwb-base-alert");return r(),i("div",l,[a(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(" Diese Komponente ist nur richtig, wenn der Zähler NICHT direkt am Wechselrichter (Kostal Plenticore) angeschlossen ist und daher separat abgefragt werden muss. ")])),_:1})])}const N=s(m,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_sem/counter.vue"]]);export{N as default}; diff --git a/web/settings/assets/counter-aed75c81.js b/web/settings/assets/counter-aed75c81.js new file mode 100644 index 0000000000..107cae0e00 --- /dev/null +++ b/web/settings/assets/counter-aed75c81.js @@ -0,0 +1 @@ +import{C as n}from"./HardwareInstallation-3a644290.js";import{_ as o,u as s,l as r,m as a,G as i,E as m,y as p}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceTeslaCounter",mixins:[n]},l={class:"device-tesla-counter"};function _(d,e,u,f,v,x){const t=s("openwb-base-alert");return r(),a("div",l,[i(t,{subtype:"info"},{default:m(()=>e[0]||(e[0]=[p(" Je nach Firmware-Version ist nur ein Lastmanagement anhand der Gesamtleistung möglich, da nicht alle Firmware-Versionen Phasenströme liefern. ")])),_:1})])}const y=o(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/counter.vue"]]);export{y as default}; diff --git a/web/settings/assets/counter-b03c0db9.js b/web/settings/assets/counter-b03c0db9.js new file mode 100644 index 0000000000..9270db45bb --- /dev/null +++ b/web/settings/assets/counter-b03c0db9.js @@ -0,0 +1 @@ +import{C as t}from"./HardwareInstallation-3a644290.js";import{_ as n,u as r,l as s,m as a,G as i,E as p,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceCarloGavazziCounter",mixins:[t]},_={class:"device-carlo-gavazzi-counter"};function l(u,e,d,v,f,z){const o=r("openwb-base-alert");return s(),a("div",_,[i(o,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(" ModbusTCP muss aktiviert sein. ")])),_:1})])}const E=n(m,[["render",l],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/carlo_gavazzi/counter.vue"]]);export{E as default}; diff --git a/web/settings/assets/counter-d04c382b.js b/web/settings/assets/counter-bef0b821.js similarity index 64% rename from web/settings/assets/counter-d04c382b.js rename to web/settings/assets/counter-bef0b821.js index 377fdf079b..1230033533 100644 --- a/web/settings/assets/counter-d04c382b.js +++ b/web/settings/assets/counter-bef0b821.js @@ -1 +1 @@ -import{C as s}from"./HardwareInstallation-727b5962.js";import{_ as m,u as n,l as u,m as p,G as t,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLoggerCounter",mixins:[s]},_={class:"device-huawei-smart-logger-counter"};function g(o,e,b,f,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return u(),p("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Huawei SmartLogger Zähler ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const H=m(c,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/counter.vue"]]);export{H as default}; +import{C as s}from"./HardwareInstallation-3a644290.js";import{_ as m,u as n,l as u,m as p,G as t,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLoggerCounter",mixins:[s]},_={class:"device-huawei-smart-logger-counter"};function g(o,e,b,f,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return u(),p("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Huawei SmartLogger Zähler ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const H=m(c,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/counter.vue"]]);export{H as default}; diff --git a/web/settings/assets/counter-a6252054.js b/web/settings/assets/counter-ccad25ea.js similarity index 65% rename from web/settings/assets/counter-a6252054.js rename to web/settings/assets/counter-ccad25ea.js index 8aedd77578..9c796bd997 100644 --- a/web/settings/assets/counter-a6252054.js +++ b/web/settings/assets/counter-ccad25ea.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as u,u as t,l as a,m as l,G as n,E as m,B as d}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DevicePowerdogCounter",mixins:[p]},_={class:"device-powerdog-counter"};function b(e,o,f,g,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-button-group-input");return a(),l("div",_,[n(i,null,{default:m(()=>o[1]||(o[1]=[d(" Einstellungen für Powerdog Zähler ")])),_:1}),n(r,{title:"Einbau-Position",buttons:[{buttonValue:!1,text:"Hausverbrauch"},{buttonValue:!0,text:"EVU-Punkt"}],"model-value":e.component.configuration.position_evu,"onUpdate:modelValue":o[0]||(o[0]=s=>e.updateConfiguration(s,"configuration.position_evu"))},null,8,["model-value"])])}const N=u(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/powerdog/counter.vue"]]);export{N as default}; +import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as u,u as t,l as a,m as l,G as n,E as m,y as d}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DevicePowerdogCounter",mixins:[p]},_={class:"device-powerdog-counter"};function b(e,o,f,g,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-button-group-input");return a(),l("div",_,[n(i,null,{default:m(()=>o[1]||(o[1]=[d(" Einstellungen für Powerdog Zähler ")])),_:1}),n(r,{title:"Einbau-Position",buttons:[{buttonValue:!1,text:"Hausverbrauch"},{buttonValue:!0,text:"EVU-Punkt"}],"model-value":e.component.configuration.position_evu,"onUpdate:modelValue":o[0]||(o[0]=s=>e.updateConfiguration(s,"configuration.position_evu"))},null,8,["model-value"])])}const N=u(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/powerdog/counter.vue"]]);export{N as default}; diff --git a/web/settings/assets/counter-dddfcee5.js b/web/settings/assets/counter-cfb2a7aa.js similarity index 72% rename from web/settings/assets/counter-dddfcee5.js rename to web/settings/assets/counter-cfb2a7aa.js index 81c263e07f..cf5e5f7c23 100644 --- a/web/settings/assets/counter-dddfcee5.js +++ b/web/settings/assets/counter-cfb2a7aa.js @@ -1 +1 @@ -import{C as d}from"./HardwareInstallation-727b5962.js";import{_ as m,u as n,l as u,m as c,G as r,E as i,B as o,A as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceDiscovergyCounter",mixins:[d]},g={class:"device-discovergy-counter"};function _(t,e,v,b,w,x){const s=n("openwb-base-heading"),a=n("openwb-base-text-input");return u(),c("div",g,[r(s,null,{default:i(()=>e[1]||(e[1]=[o(" Einstellungen für Discovergy Zähler ")])),_:1}),r(a,{title:"Meter-ID",required:"","model-value":t.component.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>e[2]||(e[2]=[o(" Um die ID herauszufinden mit dem Browser die Adresse "),l("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1),o(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")])),_:1},8,["model-value"])])}const E=m(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/counter.vue"]]);export{E as default}; +import{C as d}from"./HardwareInstallation-3a644290.js";import{_ as m,u as n,l as u,m as c,G as r,E as i,y as o,x as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceDiscovergyCounter",mixins:[d]},g={class:"device-discovergy-counter"};function _(t,e,v,b,w,x){const s=n("openwb-base-heading"),a=n("openwb-base-text-input");return u(),c("div",g,[r(s,null,{default:i(()=>e[1]||(e[1]=[o(" Einstellungen für Discovergy Zähler ")])),_:1}),r(a,{title:"Meter-ID",required:"","model-value":t.component.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>e[2]||(e[2]=[o(" Um die ID herauszufinden mit dem Browser die Adresse "),l("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1),o(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")])),_:1},8,["model-value"])])}const E=m(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/counter.vue"]]);export{E as default}; diff --git a/web/settings/assets/counter-d193f9cd.js b/web/settings/assets/counter-d1809224.js similarity index 67% rename from web/settings/assets/counter-d193f9cd.js rename to web/settings/assets/counter-d1809224.js index 66810417be..ce51eae3db 100644 --- a/web/settings/assets/counter-d193f9cd.js +++ b/web/settings/assets/counter-d1809224.js @@ -1 +1 @@ -import{C as r}from"./HardwareInstallation-727b5962.js";import{_ as a,u as t,l,m as u,G as n,E as m,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitCounter",mixins:[r]},v={class:"device-openwb-evukit-counter"};function _(o,e,f,b,w,x){const i=t("openwb-base-heading"),s=t("openwb-base-select-input");return l(),u("div",v,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Zähler ")])),_:1}),n(s,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:3,text:"B23"},{value:1,text:"Lovato"},{value:0,text:"MPM3PM"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":o.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/counter.vue"]]);export{$ as default}; +import{C as r}from"./HardwareInstallation-3a644290.js";import{_ as a,u as t,l,m as u,G as n,E as m,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitCounter",mixins:[r]},v={class:"device-openwb-evukit-counter"};function _(o,e,f,b,w,x){const i=t("openwb-base-heading"),s=t("openwb-base-select-input");return l(),u("div",v,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Zähler ")])),_:1}),n(s,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:3,text:"B23"},{value:1,text:"Lovato"},{value:0,text:"MPM3PM"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":o.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/counter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/counter-09ee9f20.js b/web/settings/assets/counter-d5ce341d.js similarity index 53% rename from web/settings/assets/counter-09ee9f20.js rename to web/settings/assets/counter-d5ce341d.js index c355307531..2becbc1cd4 100644 --- a/web/settings/assets/counter-09ee9f20.js +++ b/web/settings/assets/counter-d5ce341d.js @@ -1 +1 @@ -import{C as m}from"./HardwareInstallation-727b5962.js";import{_ as u,u as o,l as d,m as l,G as t,E as i,B as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceEnphaseCounter",mixins:[m]},_={class:"device-enphase-counter"};function f(n,e,b,v,g,E){const p=o("openwb-base-heading"),r=o("openwb-base-number-input");return d(),l("div",_,[t(p,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für Enphase Envoy / IQ Gateway Zähler ")])),_:1}),t(r,{title:"EID",required:"","model-value":n.component.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.eid"))},{help:i(()=>e[2]||(e[2]=[s(' EID für "net-consumption" ')])),_:1},8,["model-value"])])}const k=u(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/counter.vue"]]);export{k as default}; +import{C as m}from"./HardwareInstallation-3a644290.js";import{_ as u,u as o,l as d,m as l,G as t,E as i,y as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceEnphaseCounter",mixins:[m]},_={class:"device-enphase-counter"};function f(n,e,b,v,g,E){const p=o("openwb-base-heading"),r=o("openwb-base-number-input");return d(),l("div",_,[t(p,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für Enphase Envoy / IQ Gateway Zähler ")])),_:1}),t(r,{title:"EID",required:"","model-value":n.component.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.eid"))},{help:i(()=>e[2]||(e[2]=[s(' EID für "net-consumption" ')])),_:1},8,["model-value"])])}const V=u(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/counter.vue"]]);export{V as default}; diff --git a/web/settings/assets/counter-fea14072.js b/web/settings/assets/counter-f0638cd4.js similarity index 77% rename from web/settings/assets/counter-fea14072.js rename to web/settings/assets/counter-f0638cd4.js index b8c5697398..0192942173 100644 --- a/web/settings/assets/counter-fea14072.js +++ b/web/settings/assets/counter-f0638cd4.js @@ -1 +1 @@ -import{C as s}from"./HardwareInstallation-727b5962.js";import{_ as d,u as r,l as m,m as g,G as t,E as l,B as u}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceVZLoggerCounter",mixins:[s]},_={class:"device-vzlogger-counter"};function c(n,e,b,v,w,Z){const a=r("openwb-base-heading"),p=r("openwb-base-alert"),i=r("openwb-base-number-input");return m(),g("div",_,[t(a,null,{default:l(()=>e[3]||(e[3]=[u(" Einstellungen für VZLogger Zähler ")])),_:1}),t(p,{subtype:"info"},{default:l(()=>e[4]||(e[4]=[u(' Bitte auf der Shell ausführen: "curl -s IPdesVZLogger:Port | jq .|cat -n" Zählen, in welcher Zeile der gesuchte Wert steht. Bei der ersten Zeile mit 1 anfangen zu zählen. ')])),_:1}),t(i,{title:"Zeile der Leistung",required:"",min:0,"model-value":n.component.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.line_power"))},null,8,["model-value"]),t(i,{title:"Zeile der Einspeisung",min:0,"model-value":n.component.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.line_exported"))},null,8,["model-value"]),t(i,{title:"Zeile des Bezugs",min:0,"model-value":n.component.configuration.line_imported,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.line_imported"))},null,8,["model-value"])])}const U=d(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/counter.vue"]]);export{U as default}; +import{C as s}from"./HardwareInstallation-3a644290.js";import{_ as d,u as r,l as m,m as g,G as t,E as l,y as u}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceVZLoggerCounter",mixins:[s]},_={class:"device-vzlogger-counter"};function c(n,e,b,v,w,Z){const a=r("openwb-base-heading"),p=r("openwb-base-alert"),i=r("openwb-base-number-input");return m(),g("div",_,[t(a,null,{default:l(()=>e[3]||(e[3]=[u(" Einstellungen für VZLogger Zähler ")])),_:1}),t(p,{subtype:"info"},{default:l(()=>e[4]||(e[4]=[u(' Bitte auf der Shell ausführen: "curl -s IPdesVZLogger:Port | jq .|cat -n" Zählen, in welcher Zeile der gesuchte Wert steht. Bei der ersten Zeile mit 1 anfangen zu zählen. ')])),_:1}),t(i,{title:"Zeile der Leistung",required:"",min:0,"model-value":n.component.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.line_power"))},null,8,["model-value"]),t(i,{title:"Zeile der Einspeisung",min:0,"model-value":n.component.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.line_exported"))},null,8,["model-value"]),t(i,{title:"Zeile des Bezugs",min:0,"model-value":n.component.configuration.line_imported,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.line_imported"))},null,8,["model-value"])])}const U=d(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/counter.vue"]]);export{U as default}; diff --git a/web/settings/assets/counter-b7f323cc.js b/web/settings/assets/counter-fa232f15.js similarity index 62% rename from web/settings/assets/counter-b7f323cc.js rename to web/settings/assets/counter-fa232f15.js index b80d2d3ae9..071976c8ca 100644 --- a/web/settings/assets/counter-b7f323cc.js +++ b/web/settings/assets/counter-fa232f15.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as a,u as n,l as m,m as u,G as t,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDeyeCounter",mixins:[p]},_={class:"device-deye-counter"};function b(o,e,f,v,g,C){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Deye Zähler ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const k=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/counter.vue"]]);export{k as default}; +import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as a,u as n,l as m,m as u,G as t,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDeyeCounter",mixins:[p]},_={class:"device-deye-counter"};function b(o,e,f,v,g,C){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Deye Zähler ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const k=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter_sm-dd8aa57c.js b/web/settings/assets/counter_sm-66058b82.js similarity index 81% rename from web/settings/assets/counter_sm-dd8aa57c.js rename to web/settings/assets/counter_sm-66058b82.js index 8b37016056..d32fe9da50 100644 --- a/web/settings/assets/counter_sm-dd8aa57c.js +++ b/web/settings/assets/counter_sm-66058b82.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as f,u as i,l as g,m as c,G as o,E as a,B as t,A as l,F as b}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFroniusCounterSM",mixins:[p],computed:{meterRealtimeUrl:{get(){return`http://${this.device.configuration.ip_address}/solar_api/v1/GetMeterRealtimeData.cgi?Scope=System`}}}},v={class:"device-fronius-counter-sm"},w=["href"];function D(n,e,M,S,h,s){const m=i("openwb-base-heading"),d=i("openwb-base-select-input"),u=i("openwb-base-number-input");return g(),c("div",v,[o(m,null,{default:a(()=>e[2]||(e[2]=[t(" Einstellungen für Fronius SmartMeter ")])),_:1}),o(d,{title:"Kompatibilitätsmodus","not-selected":"Bitte auswählen",required:"",options:[{value:0,text:"Aus"},{value:1,text:"Variante 1"},{value:2,text:"Variante 2"}],"model-value":n.component.configuration.variant,"onUpdate:modelValue":e[0]||(e[0]=r=>n.updateConfiguration(r,"configuration.variant"))},{help:a(()=>e[3]||(e[3]=[t(" Gegebenenfalls auch für alte Modelle nach einem Softwareupdate erforderlich. Fronius hat derzeit keine Konsistente Schnittstelle. Speziell beim Gen24 kann Variante 1 oder 2 erforderlich sein. Nach speichern sollten nach etwa 10-20 Sekunden Daten angezeigt werden. Ist dies nicht der Fall die andere Variante ausprobieren. ")])),_:1},8,["model-value"]),o(u,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":n.component.configuration.meter_id,"onUpdate:modelValue":e[1]||(e[1]=r=>n.updateConfiguration(r,"configuration.meter_id"))},{help:a(()=>[e[4]||(e[4]=t(" Die Meter ID des SmartMeters. Diese ist normalerweise 1. Bei mehreren SmartMetern im System kann es notwendig sein, die Meter ID zu ändern. Zur Ermittlung kann der folgende Link verwendet werden. Die Meter ID kann den zurückgegebenen JSON Daten entnommen werden. ")),l("a",{href:s.meterRealtimeUrl,target:"_blank",rel:"noopener noreferrer"},b(s.meterRealtimeUrl),9,w),e[5]||(e[5]=l("br",null,null,-1)),e[6]||(e[6]=t(' Im Abschnitt "Body" -> "Data" werden die installierten SmartMeter mit aktuellen Messwerten angezeigt. Die Meter ID ist die Zahl vor dem Doppelpunkt und den zugehörigen Messwerten. '))]),_:1},8,["model-value"])])}const U=f(_,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/counter_sm.vue"]]);export{U as default}; +import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as f,u as i,l as g,m as c,G as o,E as a,y as t,x as l,F as b}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFroniusCounterSM",mixins:[p],computed:{meterRealtimeUrl:{get(){return`http://${this.device.configuration.ip_address}/solar_api/v1/GetMeterRealtimeData.cgi?Scope=System`}}}},v={class:"device-fronius-counter-sm"},w=["href"];function D(n,e,M,S,h,s){const m=i("openwb-base-heading"),d=i("openwb-base-select-input"),u=i("openwb-base-number-input");return g(),c("div",v,[o(m,null,{default:a(()=>e[2]||(e[2]=[t(" Einstellungen für Fronius SmartMeter ")])),_:1}),o(d,{title:"Kompatibilitätsmodus","not-selected":"Bitte auswählen",required:"",options:[{value:0,text:"Aus"},{value:1,text:"Variante 1"},{value:2,text:"Variante 2"}],"model-value":n.component.configuration.variant,"onUpdate:modelValue":e[0]||(e[0]=r=>n.updateConfiguration(r,"configuration.variant"))},{help:a(()=>e[3]||(e[3]=[t(" Gegebenenfalls auch für alte Modelle nach einem Softwareupdate erforderlich. Fronius hat derzeit keine Konsistente Schnittstelle. Speziell beim Gen24 kann Variante 1 oder 2 erforderlich sein. Nach speichern sollten nach etwa 10-20 Sekunden Daten angezeigt werden. Ist dies nicht der Fall die andere Variante ausprobieren. ")])),_:1},8,["model-value"]),o(u,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":n.component.configuration.meter_id,"onUpdate:modelValue":e[1]||(e[1]=r=>n.updateConfiguration(r,"configuration.meter_id"))},{help:a(()=>[e[4]||(e[4]=t(" Die Meter ID des SmartMeters. Diese ist normalerweise 1. Bei mehreren SmartMetern im System kann es notwendig sein, die Meter ID zu ändern. Zur Ermittlung kann der folgende Link verwendet werden. Die Meter ID kann den zurückgegebenen JSON Daten entnommen werden. ")),l("a",{href:s.meterRealtimeUrl,target:"_blank",rel:"noopener noreferrer"},b(s.meterRealtimeUrl),9,w),e[5]||(e[5]=l("br",null,null,-1)),e[6]||(e[6]=t(' Im Abschnitt "Body" -> "Data" werden die installierten SmartMeter mit aktuellen Messwerten angezeigt. Die Meter ID ist die Zahl vor dem Doppelpunkt und den zugehörigen Messwerten. '))]),_:1},8,["model-value"])])}const N=f(_,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/counter_sm.vue"]]);export{N as default}; diff --git a/web/settings/assets/device-6dfe8cd8.js b/web/settings/assets/device-04b7418e.js similarity index 71% rename from web/settings/assets/device-6dfe8cd8.js rename to web/settings/assets/device-04b7418e.js index a218163919..dd1112d53a 100644 --- a/web/settings/assets/device-6dfe8cd8.js +++ b/web/settings/assets/device-04b7418e.js @@ -1 +1 @@ -import{D as r}from"./HardwareInstallation-727b5962.js";import{_ as l,u as n,l as u,m as d,G as a,E as m,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceTasmota",mixins:[r]},v={class:"device-tasmota"};function f(t,e,b,g,w,x){const i=n("openwb-base-heading"),s=n("openwb-base-text-input"),p=n("openwb-base-select-input");return u(),d("div",v,[a(i,null,{default:m(()=>e[2]||(e[2]=[c("Einstellungen für Tasmota")])),_:1}),a(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Phase","not-selected":"Bitte auswählen",options:[{value:1,text:"1"},{value:2,text:"2"},{value:3,text:"3"}],"model-value":t.device.configuration.phase,required:"","onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.phase"))},null,8,["model-value"])])}const q=l(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tasmota/tasmota/device.vue"]]);export{q as default}; +import{D as r}from"./HardwareInstallation-3a644290.js";import{_ as l,u as n,l as u,m as d,G as a,E as m,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceTasmota",mixins:[r]},v={class:"device-tasmota"};function f(t,e,b,g,w,x){const i=n("openwb-base-heading"),s=n("openwb-base-text-input"),p=n("openwb-base-select-input");return u(),d("div",v,[a(i,null,{default:m(()=>e[2]||(e[2]=[c("Einstellungen für Tasmota")])),_:1}),a(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Phase","not-selected":"Bitte auswählen",options:[{value:1,text:"1"},{value:2,text:"2"},{value:3,text:"3"}],"model-value":t.device.configuration.phase,required:"","onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.phase"))},null,8,["model-value"])])}const q=l(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tasmota/tasmota/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-82bb06d6.js b/web/settings/assets/device-123cfe52.js similarity index 61% rename from web/settings/assets/device-82bb06d6.js rename to web/settings/assets/device-123cfe52.js index 5de1f600cc..7bce1600dd 100644 --- a/web/settings/assets/device-82bb06d6.js +++ b/web/settings/assets/device-123cfe52.js @@ -1 +1 @@ -import{D as p}from"./HardwareInstallation-727b5962.js";import{_ as m,u as t,l,m as d,G as i,E as u,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarmax",mixins:[p]},f={class:"device-solarmax"};function b(o,e,v,g,x,w){const a=t("openwb-base-heading"),r=t("openwb-base-text-input"),s=t("openwb-base-number-input");return l(),d("div",f,[i(a,null,{default:u(()=>e[2]||(e[2]=[c(" Einstellungen für Solarmax ")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const P=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/device.vue"]]);export{P as default}; +import{D as p}from"./HardwareInstallation-3a644290.js";import{_ as m,u as t,l,m as d,G as i,E as u,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarmax",mixins:[p]},f={class:"device-solarmax"};function b(o,e,v,g,x,w){const a=t("openwb-base-heading"),r=t("openwb-base-text-input"),s=t("openwb-base-number-input");return l(),d("div",f,[i(a,null,{default:u(()=>e[2]||(e[2]=[c(" Einstellungen für Solarmax ")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const N=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/device.vue"]]);export{N as default}; diff --git a/web/settings/assets/device-72bc8ff3.js b/web/settings/assets/device-1565347a.js similarity index 74% rename from web/settings/assets/device-72bc8ff3.js rename to web/settings/assets/device-1565347a.js index 1c4e68c731..8e2a254355 100644 --- a/web/settings/assets/device-72bc8ff3.js +++ b/web/settings/assets/device-1565347a.js @@ -1 +1 @@ -import{D as u}from"./HardwareInstallation-727b5962.js";import{_ as l,u as n,l as m,m as b,G as t,E as s,B as c,A as _}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceDeye",mixins:[u]},v={class:"device-deye"};function g(o,e,w,y,x,C){const r=n("openwb-base-heading"),a=n("openwb-base-alert"),p=n("openwb-base-text-input"),d=n("openwb-base-number-input");return m(),b("div",v,[t(r,null,{default:s(()=>e[2]||(e[2]=[c("Einstellungen für Deye")])),_:1}),t(a,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[_("span",{class:"text-danger"}," Deye Wechselrichter verfügen über keine Modbus-TCP Schnittstelle. Für die Auslesung wird ein RS485/LAN-Adapter benötigt. ",-1)])),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>o.updateConfiguration(i,"configuration.port"))},null,8,["model-value"])])}const q=l(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/device.vue"]]);export{q as default}; +import{D as u}from"./HardwareInstallation-3a644290.js";import{_ as l,u as n,l as m,m as b,G as t,E as s,y as c,x as _}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceDeye",mixins:[u]},v={class:"device-deye"};function g(o,e,w,y,x,C){const r=n("openwb-base-heading"),a=n("openwb-base-alert"),p=n("openwb-base-text-input"),d=n("openwb-base-number-input");return m(),b("div",v,[t(r,null,{default:s(()=>e[2]||(e[2]=[c("Einstellungen für Deye")])),_:1}),t(a,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[_("span",{class:"text-danger"}," Deye Wechselrichter verfügen über keine Modbus-TCP Schnittstelle. Für die Auslesung wird ein RS485/LAN-Adapter benötigt. ",-1)])),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>o.updateConfiguration(i,"configuration.port"))},null,8,["model-value"])])}const q=l(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-6dd461c4.js b/web/settings/assets/device-1830d04b.js similarity index 58% rename from web/settings/assets/device-6dd461c4.js rename to web/settings/assets/device-1830d04b.js index c09515ef8e..4321e787f6 100644 --- a/web/settings/assets/device-6dd461c4.js +++ b/web/settings/assets/device-1830d04b.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as p,u as r,l as u,m as d,G as n,E as l,B as m}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfox",mixins:[a]},c={class:"device-powerfox"};function v(o,e,w,_,b,g){const s=r("openwb-base-heading"),i=r("openwb-base-text-input");return u(),d("div",c,[n(s,null,{default:l(()=>e[2]||(e[2]=[m(" Einstellungen für Powerfox ")])),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const q=p(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/device.vue"]]);export{q as default}; +import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as p,u as r,l as u,m as d,G as n,E as l,y as m}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfox",mixins:[a]},c={class:"device-powerfox"};function v(o,e,w,_,b,g){const s=r("openwb-base-heading"),i=r("openwb-base-text-input");return u(),d("div",c,[n(s,null,{default:l(()=>e[2]||(e[2]=[m(" Einstellungen für Powerfox ")])),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const k=p(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-ee4fe242.js b/web/settings/assets/device-1b11a3ea.js similarity index 79% rename from web/settings/assets/device-ee4fe242.js rename to web/settings/assets/device-1b11a3ea.js index c24515101a..16fc8fb3c2 100644 --- a/web/settings/assets/device-ee4fe242.js +++ b/web/settings/assets/device-1b11a3ea.js @@ -1 +1 @@ -import{D as v}from"./HardwareInstallation-727b5962.js";import{_ as m,u as o,l as g,m as A,G as s,E as u,B as i,A as n,F as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSonnenbatterie",mixins:[v],computed:{linkRestApi1(){return"http://"+this.device.configuration.ip_address+":7979/rest/devices/battery"},linkRestApi2(){return"http://"+this.device.configuration.ip_address+":7979/rest/devices/battery/M05"},linkJsonApi1(){return"http://"+this.device.configuration.ip_address+"/api/v1/status"},linkJsonApi2(){return"http://"+this.device.configuration.ip_address+"/api/v2/status"}}},k={class:"device-sonnenbatterie"},w={style:{display:"block"}},B=["href"],J=["href"],R=["href"],I=["href"];function P(r,e,h,x,C,t){const d=o("openwb-base-heading"),p=o("openwb-base-alert"),f=o("openwb-base-text-input"),b=o("openwb-base-select-input");return g(),A("div",k,[s(d,null,{default:u(()=>e[2]||(e[2]=[i(" Einstellungen für SonnenBatterie ")])),_:1}),s(p,{subtype:"info"},{default:u(()=>e[3]||(e[3]=[i(' Die Leistung steht nur in den Varianten "Rest-API 2" und "JSON-API" zur Verfügung. ')])),_:1}),s(f,{title:"IP oder Hostname",subtype:"host",required:"","model-value":r.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>r.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"]),s(b,{title:"Datenverbindung",required:"","not-selected":"Bitte auswählen",options:[{value:0,text:"Rest-API 1 (z.B. ECO 4)"},{value:2,text:"Rest-API 2 (z.B. ECO 6)"},{value:1,text:"JSON-API v1(z.B. ECO 8 oder 10)"},{value:3,text:"JSON-API v2(z.B. ECO 8 oder 10)"}],"model-value":r.device.configuration.variant,"onUpdate:modelValue":e[1]||(e[1]=a=>r.updateConfiguration(a,"configuration.variant"))},{help:u(()=>[n("span",w,[e[4]||(e[4]=i(" Je nach SonnenBatterie muss die richtige Datenverbindung ausgewählt werden. Folgende URLs werden zum Abruf der Daten genutzt und können auch manuell über einen Browser abgefragt werden, um die richtige Einstellung zu finden:")),e[5]||(e[5]=n("br",null,null,-1)),e[6]||(e[6]=i(" Rest-API 1: ")),n("a",{href:t.linkRestApi1,target:"_blank",rel:"noopener noreferrer"},l(t.linkRestApi1),9,B),e[7]||(e[7]=n("br",null,null,-1)),e[8]||(e[8]=i(" Rest-API 2: ")),n("a",{href:t.linkRestApi2,target:"_blank",rel:"noopener noreferrer"},l(t.linkRestApi2),9,J),e[9]||(e[9]=n("br",null,null,-1)),e[10]||(e[10]=i(" JSON-API v1: ")),n("a",{href:t.linkJsonApi1,target:"_blank",rel:"noopener noreferrer"},l(t.linkJsonApi1),9,R),e[11]||(e[11]=n("br",null,null,-1)),e[12]||(e[12]=i(" JSON-API v2: ")),n("a",{href:t.linkJsonApi2,target:"_blank",rel:"noopener noreferrer"},l(t.linkJsonApi2),9,I)])]),_:1},8,["model-value"])])}const U=m(_,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/device.vue"]]);export{U as default}; +import{D as v}from"./HardwareInstallation-3a644290.js";import{_ as m,u as o,l as g,m as _,G as s,E as u,y as i,x as n,F as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const A={name:"DeviceSonnenbatterie",mixins:[v],computed:{linkRestApi1(){return"http://"+this.device.configuration.ip_address+":7979/rest/devices/battery"},linkRestApi2(){return"http://"+this.device.configuration.ip_address+":7979/rest/devices/battery/M05"},linkJsonApi1(){return"http://"+this.device.configuration.ip_address+"/api/v1/status"},linkJsonApi2(){return"http://"+this.device.configuration.ip_address+"/api/v2/status"}}},k={class:"device-sonnenbatterie"},w={style:{display:"block"}},B=["href"],J=["href"],R=["href"],I=["href"];function P(r,e,x,h,C,t){const d=o("openwb-base-heading"),p=o("openwb-base-alert"),f=o("openwb-base-text-input"),b=o("openwb-base-select-input");return g(),_("div",k,[s(d,null,{default:u(()=>e[2]||(e[2]=[i(" Einstellungen für SonnenBatterie ")])),_:1}),s(p,{subtype:"info"},{default:u(()=>e[3]||(e[3]=[i(' Die Leistung steht nur in den Varianten "Rest-API 2" und "JSON-API" zur Verfügung. ')])),_:1}),s(f,{title:"IP oder Hostname",subtype:"host",required:"","model-value":r.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>r.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"]),s(b,{title:"Datenverbindung",required:"","not-selected":"Bitte auswählen",options:[{value:0,text:"Rest-API 1 (z.B. ECO 4)"},{value:2,text:"Rest-API 2 (z.B. ECO 6)"},{value:1,text:"JSON-API v1(z.B. ECO 8 oder 10)"},{value:3,text:"JSON-API v2(z.B. ECO 8 oder 10)"}],"model-value":r.device.configuration.variant,"onUpdate:modelValue":e[1]||(e[1]=a=>r.updateConfiguration(a,"configuration.variant"))},{help:u(()=>[n("span",w,[e[4]||(e[4]=i(" Je nach SonnenBatterie muss die richtige Datenverbindung ausgewählt werden. Folgende URLs werden zum Abruf der Daten genutzt und können auch manuell über einen Browser abgefragt werden, um die richtige Einstellung zu finden:")),e[5]||(e[5]=n("br",null,null,-1)),e[6]||(e[6]=i(" Rest-API 1: ")),n("a",{href:t.linkRestApi1,target:"_blank",rel:"noopener noreferrer"},l(t.linkRestApi1),9,B),e[7]||(e[7]=n("br",null,null,-1)),e[8]||(e[8]=i(" Rest-API 2: ")),n("a",{href:t.linkRestApi2,target:"_blank",rel:"noopener noreferrer"},l(t.linkRestApi2),9,J),e[9]||(e[9]=n("br",null,null,-1)),e[10]||(e[10]=i(" JSON-API v1: ")),n("a",{href:t.linkJsonApi1,target:"_blank",rel:"noopener noreferrer"},l(t.linkJsonApi1),9,R),e[11]||(e[11]=n("br",null,null,-1)),e[12]||(e[12]=i(" JSON-API v2: ")),n("a",{href:t.linkJsonApi2,target:"_blank",rel:"noopener noreferrer"},l(t.linkJsonApi2),9,I)])]),_:1},8,["model-value"])])}const U=m(A,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/device.vue"]]);export{U as default}; diff --git a/web/settings/assets/device-d74725ec.js b/web/settings/assets/device-23e00b31.js similarity index 79% rename from web/settings/assets/device-d74725ec.js rename to web/settings/assets/device-23e00b31.js index 6c8a3e5592..47d3f0de4f 100644 --- a/web/settings/assets/device-d74725ec.js +++ b/web/settings/assets/device-23e00b31.js @@ -1 +1 @@ -import{D as u}from"./HardwareInstallation-727b5962.js";import{_ as m,u as o,l as b,m as c,G as t,E as s,B as r,A as f}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSolarEdge",mixins:[u]},_={class:"device-solaredge"};function v(n,e,w,B,h,S){const a=o("openwb-base-heading"),d=o("openwb-base-alert"),p=o("openwb-base-text-input"),l=o("openwb-base-number-input");return b(),c("div",_,[t(a,null,{default:s(()=>e[2]||(e[2]=[r(" Einstellungen für SolarEdge ")])),_:1}),t(d,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[r(" ModbusTCP muss im Wechselrichter aktiviert werden und der Wechselrichter per LAN angebunden sein."),f("br",null,null,-1),r(" SolarEdge lässt nur eine ModbusTCP-Verbindung zu. Wenn Sie mit einem weiteren SmartHome-System, wie z.B. ioBroker oder openHAB, den SolarEdge-Wechselrichter abfragen, kann dies die Abfrage durch die openWB stören oder verhindern. ")])),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(l,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.port"))},{help:s(()=>e[4]||(e[4]=[r(" Je nach Produktionsdatum und Softwareversion ist 502 oder 1502 ab Werk eingestellt. Bitte im Wechselrichter überprüfen. ")])),_:1},8,["model-value"])])}const $=m(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/device.vue"]]);export{$ as default}; +import{D as u}from"./HardwareInstallation-3a644290.js";import{_ as m,u as o,l as b,m as c,G as t,E as s,y as r,x as f}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSolarEdge",mixins:[u]},_={class:"device-solaredge"};function v(n,e,w,B,h,S){const a=o("openwb-base-heading"),d=o("openwb-base-alert"),p=o("openwb-base-text-input"),l=o("openwb-base-number-input");return b(),c("div",_,[t(a,null,{default:s(()=>e[2]||(e[2]=[r(" Einstellungen für SolarEdge ")])),_:1}),t(d,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[r(" ModbusTCP muss im Wechselrichter aktiviert werden und der Wechselrichter per LAN angebunden sein."),f("br",null,null,-1),r(" SolarEdge lässt nur eine ModbusTCP-Verbindung zu. Wenn Sie mit einem weiteren SmartHome-System, wie z.B. ioBroker oder openHAB, den SolarEdge-Wechselrichter abfragen, kann dies die Abfrage durch die openWB stören oder verhindern. ")])),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(l,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.port"))},{help:s(()=>e[4]||(e[4]=[r(" Je nach Produktionsdatum und Softwareversion ist 502 oder 1502 ab Werk eingestellt. Bitte im Wechselrichter überprüfen. ")])),_:1},8,["model-value"])])}const $=m(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/device.vue"]]);export{$ as default}; diff --git a/web/settings/assets/device-b9b6be03.js b/web/settings/assets/device-249da548.js similarity index 50% rename from web/settings/assets/device-b9b6be03.js rename to web/settings/assets/device-249da548.js index a7b6aec568..d2f4e9fb54 100644 --- a/web/settings/assets/device-b9b6be03.js +++ b/web/settings/assets/device-249da548.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as p,u as o,l as d,m,G as n,E as l,B as u}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceBatterX",mixins:[a]},_={class:"device-batterx"};function f(t,e,b,v,x,g){const i=o("openwb-base-heading"),s=o("openwb-base-text-input");return d(),m("div",_,[n(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für BatterX ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const N=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/batterx/device.vue"]]);export{N as default}; +import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as p,u as o,l as d,m,G as n,E as l,y as u}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceBatterX",mixins:[a]},_={class:"device-batterx"};function f(t,e,b,v,x,g){const i=o("openwb-base-heading"),s=o("openwb-base-text-input");return d(),m("div",_,[n(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für BatterX ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/batterx/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-2c344b3e.js b/web/settings/assets/device-264114d8.js similarity index 50% rename from web/settings/assets/device-2c344b3e.js rename to web/settings/assets/device-264114d8.js index 86a79acd7e..0952984cef 100644 --- a/web/settings/assets/device-2c344b3e.js +++ b/web/settings/assets/device-264114d8.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as p,u as t,l,m as d,G as n,E as m,B as u}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarLog",mixins:[a]},c={class:"device-solar_log"};function f(o,e,g,v,b,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return l(),d("div",c,[n(i,null,{default:m(()=>e[1]||(e[1]=[u(" Einstellungen für Solar-Log ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const L=p(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/solar_log/device.vue"]]);export{L as default}; +import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as p,u as t,l,m as d,G as n,E as m,y as u}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarLog",mixins:[a]},c={class:"device-solar_log"};function f(o,e,g,v,b,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return l(),d("div",c,[n(i,null,{default:m(()=>e[1]||(e[1]=[u(" Einstellungen für Solar-Log ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=p(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/solar_log/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-0d49a26c.js b/web/settings/assets/device-2f945435.js similarity index 65% rename from web/settings/assets/device-0d49a26c.js rename to web/settings/assets/device-2f945435.js index 90e7ae24d1..d2f6d12fd0 100644 --- a/web/settings/assets/device-0d49a26c.js +++ b/web/settings/assets/device-2f945435.js @@ -1 +1 @@ -import{D as d}from"./HardwareInstallation-727b5962.js";import{_ as u,u as i,l as p,m as l,G as t,E as m,B as f}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSofar",mixins:[d]},v={class:"device-sofar"};function _(o,e,c,g,w,C){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",v,[t(r,null,{default:m(()=>e[3]||(e[3]=[f("Einstellungen für Sofar")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const I=u(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sofar/sofar/device.vue"]]);export{I as default}; +import{D as d}from"./HardwareInstallation-3a644290.js";import{_ as u,u as i,l as p,m as l,G as t,E as m,y as f}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSofar",mixins:[d]},v={class:"device-sofar"};function _(o,e,c,g,w,C){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",v,[t(r,null,{default:m(()=>e[3]||(e[3]=[f("Einstellungen für Sofar")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=u(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sofar/sofar/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-342a235f.js b/web/settings/assets/device-30d7c2e0.js similarity index 64% rename from web/settings/assets/device-342a235f.js rename to web/settings/assets/device-30d7c2e0.js index 604219cfc9..f5578937af 100644 --- a/web/settings/assets/device-342a235f.js +++ b/web/settings/assets/device-30d7c2e0.js @@ -1 +1 @@ -import{D as r}from"./HardwareInstallation-727b5962.js";import{_ as p,u as t,l as d,m as l,G as n,E as c,B as m}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceKostalSteca",mixins:[r]},_={class:"device-kostal-steca"};function f(o,e,v,b,g,x){const s=t("openwb-base-heading"),i=t("openwb-base-text-input");return d(),l("div",_,[n(s,null,{default:c(()=>e[1]||(e[1]=[m(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept ")])),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const h=p(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_steca/device.vue"]]);export{h as default}; +import{D as r}from"./HardwareInstallation-3a644290.js";import{_ as p,u as t,l as d,m as l,G as n,E as c,y as m}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceKostalSteca",mixins:[r]},_={class:"device-kostal-steca"};function f(o,e,v,b,g,x){const s=t("openwb-base-heading"),i=t("openwb-base-text-input");return d(),l("div",_,[n(s,null,{default:c(()=>e[1]||(e[1]=[m(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept ")])),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const h=p(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_steca/device.vue"]]);export{h as default}; diff --git a/web/settings/assets/device-45cfa872.js b/web/settings/assets/device-31e5797e.js similarity index 65% rename from web/settings/assets/device-45cfa872.js rename to web/settings/assets/device-31e5797e.js index e418f323e6..abf9066c17 100644 --- a/web/settings/assets/device-45cfa872.js +++ b/web/settings/assets/device-31e5797e.js @@ -1 +1 @@ -import{D as u}from"./HardwareInstallation-727b5962.js";import{_ as l,u as i,l as p,m as d,G as t,E as m,B as v}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSolarView",mixins:[u]},_={class:"device-solar-view"};function c(o,e,b,g,w,V){const a=i("openwb-base-heading"),s=i("openwb-base-text-input"),r=i("openwb-base-number-input");return p(),d("div",_,[t(a,null,{default:m(()=>e[3]||(e[3]=[v(" Einstellungen für SolarView ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Timeout",required:"","model-value":o.device.configuration.timeout,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.timeout"))},null,8,["model-value"])])}const N=l(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/solar_view/device.vue"]]);export{N as default}; +import{D as u}from"./HardwareInstallation-3a644290.js";import{_ as l,u as i,l as p,m as d,G as t,E as m,y as v}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSolarView",mixins:[u]},_={class:"device-solar-view"};function c(o,e,b,g,w,V){const a=i("openwb-base-heading"),s=i("openwb-base-text-input"),r=i("openwb-base-number-input");return p(),d("div",_,[t(a,null,{default:m(()=>e[3]||(e[3]=[v(" Einstellungen für SolarView ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Timeout",required:"","model-value":o.device.configuration.timeout,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.timeout"))},null,8,["model-value"])])}const y=l(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/solar_view/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-d32f448c.js b/web/settings/assets/device-3435a852.js similarity index 61% rename from web/settings/assets/device-d32f448c.js rename to web/settings/assets/device-3435a852.js index e5103f93b2..2416024a87 100644 --- a/web/settings/assets/device-d32f448c.js +++ b/web/settings/assets/device-3435a852.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as d,u as t,l as u,m,G as i,E as l,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceVictron",mixins:[a]},v={class:"device-victron"};function f(o,e,b,g,w,x){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),p=t("openwb-base-number-input");return u(),m("div",v,[i(r,null,{default:l(()=>e[2]||(e[2]=[c(" Einstellungen für Victron ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const P=d(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/device.vue"]]);export{P as default}; +import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as d,u as t,l as u,m,G as i,E as l,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceVictron",mixins:[a]},v={class:"device-victron"};function f(o,e,b,g,w,x){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),p=t("openwb-base-number-input");return u(),m("div",v,[i(r,null,{default:l(()=>e[2]||(e[2]=[c(" Einstellungen für Victron ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const N=d(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/device.vue"]]);export{N as default}; diff --git a/web/settings/assets/device-e80c7a1a.js b/web/settings/assets/device-354918a0.js similarity index 69% rename from web/settings/assets/device-e80c7a1a.js rename to web/settings/assets/device-354918a0.js index c2bd4d89d8..ea51bcc239 100644 --- a/web/settings/assets/device-e80c7a1a.js +++ b/web/settings/assets/device-354918a0.js @@ -1 +1 @@ -import{D as l}from"./HardwareInstallation-727b5962.js";import{_ as m,u as t,l as d,m as u,G as i,E as s,B as o,A as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceJson",mixins:[l]},f={class:"device-json"};function b(n,e,v,g,w,x){const r=t("openwb-base-heading"),a=t("openwb-base-text-input");return d(),u("div",f,[i(r,null,{default:s(()=>e[1]||(e[1]=[o(" Einstellungen für JSON ")])),_:1}),i(a,{title:"URL",subtype:"url",required:"","model-value":n.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>n.updateConfiguration(p,"configuration.url"))},{help:s(()=>e[2]||(e[2]=[o(" Es wird eine komplette URL erwartet mit Angaben zum Protokoll, IP oder Hostnamen, optional einem Port und einem Pfad. Die Antwort muss ein json-Objekt sein."),c("br",null,null,-1),o(" Beispiel: http://192.168.1.1:8080/json?data=1 ")])),_:1},8,["model-value"])])}const $=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/device.vue"]]);export{$ as default}; +import{D as l}from"./HardwareInstallation-3a644290.js";import{_ as m,u as t,l as d,m as u,G as i,E as s,y as o,x as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceJson",mixins:[l]},f={class:"device-json"};function b(n,e,v,g,w,x){const r=t("openwb-base-heading"),a=t("openwb-base-text-input");return d(),u("div",f,[i(r,null,{default:s(()=>e[1]||(e[1]=[o(" Einstellungen für JSON ")])),_:1}),i(a,{title:"URL",subtype:"url",required:"","model-value":n.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>n.updateConfiguration(p,"configuration.url"))},{help:s(()=>e[2]||(e[2]=[o(" Es wird eine komplette URL erwartet mit Angaben zum Protokoll, IP oder Hostnamen, optional einem Port und einem Pfad. Die Antwort muss ein json-Objekt sein."),c("br",null,null,-1),o(" Beispiel: http://192.168.1.1:8080/json?data=1 ")])),_:1},8,["model-value"])])}const $=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/device.vue"]]);export{$ as default}; diff --git a/web/settings/assets/device-8b9db644.js b/web/settings/assets/device-357d44c6.js similarity index 77% rename from web/settings/assets/device-8b9db644.js rename to web/settings/assets/device-357d44c6.js index c38cdf2e1c..29d73e991a 100644 --- a/web/settings/assets/device-8b9db644.js +++ b/web/settings/assets/device-357d44c6.js @@ -1 +1 @@ -import{D as m}from"./HardwareInstallation-727b5962.js";import{_ as l,u as i,l as b,m as f,G as t,E as r,B as a}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSiemensSentron",mixins:[m]},v={class:"device-siemens-sentron"};function c(n,e,g,w,C,x){const u=i("openwb-base-heading"),p=i("openwb-base-alert"),d=i("openwb-base-text-input"),s=i("openwb-base-number-input");return b(),f("div",v,[t(u,null,{default:r(()=>e[3]||(e[3]=[a(" Einstellungen für Siemens Sentron ")])),_:1}),t(p,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[a(' Derzeit werden nur Messgeräte vom Typ "7KM PAC2200" mit Ethernet-Schnittstelle unterstützt. ')])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":n.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const P=l(_,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens_sentron/device.vue"]]);export{P as default}; +import{D as m}from"./HardwareInstallation-3a644290.js";import{_ as l,u as i,l as b,m as f,G as t,E as r,y as a}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSiemensSentron",mixins:[m]},v={class:"device-siemens-sentron"};function c(n,e,g,w,C,x){const u=i("openwb-base-heading"),p=i("openwb-base-alert"),d=i("openwb-base-text-input"),s=i("openwb-base-number-input");return b(),f("div",v,[t(u,null,{default:r(()=>e[3]||(e[3]=[a(" Einstellungen für Siemens Sentron ")])),_:1}),t(p,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[a(' Derzeit werden nur Messgeräte vom Typ "7KM PAC2200" mit Ethernet-Schnittstelle unterstützt. ')])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":n.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const P=l(_,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens_sentron/device.vue"]]);export{P as default}; diff --git a/web/settings/assets/device-fec30c56.js b/web/settings/assets/device-3be14789.js similarity index 65% rename from web/settings/assets/device-fec30c56.js rename to web/settings/assets/device-3be14789.js index 0f5160bd6e..4c3d26896b 100644 --- a/web/settings/assets/device-fec30c56.js +++ b/web/settings/assets/device-3be14789.js @@ -1 +1 @@ -import{D as r}from"./HardwareInstallation-727b5962.js";import{_ as d,u as i,l as u,m as p,G as t,E as m,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceQCells",mixins:[r]},b={class:"device-qcells"};function v(o,e,_,g,w,C){const l=i("openwb-base-heading"),a=i("openwb-base-text-input"),s=i("openwb-base-number-input");return u(),p("div",b,[t(l,null,{default:m(()=>e[3]||(e[3]=[c(" Einstellungen für QCells ESS ")])),_:1}),t(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const I=d(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/qcells/device.vue"]]);export{I as default}; +import{D as r}from"./HardwareInstallation-3a644290.js";import{_ as d,u as i,l as u,m as p,G as t,E as m,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceQCells",mixins:[r]},b={class:"device-qcells"};function v(o,e,_,g,w,C){const l=i("openwb-base-heading"),a=i("openwb-base-text-input"),s=i("openwb-base-number-input");return u(),p("div",b,[t(l,null,{default:m(()=>e[3]||(e[3]=[c(" Einstellungen für QCells ESS ")])),_:1}),t(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=d(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/qcells/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-429cae7c.js b/web/settings/assets/device-3d86bc85.js similarity index 70% rename from web/settings/assets/device-429cae7c.js rename to web/settings/assets/device-3d86bc85.js index d41191fdad..8e0ae1da57 100644 --- a/web/settings/assets/device-429cae7c.js +++ b/web/settings/assets/device-3d86bc85.js @@ -1 +1 @@ -import{D as l}from"./HardwareInstallation-727b5962.js";import{_ as m,u as n,l as b,m as _,G as t,E as r,B as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyBoy",mixins:[l]},f={class:"device-sunnyboy"};function v(o,e,w,g,y,x){const a=n("openwb-base-heading"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),u=n("openwb-base-number-input");return b(),_("div",f,[t(a,null,{default:r(()=>e[2]||(e[2]=[s(" Einstellungen für SMA Sunny Boy/Tripower ")])),_:1}),t(p,{subtype:"info"},{default:r(()=>e[3]||(e[3]=[s(' ModbusTCP muss entweder direkt am Wechselrichter, per Sunny Portal oder über das Tool "Sunny Explorer" aktiviert werden. Dies ist standardmäßig deaktiviert. ')])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(u,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>o.updateConfiguration(i,"configuration.port"))},null,8,["model-value"])])}const $=m(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/device.vue"]]);export{$ as default}; +import{D as l}from"./HardwareInstallation-3a644290.js";import{_ as m,u as n,l as b,m as _,G as t,E as r,y as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyBoy",mixins:[l]},f={class:"device-sunnyboy"};function v(o,e,w,y,g,x){const a=n("openwb-base-heading"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),u=n("openwb-base-number-input");return b(),_("div",f,[t(a,null,{default:r(()=>e[2]||(e[2]=[s(" Einstellungen für SMA Sunny Boy/Tripower ")])),_:1}),t(p,{subtype:"info"},{default:r(()=>e[3]||(e[3]=[s(' ModbusTCP muss entweder direkt am Wechselrichter, per Sunny Portal oder über das Tool "Sunny Explorer" aktiviert werden. Dies ist standardmäßig deaktiviert. ')])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(u,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>o.updateConfiguration(i,"configuration.port"))},null,8,["model-value"])])}const $=m(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/device.vue"]]);export{$ as default}; diff --git a/web/settings/assets/device-9eedaff7.js b/web/settings/assets/device-3e5adae7.js similarity index 62% rename from web/settings/assets/device-9eedaff7.js rename to web/settings/assets/device-3e5adae7.js index 1655be97f2..15b507b349 100644 --- a/web/settings/assets/device-9eedaff7.js +++ b/web/settings/assets/device-3e5adae7.js @@ -1 +1 @@ -import{D as r}from"./HardwareInstallation-727b5962.js";import{_ as a,u as t,l as d,m as u,G as n,E as l,B as m}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceOpenDTU",mixins:[r]},_={class:"device-opendtu"};function f(o,e,v,b,g,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),u("div",_,[n(i,null,{default:l(()=>e[1]||(e[1]=[m("Einstellungen für OpenDTU")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.url"))},null,8,["model-value"])])}const h=a(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/opendtu/opendtu/device.vue"]]);export{h as default}; +import{D as r}from"./HardwareInstallation-3a644290.js";import{_ as a,u as t,l as d,m as u,G as n,E as l,y as m}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceOpenDTU",mixins:[r]},_={class:"device-opendtu"};function f(o,e,v,b,g,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),u("div",_,[n(i,null,{default:l(()=>e[1]||(e[1]=[m("Einstellungen für OpenDTU")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.url"))},null,8,["model-value"])])}const h=a(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/opendtu/opendtu/device.vue"]]);export{h as default}; diff --git a/web/settings/assets/device-93509dc9.js b/web/settings/assets/device-3f9eff90.js similarity index 65% rename from web/settings/assets/device-93509dc9.js rename to web/settings/assets/device-3f9eff90.js index 97eb90e647..54f1fcd293 100644 --- a/web/settings/assets/device-93509dc9.js +++ b/web/settings/assets/device-3f9eff90.js @@ -1 +1 @@ -import{D as d}from"./HardwareInstallation-727b5962.js";import{_ as u,u as i,l as p,m as l,G as t,E as m,B as v}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceVarta",mixins:[d]},b={class:"device-varta"};function _(o,e,c,g,w,V){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",b,[t(r,null,{default:m(()=>e[3]||(e[3]=[v(" Einstellungen für Varta ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const I=u(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/varta/device.vue"]]);export{I as default}; +import{D as d}from"./HardwareInstallation-3a644290.js";import{_ as u,u as i,l as p,m as l,G as t,E as m,y as v}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceVarta",mixins:[d]},b={class:"device-varta"};function _(o,e,c,g,w,V){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",b,[t(r,null,{default:m(()=>e[3]||(e[3]=[v(" Einstellungen für Varta ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=u(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/varta/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-1497b5e4.js b/web/settings/assets/device-45df0691.js similarity index 71% rename from web/settings/assets/device-1497b5e4.js rename to web/settings/assets/device-45df0691.js index bc07877cc4..8758b04f16 100644 --- a/web/settings/assets/device-1497b5e4.js +++ b/web/settings/assets/device-45df0691.js @@ -1 +1 @@ -import{D as u}from"./HardwareInstallation-727b5962.js";import{_ as p,u as r,l as d,m,G as i,E as s,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceKostalPikoOld",mixins:[u]},v={class:"device-kostal-piko-old"};function c(o,e,g,b,w,k){const a=r("openwb-base-heading"),n=r("openwb-base-text-input");return d(),m("div",v,[i(a,null,{default:s(()=>e[3]||(e[3]=[l(" Einstellungen für Kostal Piko (alte Generation) ")])),_:1}),i(n,{title:"URL",subtype:"url",required:"","model-value":o.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.url"))},{help:s(()=>e[4]||(e[4]=[l(' Es wird eine komplette URL inklusive Protokoll erwartet. Normalerweise ist der Wechselrichter über "http://IP" zu erreichen. ')])),_:1},8,["model-value"]),i(n,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),i(n,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const x=p(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko_old/device.vue"]]);export{x as default}; +import{D as u}from"./HardwareInstallation-3a644290.js";import{_ as p,u as r,l as d,m,G as i,E as s,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceKostalPikoOld",mixins:[u]},v={class:"device-kostal-piko-old"};function c(o,e,g,b,w,k){const a=r("openwb-base-heading"),n=r("openwb-base-text-input");return d(),m("div",v,[i(a,null,{default:s(()=>e[3]||(e[3]=[l(" Einstellungen für Kostal Piko (alte Generation) ")])),_:1}),i(n,{title:"URL",subtype:"url",required:"","model-value":o.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.url"))},{help:s(()=>e[4]||(e[4]=[l(' Es wird eine komplette URL inklusive Protokoll erwartet. Normalerweise ist der Wechselrichter über "http://IP" zu erreichen. ')])),_:1},8,["model-value"]),i(n,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),i(n,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const q=p(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko_old/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-5a5c2204.js b/web/settings/assets/device-4c55f797.js similarity index 70% rename from web/settings/assets/device-5a5c2204.js rename to web/settings/assets/device-4c55f797.js index b944a22922..000e1c2d84 100644 --- a/web/settings/assets/device-5a5c2204.js +++ b/web/settings/assets/device-4c55f797.js @@ -1 +1 @@ -import{D as p}from"./HardwareInstallation-727b5962.js";import{_ as u,u as n,l as m,m as d,G as i,E as l,B as _}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLogger",mixins:[p]},g={class:"device-huawei-smart-logger"};function f(o,e,b,v,w,x){const r=n("openwb-base-heading"),a=n("openwb-base-text-input"),s=n("openwb-base-number-input");return m(),d("div",g,[i(r,null,{default:l(()=>e[2]||(e[2]=[_(" Einstellungen für Huawei SmartLogger ")])),_:1}),i(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const q=u(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/device.vue"]]);export{q as default}; +import{D as p}from"./HardwareInstallation-3a644290.js";import{_ as u,u as n,l as m,m as d,G as i,E as l,y as _}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLogger",mixins:[p]},g={class:"device-huawei-smart-logger"};function f(o,e,b,v,w,x){const r=n("openwb-base-heading"),a=n("openwb-base-text-input"),s=n("openwb-base-number-input");return m(),d("div",g,[i(r,null,{default:l(()=>e[2]||(e[2]=[_(" Einstellungen für Huawei SmartLogger ")])),_:1}),i(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const q=u(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-9684db49.js b/web/settings/assets/device-4e960663.js similarity index 69% rename from web/settings/assets/device-9684db49.js rename to web/settings/assets/device-4e960663.js index a89c97e241..553860ebe6 100644 --- a/web/settings/assets/device-9684db49.js +++ b/web/settings/assets/device-4e960663.js @@ -1 +1 @@ -import{D as m}from"./HardwareInstallation-727b5962.js";import{_ as u,u as s,l as p,m as l,G as t,E as r,B as a}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceLG",mixins:[m]},f={class:"device-lg"};function c(n,e,v,b,_,w){const d=s("openwb-base-heading"),o=s("openwb-base-text-input");return p(),l("div",f,[t(d,null,{default:r(()=>e[2]||(e[2]=[a(" Einstellungen für LG ESS V1.0 ")])),_:1}),t(o,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(o,{title:"Passwort",subtype:"password",required:"","model-value":n.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.password"))},{help:r(()=>e[3]||(e[3]=[a(' Passwort, um sich in den LG ESS V1.0 einzuloggen. Das Passwort ist standardmäßig die Registrierungsnummer, die sich auf einem Aufkleber auf dem PCS (dem Hybridwechselrichter und Batteriemanagementsystem) befindet. Alternativ findet man die Registrierungsnummer in der App unter dem Menüpunkt "Systeminformationen". Mit der Registrierungsnummer kann man sich dann in der Rolle "installer" einloggen. ')])),_:1},8,["model-value"])])}const h=u(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/lg/device.vue"]]);export{h as default}; +import{D as m}from"./HardwareInstallation-3a644290.js";import{_ as u,u as s,l as p,m as l,G as t,E as r,y as a}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceLG",mixins:[m]},f={class:"device-lg"};function c(n,e,v,b,_,w){const d=s("openwb-base-heading"),o=s("openwb-base-text-input");return p(),l("div",f,[t(d,null,{default:r(()=>e[2]||(e[2]=[a(" Einstellungen für LG ESS V1.0 ")])),_:1}),t(o,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(o,{title:"Passwort",subtype:"password",required:"","model-value":n.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.password"))},{help:r(()=>e[3]||(e[3]=[a(' Passwort, um sich in den LG ESS V1.0 einzuloggen. Das Passwort ist standardmäßig die Registrierungsnummer, die sich auf einem Aufkleber auf dem PCS (dem Hybridwechselrichter und Batteriemanagementsystem) befindet. Alternativ findet man die Registrierungsnummer in der App unter dem Menüpunkt "Systeminformationen". Mit der Registrierungsnummer kann man sich dann in der Rolle "installer" einloggen. ')])),_:1},8,["model-value"])])}const B=u(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/lg/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-aa0e176c.js b/web/settings/assets/device-4f5bf65a.js similarity index 60% rename from web/settings/assets/device-aa0e176c.js rename to web/settings/assets/device-4f5bf65a.js index 53546357ad..32e9131be4 100644 --- a/web/settings/assets/device-aa0e176c.js +++ b/web/settings/assets/device-4f5bf65a.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as d,u as t,l,m as u,G as i,E as m,B as _}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceOpenwbFlex",mixins:[a]},c={class:"device-openwb-flex"};function f(o,e,v,w,g,x){const p=t("openwb-base-heading"),s=t("openwb-base-text-input"),r=t("openwb-base-number-input");return l(),u("div",c,[i(p,null,{default:m(()=>e[2]||(e[2]=[_(" Einstellungen für openWB-Flex ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const N=d(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/device.vue"]]);export{N as default}; +import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as d,u as t,l,m as u,G as i,E as m,y as _}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceOpenwbFlex",mixins:[a]},c={class:"device-openwb-flex"};function f(o,e,v,w,g,x){const p=t("openwb-base-heading"),s=t("openwb-base-text-input"),r=t("openwb-base-number-input");return l(),u("div",c,[i(p,null,{default:m(()=>e[2]||(e[2]=[_(" Einstellungen für openWB-Flex ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const F=d(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/device.vue"]]);export{F as default}; diff --git a/web/settings/assets/device-240bbfb8.js b/web/settings/assets/device-4f7aad98.js similarity index 63% rename from web/settings/assets/device-240bbfb8.js rename to web/settings/assets/device-4f7aad98.js index cb7e4ad1ae..6ea8102468 100644 --- a/web/settings/assets/device-240bbfb8.js +++ b/web/settings/assets/device-4f7aad98.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as p,u as t,l as d,m as l,G as n,E as m,B as u}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarWorld",mixins:[a]},c={class:"device-solar_world"};function f(o,e,v,b,w,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),l("div",c,[n(i,null,{default:m(()=>e[1]||(e[1]=[u(" Einstellungen für SolarWorld ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const k=p(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/solar_world/device.vue"]]);export{k as default}; +import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as p,u as t,l as d,m as l,G as n,E as m,y as u}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarWorld",mixins:[a]},c={class:"device-solar_world"};function f(o,e,v,b,w,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),l("div",c,[n(i,null,{default:m(()=>e[1]||(e[1]=[u(" Einstellungen für SolarWorld ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const k=p(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/solar_world/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-13f0437c.js b/web/settings/assets/device-509a4ac4.js similarity index 73% rename from web/settings/assets/device-13f0437c.js rename to web/settings/assets/device-509a4ac4.js index d322eddce1..280945eedd 100644 --- a/web/settings/assets/device-13f0437c.js +++ b/web/settings/assets/device-509a4ac4.js @@ -1 +1 @@ -import{D as s}from"./HardwareInstallation-727b5962.js";import{_ as d,u as i,l as u,m,G as t,E as l,B as f}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceAmpere",mixins:[s]},v={class:"device-ampere"};function _(o,e,c,g,w,C){const a=i("openwb-base-heading"),p=i("openwb-base-text-input"),r=i("openwb-base-number-input");return u(),m("div",v,[t(a,null,{default:l(()=>e[3]||(e[3]=[f(" Einstellungen für Ampere Pro")])),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const k=d(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/ampere/ampere/device.vue"]]);export{k as default}; +import{D as s}from"./HardwareInstallation-3a644290.js";import{_ as d,u as i,l as u,m,G as t,E as l,y as f}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceAmpere",mixins:[s]},v={class:"device-ampere"};function _(o,e,c,g,w,C){const a=i("openwb-base-heading"),p=i("openwb-base-text-input"),r=i("openwb-base-number-input");return u(),m("div",v,[t(a,null,{default:l(()=>e[3]||(e[3]=[f(" Einstellungen für Ampere Pro")])),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const k=d(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/ampere/ampere/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-e6d1ff67.js b/web/settings/assets/device-52c218d2.js similarity index 66% rename from web/settings/assets/device-e6d1ff67.js rename to web/settings/assets/device-52c218d2.js index d9c6364b51..2c3409999d 100644 --- a/web/settings/assets/device-e6d1ff67.js +++ b/web/settings/assets/device-52c218d2.js @@ -1 +1 @@ -import{D as s}from"./HardwareInstallation-727b5962.js";import{_ as u,u as i,l as p,m as l,G as t,E as m,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceE3dc",mixins:[s]},b={class:"device-e3dc"};function v(o,e,_,g,w,C){const a=i("openwb-base-heading"),r=i("openwb-base-text-input"),d=i("openwb-base-number-input");return p(),l("div",b,[t(a,null,{default:m(()=>e[3]||(e[3]=[c(" Einstellungen für E3DC ")])),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(d,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const I=u(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/e3dc/device.vue"]]);export{I as default}; +import{D as s}from"./HardwareInstallation-3a644290.js";import{_ as u,u as i,l as p,m as l,G as t,E as m,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceE3dc",mixins:[s]},b={class:"device-e3dc"};function v(o,e,_,g,w,C){const a=i("openwb-base-heading"),r=i("openwb-base-text-input"),d=i("openwb-base-number-input");return p(),l("div",b,[t(a,null,{default:m(()=>e[3]||(e[3]=[c(" Einstellungen für E3DC ")])),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(d,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=u(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/e3dc/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-e3878572.js b/web/settings/assets/device-54f1a203.js similarity index 69% rename from web/settings/assets/device-e3878572.js rename to web/settings/assets/device-54f1a203.js index 03ff312683..9dcab53ca5 100644 --- a/web/settings/assets/device-e3878572.js +++ b/web/settings/assets/device-54f1a203.js @@ -1 +1 @@ -import{D as r}from"./HardwareInstallation-727b5962.js";import{_ as p,u as i,l as d,m as u,G as t,E as l,B as m}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunways",mixins:[r]},f={class:"device-sunways"};function v(o,e,w,_,b,g){const a=i("openwb-base-heading"),s=i("openwb-base-text-input");return d(),u("div",f,[t(a,null,{default:l(()=>e[2]||(e[2]=[m(" Einstellungen für Sunways ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},null,8,["model-value"])])}const q=p(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/sunways/device.vue"]]);export{q as default}; +import{D as r}from"./HardwareInstallation-3a644290.js";import{_ as p,u as i,l as d,m as u,G as t,E as l,y as m}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunways",mixins:[r]},f={class:"device-sunways"};function v(o,e,w,_,b,g){const a=i("openwb-base-heading"),s=i("openwb-base-text-input");return d(),u("div",f,[t(a,null,{default:l(()=>e[2]||(e[2]=[m(" Einstellungen für Sunways ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},null,8,["model-value"])])}const q=p(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/sunways/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-21c38268.js b/web/settings/assets/device-5cc2cdfa.js similarity index 66% rename from web/settings/assets/device-21c38268.js rename to web/settings/assets/device-5cc2cdfa.js index f57e71b87b..d9be1b263e 100644 --- a/web/settings/assets/device-21c38268.js +++ b/web/settings/assets/device-5cc2cdfa.js @@ -1 +1 @@ -import{D as d}from"./HardwareInstallation-727b5962.js";import{_ as m,u as t,l,m as u,G as n,E as i,B as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceVZLogger",mixins:[d]},c={class:"device-vzlogger"};function _(o,e,v,f,b,w){const r=t("openwb-base-heading"),p=t("openwb-base-text-input");return l(),u("div",c,[n(r,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für VZLogger ")])),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.ip_address"))},{help:i(()=>e[2]||(e[2]=[s(" Bei Angabe des Ports muss auch das Schema mit angegeben werden: http://ip:port ")])),_:1},8,["model-value"])])}const k=m(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/device.vue"]]);export{k as default}; +import{D as d}from"./HardwareInstallation-3a644290.js";import{_ as m,u as t,l,m as u,G as n,E as i,y as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceVZLogger",mixins:[d]},c={class:"device-vzlogger"};function _(o,e,v,f,b,w){const r=t("openwb-base-heading"),p=t("openwb-base-text-input");return l(),u("div",c,[n(r,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für VZLogger ")])),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.ip_address"))},{help:i(()=>e[2]||(e[2]=[s(" Bei Angabe des Ports muss auch das Schema mit angegeben werden: http://ip:port ")])),_:1},8,["model-value"])])}const k=m(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-1e200cbf.js b/web/settings/assets/device-5ceb63e9.js similarity index 63% rename from web/settings/assets/device-1e200cbf.js rename to web/settings/assets/device-5ceb63e9.js index 2daf89b9c6..e8cdffeb06 100644 --- a/web/settings/assets/device-1e200cbf.js +++ b/web/settings/assets/device-5ceb63e9.js @@ -1 +1 @@ -import{D as d}from"./HardwareInstallation-727b5962.js";import{_ as u,u as t,l as c,m,G as o,E as s,B as i}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceKostalPiko",mixins:[d]},f={class:"device-kostal-piko"};function b(n,e,v,g,k,h){const a=t("openwb-base-heading"),r=t("openwb-base-alert"),p=t("openwb-base-text-input");return c(),m("div",f,[o(a,null,{default:s(()=>e[1]||(e[1]=[i(" Einstellungen für Kostal Piko ")])),_:1}),o(r,{subtype:"info"},{default:s(()=>e[2]||(e[2]=[i(" Der Wechselrichter liefert Werte nur, solange er auch PV-Leistung liefert. Nachts geht er in den Standby. Die Hausanschlussüberwachung ist nur aktiv, wenn der Wechselrichter auch aktiv ist. ")])),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=l=>n.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"])])}const y=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/device.vue"]]);export{y as default}; +import{D as d}from"./HardwareInstallation-3a644290.js";import{_ as u,u as t,l as c,m,G as o,E as s,y as i}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceKostalPiko",mixins:[d]},f={class:"device-kostal-piko"};function b(n,e,v,g,k,h){const a=t("openwb-base-heading"),r=t("openwb-base-alert"),p=t("openwb-base-text-input");return c(),m("div",f,[o(a,null,{default:s(()=>e[1]||(e[1]=[i(" Einstellungen für Kostal Piko ")])),_:1}),o(r,{subtype:"info"},{default:s(()=>e[2]||(e[2]=[i(" Der Wechselrichter liefert Werte nur, solange er auch PV-Leistung liefert. Nachts geht er in den Standby. Die Hausanschlussüberwachung ist nur aktiv, wenn der Wechselrichter auch aktiv ist. ")])),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=l=>n.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"])])}const B=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-1ad34ad2.js b/web/settings/assets/device-653a19f8.js similarity index 80% rename from web/settings/assets/device-1ad34ad2.js rename to web/settings/assets/device-653a19f8.js index 7190ceb976..36e028925d 100644 --- a/web/settings/assets/device-1ad34ad2.js +++ b/web/settings/assets/device-653a19f8.js @@ -1 +1 @@ -import{D as p}from"./HardwareInstallation-727b5962.js";import{_ as m,u as s,l as f,m as g,G as t,E as a,B as r,A as o}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceTesla",mixins:[p]},b={class:"device-tesla"};function c(n,e,v,k,h,_){const d=s("openwb-base-heading"),u=s("openwb-base-alert"),l=s("openwb-base-text-input");return f(),g("div",b,[t(d,null,{default:a(()=>e[3]||(e[3]=[r(" Einstellungen für Tesla ")])),_:1}),t(u,{subtype:"danger"},{default:a(()=>e[4]||(e[4]=[o("span",{style:{"font-weight":"bold"}}," Tesla hat in der aktuellen Firmware-Version die lokale API der PowerWall abgeschaltet. ",-1),r("Daher ist es mit dieser Firmware nicht mehr möglich, die PowerWall direkt auszulesen. Wir prüfen aktuell den Zugriff über die Tesla-Server. Bis zur Umsetzung dieser Funktion ist es nicht möglich, die PowerWall lokal auszulesen."),o("br",null,null,-1),o("span",{style:{"font-weight":"bold"}}," Wenn die lokale Abfrage bei Dir noch funktioniert, dann solltest Du die Firmware der PowerWall nicht aktualisieren! ",-1),o("br",null,null,-1),r(" Wir empfehlen, dass Du Tesla kontaktierst und Kritik an dieser Entscheidung mitteilst. Nur so können wir hoffen, dass Tesla die lokale API wieder aktiviert. Mit der Cloud-API kommt es zwangsläufig zu Verzögerungen (Latenzen), welche eine Regelung durch openWB erschweren. Weiterhin kommt es zu einem totalen Ausfall, wenn die Internetverbindung gestört ist. Aus diesen Gründen ist eine lokale API immer vorzuziehen. ")])),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(l,{title:"E-Mail",subtype:"email",required:"","model-value":n.device.configuration.email,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.email"))},null,8,["model-value"]),t(l,{title:"Passwort",subtype:"password",required:"","model-value":n.device.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=i=>n.updateConfiguration(i,"configuration.password"))},null,8,["model-value"])])}const y=m(w,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/device.vue"]]);export{y as default}; +import{D as p}from"./HardwareInstallation-3a644290.js";import{_ as m,u as s,l as f,m as g,G as t,E as a,y as r,x as o}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceTesla",mixins:[p]},b={class:"device-tesla"};function c(n,e,v,k,h,_){const d=s("openwb-base-heading"),u=s("openwb-base-alert"),l=s("openwb-base-text-input");return f(),g("div",b,[t(d,null,{default:a(()=>e[3]||(e[3]=[r(" Einstellungen für Tesla ")])),_:1}),t(u,{subtype:"danger"},{default:a(()=>e[4]||(e[4]=[o("span",{style:{"font-weight":"bold"}}," Tesla hat in der aktuellen Firmware-Version die lokale API der PowerWall abgeschaltet. ",-1),r("Daher ist es mit dieser Firmware nicht mehr möglich, die PowerWall direkt auszulesen. Wir prüfen aktuell den Zugriff über die Tesla-Server. Bis zur Umsetzung dieser Funktion ist es nicht möglich, die PowerWall lokal auszulesen."),o("br",null,null,-1),o("span",{style:{"font-weight":"bold"}}," Wenn die lokale Abfrage bei Dir noch funktioniert, dann solltest Du die Firmware der PowerWall nicht aktualisieren! ",-1),o("br",null,null,-1),r(" Wir empfehlen, dass Du Tesla kontaktierst und Kritik an dieser Entscheidung mitteilst. Nur so können wir hoffen, dass Tesla die lokale API wieder aktiviert. Mit der Cloud-API kommt es zwangsläufig zu Verzögerungen (Latenzen), welche eine Regelung durch openWB erschweren. Weiterhin kommt es zu einem totalen Ausfall, wenn die Internetverbindung gestört ist. Aus diesen Gründen ist eine lokale API immer vorzuziehen. ")])),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(l,{title:"E-Mail",subtype:"email",required:"","model-value":n.device.configuration.email,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.email"))},null,8,["model-value"]),t(l,{title:"Passwort",subtype:"password",required:"","model-value":n.device.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=i=>n.updateConfiguration(i,"configuration.password"))},null,8,["model-value"])])}const B=m(w,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-45781f1b.js b/web/settings/assets/device-6656b07f.js similarity index 58% rename from web/settings/assets/device-45781f1b.js rename to web/settings/assets/device-6656b07f.js index f370e51412..2aa6e803a6 100644 --- a/web/settings/assets/device-45781f1b.js +++ b/web/settings/assets/device-6656b07f.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as p,u as s,l as m,m as u,G as n,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartMe",mixins:[a]},f={class:"device-smart-me"};function v(o,e,_,b,g,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return m(),u("div",f,[n(r,null,{default:d(()=>e[2]||(e[2]=[l(" Einstellungen für smart-me ")])),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const y=p(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/device.vue"]]);export{y as default}; +import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as p,u as s,l as m,m as u,G as n,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartMe",mixins:[a]},f={class:"device-smart-me"};function v(o,e,_,b,g,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return m(),u("div",f,[n(r,null,{default:d(()=>e[2]||(e[2]=[l(" Einstellungen für smart-me ")])),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const q=p(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-35241d4e.js b/web/settings/assets/device-6659803e.js similarity index 68% rename from web/settings/assets/device-35241d4e.js rename to web/settings/assets/device-6659803e.js index 93db3f3662..4ac3e7a6b4 100644 --- a/web/settings/assets/device-35241d4e.js +++ b/web/settings/assets/device-6659803e.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as d,u as t,l,m,G as i,E as s,B as n,A as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const p={name:"DeviceMqtt",mixins:[a]},u={class:"device-mqtt"};function g(_,e,b,f,h,v){const r=t("openwb-base-heading"),o=t("openwb-base-alert");return l(),m("div",u,[i(r,null,{default:s(()=>e[0]||(e[0]=[n("Einstellungen für MQTT")])),_:1}),i(o,{subtype:"info"},{default:s(()=>e[1]||(e[1]=[n(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten an die angegebenen Topics im Broker gesendet werden. Da die Daten direkt an den Broker gesendet werden, erfolgt keine Verrechnung bei Hybrid-Systemen und auch keine Berechnung fehlender Werte, z.B. von Phasen-Leistung aus Spannung und Strömen. Beim Logging und im Lastmanagement, z.B. bei verschachtelten Zählern, werden die MQTT-Zähler wie gewohnt berücksichtigt."),c("br",null,null,-1),n(" Alle Daten sind als gültiges JSON zu senden! Zahlen mit Nachkommastellen (Float) müssen einen Punkt als Dezimaltrenner verwenden (internationales Format). ")])),_:1})])}const z=d(p,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/device.vue"]]);export{z as default}; +import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as d,u as t,l,m,G as i,E as s,y as n,x as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const p={name:"DeviceMqtt",mixins:[a]},u={class:"device-mqtt"};function g(_,e,b,f,h,v){const r=t("openwb-base-heading"),o=t("openwb-base-alert");return l(),m("div",u,[i(r,null,{default:s(()=>e[0]||(e[0]=[n("Einstellungen für MQTT")])),_:1}),i(o,{subtype:"info"},{default:s(()=>e[1]||(e[1]=[n(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten an die angegebenen Topics im Broker gesendet werden. Da die Daten direkt an den Broker gesendet werden, erfolgt keine Verrechnung bei Hybrid-Systemen und auch keine Berechnung fehlender Werte, z.B. von Phasen-Leistung aus Spannung und Strömen. Beim Logging und im Lastmanagement, z.B. bei verschachtelten Zählern, werden die MQTT-Zähler wie gewohnt berücksichtigt."),c("br",null,null,-1),n(" Alle Daten sind als gültiges JSON zu senden! Zahlen mit Nachkommastellen (Float) müssen einen Punkt als Dezimaltrenner verwenden (internationales Format). ")])),_:1})])}const y=d(p,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-5fd78306.js b/web/settings/assets/device-67811713.js similarity index 74% rename from web/settings/assets/device-5fd78306.js rename to web/settings/assets/device-67811713.js index a51b3f5328..9f910abf63 100644 --- a/web/settings/assets/device-5fd78306.js +++ b/web/settings/assets/device-67811713.js @@ -1 +1 @@ -import{D as d}from"./HardwareInstallation-727b5962.js";import{_ as u,u as t,l,m as p,G as i,E as m,B as v}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceCarloGavazzi",mixins:[d]},f={class:"device-carlo-gavazzi"};function _(o,e,b,g,z,w){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),a=t("openwb-base-number-input");return l(),p("div",f,[i(r,null,{default:m(()=>e[3]||(e[3]=[v(" Einstellungen für Carlo Gavazzi ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=u(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/carlo_gavazzi/device.vue"]]);export{U as default}; +import{D as d}from"./HardwareInstallation-3a644290.js";import{_ as u,u as t,l,m as p,G as i,E as m,y as v}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceCarloGavazzi",mixins:[d]},f={class:"device-carlo-gavazzi"};function _(o,e,b,g,z,w){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),a=t("openwb-base-number-input");return l(),p("div",f,[i(r,null,{default:m(()=>e[3]||(e[3]=[v(" Einstellungen für Carlo Gavazzi ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=u(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/carlo_gavazzi/device.vue"]]);export{U as default}; diff --git a/web/settings/assets/device-eaa956ad.js b/web/settings/assets/device-7075a0a8.js similarity index 50% rename from web/settings/assets/device-eaa956ad.js rename to web/settings/assets/device-7075a0a8.js index d81d0cbdf1..ad28d7218f 100644 --- a/web/settings/assets/device-eaa956ad.js +++ b/web/settings/assets/device-7075a0a8.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as p,u as t,l as m,m as d,G as n,E as l,B as u}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartfox",mixins:[a]},f={class:"device-smartfox"};function _(o,e,v,x,b,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return m(),d("div",f,[n(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für Smartfox ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const N=p(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/smartfox/device.vue"]]);export{N as default}; +import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as p,u as t,l as m,m as d,G as n,E as l,y as u}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartfox",mixins:[a]},f={class:"device-smartfox"};function _(o,e,v,x,b,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return m(),d("div",f,[n(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für Smartfox ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=p(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/smartfox/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-8c80f180.js b/web/settings/assets/device-716c4065.js similarity index 88% rename from web/settings/assets/device-8c80f180.js rename to web/settings/assets/device-716c4065.js index 570cb21a8a..5dc1eb3489 100644 --- a/web/settings/assets/device-8c80f180.js +++ b/web/settings/assets/device-716c4065.js @@ -1 +1 @@ -import{D as f}from"./HardwareInstallation-727b5962.js";import{_ as g,u as d,l as t,m as b,G as l,E as a,B as i,x as s,z as u,A as p}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceEnphase",mixins:[f]},y={class:"device-enphase"};function k(n,e,V,c,E,h){const m=d("openwb-base-heading"),r=d("openwb-base-text-input"),v=d("openwb-base-select-input");return t(),b("div",y,[l(m,null,{default:a(()=>e[6]||(e[6]=[i(" Einstellungen für Enphase Envoy / IQ Gateway ")])),_:1}),l(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.hostname,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.hostname"))},{help:a(()=>e[7]||(e[7]=[i(' Bitte geben Sie die IP-Adresse oder den Hostnamen des Enphase Envoy oder IQ Gateway an. Die Info finden Sie in Ihrem Router. Ab Werk ist der Hostname "envoy" oder "envoy.local". ')])),_:1},8,["model-value"]),l(v,{title:"Version",required:"",options:[{value:1,text:"Firmware < 7.0"},{value:2,text:"Firmware ab 7.0"}],"model-value":n.device.configuration.version,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.version"))},{help:a(()=>e[8]||(e[8]=[i(" Bitte wählen Sie die Version des Enphase Envoy oder IQ Gateway aus. Die Version 1 ist für Geräte mit einer Firmware-Version unter 7.0, die Version 2 für Geräte mit einer Firmware-Version ab 7.0. Ein angebundener Speicher wird nur bei Version 2 unterstützt. ")])),_:1},8,["model-value"]),n.device.configuration.version>1?(t(),s(r,{key:0,title:"Benutzer",subtype:"user","model-value":n.device.configuration.user,required:"","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.user"))},null,8,["model-value"])):u("",!0),n.device.configuration.version>1?(t(),s(r,{key:1,title:"Kennwort",subtype:"password","model-value":n.device.configuration.password,required:"","onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])):u("",!0),n.device.configuration.version>1?(t(),s(r,{key:2,title:"Envoy Seriennummer","model-value":n.device.configuration.serial,required:"","onUpdate:modelValue":e[4]||(e[4]=o=>n.updateConfiguration(o,"configuration.serial"))},null,8,["model-value"])):u("",!0),n.device.configuration.version>1?(t(),s(r,{key:3,title:"Token",subtype:"password","model-value":n.device.configuration.token,required:"","onUpdate:modelValue":e[5]||(e[5]=o=>n.updateConfiguration(o,"configuration.token"))},{help:a(()=>e[9]||(e[9]=[i(" Wenn Benutzer, Kennwort und Seriennummer des Envoys angegeben werden, wird das Token automatisch beim Speichern abgerufen. Ebenfalls wird ein abgelaufenes Token (derzeit nach einem Jahr) automatisch erneuert."),p("br",null,null,-1),i(" Wenn Sie ein Token manuell erstellen möchten, können Sie dies auf der "),p("a",{href:"https://developer.enphase.com/docs/quickstart.html",target:"_blank",rel:"noopener"}," Enphase-Webseite ",-1),i(" erledigen. ")])),_:1},8,["model-value"])):u("",!0)])}const T=g(w,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/device.vue"]]);export{T as default}; +import{D as f}from"./HardwareInstallation-3a644290.js";import{_ as g,u as d,l as t,m as b,G as l,E as a,y as i,z as s,B as u,x as p}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceEnphase",mixins:[f]},y={class:"device-enphase"};function k(n,e,V,c,E,h){const m=d("openwb-base-heading"),r=d("openwb-base-text-input"),v=d("openwb-base-select-input");return t(),b("div",y,[l(m,null,{default:a(()=>e[6]||(e[6]=[i(" Einstellungen für Enphase Envoy / IQ Gateway ")])),_:1}),l(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.hostname,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.hostname"))},{help:a(()=>e[7]||(e[7]=[i(' Bitte geben Sie die IP-Adresse oder den Hostnamen des Enphase Envoy oder IQ Gateway an. Die Info finden Sie in Ihrem Router. Ab Werk ist der Hostname "envoy" oder "envoy.local". ')])),_:1},8,["model-value"]),l(v,{title:"Version",required:"",options:[{value:1,text:"Firmware < 7.0"},{value:2,text:"Firmware ab 7.0"}],"model-value":n.device.configuration.version,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.version"))},{help:a(()=>e[8]||(e[8]=[i(" Bitte wählen Sie die Version des Enphase Envoy oder IQ Gateway aus. Die Version 1 ist für Geräte mit einer Firmware-Version unter 7.0, die Version 2 für Geräte mit einer Firmware-Version ab 7.0. Ein angebundener Speicher wird nur bei Version 2 unterstützt. ")])),_:1},8,["model-value"]),n.device.configuration.version>1?(t(),s(r,{key:0,title:"Benutzer",subtype:"user","model-value":n.device.configuration.user,required:"","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.user"))},null,8,["model-value"])):u("",!0),n.device.configuration.version>1?(t(),s(r,{key:1,title:"Kennwort",subtype:"password","model-value":n.device.configuration.password,required:"","onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])):u("",!0),n.device.configuration.version>1?(t(),s(r,{key:2,title:"Envoy Seriennummer","model-value":n.device.configuration.serial,required:"","onUpdate:modelValue":e[4]||(e[4]=o=>n.updateConfiguration(o,"configuration.serial"))},null,8,["model-value"])):u("",!0),n.device.configuration.version>1?(t(),s(r,{key:3,title:"Token",subtype:"password","model-value":n.device.configuration.token,required:"","onUpdate:modelValue":e[5]||(e[5]=o=>n.updateConfiguration(o,"configuration.token"))},{help:a(()=>e[9]||(e[9]=[i(" Wenn Benutzer, Kennwort und Seriennummer des Envoys angegeben werden, wird das Token automatisch beim Speichern abgerufen. Ebenfalls wird ein abgelaufenes Token (derzeit nach einem Jahr) automatisch erneuert."),p("br",null,null,-1),i(" Wenn Sie ein Token manuell erstellen möchten, können Sie dies auf der "),p("a",{href:"https://developer.enphase.com/docs/quickstart.html",target:"_blank",rel:"noopener"}," Enphase-Webseite ",-1),i(" erledigen. ")])),_:1},8,["model-value"])):u("",!0)])}const T=g(w,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/device.vue"]]);export{T as default}; diff --git a/web/settings/assets/device-55bb825c.js b/web/settings/assets/device-7f7452f2.js similarity index 61% rename from web/settings/assets/device-55bb825c.js rename to web/settings/assets/device-7f7452f2.js index 16eb8438f5..26923cb4fb 100644 --- a/web/settings/assets/device-55bb825c.js +++ b/web/settings/assets/device-7f7452f2.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as d,u as n,l as u,m,G as i,E as l,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceStuder",mixins:[a]},f={class:"device-studer"};function b(o,e,v,g,w,x){const r=n("openwb-base-heading"),s=n("openwb-base-text-input"),p=n("openwb-base-number-input");return u(),m("div",f,[i(r,null,{default:l(()=>e[2]||(e[2]=[c(" Einstellungen für Studer ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const P=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/device.vue"]]);export{P as default}; +import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as d,u as n,l as u,m,G as i,E as l,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceStuder",mixins:[a]},f={class:"device-studer"};function b(o,e,v,g,w,x){const r=n("openwb-base-heading"),s=n("openwb-base-text-input"),p=n("openwb-base-number-input");return u(),m("div",f,[i(r,null,{default:l(()=>e[2]||(e[2]=[c(" Einstellungen für Studer ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const N=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/device.vue"]]);export{N as default}; diff --git a/web/settings/assets/device-55249d75.js b/web/settings/assets/device-88e6829b.js similarity index 73% rename from web/settings/assets/device-55249d75.js rename to web/settings/assets/device-88e6829b.js index d29b7d2b0d..196fe53ffb 100644 --- a/web/settings/assets/device-55249d75.js +++ b/web/settings/assets/device-88e6829b.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as d,u as s,l as u,m as p,G as t,E as l,B as m}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceBYD",mixins:[a]},v={class:"device-byd"};function b(o,e,c,g,_,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return u(),p("div",v,[t(r,null,{default:l(()=>e[3]||(e[3]=[m(" Einstellungen für BYD ")])),_:1}),t(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.user"))},null,8,["model-value"]),t(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.password"))},null,8,["model-value"])])}const U=d(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/byd/device.vue"]]);export{U as default}; +import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as d,u as s,l as u,m as p,G as t,E as l,y as m}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceBYD",mixins:[a]},v={class:"device-byd"};function b(o,e,c,g,_,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return u(),p("div",v,[t(r,null,{default:l(()=>e[3]||(e[3]=[m(" Einstellungen für BYD ")])),_:1}),t(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.user"))},null,8,["model-value"]),t(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.password"))},null,8,["model-value"])])}const U=d(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/byd/device.vue"]]);export{U as default}; diff --git a/web/settings/assets/device-e7442473.js b/web/settings/assets/device-8c5dabb3.js similarity index 61% rename from web/settings/assets/device-e7442473.js rename to web/settings/assets/device-8c5dabb3.js index d814693c86..b1ab9a2e98 100644 --- a/web/settings/assets/device-e7442473.js +++ b/web/settings/assets/device-8c5dabb3.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as d,u as t,l as u,m,G as i,E as l,B as _}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceFoxEss",mixins:[a]},f={class:"device-fox_ess"};function b(o,e,v,g,x,w){const s=t("openwb-base-heading"),r=t("openwb-base-text-input"),p=t("openwb-base-number-input");return u(),m("div",f,[i(s,null,{default:l(()=>e[2]||(e[2]=[_("Einstellungen für FoxEss")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const N=d(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/device.vue"]]);export{N as default}; +import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as d,u as t,l as u,m,G as i,E as l,y as _}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceFoxEss",mixins:[a]},f={class:"device-fox_ess"};function b(o,e,v,g,x,w){const s=t("openwb-base-heading"),r=t("openwb-base-text-input"),p=t("openwb-base-number-input");return u(),m("div",f,[i(s,null,{default:l(()=>e[2]||(e[2]=[_("Einstellungen für FoxEss")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const F=d(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/device.vue"]]);export{F as default}; diff --git a/web/settings/assets/device-11f6d869.js b/web/settings/assets/device-8c6a7cd7.js similarity index 69% rename from web/settings/assets/device-11f6d869.js rename to web/settings/assets/device-8c6a7cd7.js index 51cbfb449e..a1b048b5d0 100644 --- a/web/settings/assets/device-11f6d869.js +++ b/web/settings/assets/device-8c6a7cd7.js @@ -1 +1 @@ -import{D as p}from"./HardwareInstallation-727b5962.js";import{_ as d,u as t,l as u,m as l,G as i,E as m,B as _}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyIsland",mixins:[p]},f={class:"device-sunnyisland"};function b(n,e,v,g,w,x){const s=t("openwb-base-heading"),a=t("openwb-base-text-input"),r=t("openwb-base-number-input");return u(),l("div",f,[i(s,null,{default:m(()=>e[2]||(e[2]=[_(" Einstellungen für Sunny Island ")])),_:1}),i(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(r,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"])])}const q=d(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_island/device.vue"]]);export{q as default}; +import{D as p}from"./HardwareInstallation-3a644290.js";import{_ as d,u as t,l as u,m as l,G as i,E as m,y as _}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyIsland",mixins:[p]},f={class:"device-sunnyisland"};function b(n,e,v,g,w,x){const s=t("openwb-base-heading"),a=t("openwb-base-text-input"),r=t("openwb-base-number-input");return u(),l("div",f,[i(s,null,{default:m(()=>e[2]||(e[2]=[_(" Einstellungen für Sunny Island ")])),_:1}),i(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(r,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"])])}const q=d(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_island/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-1950c8ef.js b/web/settings/assets/device-8de467ac.js similarity index 78% rename from web/settings/assets/device-1950c8ef.js rename to web/settings/assets/device-8de467ac.js index 2caeed0d1e..934f1770ac 100644 --- a/web/settings/assets/device-1950c8ef.js +++ b/web/settings/assets/device-8de467ac.js @@ -1 +1 @@ -import{D as u}from"./HardwareInstallation-727b5962.js";import{_ as m,u as i,l as c,m as b,G as t,E as r,B as a}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceKostalPlenticore",mixins:[u]},_={class:"device-kostal-plenticore"};function v(o,e,g,w,C,E){const l=i("openwb-base-heading"),p=i("openwb-base-alert"),d=i("openwb-base-text-input"),s=i("openwb-base-number-input");return c(),b("div",_,[t(l,null,{default:r(()=>e[3]||(e[3]=[a(" Einstellungen für Kostal Plenticore ")])),_:1}),t(p,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[a(" Wenn am Kostal Plenticore-Wechselrichter ein EM300 oder Kostal Smart Energy Meter (KSEM) angeschlossen ist, muss eine Zähler-und eine Wechselrichter-Komponente angelegt werden. ")])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const $=m(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/device.vue"]]);export{$ as default}; +import{D as u}from"./HardwareInstallation-3a644290.js";import{_ as m,u as i,l as c,m as b,G as t,E as r,y as a}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceKostalPlenticore",mixins:[u]},_={class:"device-kostal-plenticore"};function v(o,e,g,w,C,E){const l=i("openwb-base-heading"),p=i("openwb-base-alert"),d=i("openwb-base-text-input"),s=i("openwb-base-number-input");return c(),b("div",_,[t(l,null,{default:r(()=>e[3]||(e[3]=[a(" Einstellungen für Kostal Plenticore ")])),_:1}),t(p,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[a(" Wenn am Kostal Plenticore-Wechselrichter ein EM300 oder Kostal Smart Energy Meter (KSEM) angeschlossen ist, muss eine Zähler-und eine Wechselrichter-Komponente angelegt werden. ")])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const $=m(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/device.vue"]]);export{$ as default}; diff --git a/web/settings/assets/device-e51f6a05.js b/web/settings/assets/device-906beffa.js similarity index 64% rename from web/settings/assets/device-e51f6a05.js rename to web/settings/assets/device-906beffa.js index af0178f418..d00dd2dbcc 100644 --- a/web/settings/assets/device-e51f6a05.js +++ b/web/settings/assets/device-906beffa.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as d,u as t,l as u,m,G as i,E as l,B as g}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSigenergy",mixins:[a]},_={class:"device-sigenergy"};function f(o,e,b,v,w,x){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),p=t("openwb-base-number-input");return u(),m("div",_,[i(r,null,{default:l(()=>e[2]||(e[2]=[g("Einstellungen für Sigenergy")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const N=d(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/device.vue"]]);export{N as default}; +import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as d,u as t,l as u,m,G as i,E as l,y as g}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSigenergy",mixins:[a]},_={class:"device-sigenergy"};function f(o,e,b,v,w,y){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),p=t("openwb-base-number-input");return u(),m("div",_,[i(r,null,{default:l(()=>e[2]||(e[2]=[g("Einstellungen für Sigenergy")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const N=d(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/device.vue"]]);export{N as default}; diff --git a/web/settings/assets/device-8a67a9ec.js b/web/settings/assets/device-968183c7.js similarity index 61% rename from web/settings/assets/device-8a67a9ec.js rename to web/settings/assets/device-968183c7.js index 1b76630ba0..d457902b52 100644 --- a/web/settings/assets/device-8a67a9ec.js +++ b/web/settings/assets/device-968183c7.js @@ -1 +1 @@ -import{D as p}from"./HardwareInstallation-727b5962.js";import{_ as a,u as t,l as d,m as c,G as n,E as m,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceRCT",mixins:[p]},_={class:"device-rct"};function f(o,e,v,b,g,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),c("div",_,[n(i,null,{default:m(()=>e[1]||(e[1]=[l(" Einstellungen für RCT ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const k=a(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/rct/device.vue"]]);export{k as default}; +import{D as p}from"./HardwareInstallation-3a644290.js";import{_ as a,u as t,l as d,m as c,G as n,E as m,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceRCT",mixins:[p]},_={class:"device-rct"};function f(o,e,v,b,g,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),c("div",_,[n(i,null,{default:m(()=>e[1]||(e[1]=[l(" Einstellungen für RCT ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const k=a(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/rct/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-5e15f44e.js b/web/settings/assets/device-9749c9e1.js similarity index 63% rename from web/settings/assets/device-5e15f44e.js rename to web/settings/assets/device-9749c9e1.js index 980001d6b6..ac84943a0d 100644 --- a/web/settings/assets/device-5e15f44e.js +++ b/web/settings/assets/device-9749c9e1.js @@ -1 +1 @@ -import{D as d}from"./HardwareInstallation-727b5962.js";import{_ as l,u as o,l as u,m,G as i,E as r,B as t,A as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceHttp",mixins:[d]},v={class:"device-http"};function _(n,e,b,g,w,x){const s=o("openwb-base-heading"),p=o("openwb-base-text-input");return u(),m("div",v,[i(s,null,{default:r(()=>e[1]||(e[1]=[t(" Einstellungen für Http ")])),_:1}),i(p,{title:"Server-URL",subtype:"url",required:"","model-value":n.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.url"))},{help:r(()=>e[2]||(e[2]=[t(" Hier sind die Verbindungsangaben für den Http-Server einzutragen. Der Pfad für die einzelnen Daten wird in der Komponente hinterlegt."),c("br",null,null,-1),t(" Beispiel: http://mein.server:8080 ")])),_:1},8,["model-value"])])}const k=l(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/device.vue"]]);export{k as default}; +import{D as d}from"./HardwareInstallation-3a644290.js";import{_ as l,u as o,l as u,m,G as i,E as r,y as t,x as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceHttp",mixins:[d]},v={class:"device-http"};function _(n,e,b,g,x,w){const s=o("openwb-base-heading"),p=o("openwb-base-text-input");return u(),m("div",v,[i(s,null,{default:r(()=>e[1]||(e[1]=[t(" Einstellungen für Http ")])),_:1}),i(p,{title:"Server-URL",subtype:"url",required:"","model-value":n.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.url"))},{help:r(()=>e[2]||(e[2]=[t(" Hier sind die Verbindungsangaben für den Http-Server einzutragen. Der Pfad für die einzelnen Daten wird in der Komponente hinterlegt."),c("br",null,null,-1),t(" Beispiel: http://mein.server:8080 ")])),_:1},8,["model-value"])])}const k=l(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-e89043ef.js b/web/settings/assets/device-99900f00.js similarity index 80% rename from web/settings/assets/device-e89043ef.js rename to web/settings/assets/device-99900f00.js index 3937daafdb..ac3ec2fde4 100644 --- a/web/settings/assets/device-e89043ef.js +++ b/web/settings/assets/device-99900f00.js @@ -1 +1 @@ -import{D as m}from"./HardwareInstallation-727b5962.js";import{_ as b,u as o,l as g,m as f,G as t,E as s,B as r,A as v}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceHuawei",mixins:[m]},c={class:"device-huawei"};function _(n,e,h,D,C,A){const a=o("openwb-base-heading"),d=o("openwb-base-alert"),l=o("openwb-base-text-input"),u=o("openwb-base-number-input"),p=o("openwb-base-select-input");return g(),f("div",c,[t(a,null,{default:s(()=>e[4]||(e[4]=[r(" Einstellungen für Huawei ")])),_:1}),t(d,{subtype:"info"},{default:s(()=>e[5]||(e[5]=[r(' Die Antwort der Huawei Wechselrichter benötigt sehr viel Zeit. Es wird empfohlen, dass Regelintervall der openWB auf "sehr langsam" zu stellen. ')])),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(u,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.port"))},null,8,["model-value"]),t(u,{title:"Modbus ID",required:"","model-value":n.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=i=>n.updateConfiguration(i,"configuration.modbus_id"))},{help:s(()=>e[6]||(e[6]=[r(' Sind mehrere Huawei Wechselrichter als "Schwarm" verbunden, dann besitzt der Master vermutlich die ID "16". Über diese ID werden dann alle Daten in Summe zur Verfügung gestellt.'),v("br",null,null,-1),r(" Die IDs 1 bis 15 sind für einzelne Wechselrichter reserviert. ")])),_:1},8,["model-value"]),t(p,{title:"Anbindung","not-selected":"Bitte auswählen",options:[{value:"s_dongle",text:"SDongle"},{value:"modbus_rtu",text:"Modbus RTU (mit Modbus/TCP Adapter)"}],"model-value":n.device.configuration.type,required:"","onUpdate:modelValue":e[3]||(e[3]=i=>n.updateConfiguration(i,"configuration.type"))},{help:s(()=>e[7]||(e[7]=[r(' Die Anbindung über den Huawei SDongle erfordert die Regelgeschwindigkeit "sehr langsam". Alternativ kann Huawei auch mittels Modbus/TCP Adapter (z.B. Protoss oder Elfin) über den Modbus RTU Ausgang des Wechselrichters abgefragt werden. Hier gibt es keine Einschränkungen der Regelgeschwindigkeit. Eine gleichzeitige Nutzung von SDongle und Modbus RTU ist nicht möglich. ')])),_:1},8,["model-value"])])}const S=b(w,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei/device.vue"]]);export{S as default}; +import{D as m}from"./HardwareInstallation-3a644290.js";import{_ as b,u as o,l as g,m as f,G as t,E as s,y as r,x as v}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceHuawei",mixins:[m]},c={class:"device-huawei"};function _(n,e,h,D,C,H){const a=o("openwb-base-heading"),d=o("openwb-base-alert"),l=o("openwb-base-text-input"),u=o("openwb-base-number-input"),p=o("openwb-base-select-input");return g(),f("div",c,[t(a,null,{default:s(()=>e[4]||(e[4]=[r(" Einstellungen für Huawei ")])),_:1}),t(d,{subtype:"info"},{default:s(()=>e[5]||(e[5]=[r(' Die Antwort der Huawei Wechselrichter benötigt sehr viel Zeit. Es wird empfohlen, dass Regelintervall der openWB auf "sehr langsam" zu stellen. ')])),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(u,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.port"))},null,8,["model-value"]),t(u,{title:"Modbus ID",required:"","model-value":n.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=i=>n.updateConfiguration(i,"configuration.modbus_id"))},{help:s(()=>e[6]||(e[6]=[r(' Sind mehrere Huawei Wechselrichter als "Schwarm" verbunden, dann besitzt der Master vermutlich die ID "16". Über diese ID werden dann alle Daten in Summe zur Verfügung gestellt.'),v("br",null,null,-1),r(" Die IDs 1 bis 15 sind für einzelne Wechselrichter reserviert. ")])),_:1},8,["model-value"]),t(p,{title:"Anbindung","not-selected":"Bitte auswählen",options:[{value:"s_dongle",text:"SDongle"},{value:"modbus_rtu",text:"Modbus RTU (mit Modbus/TCP Adapter)"}],"model-value":n.device.configuration.type,required:"","onUpdate:modelValue":e[3]||(e[3]=i=>n.updateConfiguration(i,"configuration.type"))},{help:s(()=>e[7]||(e[7]=[r(' Die Anbindung über den Huawei SDongle erfordert die Regelgeschwindigkeit "sehr langsam". Alternativ kann Huawei auch mittels Modbus/TCP Adapter (z.B. Protoss oder Elfin) über den Modbus RTU Ausgang des Wechselrichters abgefragt werden. Hier gibt es keine Einschränkungen der Regelgeschwindigkeit. Eine gleichzeitige Nutzung von SDongle und Modbus RTU ist nicht möglich. ')])),_:1},8,["model-value"])])}const R=b(w,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei/device.vue"]]);export{R as default}; diff --git a/web/settings/assets/device-1cc75082.js b/web/settings/assets/device-99e093c0.js similarity index 80% rename from web/settings/assets/device-1cc75082.js rename to web/settings/assets/device-99e093c0.js index 9d056e2ea3..2a6917d7a1 100644 --- a/web/settings/assets/device-1cc75082.js +++ b/web/settings/assets/device-99e093c0.js @@ -1 +1 @@ -import{D as p}from"./HardwareInstallation-727b5962.js";import{_ as m,u as i,l as v,m as b,G as n,E as s,B as u}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceGrowatt",mixins:[p]},g={class:"device-growatt"};function _(o,e,c,w,V,C){const a=i("openwb-base-heading"),d=i("openwb-base-text-input"),r=i("openwb-base-number-input"),l=i("openwb-base-select-input");return v(),b("div",g,[n(a,null,{default:s(()=>e[4]||(e[4]=[u("Einstellungen für Growatt")])),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"]),n(r,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),n(l,{title:"Version","not-selected":"Bitte auswählen",options:[{value:"MAX",text:"MAX Series"},{value:"TL-X",text:"TL-X Inverter"}],"model-value":o.device.configuration.version,required:"","onUpdate:modelValue":e[3]||(e[3]=t=>o.updateConfiguration(t,"configuration.version"))},{help:s(()=>e[5]||(e[5]=[u(" Die Wahl der API-Version beeinflusst die Auslesung der Speicherleistung und der Import/ Export Werte des Zählers. ")])),_:1},8,["model-value"])])}const X=m(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/growatt/growatt/device.vue"]]);export{X as default}; +import{D as p}from"./HardwareInstallation-3a644290.js";import{_ as m,u as i,l as v,m as b,G as n,E as s,y as u}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceGrowatt",mixins:[p]},g={class:"device-growatt"};function _(o,e,c,w,V,C){const a=i("openwb-base-heading"),d=i("openwb-base-text-input"),r=i("openwb-base-number-input"),l=i("openwb-base-select-input");return v(),b("div",g,[n(a,null,{default:s(()=>e[4]||(e[4]=[u("Einstellungen für Growatt")])),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"]),n(r,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),n(l,{title:"Version","not-selected":"Bitte auswählen",options:[{value:"MAX",text:"MAX Series"},{value:"TL-X",text:"TL-X Inverter"}],"model-value":o.device.configuration.version,required:"","onUpdate:modelValue":e[3]||(e[3]=t=>o.updateConfiguration(t,"configuration.version"))},{help:s(()=>e[5]||(e[5]=[u(" Die Wahl der API-Version beeinflusst die Auslesung der Speicherleistung und der Import/ Export Werte des Zählers. ")])),_:1},8,["model-value"])])}const X=m(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/growatt/growatt/device.vue"]]);export{X as default}; diff --git a/web/settings/assets/device-92ff8214.js b/web/settings/assets/device-9befb1d4.js similarity index 67% rename from web/settings/assets/device-92ff8214.js rename to web/settings/assets/device-9befb1d4.js index 9e16d60433..9598d7ccbb 100644 --- a/web/settings/assets/device-92ff8214.js +++ b/web/settings/assets/device-9befb1d4.js @@ -1 +1 @@ -import{D as d}from"./HardwareInstallation-727b5962.js";import{_ as u,u as i,l,m as p,G as t,E as m,B as f}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceKostalSEM",mixins:[d]},v={class:"device-kostal-sem"};function _(o,e,c,g,w,C){const s=i("openwb-base-heading"),r=i("openwb-base-text-input"),a=i("openwb-base-number-input");return l(),p("div",v,[t(s,null,{default:m(()=>e[3]||(e[3]=[f(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 ")])),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=u(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_sem/device.vue"]]);export{U as default}; +import{D as d}from"./HardwareInstallation-3a644290.js";import{_ as u,u as i,l,m as p,G as t,E as m,y as f}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceKostalSEM",mixins:[d]},v={class:"device-kostal-sem"};function _(o,e,c,g,w,C){const s=i("openwb-base-heading"),r=i("openwb-base-text-input"),a=i("openwb-base-number-input");return l(),p("div",v,[t(s,null,{default:m(()=>e[3]||(e[3]=[f(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 ")])),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const B=u(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_sem/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-f7b12563.js b/web/settings/assets/device-a0c4f59d.js similarity index 62% rename from web/settings/assets/device-f7b12563.js rename to web/settings/assets/device-a0c4f59d.js index 0cf4cdc979..0482a12dd5 100644 --- a/web/settings/assets/device-f7b12563.js +++ b/web/settings/assets/device-a0c4f59d.js @@ -1 +1 @@ -import{D as p}from"./HardwareInstallation-727b5962.js";import{_ as r,u as t,l as d,m,G as n,E as l,B as u}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmaWebbox",mixins:[p]},_={class:"device-sma-webbox"};function b(o,e,f,v,x,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),m("div",_,[n(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für SMA Webbox ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const k=r(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_webbox/device.vue"]]);export{k as default}; +import{D as p}from"./HardwareInstallation-3a644290.js";import{_ as r,u as t,l as d,m,G as n,E as l,y as u}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmaWebbox",mixins:[p]},_={class:"device-sma-webbox"};function b(o,e,f,v,x,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),m("div",_,[n(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für SMA Webbox ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const k=r(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_webbox/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-dc895585.js b/web/settings/assets/device-a319d4b6.js similarity index 88% rename from web/settings/assets/device-dc895585.js rename to web/settings/assets/device-a319d4b6.js index 2f27d14921..b63087750b 100644 --- a/web/settings/assets/device-dc895585.js +++ b/web/settings/assets/device-a319d4b6.js @@ -1 +1 @@ -import{D as b}from"./HardwareInstallation-727b5962.js";import{_ as v,u as i,l as s,m as g,G as t,E as a,B as r,x as f,A as w,z as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const S={name:"DeviceSungrow",mixins:[b]},N={class:"device-sungrow"};function _(n,e,D,V,H,h){const d=i("openwb-base-heading"),m=i("openwb-base-alert"),p=i("openwb-base-text-input"),l=i("openwb-base-number-input"),u=i("openwb-base-select-input");return s(),g("div",N,[t(d,null,{default:a(()=>e[5]||(e[5]=[r(" Einstellungen für Sungrow ")])),_:1}),t(m,{subtype:"info"},{default:a(()=>e[6]||(e[6]=[r(" Bitte zur Fehlervermeidung die Firmware des Sungrow Wechselrichters und WiNet-S Dongles aktuell halten. ")])),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(l,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(l,{title:"Modbus ID",required:"","model-value":n.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"]),t(u,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:3,text:"SH (Hybrid) über WiNet-S Dongle"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) über WiNet-S Dongle"}],"model-value":n.device.configuration.version,required:"","onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.version"))},{help:a(()=>e[7]||(e[7]=[r(" Die Variante SH sollte möglichst über den internen LAN-Port genutzt werden (befindet sich am Wechselrichter hinter dem WiNet-S Dongle), da nur hier alle Werte vollständig ausgelesen werden können. Den WiNet-S Dongle zusätzlich ins Heimnetz (per LAN oder WLAN) einbinden, um iSolarCloud nutzen zu können. ")])),_:1},8,["model-value"]),n.device.configuration.version===0?(s(),f(u,{key:0,title:"Firmware",options:[{value:"v1",text:"bis November 2024"},{value:"v2",text:"ab November 2024"}],"model-value":n.device.configuration.firmware,required:"","onUpdate:modelValue":e[4]||(e[4]=o=>n.updateConfiguration(o,"configuration.firmware"))},{help:a(()=>e[8]||(e[8]=[r(' Mit einem Firmwareupdate hat Sungrow ab November 2024 die Auslesung der Speicherleistung verändert. Sollte ab November 2024 selbst oder vom Installateur ein Firmwareupdate gemacht worden sein bitte "ab November 2024" als Firmware wählen. Ohne dieses Update ist "bis November 2024" die richtige Auswahl (Standard).'),w("br",null,null,-1),r(' Für Benutzer mit Installateur-Account: Dies entspricht einer Version des MDSP Moduls größer gleich "SAPPHIRE-H_03011.95.03" ')])),_:1},8,["model-value"])):c("",!0)])}const P=v(S,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/sungrow/device.vue"]]);export{P as default}; +import{D as b}from"./HardwareInstallation-3a644290.js";import{_ as v,u as i,l as s,m as g,G as t,E as a,y as r,z as f,x as w,B as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const S={name:"DeviceSungrow",mixins:[b]},N={class:"device-sungrow"};function _(n,e,D,V,H,h){const d=i("openwb-base-heading"),m=i("openwb-base-alert"),p=i("openwb-base-text-input"),l=i("openwb-base-number-input"),u=i("openwb-base-select-input");return s(),g("div",N,[t(d,null,{default:a(()=>e[5]||(e[5]=[r(" Einstellungen für Sungrow ")])),_:1}),t(m,{subtype:"info"},{default:a(()=>e[6]||(e[6]=[r(" Bitte zur Fehlervermeidung die Firmware des Sungrow Wechselrichters und WiNet-S Dongles aktuell halten. ")])),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(l,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(l,{title:"Modbus ID",required:"","model-value":n.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"]),t(u,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:3,text:"SH (Hybrid) über WiNet-S Dongle"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) über WiNet-S Dongle"}],"model-value":n.device.configuration.version,required:"","onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.version"))},{help:a(()=>e[7]||(e[7]=[r(" Die Variante SH sollte möglichst über den internen LAN-Port genutzt werden (befindet sich am Wechselrichter hinter dem WiNet-S Dongle), da nur hier alle Werte vollständig ausgelesen werden können. Den WiNet-S Dongle zusätzlich ins Heimnetz (per LAN oder WLAN) einbinden, um iSolarCloud nutzen zu können. ")])),_:1},8,["model-value"]),n.device.configuration.version===0?(s(),f(u,{key:0,title:"Firmware",options:[{value:"v1",text:"bis November 2024"},{value:"v2",text:"ab November 2024"}],"model-value":n.device.configuration.firmware,required:"","onUpdate:modelValue":e[4]||(e[4]=o=>n.updateConfiguration(o,"configuration.firmware"))},{help:a(()=>e[8]||(e[8]=[r(' Mit einem Firmwareupdate hat Sungrow ab November 2024 die Auslesung der Speicherleistung verändert. Sollte ab November 2024 selbst oder vom Installateur ein Firmwareupdate gemacht worden sein bitte "ab November 2024" als Firmware wählen. Ohne dieses Update ist "bis November 2024" die richtige Auswahl (Standard).'),w("br",null,null,-1),r(' Für Benutzer mit Installateur-Account: Dies entspricht einer Version des MDSP Moduls größer gleich "SAPPHIRE-H_03011.95.03" ')])),_:1},8,["model-value"])):c("",!0)])}const P=v(S,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/sungrow/device.vue"]]);export{P as default}; diff --git a/web/settings/assets/device-2144978c.js b/web/settings/assets/device-a9846396.js similarity index 72% rename from web/settings/assets/device-2144978c.js rename to web/settings/assets/device-a9846396.js index db4af5f977..c9c6022c73 100644 --- a/web/settings/assets/device-2144978c.js +++ b/web/settings/assets/device-a9846396.js @@ -1 +1 @@ -import{D as l}from"./HardwareInstallation-727b5962.js";import{_ as m,u as n,l as p,m as c,G as t,E as r,B as o,A as _}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceFronius",mixins:[l]},b={class:"device-fronius"};function g(i,e,v,h,w,S){const s=n("openwb-base-heading"),a=n("openwb-base-alert"),d=n("openwb-base-text-input");return p(),c("div",b,[t(s,null,{default:r(()=>e[1]||(e[1]=[o(" Einstellungen für Fronius ")])),_:1}),t(a,{subtype:"info"},{default:r(()=>e[2]||(e[2]=[o(" Die Fronius API muss aktiviert sein."),_("br",null,null,-1),o(" Sind nur Symos in Nutzung, welche über Fronius Solar Net / DATCOM miteinander verbunden sind, muss nur ein Gerät mit einer Komponente Wechselrichter angelegt werden. Sind aber z.B. Symo und Symo Hybrid im Einsatz, muss für jeden Wechselrichter ein Gerät mit einer Komponente Wechselrichter angelegt werden. Die Zähler-Komponente für das Smart-Meter wird in dem Gerät angelegt, dass den Wechselrichter enthält, an den das SmartMeter angeschlossen ist. ")])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const G=m(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/device.vue"]]);export{G as default}; +import{D as l}from"./HardwareInstallation-3a644290.js";import{_ as m,u as n,l as p,m as c,G as t,E as r,y as o,x as _}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceFronius",mixins:[l]},b={class:"device-fronius"};function g(i,e,v,h,w,x){const s=n("openwb-base-heading"),a=n("openwb-base-alert"),d=n("openwb-base-text-input");return p(),c("div",b,[t(s,null,{default:r(()=>e[1]||(e[1]=[o(" Einstellungen für Fronius ")])),_:1}),t(a,{subtype:"info"},{default:r(()=>e[2]||(e[2]=[o(" Die Fronius API muss aktiviert sein."),_("br",null,null,-1),o(" Sind nur Symos in Nutzung, welche über Fronius Solar Net / DATCOM miteinander verbunden sind, muss nur ein Gerät mit einer Komponente Wechselrichter angelegt werden. Sind aber z.B. Symo und Symo Hybrid im Einsatz, muss für jeden Wechselrichter ein Gerät mit einer Komponente Wechselrichter angelegt werden. Die Zähler-Komponente für das Smart-Meter wird in dem Gerät angelegt, dass den Wechselrichter enthält, an den das SmartMeter angeschlossen ist. ")])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const G=m(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/device.vue"]]);export{G as default}; diff --git a/web/settings/assets/device-86f7621f.js b/web/settings/assets/device-aacbf2a5.js similarity index 73% rename from web/settings/assets/device-86f7621f.js rename to web/settings/assets/device-aacbf2a5.js index 78c74645e7..20a819ea0c 100644 --- a/web/settings/assets/device-86f7621f.js +++ b/web/settings/assets/device-aacbf2a5.js @@ -1 +1 @@ -import{D as d}from"./HardwareInstallation-727b5962.js";import{_ as m,u as i,l,m as u,G as n,E as a,B as r}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceFems",mixins:[d]},c={class:"device-fems"};function v(o,e,_,b,g,w){const p=i("openwb-base-heading"),s=i("openwb-base-text-input");return l(),u("div",c,[n(p,null,{default:a(()=>e[2]||(e[2]=[r(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(s,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},{help:a(()=>e[3]||(e[3]=[r(" Bei Nutzung von Fenecon FEMS ist das Passwort im Normalfall user, bei Kaco mit Hy-Control ist das Passwort meist admin. ")])),_:1},8,["model-value"])])}const V=m(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/device.vue"]]);export{V as default}; +import{D as d}from"./HardwareInstallation-3a644290.js";import{_ as m,u as i,l,m as u,G as n,E as a,y as r}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceFems",mixins:[d]},c={class:"device-fems"};function v(o,e,_,b,g,w){const p=i("openwb-base-heading"),s=i("openwb-base-text-input");return l(),u("div",c,[n(p,null,{default:a(()=>e[2]||(e[2]=[r(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(s,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},{help:a(()=>e[3]||(e[3]=[r(" Bei Nutzung von Fenecon FEMS ist das Passwort im Normalfall user, bei Kaco mit Hy-Control ist das Passwort meist admin. ")])),_:1},8,["model-value"])])}const V=m(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-cc6d1d33.js b/web/settings/assets/device-ae68eae2.js similarity index 86% rename from web/settings/assets/device-cc6d1d33.js rename to web/settings/assets/device-ae68eae2.js index 41eb4bd457..1495d2b526 100644 --- a/web/settings/assets/device-cc6d1d33.js +++ b/web/settings/assets/device-ae68eae2.js @@ -1 +1 @@ -import{D as m}from"./HardwareInstallation-727b5962.js";import{_ as v,u as t,l as b,m as f,G as i,E as r,B as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceGoodWe",mixins:[m]},w={class:"device-goodwe"};function _(o,e,W,c,D,V){const l=t("openwb-base-heading"),a=t("openwb-base-alert"),p=t("openwb-base-text-input"),d=t("openwb-base-number-input"),u=t("openwb-base-select-input");return b(),f("div",w,[i(l,null,{default:r(()=>e[5]||(e[5]=[s("Einstellungen für GoodWe")])),_:1}),i(a,{subtype:"info"},{default:r(()=>e[6]||(e[6]=[s(" GoodWe-Wechselrichter verfügen über 3 Dongle: Den WiFi-Dongle, das Wifi-Lan-Kit und das Wifi-Lan-Kit 2.0. Die Einbindung über dieses Modul ist nur mit den Wifi-Lan-Kits möglich. Welches Kit benötigt wird ist vom Wechselrichter abhängig und kann bei GoodWe erfragt werden. ")])),_:1}),i(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(d,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(d,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(u,{title:"API-Version","not-selected":"Bitte auswählen",options:[{value:"v_1_7",text:"v1.7"},{value:"v_1_1",text:"v1.0/ v1.1"}],"model-value":o.device.configuration.version,required:"","onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.version"))},{help:r(()=>e[7]||(e[7]=[s(" Die Wahl der API-Version beeinflusst die Auslesung der Speicherleistung und der Import/ Export Werte des Zählers. ")])),_:1},8,["model-value"]),i(u,{title:"Firmware","not-selected":"Bitte auswählen",options:[{value:8,text:"ARM < 9.0"},{value:9,text:"ARM ab 9.0"}],"model-value":o.device.configuration.firmware,required:"","onUpdate:modelValue":e[4]||(e[4]=n=>o.updateConfiguration(n,"configuration.firmware"))},{help:r(()=>e[8]||(e[8]=[s(" Die Auswahl der Firmware-Version beeinflusst die Auslesung der Wirkleistung und der Phasenströme des Zählers. ")])),_:1},8,["model-value"])])}const M=v(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/good_we/device.vue"]]);export{M as default}; +import{D as m}from"./HardwareInstallation-3a644290.js";import{_ as v,u as t,l as b,m as f,G as i,E as r,y as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceGoodWe",mixins:[m]},w={class:"device-goodwe"};function _(o,e,W,c,D,V){const l=t("openwb-base-heading"),a=t("openwb-base-alert"),p=t("openwb-base-text-input"),d=t("openwb-base-number-input"),u=t("openwb-base-select-input");return b(),f("div",w,[i(l,null,{default:r(()=>e[5]||(e[5]=[s("Einstellungen für GoodWe")])),_:1}),i(a,{subtype:"info"},{default:r(()=>e[6]||(e[6]=[s(" GoodWe-Wechselrichter verfügen über 3 Dongle: Den WiFi-Dongle, das Wifi-Lan-Kit und das Wifi-Lan-Kit 2.0. Die Einbindung über dieses Modul ist nur mit den Wifi-Lan-Kits möglich. Welches Kit benötigt wird ist vom Wechselrichter abhängig und kann bei GoodWe erfragt werden. ")])),_:1}),i(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(d,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(d,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(u,{title:"API-Version","not-selected":"Bitte auswählen",options:[{value:"v_1_7",text:"v1.7"},{value:"v_1_1",text:"v1.0/ v1.1"}],"model-value":o.device.configuration.version,required:"","onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.version"))},{help:r(()=>e[7]||(e[7]=[s(" Die Wahl der API-Version beeinflusst die Auslesung der Speicherleistung und der Import/ Export Werte des Zählers. ")])),_:1},8,["model-value"]),i(u,{title:"Firmware","not-selected":"Bitte auswählen",options:[{value:8,text:"ARM < 9.0"},{value:9,text:"ARM ab 9.0"}],"model-value":o.device.configuration.firmware,required:"","onUpdate:modelValue":e[4]||(e[4]=n=>o.updateConfiguration(n,"configuration.firmware"))},{help:r(()=>e[8]||(e[8]=[s(" Die Auswahl der Firmware-Version beeinflusst die Auslesung der Wirkleistung und der Phasenströme des Zählers. ")])),_:1},8,["model-value"])])}const M=v(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/good_we/device.vue"]]);export{M as default}; diff --git a/web/settings/assets/device-d1bfd3f3.js b/web/settings/assets/device-b21c21f9.js similarity index 80% rename from web/settings/assets/device-d1bfd3f3.js rename to web/settings/assets/device-b21c21f9.js index 9deea1557b..49a58befd5 100644 --- a/web/settings/assets/device-d1bfd3f3.js +++ b/web/settings/assets/device-b21c21f9.js @@ -1 +1 @@ -import{D as p}from"./HardwareInstallation-727b5962.js";import{_ as m,u as i,l as g,m as b,G as t,E as r,B as a}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSolax",mixins:[p]},v={class:"device-solax"};function c(n,e,_,w,x,B){const l=i("openwb-base-heading"),d=i("openwb-base-text-input"),s=i("openwb-base-number-input"),u=i("openwb-base-select-input");return g(),b("div",v,[t(l,null,{default:r(()=>e[4]||(e[4]=[a(" Einstellungen für Solax ")])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",min:1,max:65535,placeholder:502,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},{help:r(()=>e[5]||(e[5]=[a(" Standardmäßig ist der Port 502. Dieser sollte nur geändert werden, wenn der Solax Wechselrichter auf einen anderen Port konfiguriert wurde. ")])),_:1},8,["model-value"]),t(s,{title:"Modbus-ID",required:"",min:0,max:255,"model-value":n.device.configuration.modbus_id,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},{help:r(()=>e[6]||(e[6]=[a(" Laut der Schnittstellenbeschreibung ist die ID bei Solax ab Werk auf 1 gesetzt. Entgegen der Beschreibung ist meist für Gen4 eine ID größer als 2 eingestellt. Bei Gen3 sogar (gegen jeglicher Modbus Standards) eine 0. ")])),_:1},8,["model-value"]),t(u,{title:"Generation","not-selected":"Bitte auswählen",options:[{value:"g2",text:"Gen 2"},{value:"g3",text:"Gen 3"},{value:"g4",text:"Gen 4"}],"model-value":n.device.configuration.version,required:"","onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.version"))},null,8,["model-value"])])}const U=m(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/solax/device.vue"]]);export{U as default}; +import{D as p}from"./HardwareInstallation-3a644290.js";import{_ as m,u as i,l as g,m as b,G as t,E as r,y as a}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSolax",mixins:[p]},v={class:"device-solax"};function c(n,e,_,w,x,C){const l=i("openwb-base-heading"),d=i("openwb-base-text-input"),s=i("openwb-base-number-input"),u=i("openwb-base-select-input");return g(),b("div",v,[t(l,null,{default:r(()=>e[4]||(e[4]=[a(" Einstellungen für Solax ")])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",min:1,max:65535,placeholder:502,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},{help:r(()=>e[5]||(e[5]=[a(" Standardmäßig ist der Port 502. Dieser sollte nur geändert werden, wenn der Solax Wechselrichter auf einen anderen Port konfiguriert wurde. ")])),_:1},8,["model-value"]),t(s,{title:"Modbus-ID",required:"",min:0,max:255,"model-value":n.device.configuration.modbus_id,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},{help:r(()=>e[6]||(e[6]=[a(" Laut der Schnittstellenbeschreibung ist die ID bei Solax ab Werk auf 1 gesetzt. Entgegen der Beschreibung ist meist für Gen4 eine ID größer als 2 eingestellt. Bei Gen3 sogar (gegen jeglicher Modbus Standards) eine 0. ")])),_:1},8,["model-value"]),t(u,{title:"Generation","not-selected":"Bitte auswählen",options:[{value:"g2",text:"Gen 2"},{value:"g3",text:"Gen 3"},{value:"g4",text:"Gen 4"}],"model-value":n.device.configuration.version,required:"","onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.version"))},null,8,["model-value"])])}const U=m(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/solax/device.vue"]]);export{U as default}; diff --git a/web/settings/assets/device-6dfeff1b.js b/web/settings/assets/device-c61fae76.js similarity index 74% rename from web/settings/assets/device-6dfeff1b.js rename to web/settings/assets/device-c61fae76.js index 6c4cf7c4ec..9a1785d443 100644 --- a/web/settings/assets/device-6dfeff1b.js +++ b/web/settings/assets/device-c61fae76.js @@ -1 +1 @@ -import{D as p}from"./HardwareInstallation-727b5962.js";import{_ as u,u as n,l as m,m as _,G as a,E as i,B as r}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSolarwatt",mixins:[p]},v={class:"device-solarwatt"};function c(t,e,w,b,g,x){const s=n("openwb-base-heading"),l=n("openwb-base-text-input"),d=n("openwb-base-select-input");return m(),_("div",v,[a(s,null,{default:i(()=>e[2]||(e[2]=[r(" Einstellungen für Solarwatt/My Reserve ")])),_:1}),a(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Abrufmethode","not-selected":"Bitte auswählen",options:[{value:0,text:"Gateway"},{value:1,text:"Energy Manager"}],"model-value":t.device.configuration.energy_manager,required:"","onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.energy_manager"))},{help:i(()=>e[3]||(e[3]=[r(" Wenn beide Abrufmethoden verwendet werden sollen, muss für jede Methode ein Gerät erstellt werden. ")])),_:1},8,["model-value"])])}const G=u(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/solar_watt/device.vue"]]);export{G as default}; +import{D as p}from"./HardwareInstallation-3a644290.js";import{_ as u,u as n,l as m,m as _,G as a,E as i,y as r}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSolarwatt",mixins:[p]},v={class:"device-solarwatt"};function c(t,e,w,b,g,x){const s=n("openwb-base-heading"),l=n("openwb-base-text-input"),d=n("openwb-base-select-input");return m(),_("div",v,[a(s,null,{default:i(()=>e[2]||(e[2]=[r(" Einstellungen für Solarwatt/My Reserve ")])),_:1}),a(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Abrufmethode","not-selected":"Bitte auswählen",options:[{value:0,text:"Gateway"},{value:1,text:"Energy Manager"}],"model-value":t.device.configuration.energy_manager,required:"","onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.energy_manager"))},{help:i(()=>e[3]||(e[3]=[r(" Wenn beide Abrufmethoden verwendet werden sollen, muss für jede Methode ein Gerät erstellt werden. ")])),_:1},8,["model-value"])])}const G=u(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/solar_watt/device.vue"]]);export{G as default}; diff --git a/web/settings/assets/device-8dcea009.js b/web/settings/assets/device-c8cf6368.js similarity index 68% rename from web/settings/assets/device-8dcea009.js rename to web/settings/assets/device-c8cf6368.js index 9624dea70d..6986d83fbf 100644 --- a/web/settings/assets/device-8dcea009.js +++ b/web/settings/assets/device-c8cf6368.js @@ -1 +1 @@ -import{D as l}from"./HardwareInstallation-727b5962.js";import{_ as m,u as i,l as b,m as f,G as t,E as s,B as d}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DevicePowerdog",mixins:[l]},v={class:"device-powerdog"};function g(o,e,c,w,C,x){const a=i("openwb-base-heading"),p=i("openwb-base-alert"),u=i("openwb-base-text-input"),r=i("openwb-base-number-input");return b(),f("div",v,[t(a,null,{default:s(()=>e[3]||(e[3]=[d(" Einstellungen für Powerdog ")])),_:1}),t(p,{subtype:"info"},{default:s(()=>e[4]||(e[4]=[d(" ModbusTCP muss aktiviert sein. ")])),_:1}),t(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=m(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/powerdog/device.vue"]]);export{U as default}; +import{D as l}from"./HardwareInstallation-3a644290.js";import{_ as m,u as i,l as b,m as f,G as t,E as s,y as d}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DevicePowerdog",mixins:[l]},v={class:"device-powerdog"};function g(o,e,c,w,C,x){const a=i("openwb-base-heading"),p=i("openwb-base-alert"),u=i("openwb-base-text-input"),r=i("openwb-base-number-input");return b(),f("div",v,[t(a,null,{default:s(()=>e[3]||(e[3]=[d(" Einstellungen für Powerdog ")])),_:1}),t(p,{subtype:"info"},{default:s(()=>e[4]||(e[4]=[d(" ModbusTCP muss aktiviert sein. ")])),_:1}),t(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const M=m(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/powerdog/device.vue"]]);export{M as default}; diff --git a/web/settings/assets/device-ebfe2885.js b/web/settings/assets/device-d1c48c2c.js similarity index 74% rename from web/settings/assets/device-ebfe2885.js rename to web/settings/assets/device-d1c48c2c.js index c546846513..e799094ff0 100644 --- a/web/settings/assets/device-ebfe2885.js +++ b/web/settings/assets/device-d1c48c2c.js @@ -1 +1 @@ -import{D as u}from"./HardwareInstallation-727b5962.js";import{_ as d,u as i,l as p,m as l,G as t,E as m,B as _}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceZCS",mixins:[u]},f={class:"device-azzurro_zcs"};function b(o,e,v,g,z,w){const a=i("openwb-base-heading"),s=i("openwb-base-text-input"),r=i("openwb-base-number-input");return p(),l("div",f,[t(a,null,{default:m(()=>e[3]||(e[3]=[_(" Einstellungen für Azzurro ZCS ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const k=d(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/azzurro_zcs/azzurro_zcs/device.vue"]]);export{k as default}; +import{D as u}from"./HardwareInstallation-3a644290.js";import{_ as d,u as i,l as p,m as l,G as t,E as m,y as _}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceZCS",mixins:[u]},f={class:"device-azzurro_zcs"};function b(o,e,v,g,z,w){const a=i("openwb-base-heading"),s=i("openwb-base-text-input"),r=i("openwb-base-number-input");return p(),l("div",f,[t(a,null,{default:m(()=>e[3]||(e[3]=[_(" Einstellungen für Azzurro ZCS ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const k=d(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/azzurro_zcs/azzurro_zcs/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-e6a31e33.js b/web/settings/assets/device-dbe167d8.js similarity index 73% rename from web/settings/assets/device-e6a31e33.js rename to web/settings/assets/device-dbe167d8.js index 73f93fc8cd..079505ba0b 100644 --- a/web/settings/assets/device-e6a31e33.js +++ b/web/settings/assets/device-dbe167d8.js @@ -1 +1 @@ -import{D as d}from"./HardwareInstallation-727b5962.js";import{_ as u,u as i,l as p,m as l,G as t,E as m,B as f}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceJanitza",mixins:[d]},v={class:"device-janitza"};function _(o,e,c,g,w,C){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",v,[t(r,null,{default:m(()=>e[3]||(e[3]=[f(" Einstellungen für Janitza ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=u(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/janitza/device.vue"]]);export{U as default}; +import{D as d}from"./HardwareInstallation-3a644290.js";import{_ as u,u as i,l as p,m as l,G as t,E as m,y as f}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceJanitza",mixins:[d]},v={class:"device-janitza"};function _(o,e,c,g,w,C){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",v,[t(r,null,{default:m(()=>e[3]||(e[3]=[f(" Einstellungen für Janitza ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=u(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/janitza/device.vue"]]);export{U as default}; diff --git a/web/settings/assets/device-d85f27a1.js b/web/settings/assets/device-dd9fc66e.js similarity index 50% rename from web/settings/assets/device-d85f27a1.js rename to web/settings/assets/device-dd9fc66e.js index b2025fc486..bee70768d6 100644 --- a/web/settings/assets/device-d85f27a1.js +++ b/web/settings/assets/device-dd9fc66e.js @@ -1 +1 @@ -import{D as p}from"./HardwareInstallation-727b5962.js";import{_ as a,u as o,l as d,m as l,G as t,E as m,B as u}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceBenning",mixins:[p]},_={class:"device-benning"};function f(n,e,b,g,v,x){const i=o("openwb-base-heading"),s=o("openwb-base-text-input");return d(),l("div",_,[t(i,null,{default:m(()=>e[1]||(e[1]=[u("Einstellungen für Benning")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=r=>n.updateConfiguration(r,"configuration.url"))},null,8,["model-value"])])}const N=a(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/benning/benning/device.vue"]]);export{N as default}; +import{D as p}from"./HardwareInstallation-3a644290.js";import{_ as a,u as o,l as d,m as l,G as t,E as m,y as u}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceBenning",mixins:[p]},_={class:"device-benning"};function f(n,e,b,g,v,x){const i=o("openwb-base-heading"),s=o("openwb-base-text-input");return d(),l("div",_,[t(i,null,{default:m(()=>e[1]||(e[1]=[u("Einstellungen für Benning")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=r=>n.updateConfiguration(r,"configuration.url"))},null,8,["model-value"])])}const y=a(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/benning/benning/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-8bba052a.js b/web/settings/assets/device-e29a0ff7.js similarity index 76% rename from web/settings/assets/device-8bba052a.js rename to web/settings/assets/device-e29a0ff7.js index f481d27421..ef4dd1889c 100644 --- a/web/settings/assets/device-8bba052a.js +++ b/web/settings/assets/device-e29a0ff7.js @@ -1 +1 @@ -import{D as p}from"./HardwareInstallation-727b5962.js";import{_ as u,u as t,l as d,m,G as i,E as c,B as v}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSolis",mixins:[p]},_={class:"device-solis"};function f(o,e,g,w,h,x){const s=t("openwb-base-heading"),r=t("openwb-base-text-input"),a=t("openwb-base-number-input"),l=t("openwb-base-select-input");return d(),m("div",_,[i(s,null,{default:c(()=>e[3]||(e[3]=[v("Einstellungen für Solis")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(l,{title:"Version","not-selected":"Bitte auswählen",options:[{value:"inverter",text:"Wechselrichter ohne Speicheranbindung"},{value:"hybrid",text:"Hybridwechselrichter RHI/S Serie"}],"model-value":o.device.configuration.version,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const U=u(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/device.vue"]]);export{U as default}; +import{D as p}from"./HardwareInstallation-3a644290.js";import{_ as u,u as t,l as d,m,G as i,E as c,y as v}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSolis",mixins:[p]},_={class:"device-solis"};function f(o,e,g,w,h,x){const s=t("openwb-base-heading"),r=t("openwb-base-text-input"),a=t("openwb-base-number-input"),l=t("openwb-base-select-input");return d(),m("div",_,[i(s,null,{default:c(()=>e[3]||(e[3]=[v("Einstellungen für Solis")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(l,{title:"Version","not-selected":"Bitte auswählen",options:[{value:"inverter",text:"Wechselrichter ohne Speicheranbindung"},{value:"hybrid",text:"Hybridwechselrichter RHI/S Serie"}],"model-value":o.device.configuration.version,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const U=u(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/device.vue"]]);export{U as default}; diff --git a/web/settings/assets/device-94d6b50f.js b/web/settings/assets/device-e44ec84b.js similarity index 83% rename from web/settings/assets/device-94d6b50f.js rename to web/settings/assets/device-e44ec84b.js index 146703807b..a55b1ee976 100644 --- a/web/settings/assets/device-94d6b50f.js +++ b/web/settings/assets/device-e44ec84b.js @@ -1 +1 @@ -import{D as m}from"./HardwareInstallation-727b5962.js";import{_ as v,u as t,l as i,m as f,G as a,E as c,B as b,x as u,z as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceAlphaess",mixins:[m]},_={class:"device-alphaess"};function w(e,o,V,C,B,E){const d=t("openwb-base-heading"),r=t("openwb-base-select-input"),p=t("openwb-base-text-input"),l=t("openwb-base-number-input");return i(),f("div",_,[a(d,null,{default:c(()=>o[5]||(o[5]=[b(" Einstellungen für Alpha ESS ")])),_:1}),a(r,{title:"Ausleseart","not-selected":"Bitte auswählen",required:"",options:[{value:0,text:"Alpha ESS-Kit"},{value:1,text:"Hi 5/10"}],"model-value":e.device.configuration.source,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.source"))},null,8,["model-value"]),e.device.configuration.source==1?(i(),u(p,{key:0,title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])):s("",!0),e.device.configuration.source==1?(i(),u(l,{key:1,title:"Port",subtype:"host",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])):s("",!0),e.device.configuration.source==1?(i(),u(l,{key:2,title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[3]||(o[3]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])):s("",!0),a(r,{title:"Firmware Version","not-selected":"Bitte auswählen",required:"",options:[{value:0,text:"EMS älter als 1.23V"},{value:1,text:"EMS 1.23V oder neuer"}],"model-value":e.device.configuration.version,"onUpdate:modelValue":o[4]||(o[4]=n=>e.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const h=v(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/alpha_ess/device.vue"]]);export{h as default}; +import{D as m}from"./HardwareInstallation-3a644290.js";import{_ as v,u as t,l as i,m as f,G as a,E as c,y as b,z as u,B as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceAlphaess",mixins:[m]},_={class:"device-alphaess"};function w(e,o,V,C,B,E){const d=t("openwb-base-heading"),r=t("openwb-base-select-input"),p=t("openwb-base-text-input"),l=t("openwb-base-number-input");return i(),f("div",_,[a(d,null,{default:c(()=>o[5]||(o[5]=[b(" Einstellungen für Alpha ESS ")])),_:1}),a(r,{title:"Ausleseart","not-selected":"Bitte auswählen",required:"",options:[{value:0,text:"Alpha ESS-Kit"},{value:1,text:"Hi 5/10"}],"model-value":e.device.configuration.source,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.source"))},null,8,["model-value"]),e.device.configuration.source==1?(i(),u(p,{key:0,title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])):s("",!0),e.device.configuration.source==1?(i(),u(l,{key:1,title:"Port",subtype:"host",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])):s("",!0),e.device.configuration.source==1?(i(),u(l,{key:2,title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[3]||(o[3]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])):s("",!0),a(r,{title:"Firmware Version","not-selected":"Bitte auswählen",required:"",options:[{value:0,text:"EMS älter als 1.23V"},{value:1,text:"EMS 1.23V oder neuer"}],"model-value":e.device.configuration.version,"onUpdate:modelValue":o[4]||(o[4]=n=>e.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const h=v(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/alpha_ess/device.vue"]]);export{h as default}; diff --git a/web/settings/assets/device-961ae78d.js b/web/settings/assets/device-eb9518f3.js similarity index 69% rename from web/settings/assets/device-961ae78d.js rename to web/settings/assets/device-eb9518f3.js index 31b045eed1..e7d6488845 100644 --- a/web/settings/assets/device-961ae78d.js +++ b/web/settings/assets/device-eb9518f3.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as p,u as s,l as d,m as u,G as n,E as l,B as m}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDiscovergy",mixins:[a]},v={class:"device-discovergy"};function f(o,e,g,_,b,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return d(),u("div",v,[n(r,null,{default:l(()=>e[2]||(e[2]=[m(" Einstellungen für Discovergy ")])),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const q=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/device.vue"]]);export{q as default}; +import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as p,u as s,l as d,m as u,G as n,E as l,y as m}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDiscovergy",mixins:[a]},v={class:"device-discovergy"};function f(o,e,g,_,b,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return d(),u("div",v,[n(r,null,{default:l(()=>e[2]||(e[2]=[m(" Einstellungen für Discovergy ")])),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const q=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-f71805ce.js b/web/settings/assets/device-f0eb9f12.js similarity index 62% rename from web/settings/assets/device-f71805ce.js rename to web/settings/assets/device-f0eb9f12.js index 2cc96fa10e..fdc1108317 100644 --- a/web/settings/assets/device-f71805ce.js +++ b/web/settings/assets/device-f0eb9f12.js @@ -1 +1 @@ -import{D as r}from"./HardwareInstallation-727b5962.js";import{_ as a,u as t,l as d,m as l,G as s,E as u,B as m}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceYouless",mixins:[r]},_={class:"device-youless"};function f(o,e,v,b,g,x){const n=t("openwb-base-heading"),i=t("openwb-base-text-input");return d(),l("div",_,[s(n,null,{default:u(()=>e[1]||(e[1]=[m(" Einstellungen für Youless ")])),_:1}),s(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const k=a(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/youless/device.vue"]]);export{k as default}; +import{D as r}from"./HardwareInstallation-3a644290.js";import{_ as a,u as t,l as d,m as l,G as s,E as u,y as m}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceYouless",mixins:[r]},_={class:"device-youless"};function f(o,e,v,b,g,x){const n=t("openwb-base-heading"),i=t("openwb-base-text-input");return d(),l("div",_,[s(n,null,{default:u(()=>e[1]||(e[1]=[m(" Einstellungen für Youless ")])),_:1}),s(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const k=a(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/youless/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-9a79e89c.js b/web/settings/assets/device-f1c2a7a5.js similarity index 69% rename from web/settings/assets/device-9a79e89c.js rename to web/settings/assets/device-f1c2a7a5.js index bb0ea46a2c..00a5c8c2e3 100644 --- a/web/settings/assets/device-9a79e89c.js +++ b/web/settings/assets/device-f1c2a7a5.js @@ -1 +1 @@ -import{D as a}from"./HardwareInstallation-727b5962.js";import{_ as d,u as n,l as m,m as u,G as i,E as l,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceMTec",mixins:[a]},f={class:"device-mtec"};function b(o,e,v,g,w,x){const s=n("openwb-base-heading"),r=n("openwb-base-text-input"),p=n("openwb-base-number-input");return m(),u("div",f,[i(s,null,{default:l(()=>e[2]||(e[2]=[c("Einstellungen für M-Tec")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const q=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/device.vue"]]);export{q as default}; +import{D as a}from"./HardwareInstallation-3a644290.js";import{_ as d,u as n,l as m,m as u,G as i,E as l,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceMTec",mixins:[a]},f={class:"device-mtec"};function b(o,e,v,g,w,x){const s=n("openwb-base-heading"),r=n("openwb-base-text-input"),p=n("openwb-base-number-input");return m(),u("div",f,[i(s,null,{default:l(()=>e[2]||(e[2]=[c("Einstellungen für M-Tec")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const q=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-f82ddafe.js b/web/settings/assets/device-f3f81832.js similarity index 70% rename from web/settings/assets/device-f82ddafe.js rename to web/settings/assets/device-f3f81832.js index 0015805b6f..2c1635b840 100644 --- a/web/settings/assets/device-f82ddafe.js +++ b/web/settings/assets/device-f3f81832.js @@ -1 +1 @@ -import{D as m}from"./HardwareInstallation-727b5962.js";import{_ as l,u as i,l as b,m as f,G as t,E as r,B as a}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSiemens",mixins:[m]},v={class:"device-siemens"};function c(o,e,g,w,C,x){const p=i("openwb-base-heading"),d=i("openwb-base-alert"),u=i("openwb-base-text-input"),s=i("openwb-base-number-input");return b(),f("div",v,[t(p,null,{default:r(()=>e[3]||(e[3]=[a(" Einstellungen für Siemens ")])),_:1}),t(d,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[a(" Im Siemens-Speicher muss die Schnittstelle openWB gewählt werden. ")])),_:1}),t(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const k=l(_,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens/device.vue"]]);export{k as default}; +import{D as m}from"./HardwareInstallation-3a644290.js";import{_ as l,u as i,l as b,m as f,G as t,E as r,y as a}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSiemens",mixins:[m]},v={class:"device-siemens"};function c(o,e,g,w,C,x){const p=i("openwb-base-heading"),d=i("openwb-base-alert"),u=i("openwb-base-text-input"),s=i("openwb-base-number-input");return b(),f("div",v,[t(p,null,{default:r(()=>e[3]||(e[3]=[a(" Einstellungen für Siemens ")])),_:1}),t(d,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[a(" Im Siemens-Speicher muss die Schnittstelle openWB gewählt werden. ")])),_:1}),t(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=l(_,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens/device.vue"]]);export{U as default}; diff --git a/web/settings/assets/device-68b75b5b.js b/web/settings/assets/device-fcda5bd2.js similarity index 65% rename from web/settings/assets/device-68b75b5b.js rename to web/settings/assets/device-fcda5bd2.js index ce06a21ae1..961a12e6e2 100644 --- a/web/settings/assets/device-68b75b5b.js +++ b/web/settings/assets/device-fcda5bd2.js @@ -1 +1 @@ -import{D as p}from"./HardwareInstallation-727b5962.js";import{_ as d,u as i,l as u,m as l,G as t,E as m,B as f}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSaxpower",mixins:[p]},v={class:"device-saxpower"};function _(o,e,c,g,w,x){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return u(),l("div",v,[t(r,null,{default:m(()=>e[3]||(e[3]=[f(" Einstellungen für Saxpower ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const I=d(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/saxpower/device.vue"]]);export{I as default}; +import{D as p}from"./HardwareInstallation-3a644290.js";import{_ as d,u as i,l as u,m as l,G as t,E as m,y as f}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSaxpower",mixins:[p]},v={class:"device-saxpower"};function _(o,e,c,g,w,x){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return u(),l("div",v,[t(r,null,{default:m(()=>e[3]||(e[3]=[f(" Einstellungen für Saxpower ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=d(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/saxpower/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-69185b02.js b/web/settings/assets/device-fd0ed77c.js similarity index 78% rename from web/settings/assets/device-69185b02.js rename to web/settings/assets/device-fd0ed77c.js index 510854d033..21cb044af2 100644 --- a/web/settings/assets/device-69185b02.js +++ b/web/settings/assets/device-fd0ed77c.js @@ -1 +1 @@ -import{D as u}from"./HardwareInstallation-727b5962.js";import{_ as m,u as n,l as c,m as f,G as o,E as l,B as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceShelly",mixins:[u]},v={class:"device-shelly"};function b(t,e,g,h,w,y){const r=n("openwb-base-heading"),a=n("openwb-base-alert"),p=n("openwb-base-text-input"),d=n("openwb-base-select-input");return c(),f("div",v,[o(r,null,{default:l(()=>e[2]||(e[2]=[s(" Einstellungen für Shelly ")])),_:1}),o(a,{subtype:"info"},{default:l(()=>e[3]||(e[3]=[s(" Unterstützt werden theoretisch alle ein- und dreiphasigen Shelly der Generation 1-3. Getestete Modelle sind Shelly 1pm, 1pm plus, Pro Pro 3EM, Plug S. ")])),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),o(d,{title:"Vorzeichen invertieren","not-selected":"Bitte auswählen",options:[{value:-1,text:"ja"},{value:1,text:"nein"}],"model-value":t.device.configuration.factor,required:"","onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.factor"))},{help:l(()=>e[4]||(e[4]=[s(" Einige Shelly Modelle liefern die Leistung mit umgedrehtem Vorzeichen. Falls dies der Fall sein sollte, das Vorzeichen invertieren. ")])),_:1},8,["model-value"])])}const $=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/device.vue"]]);export{$ as default}; +import{D as u}from"./HardwareInstallation-3a644290.js";import{_ as m,u as n,l as c,m as f,G as o,E as l,y as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceShelly",mixins:[u]},v={class:"device-shelly"};function b(t,e,g,h,w,y){const r=n("openwb-base-heading"),a=n("openwb-base-alert"),p=n("openwb-base-text-input"),d=n("openwb-base-select-input");return c(),f("div",v,[o(r,null,{default:l(()=>e[2]||(e[2]=[s(" Einstellungen für Shelly ")])),_:1}),o(a,{subtype:"info"},{default:l(()=>e[3]||(e[3]=[s(" Unterstützt werden theoretisch alle ein- und dreiphasigen Shelly der Generation 1-3. Getestete Modelle sind Shelly 1pm, 1pm plus, Pro Pro 3EM, Plug S. ")])),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),o(d,{title:"Vorzeichen invertieren","not-selected":"Bitte auswählen",options:[{value:-1,text:"ja"},{value:1,text:"nein"}],"model-value":t.device.configuration.factor,required:"","onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.factor"))},{help:l(()=>e[4]||(e[4]=[s(" Einige Shelly Modelle liefern die Leistung mit umgedrehtem Vorzeichen. Falls dies der Fall sein sollte, das Vorzeichen invertieren. ")])),_:1},8,["model-value"])])}const $=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/device.vue"]]);export{$ as default}; diff --git a/web/settings/assets/displayTheme-575345bd.js b/web/settings/assets/displayTheme-1e1ee4eb.js similarity index 77% rename from web/settings/assets/displayTheme-575345bd.js rename to web/settings/assets/displayTheme-1e1ee4eb.js index 92fc41e294..c5009d5c34 100644 --- a/web/settings/assets/displayTheme-575345bd.js +++ b/web/settings/assets/displayTheme-1e1ee4eb.js @@ -1 +1 @@ -import{D as d}from"./OptionalComponents-8819b9a1.js";import{_ as m,u as n,l as i,m as c,G as p,E as s,B as a,x as b,z as g}from"./vendor-ad7c30fd.js";import"./index-b236cee5.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DisplayThemeColors",mixins:[d]},f={class:"display-theme-colors"};function h(o,e,y,w,k,v){const r=n("openwb-base-heading"),l=n("openwb-base-button-group-input"),u=n("openwb-base-text-input");return i(),c("div",f,[p(r,null,{default:s(()=>e[2]||(e[2]=[a("Bediensperre")])),_:1}),p(l,{title:"Bedienung sperren","model-value":o.displayTheme.configuration.lock_changes,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.lock_changes"))},{help:s(()=>e[3]||(e[3]=[a(' Die Bedienung wird automatisch nach der eingestellten Ausschaltzeit (siehe "Display Standby") wieder gesperrt. ')])),_:1},8,["model-value"]),o.displayTheme.configuration.lock_changes?(i(),b(u,{key:0,title:"PIN zur Freigabe",subtype:"password",required:"",pattern:"[0-9]{4,10}","model-value":o.displayTheme.configuration.lock_changes_code,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.lock_changes_code"))},{help:s(()=>e[4]||(e[4]=[a(" Der PIN muss aus 4 bis 10 Zahlen bestehen. ")])),_:1},8,["model-value"])):g("",!0)])}const A=m(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/colors/displayTheme.vue"]]);export{A as default}; +import{D as d}from"./OptionalComponents-f79f9835.js";import{_ as m,u as n,l as i,m as c,G as p,E as s,y as a,z as b,B as g}from"./vendor-ea36120f.js";import"./index-cc8f65ba.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DisplayThemeColors",mixins:[d]},f={class:"display-theme-colors"};function h(o,e,y,w,k,v){const r=n("openwb-base-heading"),l=n("openwb-base-button-group-input"),u=n("openwb-base-text-input");return i(),c("div",f,[p(r,null,{default:s(()=>e[2]||(e[2]=[a("Bediensperre")])),_:1}),p(l,{title:"Bedienung sperren","model-value":o.displayTheme.configuration.lock_changes,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.lock_changes"))},{help:s(()=>e[3]||(e[3]=[a(' Die Bedienung wird automatisch nach der eingestellten Ausschaltzeit (siehe "Display Standby") wieder gesperrt. ')])),_:1},8,["model-value"]),o.displayTheme.configuration.lock_changes?(i(),b(u,{key:0,title:"PIN zur Freigabe",subtype:"password",required:"",pattern:"[0-9]{4,10}","model-value":o.displayTheme.configuration.lock_changes_code,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.lock_changes_code"))},{help:s(()=>e[4]||(e[4]=[a(" Der PIN muss aus 4 bis 10 Zahlen bestehen. ")])),_:1},8,["model-value"])):g("",!0)])}const A=m(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/colors/displayTheme.vue"]]);export{A as default}; diff --git a/web/settings/assets/displayTheme-95f1ddf2.js b/web/settings/assets/displayTheme-64a8b4a0.js similarity index 92% rename from web/settings/assets/displayTheme-95f1ddf2.js rename to web/settings/assets/displayTheme-64a8b4a0.js index 631e9b2a35..2cf3f701ec 100644 --- a/web/settings/assets/displayTheme-95f1ddf2.js +++ b/web/settings/assets/displayTheme-64a8b4a0.js @@ -1 +1 @@ -import{D as g}from"./OptionalComponents-8819b9a1.js";import{_ as m,u as i,l as d,m as f,G as a,E as l,B as u,x as r,z as b}from"./vendor-ad7c30fd.js";import"./index-b236cee5.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DisplayThemeCards",mixins:[g]},c={class:"display-theme-cards"};function v(n,e,V,h,y,w){const s=i("openwb-base-heading"),o=i("openwb-base-button-group-input"),p=i("openwb-base-text-input");return d(),f("div",c,[a(s,null,{default:l(()=>e[13]||(e[13]=[u("Bediensperre")])),_:1}),a(o,{title:"Bedienung sperren","model-value":n.displayTheme.configuration.lock_changes,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.lock_changes"))},{help:l(()=>e[14]||(e[14]=[u(' Die Bedienung wird automatisch nach der eingestellten Ausschaltzeit (siehe "Display Standby") wieder gesperrt. ')])),_:1},8,["model-value"]),n.displayTheme.configuration.lock_changes?(d(),r(p,{key:0,title:"PIN zur Freigabe",subtype:"password",required:"",pattern:"[0-9]{4,10}","model-value":n.displayTheme.configuration.lock_changes_code,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.lock_changes_code"))},{help:l(()=>e[15]||(e[15]=[u(" Der PIN muss aus 4 bis 10 Zahlen bestehen. ")])),_:1},8,["model-value"])):b("",!0),a(s,null,{default:l(()=>e[16]||(e[16]=[u("Ansichten")])),_:1}),a(o,{title:"Übersicht anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_view"))},null,8,["model-value"]),a(o,{title:"Energiefluss anzeigen","model-value":n.displayTheme.configuration.enable_energy_flow_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateConfiguration(t,"configuration.enable_energy_flow_view"))},null,8,["model-value"]),a(o,{title:"Ladepunkte anzeigen","model-value":n.displayTheme.configuration.enable_charge_points_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateConfiguration(t,"configuration.enable_charge_points_view"))},null,8,["model-value"]),n.displayTheme.configuration.enable_charge_points_view==!0?(d(),r(o,{key:1,title:"Einfache Ansicht der Ladepunkte","model-value":n.displayTheme.configuration.simple_charge_point_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateConfiguration(t,"configuration.simple_charge_point_view"))},null,8,["model-value"])):b("",!0),a(o,{title:"Status anzeigen","model-value":n.displayTheme.configuration.enable_status_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateConfiguration(t,"configuration.enable_status_view"))},null,8,["model-value"]),a(s,null,{help:l(()=>e[17]||(e[17]=[u(' Hier kann festgelegt werden, welche Daten in den Ansichten "Übersicht" und "Energiefluss" angezeigt werden. ')])),default:l(()=>[e[18]||(e[18]=u(" Datenauswahl "))]),_:1}),a(o,{title:"EVU anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_grid,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_grid"))},null,8,["model-value"]),a(o,{title:"Hausverbrauch anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_home_consumption,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_home_consumption"))},null,8,["model-value"]),a(o,{title:"PV anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_inverter_sum,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[9]||(e[9]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_inverter_sum"))},null,8,["model-value"]),a(o,{title:"Batteriespeicher anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_battery_sum,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[10]||(e[10]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_battery_sum"))},null,8,["model-value"]),a(o,{title:"Ladepunkte anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_charge_point_sum,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_charge_point_sum"))},null,8,["model-value"]),a(o,{title:"Fahrzeuge anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_vehicles,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[12]||(e[12]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_vehicles"))},null,8,["model-value"])])}const E=m(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/cards/displayTheme.vue"]]);export{E as default}; +import{D as g}from"./OptionalComponents-f79f9835.js";import{_ as m,u as i,l as d,m as f,G as a,E as l,y as u,z as r,B as b}from"./vendor-ea36120f.js";import"./index-cc8f65ba.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DisplayThemeCards",mixins:[g]},c={class:"display-theme-cards"};function v(n,e,V,h,y,w){const s=i("openwb-base-heading"),o=i("openwb-base-button-group-input"),p=i("openwb-base-text-input");return d(),f("div",c,[a(s,null,{default:l(()=>e[13]||(e[13]=[u("Bediensperre")])),_:1}),a(o,{title:"Bedienung sperren","model-value":n.displayTheme.configuration.lock_changes,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.lock_changes"))},{help:l(()=>e[14]||(e[14]=[u(' Die Bedienung wird automatisch nach der eingestellten Ausschaltzeit (siehe "Display Standby") wieder gesperrt. ')])),_:1},8,["model-value"]),n.displayTheme.configuration.lock_changes?(d(),r(p,{key:0,title:"PIN zur Freigabe",subtype:"password",required:"",pattern:"[0-9]{4,10}","model-value":n.displayTheme.configuration.lock_changes_code,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.lock_changes_code"))},{help:l(()=>e[15]||(e[15]=[u(" Der PIN muss aus 4 bis 10 Zahlen bestehen. ")])),_:1},8,["model-value"])):b("",!0),a(s,null,{default:l(()=>e[16]||(e[16]=[u("Ansichten")])),_:1}),a(o,{title:"Übersicht anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_view"))},null,8,["model-value"]),a(o,{title:"Energiefluss anzeigen","model-value":n.displayTheme.configuration.enable_energy_flow_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateConfiguration(t,"configuration.enable_energy_flow_view"))},null,8,["model-value"]),a(o,{title:"Ladepunkte anzeigen","model-value":n.displayTheme.configuration.enable_charge_points_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateConfiguration(t,"configuration.enable_charge_points_view"))},null,8,["model-value"]),n.displayTheme.configuration.enable_charge_points_view==!0?(d(),r(o,{key:1,title:"Einfache Ansicht der Ladepunkte","model-value":n.displayTheme.configuration.simple_charge_point_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateConfiguration(t,"configuration.simple_charge_point_view"))},null,8,["model-value"])):b("",!0),a(o,{title:"Status anzeigen","model-value":n.displayTheme.configuration.enable_status_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateConfiguration(t,"configuration.enable_status_view"))},null,8,["model-value"]),a(s,null,{help:l(()=>e[17]||(e[17]=[u(' Hier kann festgelegt werden, welche Daten in den Ansichten "Übersicht" und "Energiefluss" angezeigt werden. ')])),default:l(()=>[e[18]||(e[18]=u(" Datenauswahl "))]),_:1}),a(o,{title:"EVU anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_grid,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_grid"))},null,8,["model-value"]),a(o,{title:"Hausverbrauch anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_home_consumption,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_home_consumption"))},null,8,["model-value"]),a(o,{title:"PV anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_inverter_sum,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[9]||(e[9]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_inverter_sum"))},null,8,["model-value"]),a(o,{title:"Batteriespeicher anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_battery_sum,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[10]||(e[10]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_battery_sum"))},null,8,["model-value"]),a(o,{title:"Ladepunkte anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_charge_point_sum,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_charge_point_sum"))},null,8,["model-value"]),a(o,{title:"Fahrzeuge anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_vehicles,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[12]||(e[12]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_vehicles"))},null,8,["model-value"])])}const x=m(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/cards/displayTheme.vue"]]);export{x as default}; diff --git a/web/settings/assets/electricity_tariff-6bcc7f9b.js b/web/settings/assets/electricity_tariff-0c46c1ec.js similarity index 66% rename from web/settings/assets/electricity_tariff-6bcc7f9b.js rename to web/settings/assets/electricity_tariff-0c46c1ec.js index b3bfe7633f..c4ca3b2818 100644 --- a/web/settings/assets/electricity_tariff-6bcc7f9b.js +++ b/web/settings/assets/electricity_tariff-0c46c1ec.js @@ -1 +1 @@ -import{E as l}from"./GeneralChargeConfig-5075da0e.js";import{_ as s,u as r,l as c,m as p,G as o,E as u,B as f}from"./vendor-ad7c30fd.js";import"./index-b236cee5.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffVoltego",mixins:[l]},m={class:"electricity-tariff-voltego"};function _(t,e,g,b,v,y){const a=r("openwb-base-alert"),n=r("openwb-base-text-input");return c(),p("div",m,[o(a,{subtype:"info"},{default:u(()=>e[2]||(e[2]=[f(" Ihre persönlichen Zugangsdaten (Client-ID und Client-Secret) erhalten Sie direkt von Voltego. Behandeln Sie diese Daten wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Voltego-Account abfragen lassen! ")])),_:1}),o(n,{title:"Client-ID",subtype:"user",required:"","model-value":t.electricityTariff.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.client_id"))},null,8,["model-value"]),o(n,{title:"Client-Secret",subtype:"password",required:"","model-value":t.electricityTariff.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.client_secret"))},null,8,["model-value"])])}const I=s(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/voltego/electricity_tariff.vue"]]);export{I as default}; +import{E as l}from"./GeneralChargeConfig-401ab7d4.js";import{_ as s,u as r,l as c,m as p,G as o,E as u,y as f}from"./vendor-ea36120f.js";import"./index-cc8f65ba.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffVoltego",mixins:[l]},m={class:"electricity-tariff-voltego"};function _(t,e,g,b,y,v){const a=r("openwb-base-alert"),n=r("openwb-base-text-input");return c(),p("div",m,[o(a,{subtype:"info"},{default:u(()=>e[2]||(e[2]=[f(" Ihre persönlichen Zugangsdaten (Client-ID und Client-Secret) erhalten Sie direkt von Voltego. Behandeln Sie diese Daten wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Voltego-Account abfragen lassen! ")])),_:1}),o(n,{title:"Client-ID",subtype:"user",required:"","model-value":t.electricityTariff.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.client_id"))},null,8,["model-value"]),o(n,{title:"Client-Secret",subtype:"password",required:"","model-value":t.electricityTariff.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.client_secret"))},null,8,["model-value"])])}const I=s(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/voltego/electricity_tariff.vue"]]);export{I as default}; diff --git a/web/settings/assets/electricity_tariff-5e7da4e9.js b/web/settings/assets/electricity_tariff-0d285d7d.js similarity index 70% rename from web/settings/assets/electricity_tariff-5e7da4e9.js rename to web/settings/assets/electricity_tariff-0d285d7d.js index 08764d65b9..27036a111a 100644 --- a/web/settings/assets/electricity_tariff-5e7da4e9.js +++ b/web/settings/assets/electricity_tariff-0d285d7d.js @@ -1 +1 @@ -import{E as s}from"./GeneralChargeConfig-5075da0e.js";import{_ as l,u as r,l as c,m as p,G as n,E as u,B as f}from"./vendor-ad7c30fd.js";import"./index-b236cee5.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffRabot",mixins:[s]},m={class:"electricity-tariff-rabot"};function _(t,e,b,g,y,v){const a=r("openwb-base-alert"),o=r("openwb-base-text-input");return c(),p("div",m,[n(a,{subtype:"info"},{default:u(()=>e[2]||(e[2]=[f(" Ihre persönlichen Zugangsdaten (Client-ID und Client-Secret) erhalten Sie direkt von Rabot. Behandeln Sie diese Daten wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Rabot-Account abfragen lassen! ")])),_:1}),n(o,{title:"Client-ID",subtype:"user",required:"","model-value":t.electricityTariff.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.client_id"))},null,8,["model-value"]),n(o,{title:"Client-Secret",subtype:"password",required:"","model-value":t.electricityTariff.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.client_secret"))},null,8,["model-value"])])}const S=l(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/rabot/electricity_tariff.vue"]]);export{S as default}; +import{E as s}from"./GeneralChargeConfig-401ab7d4.js";import{_ as l,u as r,l as c,m as p,G as n,E as u,y as f}from"./vendor-ea36120f.js";import"./index-cc8f65ba.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffRabot",mixins:[s]},m={class:"electricity-tariff-rabot"};function _(t,e,b,y,g,v){const a=r("openwb-base-alert"),o=r("openwb-base-text-input");return c(),p("div",m,[n(a,{subtype:"info"},{default:u(()=>e[2]||(e[2]=[f(" Ihre persönlichen Zugangsdaten (Client-ID und Client-Secret) erhalten Sie direkt von Rabot. Behandeln Sie diese Daten wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Rabot-Account abfragen lassen! ")])),_:1}),n(o,{title:"Client-ID",subtype:"user",required:"","model-value":t.electricityTariff.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.client_id"))},null,8,["model-value"]),n(o,{title:"Client-Secret",subtype:"password",required:"","model-value":t.electricityTariff.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.client_secret"))},null,8,["model-value"])])}const S=l(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/rabot/electricity_tariff.vue"]]);export{S as default}; diff --git a/web/settings/assets/electricity_tariff-5562646b.js b/web/settings/assets/electricity_tariff-4d29c538.js similarity index 86% rename from web/settings/assets/electricity_tariff-5562646b.js rename to web/settings/assets/electricity_tariff-4d29c538.js index af721bb436..597cfc39f1 100644 --- a/web/settings/assets/electricity_tariff-5562646b.js +++ b/web/settings/assets/electricity_tariff-4d29c538.js @@ -1 +1 @@ -import{E as m}from"./GeneralChargeConfig-5075da0e.js";import{_ as g,u as s,l as h,m as _,G as n,E as y,B as l,A as T}from"./vendor-ad7c30fd.js";import"./index-b236cee5.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const k={name:"ElectricityTariffTibber",mixins:[m],data(){return{tibberAPI:"https://api.tibber.com/v1-beta/gql",tibberHomeList:[]}},methods:{async getTibberHomeList(){if(this.electricityTariff.configuration.token===null)return;const i='{ "query": "{viewer {homes{id address{address1 address2 address3 postalCode city country}}}}" }';try{const e=await this.axios.post(this.tibberAPI,i,{headers:{Authorization:"Bearer "+this.electricityTariff.configuration.token,"Content-Type":"application/json"}});this.tibberHomeList=e.data.data.viewer.homes.map(t=>{let r=t.address.address1;return t.address.address2&&(r=r+", "+t.address.address2),t.address.address3&&(r=r+", "+t.address.address3),r=r+`, ${t.address.postalCode} ${t.address.city}, ${t.address.country}`,{value:t.id,text:r}}),this.electricityTariff.configuration.home_id||this.updateConfiguration(this.tibberHomeList[0].value,"configuration.home_id"),this.$root.postClientMessage("Home IDs erfolgreich abgerufen.","success")}catch(e){console.error(e),this.$root.postClientMessage("Beim Abfragen der Tibber API ist ein Fehler aufgetreten!
"+e+"
","danger")}}}},v={class:"electricity-tariff-tibber"};function w(i,e,t,r,u,c){var d;const b=s("openwb-base-alert"),a=s("openwb-base-text-input"),p=s("openwb-base-button-input"),f=s("openwb-base-select-input");return h(),_("div",v,[n(b,{subtype:"info"},{default:y(()=>e[3]||(e[3]=[l(" Ihren persönlichen Tibber-Token erhalten Sie über die "),T("a",{href:"https://developer.tibber.com/explorer",target:"_blank",rel:"noopener noreferrer"}," Tibber-Developer-Seite ",-1),l(" . Behandeln Sie Ihren Token wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Tibber-Account abfragen lassen! Die Home-ID können Sie (wenn bekannt) in das Eingabefeld selbst eintragen oder nach Eingabe Ihres Token durch Klick auf den Button von der openWB ermitteln lassen. Unerlaubte Zeichen werden aus dem Token und der Home-ID automatisch gelöscht. ")])),_:1}),n(a,{ref:"tokenInput",title:"Token",required:"","model-value":i.electricityTariff.configuration.token,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.token"))},null,8,["model-value"]),n(p,{title:"Home-IDs abrufen","button-text":"Jetzt abrufen",subtype:"success",disabled:!((d=i.electricityTariff.configuration.token)!=null&&d.length),onButtonClicked:c.getTibberHomeList},null,8,["disabled","onButtonClicked"]),n(f,{title:"Verfügbare Home-IDs",options:u.tibberHomeList,"model-value":i.electricityTariff.configuration.home_id,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.home_id"))},null,8,["options","model-value"]),n(a,{title:"Home-ID",required:"","model-value":i.electricityTariff.configuration.home_id,"onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.home_id"))},null,8,["model-value"])])}const $=g(k,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/tibber/electricity_tariff.vue"]]);export{$ as default}; +import{E as m}from"./GeneralChargeConfig-401ab7d4.js";import{_ as g,u as s,l as h,m as _,G as n,E as y,y as l,x as T}from"./vendor-ea36120f.js";import"./index-cc8f65ba.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const k={name:"ElectricityTariffTibber",mixins:[m],data(){return{tibberAPI:"https://api.tibber.com/v1-beta/gql",tibberHomeList:[]}},methods:{async getTibberHomeList(){if(this.electricityTariff.configuration.token===null)return;const i='{ "query": "{viewer {homes{id address{address1 address2 address3 postalCode city country}}}}" }';try{const e=await this.axios.post(this.tibberAPI,i,{headers:{Authorization:"Bearer "+this.electricityTariff.configuration.token,"Content-Type":"application/json"}});this.tibberHomeList=e.data.data.viewer.homes.map(t=>{let r=t.address.address1;return t.address.address2&&(r=r+", "+t.address.address2),t.address.address3&&(r=r+", "+t.address.address3),r=r+`, ${t.address.postalCode} ${t.address.city}, ${t.address.country}`,{value:t.id,text:r}}),this.electricityTariff.configuration.home_id||this.updateConfiguration(this.tibberHomeList[0].value,"configuration.home_id"),this.$root.postClientMessage("Home IDs erfolgreich abgerufen.","success")}catch(e){console.error(e),this.$root.postClientMessage("Beim Abfragen der Tibber API ist ein Fehler aufgetreten!
"+e+"
","danger")}}}},v={class:"electricity-tariff-tibber"};function w(i,e,t,r,u,c){var d;const b=s("openwb-base-alert"),a=s("openwb-base-text-input"),p=s("openwb-base-button-input"),f=s("openwb-base-select-input");return h(),_("div",v,[n(b,{subtype:"info"},{default:y(()=>e[3]||(e[3]=[l(" Ihren persönlichen Tibber-Token erhalten Sie über die "),T("a",{href:"https://developer.tibber.com/explorer",target:"_blank",rel:"noopener noreferrer"}," Tibber-Developer-Seite ",-1),l(" . Behandeln Sie Ihren Token wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Tibber-Account abfragen lassen! Die Home-ID können Sie (wenn bekannt) in das Eingabefeld selbst eintragen oder nach Eingabe Ihres Token durch Klick auf den Button von der openWB ermitteln lassen. Unerlaubte Zeichen werden aus dem Token und der Home-ID automatisch gelöscht. ")])),_:1}),n(a,{ref:"tokenInput",title:"Token",required:"","model-value":i.electricityTariff.configuration.token,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.token"))},null,8,["model-value"]),n(p,{title:"Home-IDs abrufen","button-text":"Jetzt abrufen",subtype:"success",disabled:!((d=i.electricityTariff.configuration.token)!=null&&d.length),onButtonClicked:c.getTibberHomeList},null,8,["disabled","onButtonClicked"]),n(f,{title:"Verfügbare Home-IDs",options:u.tibberHomeList,"model-value":i.electricityTariff.configuration.home_id,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.home_id"))},null,8,["options","model-value"]),n(a,{title:"Home-ID",required:"","model-value":i.electricityTariff.configuration.home_id,"onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.home_id"))},null,8,["model-value"])])}const A=g(k,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/tibber/electricity_tariff.vue"]]);export{A as default}; diff --git a/web/settings/assets/electricity_tariff-388476a3.js b/web/settings/assets/electricity_tariff-8330f492.js similarity index 57% rename from web/settings/assets/electricity_tariff-388476a3.js rename to web/settings/assets/electricity_tariff-8330f492.js index f5a07e09ee..af0a2e3726 100644 --- a/web/settings/assets/electricity_tariff-388476a3.js +++ b/web/settings/assets/electricity_tariff-8330f492.js @@ -1 +1 @@ -import{E as o}from"./GeneralChargeConfig-5075da0e.js";import{_ as a,u as n,l as s,m as c,G as l,E as p,B as f}from"./vendor-ad7c30fd.js";import"./index-b236cee5.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffAwattar",mixins:[o]},u={class:"electricity-tariff-awattar"};function m(t,e,_,w,b,v){const i=n("openwb-base-select-input");return s(),c("div",u,[l(i,{title:"Land","not-selected":"Bitte auswählen",options:[{value:"de",text:"Deutschland"},{value:"at",text:"Österreich"}],"model-value":t.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateConfiguration(r,"configuration.country"))},{help:p(()=>e[1]||(e[1]=[f(" Es werden die abgefragten Börsenpreise verwendet, die aWATTar bereitstellt. aWATTar-Gebühren oder Steuern werden nicht berücksichtigt. ")])),_:1},8,["model-value"])])}const k=a(d,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/awattar/electricity_tariff.vue"]]);export{k as default}; +import{E as o}from"./GeneralChargeConfig-401ab7d4.js";import{_ as a,u as n,l as s,m as c,G as l,E as p,y as f}from"./vendor-ea36120f.js";import"./index-cc8f65ba.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffAwattar",mixins:[o]},u={class:"electricity-tariff-awattar"};function m(t,e,_,w,y,b){const i=n("openwb-base-select-input");return s(),c("div",u,[l(i,{title:"Land","not-selected":"Bitte auswählen",options:[{value:"de",text:"Deutschland"},{value:"at",text:"Österreich"}],"model-value":t.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateConfiguration(r,"configuration.country"))},{help:p(()=>e[1]||(e[1]=[f(" Es werden die abgefragten Börsenpreise verwendet, die aWATTar bereitstellt. aWATTar-Gebühren oder Steuern werden nicht berücksichtigt. ")])),_:1},8,["model-value"])])}const k=a(d,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/awattar/electricity_tariff.vue"]]);export{k as default}; diff --git a/web/settings/assets/electricity_tariff-91c588df.js b/web/settings/assets/electricity_tariff-a0cf3a14.js similarity index 74% rename from web/settings/assets/electricity_tariff-91c588df.js rename to web/settings/assets/electricity_tariff-a0cf3a14.js index c7d306cc70..94b6cab18b 100644 --- a/web/settings/assets/electricity_tariff-91c588df.js +++ b/web/settings/assets/electricity_tariff-a0cf3a14.js @@ -1 +1 @@ -import{E as c}from"./GeneralChargeConfig-5075da0e.js";import{_ as p,u as r,l as d,m as f,G as i,E as o,B as s,A as m}from"./vendor-ad7c30fd.js";import"./index-b236cee5.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const g={name:"ElectricityTariffEnergyCharts",mixins:[c]},h={class:"electricity-tariff-energy-charts"};function b(t,e,_,y,w,v){const a=r("openwb-base-alert"),l=r("openwb-base-select-input"),u=r("openwb-base-number-input");return d(),f("div",h,[i(a,{subtype:"info"},{default:o(()=>e[2]||(e[2]=[s(" Börsenstrompreise von Energy Charts (energy-charts.info)"),m("br",null,null,-1),s(" Die Rohdaten werden von Wissenschaftlern des Fraunhofer-Instituts für Solare Energiesysteme ISE aus zahlreichen Quellen stündlich oder täglich abgerufen und für die Darstellung aufbereitet. ")])),_:1}),i(l,{title:"Land","not-selected":"Bitte auswählen",options:[{value:"DE-LU",text:"Deutschland"},{value:"AT",text:"Österreich"},{value:"CH",text:"Schweiz"}],"model-value":t.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateConfiguration(n,"configuration.country"))},null,8,["model-value"]),i(u,{title:"Aufschlag zum Börsenstrompreis",min:0,step:.001,precision:3,required:"",unit:"ct/kWh","model-value":t.electricityTariff.configuration.surcharge,"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateConfiguration(parseFloat(n.toFixed(3)),"configuration.surcharge"))},{help:o(()=>e[3]||(e[3]=[s(" Die Auswahl (Energy-Charts) kann für alle Stromanbieter ausgewählt werden, die die Börsenstrompreise in einem variablen/dynamischen Tarif an die Kunden weitergeben. Das Modul soll es ermöglichen, dass zu tagesaktuellen Strompreisen unter Berücksichtigung eines Aufschlags zu günstigen Zeiten automatisch geladen werden kann und somit die Preisschwankungen an der Börse optimal ausgenutzt werden. ")])),_:1},8,["model-value"])])}const S=p(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/energycharts/electricity_tariff.vue"]]);export{S as default}; +import{E as c}from"./GeneralChargeConfig-401ab7d4.js";import{_ as p,u as r,l as d,m as f,G as i,E as o,y as s,x as m}from"./vendor-ea36120f.js";import"./index-cc8f65ba.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const g={name:"ElectricityTariffEnergyCharts",mixins:[c]},h={class:"electricity-tariff-energy-charts"};function b(t,e,y,_,w,v){const a=r("openwb-base-alert"),l=r("openwb-base-select-input"),u=r("openwb-base-number-input");return d(),f("div",h,[i(a,{subtype:"info"},{default:o(()=>e[2]||(e[2]=[s(" Börsenstrompreise von Energy Charts (energy-charts.info)"),m("br",null,null,-1),s(" Die Rohdaten werden von Wissenschaftlern des Fraunhofer-Instituts für Solare Energiesysteme ISE aus zahlreichen Quellen stündlich oder täglich abgerufen und für die Darstellung aufbereitet. ")])),_:1}),i(l,{title:"Land","not-selected":"Bitte auswählen",options:[{value:"DE-LU",text:"Deutschland"},{value:"AT",text:"Österreich"},{value:"CH",text:"Schweiz"}],"model-value":t.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateConfiguration(n,"configuration.country"))},null,8,["model-value"]),i(u,{title:"Aufschlag zum Börsenstrompreis",min:0,step:.001,precision:3,required:"",unit:"ct/kWh","model-value":t.electricityTariff.configuration.surcharge,"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateConfiguration(parseFloat(n.toFixed(3)),"configuration.surcharge"))},{help:o(()=>e[3]||(e[3]=[s(" Die Auswahl (Energy-Charts) kann für alle Stromanbieter ausgewählt werden, die die Börsenstrompreise in einem variablen/dynamischen Tarif an die Kunden weitergeben. Das Modul soll es ermöglichen, dass zu tagesaktuellen Strompreisen unter Berücksichtigung eines Aufschlags zu günstigen Zeiten automatisch geladen werden kann und somit die Preisschwankungen an der Börse optimal ausgenutzt werden. ")])),_:1},8,["model-value"])])}const V=p(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/energycharts/electricity_tariff.vue"]]);export{V as default}; diff --git a/web/settings/assets/external_inverter-e76b5192.js b/web/settings/assets/external_inverter-19cf6472.js similarity index 82% rename from web/settings/assets/external_inverter-e76b5192.js rename to web/settings/assets/external_inverter-19cf6472.js index dfbc3bf0b9..d5dd36e298 100644 --- a/web/settings/assets/external_inverter-e76b5192.js +++ b/web/settings/assets/external_inverter-19cf6472.js @@ -1 +1 @@ -import{C as m}from"./HardwareInstallation-727b5962.js";import{_ as p,u as i,l as g,m as f,G as o,E as r,B as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSolaredgeExternalInverter",mixins:[m]},c={class:"device-solaredge-external-inverter"};function v(n,e,_,w,x,E){const l=i("openwb-base-heading"),u=i("openwb-base-alert"),a=i("openwb-base-number-input"),d=i("openwb-base-select-input");return g(),f("div",c,[o(l,null,{default:r(()=>e[3]||(e[3]=[s(" Einstellungen für SolarEdge externen Wechselrichter ")])),_:1}),o(u,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[s(' Diese Komponente nur konfigurieren, wenn ein weiteres Solaredge SmartMeter verbaut ist, welches z.B. die Leistung einer vorhandenen Bestands-PV-Anlage erfasst. Dieses zusätzliche SmartMeter muss dann als "Zähler 2" / "Position 2" im Wechselrichter-Konfigurationsmenü konfiguriert sein. ')])),_:1}),o(a,{title:"SolarEdge-Geräte-ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),o(a,{title:"SolarEdge-Meter-ID","model-value":n.component.configuration.meter_id,min:"1",max:"255",required:"","onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"]),o(d,{title:"Leistung invertieren","not-selected":"Bitte auswählen",options:[{value:1,text:"nein"},{value:-1,text:"ja"}],"model-value":n.component.configuration.factor,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.factor"))},{help:r(()=>e[5]||(e[5]=[s(" Einige externe SolarEdge Wechselrichter liefern die Leistung mit falschem Vorzeichen. In diesem Fall ist die Leistung zu invertieren. ")])),_:1},8,["model-value"])])}const L=p(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/external_inverter.vue"]]);export{L as default}; +import{C as m}from"./HardwareInstallation-3a644290.js";import{_ as p,u as i,l as g,m as f,G as o,E as r,y as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSolaredgeExternalInverter",mixins:[m]},c={class:"device-solaredge-external-inverter"};function v(n,e,_,w,x,E){const l=i("openwb-base-heading"),u=i("openwb-base-alert"),a=i("openwb-base-number-input"),d=i("openwb-base-select-input");return g(),f("div",c,[o(l,null,{default:r(()=>e[3]||(e[3]=[s(" Einstellungen für SolarEdge externen Wechselrichter ")])),_:1}),o(u,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[s(' Diese Komponente nur konfigurieren, wenn ein weiteres Solaredge SmartMeter verbaut ist, welches z.B. die Leistung einer vorhandenen Bestands-PV-Anlage erfasst. Dieses zusätzliche SmartMeter muss dann als "Zähler 2" / "Position 2" im Wechselrichter-Konfigurationsmenü konfiguriert sein. ')])),_:1}),o(a,{title:"SolarEdge-Geräte-ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),o(a,{title:"SolarEdge-Meter-ID","model-value":n.component.configuration.meter_id,min:"1",max:"255",required:"","onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"]),o(d,{title:"Leistung invertieren","not-selected":"Bitte auswählen",options:[{value:1,text:"nein"},{value:-1,text:"ja"}],"model-value":n.component.configuration.factor,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.factor"))},{help:r(()=>e[5]||(e[5]=[s(" Einige externe SolarEdge Wechselrichter liefern die Leistung mit falschem Vorzeichen. In diesem Fall ist die Leistung zu invertieren. ")])),_:1},8,["model-value"])])}const L=p(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/external_inverter.vue"]]);export{L as default}; diff --git a/web/settings/assets/index-b236cee5.js b/web/settings/assets/index-b236cee5.js deleted file mode 100644 index 5c623f5dcb..0000000000 --- a/web/settings/assets/index-b236cee5.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as y,l as i,m as u,p as g,q as O,u as b,x as h,y as E,z as p,A as a,B as f,D as V,E as c,F as v,G as m,I as B,J as I,K as S,L as ee,M as q,N as T,O as te,P as ne,Q as se,T as H,R as oe,S as N,U as ae,V as ie,W as le,X as re,Y as de,Z as ue,$ as ce}from"./vendor-ad7c30fd.js";import{l as C,f as z,a as U,F as $,b as pe,c as me,d as G,e as fe,g as j,h as _e,i as ge,j as be,k as he,m as ve,n as ye,o as we,p as ke,q as Se,r as Oe,s as Be,t as Ce,u as $e,v as J,w as Ie,x as Te,y as xe,z as Ve,A as K,B as Me,C as Ae,D as qe,E as Pe,G as Ee,H as De,I as Le,J as je,K as Re,L as We,M as Ne}from"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import{p as Fe,a as He}from"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./vendor-jquery-f04b6372.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))d(l);new MutationObserver(l=>{for(const s of l)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&d(o)}).observe(document,{childList:!0,subtree:!0});function n(l){const s={};return l.integrity&&(s.integrity=l.integrity),l.referrerPolicy&&(s.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?s.credentials="include":l.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function d(l){if(l.ep)return;l.ep=!0;const s=n(l);fetch(l.href,s)}})();const ze={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Ue(e,t,n,d,l,s){return i(),u("div",{class:O(["card-text alert","alert-"+n.subtype])},[g(e.$slots,"default",{},void 0,!0)],2)}const Ge=y(ze,[["render",Ue],["__scopeId","data-v-055c15aa"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),Je=Object.freeze(Object.defineProperty({__proto__:null,default:Ge},Symbol.toStringTag,{value:"Module"}));C.add(z,U);const Ke={name:"OpenwbBaseSettingElement",components:{FontAwesomeIcon:$},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},Qe={key:0,class:"col-md-4 col-form-label"},Ze={class:"form-row"},Ye={key:0,class:"form-text alert alert-info my-1 small flex-fill"};function Xe(e,t,n,d,l,s){const o=b("font-awesome-icon");return i(),u("div",{class:O(["form-row",e.$slots.title?"mb-1":"mx-0"])},[e.$slots.title?(i(),u("label",Qe,[g(e.$slots,"title"),e.$slots.help?(i(),h(o,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:O(["clickable ml-1",l.showHelp?"text-info":""]),onClick:E(s.toggleHelp,["stop"])},null,8,["icon","class","onClick"])):p("",!0)])):p("",!0),a("div",{class:O(e.$slots.title?"col-md-8":"col px-0")},[a("div",{class:O({"form-row":e.$slots.title})},[g(e.$slots,"default",{},()=>[t[0]||(t[0]=f("*ELEMENT MISSING*"))])],2),a("div",Ze,[l.showHelp?(i(),u("span",Ye,[g(e.$slots,"help")])):p("",!0)])],2)],2)}const M=y(Ke,[["render",Xe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSettingElement.vue"]]),et=Object.freeze(Object.defineProperty({__proto__:null,default:M},Symbol.toStringTag,{value:"Module"}));C.add(pe,me,G,fe);const tt={name:"OpenwbArrayInput",components:{FontAwesomeIcon:$,OpenwbBaseSettingElement:M},inheritAttrs:!1,props:{title:{type:String,required:!0,default:"#TITLE#"},modelValue:{type:Array,default:()=>[]},noElementsMessage:{type:String,default:()=>"Keine Elemente zugeordnet."}},emits:["update:modelValue"],data(){return{newTag:"",showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},newTagValid:{get(){return this.newTag.length>0&&!this.value.includes(this.newTag)}}},methods:{addTag(){if(this.newTagValid){const e=[...this.value,this.newTag].sort();this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=[...this.value];t.splice(e,1),this.value=t}}},nt={class:"w-100"},st={class:"input-group"},ot={class:"input-group-prepend"},at={class:"input-group-text"},it={class:"input-group-append"},lt={class:"tagList mt-1 w-100"},rt={key:0,class:"noTag"};function dt(e,t,n,d,l,s){const o=b("font-awesome-icon"),_=b("openwb-base-setting-element");return i(),h(_,null,V({title:c(()=>[g(e.$slots,"title",{},()=>[f(v(n.title),1)],!0)]),default:c(()=>[a("div",nt,[a("div",st,[a("div",ot,[a("div",at,[g(e.$slots,"input-prefix",{},()=>[m(o,{"fixed-width":"",icon:["fas","tag"]})],!0)])]),B(a("input",S({ref:"tagInput","onUpdate:modelValue":t[0]||(t[0]=r=>l.newTag=r),type:"text",class:"form-control"},e.$attrs,{onKeyup:t[1]||(t[1]=ee((...r)=>s.addTag&&s.addTag(...r),["enter"]))}),null,16),[[I,l.newTag]]),a("div",it,[a("div",{class:O(["input-group-text",s.newTagValid?"bg-success clickable":"not-clickable"]),onClick:t[2]||(t[2]=(...r)=>s.addTag&&s.addTag(...r))},[g(e.$slots,"input-add",{},()=>[m(o,{"fixed-width":"",icon:["fas","plus"]})],!0)],2)])])]),a("div",lt,[s.value.length==0?(i(),u("span",rt,[m(o,{icon:["fas","info-circle"]}),f(" "+v(n.noElementsMessage),1)])):p("",!0),(i(!0),u(T,null,q(s.value,(r,w)=>(i(),u("span",{key:w,class:"tag"},[g(e.$slots,"element-prefix",{},()=>[m(o,{icon:["fas","tag"]})],!0),f(" "+v(r)+" ",1),m(o,{class:"clickable remove-element",icon:["fas","times-circle"],onClick:x=>s.removeTag(w)},null,8,["onClick"])]))),128))])]),_:2},[e.$slots.help?{name:"help",fn:c(()=>[g(e.$slots,"help",{},void 0,!0)]),key:"0"}:void 0]),1024)}const ut=y(tt,[["render",dt],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),ct=Object.freeze(Object.defineProperty({__proto__:null,default:ut},Symbol.toStringTag,{value:"Module"}));const pt={name:"OpenwbAvatar"},mt={class:"avatar"};function ft(e,t,n,d,l,s){return i(),u("div",mt,[g(e.$slots,"default",{},()=>[t[0]||(t[0]=f("?"))],!0)])}const _t=y(pt,[["render",ft],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),gt=Object.freeze(Object.defineProperty({__proto__:null,default:_t},Symbol.toStringTag,{value:"Module"}));C.add(j);const bt={name:"OpenwbButtonGroupInput",components:{FontAwesomeIcon:$,OpenwbBaseSettingElement:M},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Boolean],default:void 0},buttons:{type:Array,required:!0}},emits:["update:modelValue"],computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}}},ht={class:"btn-group btn-block btn-group-toggle"},vt=["value"];function yt(e,t,n,d,l,s){const o=b("font-awesome-icon"),_=b("openwb-base-setting-element");return i(),h(_,null,V({title:c(()=>[g(e.$slots,"title",{},()=>[f(v(n.title),1)])]),default:c(()=>[a("div",ht,[(i(!0),u(T,null,q(n.buttons,r=>(i(),u("label",{key:r.value,class:O(["btn",[s.value==r.buttonValue?"active":"",r.class?r.class:"btn-outline-info"]])},[B(a("input",S({"onUpdate:modelValue":t[0]||(t[0]=w=>s.value=w),type:"radio",value:r.buttonValue,ref_for:!0},e.$attrs),null,16,vt),[[te,s.value]]),g(e.$slots,"label-"+r.buttonValue,{},()=>[f(v(r.text),1)]),m(o,{"fixed-width":"",icon:["fas","check"],style:ne([s.value==r.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),_:2},[e.$slots.help?{name:"help",fn:c(()=>[g(e.$slots,"help")]),key:"0"}:void 0]),1024)}const wt=y(bt,[["render",yt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),kt=Object.freeze(Object.defineProperty({__proto__:null,default:wt},Symbol.toStringTag,{value:"Module"}));const St={name:"OpenwbClickButton",props:{title:{type:String,required:!1,default:""},tooltip:{type:String,required:!1,default:""}},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}},Ot=["title"];function Bt(e,t,n,d,l,s){return i(),u("button",{type:"button",class:"btn btn-block",title:n.tooltip,onClick:t[0]||(t[0]=E((...o)=>s.click&&s.click(...o),["prevent"]))},[g(e.$slots,"default",{},()=>[f(v(n.title),1)],!0)],8,Ot)}const Q=y(St,[["render",Bt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Ct=Object.freeze(Object.defineProperty({__proto__:null,default:Q},Symbol.toStringTag,{value:"Module"})),$t={name:"OpenwbButtonInput",components:{OpenwbBaseSettingElement:M,OpenwbBaseClickButton:Q},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},buttonText:{type:String,required:!1,default:void 0},disabled:{type:Boolean,default:!1},subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}},emits:["buttonClicked"],methods:{handleClick(e){this.$emit("buttonClicked",e)}}};function It(e,t,n,d,l,s){const o=b("openwb-base-click-button"),_=b("openwb-base-setting-element");return i(),h(_,null,V({title:c(()=>[g(e.$slots,"title",{},()=>[f(v(n.title),1)])]),default:c(()=>[m(o,S({class:(n.disabled?"btn-outline-":"btn-")+n.subtype,disabled:n.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:c(()=>[f(v(n.buttonText),1)]),_:1},16,["class","disabled","onButtonClicked"])]),_:2},[e.$slots.help?{name:"help",fn:c(()=>[g(e.$slots,"help")]),key:"0"}:void 0]),1024)}const Tt=y($t,[["render",It],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),xt=Object.freeze(Object.defineProperty({__proto__:null,default:Tt},Symbol.toStringTag,{value:"Module"}));C.add(_e,ge);const Vt={name:"OpenwbCard",components:{FontAwesomeIcon:$},inheritAttrs:!1,props:{title:{type:String,default:void 0},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink","white"].indexOf(e)!==-1},default:"secondary"},bodyBg:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink","white"].indexOf(e)!==-1},default:"light"},collapsible:{type:Boolean,default:!1},collapsed:{type:Boolean,default:!1}},data(){return{isCollapsed:this.collapsible&&this.collapsed}},methods:{toggleBody(){this.collapsible===!0&&(this.isCollapsed=!this.isCollapsed)}}},Mt={class:"form-group mb-0"},At={class:"form-row vaRow mb-0 py-2"},qt={class:"col"},Pt={class:"card-actions ml-4"},Et={key:0,class:"card-actions mr-4"},Dt={key:2,class:"card-footer"};function Lt(e,t,n,d,l,s){const o=b("font-awesome-icon");return i(),u("div",{class:O(["card","border-"+n.subtype])},[n.title!==void 0||e.$slots.header?(i(),u("div",{key:0,class:O(["card-header py-1","bg-"+n.subtype]),onClick:t[0]||(t[0]=(..._)=>s.toggleBody&&s.toggleBody(..._))},[a("div",Mt,[a("div",At,[a("div",qt,[g(e.$slots,"header",{collapsed:l.isCollapsed},()=>[f(v(n.title),1)])])])]),a("span",Pt,[e.$slots.actions?(i(),u("span",Et,[g(e.$slots,"actions",{collapsed:l.isCollapsed})])):p("",!0),n.collapsible?(i(),h(o,{key:1,"fixed-width":"",icon:l.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):p("",!0)])],2)):p("",!0),l.isCollapsed===!1?(i(),u("div",S({key:1,class:["card-body",[n.title==null&&!e.$slots.header?"border-radius-top-inherit":"",e.$slots.footer?"":"border-radius-bottom-inherit","bg-"+n.bodyBg]]},e.$attrs),[g(e.$slots,"default")],16)):p("",!0),e.$slots.footer&&l.isCollapsed===!1?(i(),u("div",Dt,[g(e.$slots,"footer")])):p("",!0)],2)}const jt=y(Vt,[["render",Lt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Rt=Object.freeze(Object.defineProperty({__proto__:null,default:jt},Symbol.toStringTag,{value:"Module"})),Wt={name:"OpenwbCheckboxInput",components:{OpenwbBaseSettingElement:M},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:Boolean}},emits:["update:modelValue"],computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}}},Nt={class:"col-md-8"};function Ft(e,t,n,d,l,s){const o=b("openwb-base-setting-element");return i(),h(o,null,V({title:c(()=>[g(e.$slots,"title",{},()=>[f(v(n.title),1)])]),default:c(()=>[a("div",Nt,[B(a("input",S({"onUpdate:modelValue":t[0]||(t[0]=_=>s.value=_),class:"form-control",type:"checkbox"},e.$attrs),null,16),[[se,s.value]])])]),_:2},[e.$slots.help?{name:"help",fn:c(()=>[g(e.$slots,"help")]),key:"0"}:void 0]),1024)}const Ht=y(Wt,[["render",Ft],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),zt=Object.freeze(Object.defineProperty({__proto__:null,default:Ht},Symbol.toStringTag,{value:"Module"}));C.add(be,he);const Ut={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:$},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(this.clipboardApiAvailable)navigator.clipboard.writeText(this.$refs["slot-wrapper"].innerText).then(()=>{this.isCopied=!0},()=>{console.error("copy to clipboard failed")});else{if(console.debug("clipboard api not supported/enabled, fallback to selection or text range"),window.getSelection){const e=window.getSelection(),t=document.createRange();t.selectNodeContents(this.$refs["slot-wrapper"]),e.removeAllRanges(),e.addRange(t);return}if(document.body.createTextRange){const e=document.body.createTextRange();e.moveToElementText(this.$refs["slot-wrapper"]),e.select()}else console.warn("could not select text, unsupported browser")}}}},Gt=["title"];function Jt(e,t,n,d,l,s){const o=b("font-awesome-icon");return i(),u("span",{ref:"slot-wrapper",title:n.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(..._)=>s.click&&s.click(..._))},[g(e.$slots,"default",{},void 0,!0),m(o,{"fixed-width":"",icon:l.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Gt)}const Kt=y(Ut,[["render",Jt],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),Qt=Object.freeze(Object.defineProperty({__proto__:null,default:Kt},Symbol.toStringTag,{value:"Module"}));C.add(z,U,j);const Zt={name:"OpenwbHeading",components:{FontAwesomeIcon:$},inheritAttrs:!1,data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},Yt={class:"heading-text"},Xt={key:0,class:"actions"},en={class:""},tn={key:0,class:"form-row alert alert-info small flex-fill"};function nn(e,t,n,d,l,s){const o=b("font-awesome-icon");return i(),u(T,null,[a("div",S({class:"card-text card-text-heading"},e.$attrs),[a("div",Yt,[g(e.$slots,"default",{},void 0,!0),e.$slots.help?(i(),h(o,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:O(["clickable",l.showHelp?"text-info":""]),onClick:E(s.toggleHelp,["stop"])},null,8,["icon","class","onClick"])):p("",!0)]),e.$slots.actions?(i(),u("span",Xt,[g(e.$slots,"actions",{},void 0,!0)])):p("",!0)],16),a("div",en,[l.showHelp?(i(),u("span",tn,[g(e.$slots,"help",{},void 0,!0)])):p("",!0)])],64)}const sn=y(Zt,[["render",nn],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),on=Object.freeze(Object.defineProperty({__proto__:null,default:sn},Symbol.toStringTag,{value:"Module"}));C.add(ve,ye,we,ke);const D={null:{value:null,icon:["fas","question"],iconClass:"text-secondary",title:"Nicht relevant",nextValue:!0},true:{value:!0,icon:["fas","square"],iconClass:"",title:"Geschlossen",nextValue:!1},false:{value:!1,icon:["far","square"],iconClass:"",title:"Offen",nextValue:null}},an={name:"OpenwbIoPattern",components:{FontAwesomeIcon:$},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:Array,required:!1,default:()=>[]}},emits:["update:modelValue"],computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{getIcon(e){return D[e].icon},getIconClass(e){return D[e].iconClass},getTitle(e){return D[e].title},toggleInput(e,t){this.value[e]=D[t].nextValue}}};function ln(e,t,n,d,l,s){const o=b("font-awesome-icon"),_=b("openwb-base-setting-element");return i(),h(_,null,V({title:c(()=>[g(e.$slots,"title",{},()=>[f(v(n.title),1)])]),default:c(()=>[(i(!0),u(T,null,q(s.value,(r,w)=>(i(),u("span",{key:w},[m(o,{title:s.getTitle(r),icon:s.getIcon(r),class:O([s.getIconClass(r),"fa-fw clickable"]),size:"2x",transform:r=="undefined"?"shrink-6":null,mask:r=="undefined"?["fas","square"]:null,onClick:E(x=>s.toggleInput(w,r),["stop","prevent"]),onMousedown:t[0]||(t[0]=E(()=>{},["stop","prevent"])),onMouseup:t[1]||(t[1]=E(()=>{},["stop","prevent"]))},null,8,["title","icon","class","transform","mask","onClick"])]))),128))]),_:2},[e.$slots.help?{name:"help",fn:c(()=>[g(e.$slots,"help")]),key:"0"}:void 0]),1024)}const rn=y(an,[["render",ln],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseIoPattern.vue"]]),dn=Object.freeze(Object.defineProperty({__proto__:null,default:rn},Symbol.toStringTag,{value:"Module"})),un={name:"OpenwbModalDialog",props:{title:{type:String,required:!1,default:""},subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},buttons:{type:Array,default:void 0},footerAlignment:{type:String,validator:function(e){return["around","between","center","end","start"].indexOf(e)!==-1},default:"end"},preventClose:{type:Boolean,default:!1},show:{type:Boolean,default:!1}},emits:["modal-result"],computed:{myButtons(){var e=[];return this.buttons!==void 0&&(e=this.buttons),this.preventClose||e.push({text:"Schließen",event:"close"}),e}},methods:{handleClick(e){e.stopPropagation();let t=e.target.getAttribute("data-event");t===null&&(t="close"),(t!="close"||!this.preventClose)&&this.$emit("modal-result",t)}}},cn={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},pn={class:"modal-content"},mn={class:"modal-title"},fn={class:"modal-body"},_n=["data-event"];function gn(e,t,n,d,l,s){return n.show?(i(),h(H,{key:0,to:"body"},[t[4]||(t[4]=a("div",{class:"modal-backdrop fade show"},null,-1)),a("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...o)=>s.handleClick&&s.handleClick(...o))},[a("div",cn,[a("div",pn,[a("div",{class:O(["modal-header","bg-"+n.subtype])},[a("h4",mn,v(n.title),1),n.preventClose?p("",!0):(i(),u("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...o)=>s.handleClick&&s.handleClick(...o))}," × "))],2),a("div",fn,[g(e.$slots,"default",{},()=>[t[3]||(t[3]=f("# Body #"))])]),s.myButtons.length>0?(i(),u("div",{key:0,class:O(["modal-footer d-flex","justify-content-"+n.footerAlignment])},[(i(!0),u(T,null,q(s.myButtons,o=>(i(),u("button",{key:o.text,type:"button",class:O(["btn",o.subtype?"btn-"+o.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":o.event?o.event:"close",onClick:t[1]||(t[1]=(..._)=>s.handleClick&&s.handleClick(..._))},v(o.text),11,_n))),128))],2)):p("",!0)])])])])):p("",!0)}const bn=y(un,[["render",gn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),hn=Object.freeze(Object.defineProperty({__proto__:null,default:bn},Symbol.toStringTag,{value:"Module"}));C.add(Se);const vn={name:"OpenwbNumberInput",components:{FontAwesomeIcon:$,OpenwbBaseSettingElement:M},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:Number,required:!1,default:void 0},unit:{type:String,required:!1,default:void 0},precision:{type:Number,default:void 0},emptyValue:{type:[Number,null],required:!1,default:null}},emits:["update:modelValue"],computed:{value:{get(){return this.precision!==void 0?parseFloat(Math.round(this.modelValue*Math.pow(10,this.precision))/Math.pow(10,this.precision)):this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}}},yn={class:"input-group"},wn={class:"input-group-prepend"},kn={class:"input-group-text"},Sn={key:0,class:"input-group-append"},On={class:"input-group-text"};function Bn(e,t,n,d,l,s){const o=b("font-awesome-icon"),_=b("openwb-base-setting-element");return i(),h(_,null,V({title:c(()=>[g(e.$slots,"title",{},()=>[f(v(n.title),1)],!0)]),default:c(()=>[a("div",yn,[a("div",wn,[a("div",kn,[m(o,{"fixed-width":"",icon:["fas","calculator"]})])]),B(a("input",S({"onUpdate:modelValue":t[0]||(t[0]=r=>s.value=r),type:"number",class:"form-control"},e.$attrs),null,16),[[I,s.value,void 0,{number:!0}]]),n.unit?(i(),u("div",Sn,[a("div",On,v(n.unit),1)])):p("",!0)])]),_:2},[e.$slots.help?{name:"help",fn:c(()=>[g(e.$slots,"help",{},void 0,!0)]),key:"0"}:void 0]),1024)}const Cn=y(vn,[["render",Bn],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),$n=Object.freeze(Object.defineProperty({__proto__:null,default:Cn},Symbol.toStringTag,{value:"Module"}));C.add(Oe,Be);const In={name:"OpenwbRangeInput",components:{FontAwesomeIcon:$,OpenwbBaseSettingElement:M},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:Number,required:!1,default:void 0},unit:{type:String,required:!1,default:void 0},min:{type:Number,required:!0,default:0},max:{type:Number,required:!0,default:100},step:{type:Number,required:!1,default:1},labels:{type:Array,required:!1,default:void 0}},emits:["update:modelValue"],computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValue[g(e.$slots,"title",{},()=>[f(v(n.title),1)],!0)]),default:c(()=>[a("div",Tn,[a("div",xn,[s.label?(i(),u("label",Vn,v(s.label),1)):p("",!0),a("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[0]||(t[0]=(...r)=>s.decrement&&s.decrement(...r))},[m(o,{icon:["fas","step-backward"]})]),a("div",Mn,[B(a("input",S({"onUpdate:modelValue":t[1]||(t[1]=r=>s.sliderValue=r),type:"range",class:"form-control-range rangeInput",min:n.min,max:n.max,step:n.step},e.$attrs),null,16,An),[[I,s.sliderValue,void 0,{number:!0}]])]),a("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[2]||(t[2]=(...r)=>s.increment&&s.increment(...r))},[m(o,{icon:["fas","step-forward"]})])])])]),_:2},[e.$slots.help?{name:"help",fn:c(()=>[g(e.$slots,"help",{},void 0,!0)]),key:"0"}:void 0]),1024)}const Pn=y(In,[["render",qn],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),En=Object.freeze(Object.defineProperty({__proto__:null,default:Pn},Symbol.toStringTag,{value:"Module"}));C.add(G);const Dn={name:"OpenwbSelectInput",components:{FontAwesomeIcon:$,OpenwbBaseSettingElement:M},inheritAttrs:!1,props:{title:{type:String,required:!1,default:void 0},modelValue:{type:[String,Number,Array,null],required:!1,default:void 0},emptyValue:{type:[String,Number,Array],required:!1,default:void 0},groups:{type:Array,required:!1,default:void 0},options:{type:Array,required:!1,default:void 0},notSelected:{type:String,default:void 0},addButton:{type:Boolean,default:!1}},emits:["update:modelValue","input:add"],computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},addDisabled:{get(){return this.value===void 0}}},methods:{addClicked(){this.addDisabled||this.$emit("input:add")}}},Ln={class:"w-100"},jn={class:"input-group"},Rn={key:0,class:"input-group-prepend"},Wn={class:"input-group-text"},Nn=["value"],Fn=["value"],Hn=["label"],zn=["value"],Un={key:1,class:"input-group-append"};function Gn(e,t,n,d,l,s){const o=b("font-awesome-icon"),_=b("openwb-base-setting-element");return i(),h(_,null,V({default:c(()=>[a("div",Ln,[a("div",jn,[e.$slots.prefix?(i(),u("div",Rn,[a("div",Wn,[g(e.$slots,"prefix")])])):p("",!0),B(a("select",S({"onUpdate:modelValue":t[0]||(t[0]=r=>s.value=r),class:"col form-control"},e.$attrs),[n.notSelected!==void 0?(i(),u("option",{key:0,value:n.emptyValue,disabled:""}," -- "+v(n.notSelected)+" -- ",9,Nn)):p("",!0),(i(!0),u(T,null,q(n.options,r=>(i(),u("option",{key:r.value,value:r.value},v(r.text),9,Fn))),128)),(i(!0),u(T,null,q(n.groups,r=>(i(),u("optgroup",{key:r.label,label:r.label},[(i(!0),u(T,null,q(r.options,w=>(i(),u("option",{key:w.value,value:w.value},v(w.text),9,zn))),128))],8,Hn))),128))],16),[[oe,s.value]]),n.addButton?(i(),u("div",Un,[a("div",{class:O(["input-group-text",s.addDisabled?"not-clickable":"bg-success clickable"]),onClick:t[1]||(t[1]=r=>s.addClicked())},[g(e.$slots,"inputAdd",{},()=>[m(o,{"fixed-width":"",icon:["fas","plus"]})])],2)])):p("",!0)])])]),_:2},[e.$slots.title||n.title?{name:"title",fn:c(()=>[g(e.$slots,"title",{},()=>[f(v(n.title),1)])]),key:"0"}:void 0,e.$slots.help?{name:"help",fn:c(()=>[g(e.$slots,"help")]),key:"1"}:void 0]),1024)}const Jn=y(Dn,[["render",Gn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),Kn=Object.freeze(Object.defineProperty({__proto__:null,default:Jn},Symbol.toStringTag,{value:"Module"}));C.add(j,Ce,$e);const Qn={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:$},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},emits:["reset","defaults","save"],data(){return{showModalReset:!1,showModalDefaults:!1}},computed:{showModalSave(){return this.$store.state.local.savingData}},methods:{showResetModal(){this.showModalReset=!0},handleModalReset(e){this.showModalReset=!1,e=="confirm"&&this.$emit("reset")},showDefaultsModal(){this.showModalDefaults=!0},handleModalDefaults(e){this.showModalDefaults=!1,e=="confirm"&&this.$emit("defaults")},saveSettings(){if(this.formName){if(!document.forms[this.formName].reportValidity()){console.debug("form invalid");return}}else console.debug("no form to validate");this.$emit("save")}}},Zn={class:"row justify-content-center mb-1"},Yn={class:"col-md-4 d-flex py-1 justify-content-center"},Xn={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},es={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function ts(e,t,n,d,l,s){const o=b("openwb-base-modal-dialog"),_=b("font-awesome-icon");return i(),u(T,null,[m(o,{show:s.showModalSave,title:"Speichern",subtype:"success","prevent-close":!0},{default:c(()=>t[3]||(t[3]=[f(" Einstellungen werden gespeichert... ")])),_:1},8,["show"]),m(o,{show:l.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:c(()=>t[4]||(t[4]=[f(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")])),_:1},8,["show","onModalResult"]),m(o,{show:l.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:c(()=>t[5]||(t[5]=[f(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")])),_:1},8,["show","onModalResult"]),a("div",Zn,[a("div",Yn,[a("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...r)=>s.saveSettings&&s.saveSettings(...r))},[t[6]||(t[6]=f(" Speichern ")),m(_,{"fixed-width":"",icon:["fas","check"]})])]),n.hideReset?p("",!0):(i(),u("div",Xn,[a("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...r)=>s.showResetModal&&s.showResetModal(...r))},[t[7]||(t[7]=f(" Änderungen verwerfen ")),m(_,{"fixed-width":"",icon:["fas","undo"]})])])),n.hideDefaults?p("",!0):(i(),u("div",es,[a("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...r)=>s.showDefaultsModal&&s.showDefaultsModal(...r))},[t[8]||(t[8]=f(" Werkseinstellungen ")),m(_,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const ns=y(Qn,[["render",ts],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),ss=Object.freeze(Object.defineProperty({__proto__:null,default:ns},Symbol.toStringTag,{value:"Module"}));C.add(J,Ie,Te,xe,Ve,K,Me,Ae,qe,Pe,Ee,De);const os={name:"OpenwbTextInput",components:{FontAwesomeIcon:$,OpenwbBaseSettingElement:M},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Object],required:!1,default:void 0},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:{type:String,required:!1,default:void 0},unit:{type:String,required:!1,default:void 0},emptyValue:{type:[String,Object,null],required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showPassword:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.warn("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch(t){console.error("parsing JSON failed: "+e,t),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(e=this.emptyValue),this.$emit("update:modelValue",e)}},inputRef(){switch(this.subtype){case"json":return this.$refs.jsonInput;case"password":return this.$refs.passwordInput;case"host":return this.$refs.hostInput;case"email":case"url":return this.$refs.urlInput;case"time":return this.$refs.timeInput;case"date":return this.$refs.dateInput;case"month":return this.$refs.monthInput;case"year":return this.$refs.yearInput}return this.$refs.textInput}},methods:{togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,n=new Date(this.modelValue);switch(this.subtype){case"date":n.setDate(n.getDate()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0")+"-"+String(n.getDate()).padStart(2,"0");break;case"month":n.setMonth(n.getMonth()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0");break;case"year":n.setYear(n.getFullYear()+e),t=String(n.getFullYear());break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}t>this.inputRef.max||t[g(e.$slots,"title",{},()=>[f(v(n.title),1)],!0)]),default:c(()=>[a("div",as,[a("div",is,[a("div",ls,[a("div",rs,[n.subtype=="text"?(i(),h(o,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):p("",!0),n.subtype=="email"?(i(),h(o,{key:1,"fixed-width":"",icon:["fas","envelope"]})):p("",!0),n.subtype=="host"?(i(),h(o,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):p("",!0),n.subtype=="url"?(i(),h(o,{key:3,"fixed-width":"",icon:["fas","globe"]})):p("",!0),n.subtype=="user"?(i(),h(o,{key:4,"fixed-width":"",icon:["fas","user"]})):p("",!0),n.subtype=="json"?(i(),h(o,{key:5,"fixed-width":"",icon:["fas","code"]})):p("",!0),n.subtype=="password"?(i(),h(o,{key:6,"fixed-width":"",icon:l.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):p("",!0),n.subtype=="time"?(i(),h(o,{key:7,"fixed-width":"",icon:["fas","clock"]})):p("",!0),n.subtype=="date"||n.subtype=="month"||n.subtype=="year"?(i(),h(o,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):p("",!0)])]),["text","user"].includes(n.subtype)?B((i(),u("input",S({key:0,ref:"textInput","onUpdate:modelValue":t[0]||(t[0]=r=>s.value=r),type:"text",class:["form-control",{invalid:l.inputInvalid}]},e.$attrs,{pattern:n.pattern}),null,16,ds)),[[I,s.value]]):p("",!0),n.subtype=="json"?B((i(),u("input",S({key:1,ref:"jsonInput","onUpdate:modelValue":t[1]||(t[1]=r=>s.value=r),type:"text",class:"form-control"},e.$attrs,{pattern:n.pattern}),null,16,us)),[[I,s.value]]):p("",!0),n.subtype=="password"?B((i(),u("input",S({key:2,ref:"passwordInput","onUpdate:modelValue":t[2]||(t[2]=r=>s.value=r),type:l.showPassword?"text":"password",class:"form-control"},e.$attrs,{pattern:n.pattern}),null,16,cs)),[[N,s.value]]):p("",!0),n.subtype=="host"?B((i(),u("input",S({key:3,ref:"hostInput","onUpdate:modelValue":t[3]||(t[3]=r=>s.value=r),type:"text",class:"form-control"},e.$attrs),null,16)),[[I,s.value]]):p("",!0),["email","url"].includes(n.subtype)?B((i(),u("input",S({key:4,"onUpdate:modelValue":t[4]||(t[4]=r=>s.value=r),refs:"urlInput",type:n.subtype,class:"form-control"},e.$attrs),null,16,ps)),[[N,s.value]]):p("",!0),n.subtype=="time"?B((i(),u("input",S({key:5,ref:"timeInput","onUpdate:modelValue":t[5]||(t[5]=r=>s.value=r),type:"time",class:"form-control"},e.$attrs),null,16)),[[I,s.value]]):p("",!0),n.subtype=="date"?B((i(),u("input",S({key:6,ref:"dateInput","onUpdate:modelValue":t[6]||(t[6]=r=>s.value=r),type:"date",class:"form-control"},e.$attrs),null,16)),[[I,s.value]]):p("",!0),n.subtype=="month"?B((i(),u("input",S({key:7,ref:"monthInput","onUpdate:modelValue":t[7]||(t[7]=r=>s.value=r),type:"month",class:"form-control"},e.$attrs),null,16)),[[I,s.value]]):p("",!0),n.subtype=="year"?B((i(),u("input",S({key:8,ref:"yearInput","onUpdate:modelValue":t[8]||(t[8]=r=>s.value=r),type:"number",class:"form-control"},e.$attrs),null,16)),[[I,s.value]]):p("",!0),n.unit?(i(),u("div",ms,[a("div",fs,v(n.unit),1)])):p("",!0),n.subtype=="password"?(i(),u("div",{key:10,class:"input-group-append clickable",onClick:t[9]||(t[9]=(...r)=>s.togglePassword&&s.togglePassword(...r))},[a("div",_s,[m(o,{"fixed-width":"",icon:l.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):p("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(i(),u("div",{key:11,class:"input-group-append clickable",onClick:t[10]||(t[10]=r=>s.modify(-1))},t[12]||(t[12]=[a("div",{class:"input-group-text"},"-",-1)]))):p("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(i(),u("div",{key:12,class:"input-group-append clickable",onClick:t[11]||(t[11]=r=>s.modify(1))},t[13]||(t[13]=[a("div",{class:"input-group-text"},"+",-1)]))):p("",!0)])])]),_:2},[e.$slots.help?{name:"help",fn:c(()=>[g(e.$slots,"help",{},void 0,!0)]),key:"0"}:void 0]),1024)}const bs=y(os,[["render",gs],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),hs=Object.freeze(Object.defineProperty({__proto__:null,default:bs},Symbol.toStringTag,{value:"Module"}));C.add(J,K);const vs={name:"OpenwbTextareaInput",components:{OpenwbBaseSettingElement:M,FontAwesomeIcon:$},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Object],required:!1,default:void 0},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid JSON as String"),this.tempValue):JSON.stringify(this.tempValue,void 0,2):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch(t){console.warn("parsing JSON failed: "+e,t),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else this.$emit("update:modelValue",e)}},length:{get(){return this.value!==void 0?this.value.length:0}}}},ys={class:"w-100"},ws={class:"input-group"},ks={class:"input-group-prepend"},Ss={class:"input-group-text"},Os={key:2,class:"input-group-append"},Bs={class:"input-group-text"},Cs={class:"form-text text-muted text-right"};function $s(e,t,n,d,l,s){const o=b("font-awesome-icon"),_=b("openwb-base-setting-element");return i(),h(_,null,V({title:c(()=>[g(e.$slots,"title",{},()=>[f(v(n.title),1)],!0)]),default:c(()=>[a("div",ys,[a("div",ws,[a("div",ks,[a("div",Ss,[n.subtype=="text"?(i(),h(o,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):p("",!0),n.subtype=="json"?(i(),h(o,{key:1,"fixed-width":"",icon:["fas","code"]})):p("",!0)])]),n.subtype==="json"?B((i(),u("textarea",S({key:0,ref:"jsonInput","onUpdate:modelValue":t[0]||(t[0]=r=>s.value=r),class:"form-control"},e.$attrs),null,16)),[[I,s.value,void 0,{lazy:!0}]]):B((i(),u("textarea",S({key:1,"onUpdate:modelValue":t[1]||(t[1]=r=>s.value=r),class:"form-control"},e.$attrs),null,16)),[[I,s.value]]),e.$attrs.maxlength?(i(),u("div",Os,[a("div",Bs,[a("small",Cs,v(s.length)+" / "+v(e.$attrs.maxlength),1)])])):p("",!0)])])]),_:2},[e.$slots.help?{name:"help",fn:c(()=>[g(e.$slots,"help",{},void 0,!0)]),key:"0"}:void 0]),1024)}const Is=y(vs,[["render",$s],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Ts=Object.freeze(Object.defineProperty({__proto__:null,default:Is},Symbol.toStringTag,{value:"Module"}));const xs={name:"OpenwbToast",props:{topic:{type:String,required:!0},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},source:{type:String,required:!0,validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number,required:!0}},emits:["dismiss","hide"],data(){return{handle:void 0,relativeTime:void 0,hidden:!1}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)},methods:{dismiss(){this.$emit("dismiss",{topic:this.topic})},updateRelativeTime(){const e={year:31536e6,month:2628e6,day:864e5,hour:36e5,minute:6e4,second:1e3};var t=new Intl.RelativeTimeFormat("de",{numeric:"auto"});const d=new Date-this.timestamp*1e3;for(var l in e)if(Math.abs(d)>e[l]){this.relativeTime=t.format(Math.round(-d/e[l]),l);break}d>10*1e3&&!this.hidden&&(this.hidden=!0,this.$emit("hide",{topic:this.topic}))}}},Vs={key:0,class:"time-diff"},Ms={class:"toast-body"};function As(e,t,n,d,l,s){return i(),u("div",{class:O(["toast","border-"+n.subtype]),role:"alert"},[a("div",{class:O(["toast-header","bg-"+n.subtype])},[t[2]||(t[2]=a("strong",{class:"pr-2 mr-auto"},"openWB",-1)),n.timestamp?(i(),u("small",Vs,v(l.relativeTime),1)):p("",!0),a("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...o)=>s.dismiss&&s.dismiss(...o))},t[1]||(t[1]=[a("span",{"aria-hidden":"true"},"×",-1)]))],2),a("div",Ms,[g(e.$slots,"default",{},void 0,!0)])],2)}const qs=y(xs,[["render",As],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),Ps=Object.freeze(Object.defineProperty({__proto__:null,default:qs},Symbol.toStringTag,{value:"Module"}));C.add(Le);const Es={name:"OpenwbNavBar",components:{FontAwesomeIcon:$},computed:{nodeEnv(){return"development"}},watch:{$route(){this.$refs.collapsibleNavbar.classList.remove("show"),this.$refs.navbarButton.classList.add("collapsed"),this.$refs.navbarButton.setAttribute("aria-expanded",!1)}}},Ds={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},Ls={ref:"navbarButton",class:"navbar-toggler mr-5",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar"},js={id:"collapsibleNavbar",ref:"collapsibleNavbar",class:"collapse navbar-collapse navbar-nav-scroll"},Rs={class:"navbar-nav"},Ws={class:"nav-item"},Ns={class:"nav-item dropdown nav-separator-after"},Fs={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Hs={class:"nav-item dropdown"},zs={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Us={class:"nav-item dropdown"},Gs={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Js={class:"nav-item dropdown"},Ks={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Qs={class:"nav-item dropdown"},Zs={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Ys={class:"nav-item nav-separator-before"},Xs={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function eo(e,t,n,d,l,s){const o=b("router-link"),_=b("font-awesome-icon");return i(),u("nav",Ds,[t[32]||(t[32]=a("a",{class:"navbar-brand",href:"/openWB/web/"},[a("span",null,"openWB")],-1)),a("button",Ls,t[0]||(t[0]=[a("span",{class:"navbar-toggler-icon"},null,-1)]),512),a("div",js,[a("ul",Rs,[a("li",Ws,[m(o,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:c(()=>t[1]||(t[1]=[f(" Status ")])),_:1})]),a("li",Ns,[t[4]||(t[4]=a("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),a("div",Fs,[m(o,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[2]||(t[2]=[f(" Ladeprotokoll ")])),_:1}),m(o,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[3]||(t[3]=[f(" Diagramme ")])),_:1})])]),a("li",Hs,[t[7]||(t[7]=a("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),a("div",zs,[m(o,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[5]||(t[5]=[f(" Allgemein ")])),_:1}),m(o,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[6]||(t[6]=[f(" Optionale Hardware ")])),_:1})])]),a("li",Us,[t[13]||(t[13]=a("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),a("div",Gs,[m(o,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[8]||(t[8]=[f(" Übergreifendes ")])),_:1}),m(o,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[9]||(t[9]=[f(" Sofortladen ")])),_:1}),m(o,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[10]||(t[10]=[f(" PV-Laden ")])),_:1}),m(o,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[11]||(t[11]=[f(" Zeitladen ")])),_:1}),m(o,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[12]||(t[12]=[f(" Zielladen ")])),_:1})])]),a("li",Js,[t[21]||(t[21]=a("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),a("div",Ks,[m(o,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[14]||(t[14]=[f(" Geräte und Komponenten ")])),_:1}),m(o,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[15]||(t[15]=[f(" Lastmanagement ")])),_:1}),m(o,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[16]||(t[16]=[f(" Ladepunkte ")])),_:1}),m(o,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[17]||(t[17]=[f(" Fahrzeuge ")])),_:1}),m(o,{to:"/IoConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[18]||(t[18]=[f(" Ein-/Ausgänge ")])),_:1}),t[19]||(t[19]=a("div",{class:"dropdown-divider"},null,-1)),t[20]||(t[20]=a("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1))])]),a("li",Qs,[t[30]||(t[30]=a("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),a("div",Zs,[m(o,{to:"/System/InstallAssistant",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[22]||(t[22]=[f(" Einrichtungsassistent ")])),_:1}),m(o,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[23]||(t[23]=[f(" openWB Cloud ")])),_:1}),m(o,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[24]||(t[24]=[f(" MQTT-Brücken ")])),_:1}),m(o,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[25]||(t[25]=[f(" Fehlersuche ")])),_:1}),m(o,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[26]||(t[26]=[f(" Support ")])),_:1}),m(o,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[27]||(t[27]=[f(" Datenverwaltung ")])),_:1}),m(o,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[28]||(t[28]=[f(" System ")])),_:1}),m(o,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>t[29]||(t[29]=[f(" Rechtliches ")])),_:1})])]),a("li",Ys,[a("a",Xs,[t[31]||(t[31]=f(" Wiki ")),m(_,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const to=y(Es,[["render",eo],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const no={name:"OpenwbPageFooter"},so={id:"footer",class:"footer bg-dark text-light font-small"},oo={class:"container text-center"};function ao(e,t,n,d,l,s){return i(),u("footer",so,[a("div",oo,[a("small",null," Sie befinden sich hier: Einstellungen / "+v(e.$route.meta.heading),1)])])}const io=y(no,[["render",ao],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]),lo={name:"ComponentState",emits:["reset","defaults","save"],data(){return{mqttTopicsToSubscribe:[]}},computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]},statusLevel(){return["success","warning","danger"]},stateIcon:{get(){switch(this.$store.state.mqtt[this.baseTopic+"/get/fault_state"]){case 0:return["fas","check-circle"];case 1:return["fas","exclamation-triangle"];case 2:return["fas","times-circle"];default:return["fas","check-circle"]}}}},mounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doUnsubscribe(this.mqttTopicsToSubscribe)},methods:{updateState(e,t,n=void 0){console.debug("updateState:",e,t,n),this.$store.commit({type:"updateTopic",topic:e,objectPath:n,payload:t})},ac_current2dc_power(e){return parseFloat((e*3*230/1e3).toFixed(0))},dc_power2ac_current(e){return parseFloat((e*1e3/230/3).toFixed(2))},getWildcardIndexList(e,t=!1){let n=e;t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let d=Object.keys(this.$store.state.mqtt).filter(l=>l.match(n));return d.forEach((l,s,o)=>{o[s]=parseInt(l.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),d},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(d=>d.match(n)).reduce((d,l)=>({...d,[l]:this.$store.state.mqtt[l]}),{})},formatDate(e,t={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(e).toLocaleDateString(void 0,t)},formatNumber(e,t=0,n=t,d=1){if(!(e==null||isNaN(e)))return e=e*d,e.toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:n})},formatNumberTopic(e,t=0,n=t,d=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,n,d):"-"},formatPhaseArrayNumberTopic(e,t=0,n=t,d=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(l=>this.formatNumber(l,t,n,d)).join(" / "):"- / - / -"},translateChargeMode(e){switch(e){case"instant_charging":return"Sofort";case"pv_charging":return"PV";case"scheduled_charging":return"Zielladen";case"time_charging":return"Zeitladen";case"standby":return"Standby";case"stop":return"Stop";default:return console.warn("unknown charge mode:",e),e}},getFaultStateSubtype(e){const t=this.$store.state.mqtt[e+"/get/fault_state"];if(t===void 0)return"warning";switch(t){case 0:return"success";case 1:return"warning";case 2:return"danger";default:return"dark"}}}},Z=y(lo,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);C.add(je,Re);const ro={name:"OpenwbPageMessages",components:{FontAwesomeIcon:$,FontAwesomeLayers:We,FontAwesomeLayersText:Ne},mixins:[Z],data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+"],showAllMessages:!1,hiddenMessages:[]}},computed:{alertLevel(){return this.messages.reduce((t,n)=>((t=="light"&&["info","success","warning","danger"].includes(n.type)||t=="info"&&["success","warning","danger"].includes(n.type)||t=="success"&&["warning","danger"].includes(n.type)||t=="warning"&&n.type=="danger")&&(t=n.type),t),"light")},messages(){const e=[];return this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e.sort(this.compareMessagesByTimestamp),e},recentMessages(){return this.showAllMessages?this.messages:this.messages.filter(e=>!this.hiddenMessages.includes(e.topic))},messageIndicatorClass(){return"text-"+this.alertLevel},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[n,d]of Object.entries(e))t.push({topic:n,...d});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[n,d]of Object.entries(e))t.push({topic:n,...d});return t}},methods:{toggleAllMessages(){this.showAllMessages=!this.showAllMessages},compareMessagesByTimestamp(e,t){return t.timestamp-e.timestamp},clearTopic(e){this.$root.doPublish(e,void 0)},dismissMessage(e){this.clearTopic(e.topic);var t=this.hiddenMessages.indexOf(e.topic);t>-1&&this.hiddenMessages.splice(t,1)},dismissAllMessages(){this.messages.forEach(e=>{this.clearTopic(e.topic)}),this.hiddenMessages=[],this.toggleAllMessages()},hideMessage(e){this.hiddenMessages.includes(e.topic)||this.hiddenMessages.push(e.topic)}}},uo=["innerHTML"];function co(e,t,n,d,l,s){const o=b("font-awesome-icon"),_=b("font-awesome-layers-text"),r=b("font-awesome-layers"),w=b("openwb-base-alert"),x=b("openwb-base-click-button"),P=b("openwb-base-toast");return i(),u(T,null,[(i(),h(H,{to:"body"},[a("div",{id:"message-indicator",class:O(["text-light mt-1 p-2 mr-1 clickable",l.showAllMessages?"active":""]),onClick:t[0]||(t[0]=(...A)=>s.toggleAllMessages&&s.toggleAllMessages(...A))},[m(r,{"full-width":"",style:{"font-size":"175%"}},{default:c(()=>[m(o,{"fixed-width":"",icon:l.showAllMessages?["fas","bell"]:["far","bell"],class:O(s.messageIndicatorClass)},null,8,["icon","class"]),s.messages.length>0?(i(),h(_,{key:0,counter:"",value:s.messages.length,position:"top-right",class:"message-counter bg-light text-dark"},null,8,["value"])):p("",!0)]),_:1})],2)])),s.recentMessages.length>0||l.showAllMessages?(i(),u("div",{key:0,class:O(["openwb-toast-container",l.showAllMessages?"full-height":""])},[s.recentMessages.length==0?(i(),h(w,{key:0,subtype:"info"},{default:c(()=>t[1]||(t[1]=[f(" Keine Nachrichten vorhanden. ")])),_:1})):l.showAllMessages?(i(),h(x,{key:1,class:"btn-sm btn-secondary mb-1",onButtonClicked:s.dismissAllMessages},{default:c(()=>t[2]||(t[2]=[f(" Alle Nachrichten löschen ")])),_:1},8,["onButtonClicked"])):p("",!0),(i(!0),u(T,null,q(s.recentMessages,A=>(i(),h(P,{key:A.topic,topic:A.topic,source:A.source,subtype:A.type,timestamp:A.timestamp,onDismiss:s.dismissMessage,onHide:s.hideMessage},{default:c(()=>[a("span",{innerHTML:A.message},null,8,uo)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss","onHide"]))),128))],2)):p("",!0)],64)}const po=y(ro,[["render",co],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),mo={name:"OpenwbPageBlocker",mixins:[Z],data(){return{mqttTopicsToSubscribe:["openWB/system/boot_done","openWB/system/update_in_progress"]}},computed:{title(){return this.bootInProgress||this.updateInProgress?"openWB ist noch nicht bereit":this.reloadRequired?"Neues Laden der Seite erforderlich":"???"},myButtons(){return!(this.bootInProgress||this.updateInProgress)&&this.reloadRequired?[{text:"Jetzt neu laden",subtype:"success",event:"reload"}]:[]},bootInProgress(){return this.$store.state.mqtt["openWB/system/boot_done"]==null?!0:!this.$store.state.mqtt["openWB/system/boot_done"]},updateInProgress(){return this.$store.state.mqtt["openWB/system/update_in_progress"]==null?!1:this.$store.state.mqtt["openWB/system/update_in_progress"]},reloadRequired(){return this.$store.state.local.reloadRequired},showModalBlocker(){return this.bootInProgress||this.updateInProgress||this.reloadRequired}},methods:{handleModalResult(e){e=="reload"?location.reload():console.warn("unknown event",e)}}},fo={class:"openwb-blocker"},_o={key:0},go={key:1},bo={key:2},ho={key:3};function vo(e,t,n,d,l,s){const o=b("openwb-base-modal-dialog");return i(),u("div",fo,[m(o,{show:s.showModalBlocker,title:s.title,subtype:"dark","prevent-close":!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=_=>s.handleModalResult(_))},{default:c(()=>[s.bootInProgress?(i(),u("p",_o,"Der Systemstart ist noch nicht abgeschlossen.")):p("",!0),s.updateInProgress?(i(),u("p",go,"Es wird eine Systemaktualisierung ausgeführt.")):p("",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(i(),u("p",bo,"Bitte die Seite neu laden.")):(i(),u("p",ho,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const yo=y(mo,[["render",vo],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const wo={name:"OpenwbSettingsApp",components:{NavBar:to,PageFooter:io,Messages:po,Blocker:yo},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3}}},computed:{mqttClientId(){try{return this.client.options.clientId}catch(e){console.error("mqttClientId error",e);return}},topicList(){return Object.keys(this.$store.state.mqtt)}},created(){this.createConnection()},methods:{async saveValues(e=void 0){function t(d){return new Promise(l=>setTimeout(l,d))}this.$store.state.local.savingData=!0;let n={};e===void 0?(console.debug("no topics defined, so save everything we have in store"),n=this.$store.state.mqtt):Array.isArray(e)?e.forEach(d=>{n[d]=this.$store.state.mqtt[d]}):console.error("expected array, got ",typeof e);for(const[d,l]of Object.entries(n)){let s=d.replace("openWB/","openWB/set/");console.debug("saving data:",s,l),this.doPublish(s,l),await t(100)}this.$store.state.local.savingData=!1},resetValues(e=this.topicList){console.debug("resetting values..."),console.debug("topics: ",e),this.doUnsubscribe(e),this.doSubscribe(e)},setDefaultValues(){console.debug("setting default values... (ToDo)")},sendCommand(e){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",e,!1)},createConnection(){const{protocol:e,host:t,port:n,endpoint:d,...l}=this.connection,s=`${e}://${t}:${n}${d}`;console.debug("connecting to broker:",s);try{this.client=ae.connect(s,l)}catch(o){console.error("mqtt.connect error",o)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"]),this.doSubscribe(["openWB/system/installAssistantDone"])}),this.client.on("error",o=>{console.error("Connection failed",o)}),this.client.on("message",(o,_)=>{if(_.toString().length>0){let r;try{r=JSON.parse(_.toString())}catch(w){console.debug("Json parsing failed, fallback to string: ",o,w),r=_.toString()}this.$store.commit("updateTopic",{topic:o,payload:r})}else this.$store.commit("removeTopic",o)})},doSubscribe(e){e.forEach(t=>{this.$store.commit("addSubscription",t),this.$store.getters.subscriptionCount(t)==1?(t.includes("#")||t.includes("+")?console.debug("skipping init of wildcard topic:",t):this.$store.commit("addTopic",{topic:t,payload:void 0}),this.client.subscribe(t,{},n=>{if(n){console.error("Subscribe to topics error",n);return}})):console.debug("Already subscribed to topic: ",t)})},doUnsubscribe(e){e.forEach(t=>{this.$store.commit("removeSubscription",t),this.$store.getters.subscriptionCount(t)==0?(this.client.unsubscribe(t,n=>{n&&console.error("Unsubscribe error",n)}),t.includes("#")||t.includes("+")?(console.debug("expanding wildcard topic:",t),Object.keys(this.getWildcardTopics(t)).forEach(n=>{console.debug("removing wildcardTopic:",n),this.$store.commit("removeTopic",n)})):(console.debug("removing topic:",t),this.$store.commit("removeTopic",t))):console.debug("Still subscribed to topic: ",t)})},doPublish(e,t,n=!0,d=2){let l={qos:d,retain:n};this.client.publish(e,JSON.stringify(t),l,s=>{s&&console.error("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const n=Date.now(),d="openWB/command/"+this.mqttClientId+"/messages/"+n;this.$store.commit({type:"addTopic",topic:d,payload:{message:e,type:t,source:"client",timestamp:Math.floor(n/1e3)}})},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(d=>d.match(n)).reduce((d,l)=>({...d,[l]:this.$store.state.mqtt[l]}),{})}}},ko={role:"main",class:"container"},So={id:"content"};function Oo(e,t,n,d,l,s){const o=b("nav-bar"),_=b("router-view"),r=b("page-footer"),w=b("messages"),x=b("blocker");return i(),u(T,null,[a("header",null,[m(o)]),a("div",ko,[a("div",So,[a("h1",null,v(e.$route.meta.heading),1),m(_,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])])]),m(r),m(w),m(x)],64)}const Bo=y(wo,[["render",Oo],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),Co="modulepreload",$o=function(e){return"/openWB/web/settings/"+e},F={},k=function(t,n,d){if(!n||n.length===0)return t();const l=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=$o(s),s in F)return;F[s]=!0;const o=s.endsWith(".css"),_=o?'[rel="stylesheet"]':"";if(!!d)for(let x=l.length-1;x>=0;x--){const P=l[x];if(P.href===s&&(!o||P.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${_}`))return;const w=document.createElement("link");if(w.rel=o?"stylesheet":Co,o||(w.as="script",w.crossOrigin=""),w.href=s,document.head.appendChild(w),o)return new Promise((x,P)=>{w.addEventListener("load",x),w.addEventListener("error",()=>P(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=s,window.dispatchEvent(o),!o.defaultPrevented)throw s})};let Y={mqtt:{},mqttSubscriptions:{},local:{reloadRequired:!1,savingData:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im Wiki.'}};Y.examples={text1:"Text...",text2:"mail@domain.com",text3:"openwb.local",text4:"http://www.openwb.de",text5:"Benutzername",text6:"12:34",text7:"2021-10-31",number1:5,number2:10,number3:28e-5,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:void 0,buttonGroup1:1,checkbox1:!0,json1:{text:"Text",number:123},hierarchy1:[{id:0,type:"counter",children:[{id:3,type:"inverter",children:[]},{id:4,type:"bat",children:[]},{id:1,type:"cp",children:[]},{id:2,type:"cp",children:[]}]}],hierarchy1Labels:{0:"EVU",1:"Ladepunkt 1",2:"Ladepunkt 2",3:"Wechselrichter",4:"Batteriespeicher"},tags:["1234","2345","3456"],ioConfig:{active:!1,pattern:[null,!1,!0],action:{value:"stop_all",options:null}}};const L=ie({state:Y,mutations:{storeLocal(e,t){e.local[t.name]=t.value},addTopic(e,t){Object.keys(e.mqtt).includes(t.topic)?console.warn("topic already exists: ",t.topic):e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const n=(d,l,s)=>l.split(".").reduce((o,_,r)=>o[_]=l.split(".").length===++r?s:o[_]||{},d);t.topic in e.mqtt||!(t.topic in e.examples)?t.objectPath!=null?n(e.mqtt[t.topic],t.objectPath,t.payload):e.mqtt[t.topic]=t.payload:(console.debug("topic not found in state.mqtt: ",t.topic),t.topic in e.examples?t.objectPath!=null?n(e.examples[t.topic],t.objectPath,t.payload):e.examples[t.topic]=t.payload:console.warn("topic not found in state: ",t.topic," giving up"))},addSubscription(e,t){t in e.mqttSubscriptions?e.mqttSubscriptions[t]+=1:e.mqttSubscriptions[t]=1,console.debug("subscription count: ",t,e.mqttSubscriptions[t])},removeSubscription(e,t){t in e.mqttSubscriptions&&(e.mqttSubscriptions[t]-=1,e.mqttSubscriptions[t]<=0&&delete e.mqttSubscriptions[t])}},actions:{},modules:{},getters:{usageTermsAcknowledged(e){return new Promise(t=>{if(e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0)t(e.mqtt["openWB/system/usage_terms_acknowledged"]);else{var n,d;n=setTimeout(()=>{clearInterval(d),t(!1)},5e3),d=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(n),clearInterval(d),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})},installAssistantDone(e){return new Promise(t=>{if(e.mqtt["openWB/system/installAssistantDone"]!==void 0)t(e.mqtt["openWB/system/installAssistantDone"]);else{var n,d;n=setTimeout(()=>{clearInterval(d),t(!1)},5e3),d=setInterval(()=>{e.mqtt["openWB/system/installAssistantDone"]!==void 0&&(clearTimeout(n),clearInterval(d),t(e.mqtt["openWB/system/installAssistantDone"]))},100)}})},subscriptionCount:e=>t=>e.mqttSubscriptions[t]||0}}),X=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>k(()=>import("./Status-ae50cd10.js"),["assets/Status-ae50cd10.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-6a6474b3.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/Status-255f6f61.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>k(()=>import("./ChargeLog-b1c57fa6.js"),["assets/ChargeLog-b1c57fa6.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/ChargeLog-1fb3fa68.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>k(()=>import("./Chart-cfe16b91.js"),["assets/Chart-cfe16b91.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-6a6474b3.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>k(()=>import("./GeneralConfig-bc70f34a.js"),["assets/GeneralConfig-bc70f34a.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>k(()=>import("./OptionalComponents-8819b9a1.js").then(e=>e.O),["assets/OptionalComponents-8819b9a1.js","assets/dynamic-import-helper-be004503.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>k(()=>import("./GeneralChargeConfig-5075da0e.js").then(e=>e.G),["assets/GeneralChargeConfig-5075da0e.js","assets/dynamic-import-helper-be004503.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>k(()=>import("./InstantChargeConfig-bb769188.js"),["assets/InstantChargeConfig-bb769188.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>k(()=>import("./PVChargeConfig-2c281c8b.js"),["assets/PVChargeConfig-2c281c8b.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>k(()=>import("./TimeChargeConfig-1a5d2dde.js"),["assets/TimeChargeConfig-1a5d2dde.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>k(()=>import("./ScheduledChargeConfig-9a450d65.js"),["assets/ScheduledChargeConfig-9a450d65.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>k(()=>import("./HardwareInstallation-727b5962.js").then(e=>e.a),["assets/HardwareInstallation-727b5962.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>k(()=>import("./LoadManagementConfig-d6d290f9.js"),["assets/LoadManagementConfig-d6d290f9.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/OpenwbSortableList-13147a4b.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>k(()=>import("./ChargePointInstallation-7e51ce35.js").then(e=>e.c),["assets/ChargePointInstallation-7e51ce35.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-7b9399a8.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>k(()=>import("./VehicleConfig-e49e5ddc.js").then(e=>e.b),["assets/VehicleConfig-e49e5ddc.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js"])},{path:"/IoConfiguration",name:"IoConfiguration",meta:{heading:"Konfiguration - Ein- und Ausgänge"},component:()=>k(()=>import("./IoConfig-bc616ac4.js").then(e=>e.I),["assets/IoConfig-bc616ac4.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>k(()=>import("./CloudConfig-9ce250e8.js"),["assets/CloudConfig-9ce250e8.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>k(()=>import("./MqttBridgeConfig-80ff6fb3.js"),["assets/MqttBridgeConfig-80ff6fb3.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>k(()=>import("./DebugConfig-8637145c.js"),["assets/DebugConfig-8637145c.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/DebugConfig-e21ab72c.css"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>k(()=>import("./Support-cb0a82f9.js"),["assets/Support-cb0a82f9.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>k(()=>import("./LegalSettings-0d86ce7f.js"),["assets/LegalSettings-0d86ce7f.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>k(()=>import("./System-71b2e67e.js"),["assets/System-71b2e67e.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>k(()=>import("./DataManagement-714df651.js").then(e=>e.a),["assets/DataManagement-714df651.js","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js"])},{path:"/System/InstallAssistant",name:"InstallAssistant",meta:{heading:"System - Einrichtungsassistent"},component:()=>k(()=>import("./InstallAssistant-01649aee.js"),["assets/InstallAssistant-01649aee.js","assets/dynamic-import-helper-be004503.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js"])}];X.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>k(()=>import("./TestingStore-e8ef24a7.js"),["assets/TestingStore-e8ef24a7.js","assets/OpenwbSortableList-13147a4b.js","assets/vendor-ad7c30fd.js","assets/vendor-sortablejs-20ba8ac2.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-9d7cfdfb.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-a61a47ba.js","assets/vendor-jquery-f04b6372.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-8313efad.js"])});const R=le({history:re(),routes:X});R.beforeEach(async e=>{if(await L.getters.usageTermsAcknowledged){if(!await L.getters.installAssistantDone&&e.name!=="InstallAssistant")return{name:"InstallAssistant"}}else if(e.name!=="LegalSettings")return{name:"LegalSettings"}});R.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const W=de(Bo);W.use(L).use(R).use(Fe,He);const Io=Object.assign({"./components/OpenwbBaseAlert.vue":Je,"./components/OpenwbBaseArrayInput.vue":ct,"./components/OpenwbBaseAvatar.vue":gt,"./components/OpenwbBaseButtonGroupInput.vue":kt,"./components/OpenwbBaseButtonInput.vue":xt,"./components/OpenwbBaseCard.vue":Rt,"./components/OpenwbBaseCheckboxInput.vue":zt,"./components/OpenwbBaseClickButton.vue":Ct,"./components/OpenwbBaseCopyToClipboard.vue":Qt,"./components/OpenwbBaseHeading.vue":on,"./components/OpenwbBaseIoPattern.vue":dn,"./components/OpenwbBaseModalDialog.vue":hn,"./components/OpenwbBaseNumberInput.vue":$n,"./components/OpenwbBaseRangeInput.vue":En,"./components/OpenwbBaseSelectInput.vue":Kn,"./components/OpenwbBaseSettingElement.vue":et,"./components/OpenwbBaseSubmitButtons.vue":ss,"./components/OpenwbBaseTextInput.vue":hs,"./components/OpenwbBaseTextarea.vue":Ts,"./components/OpenwbBaseToast.vue":Ps});Object.entries(Io).forEach(([e,t])=>{const n=ue(ce(e.split("/").pop().replace(/\.\w+$/,"")));W.component(n,t.default)});W.mount("#app");export{Z as C,M as O,k as _}; diff --git a/web/settings/assets/index-cc8f65ba.js b/web/settings/assets/index-cc8f65ba.js new file mode 100644 index 0000000000..8c0b235974 --- /dev/null +++ b/web/settings/assets/index-cc8f65ba.js @@ -0,0 +1 @@ +import{_ as y,l,m as u,p as g,q as O,u as b,x as a,y as m,z as h,A as D,B as p,D as V,E as c,F as v,G as f,I as B,J as I,K as S,L as X,M as P,N as T,O as ee,P as te,Q as ne,T as F,R as se,S as W,U as oe,V as ae,W as ie,X as le,Y as re,Z as de,$ as ue}from"./vendor-ea36120f.js";import{l as C,f as H,a as U,F as $,b as ce,c as pe,d as z,e as me,g as L,h as fe,i as _e,j as ge,k as be,m as he,n as ve,o as ye,p as we,q as ke,r as G,s as Se,t as Be,u as Oe,v as Ce,w as J,x as $e,y as Ie,z as Te,A as xe,B as Me,C as Ve,D as Ae,E as Pe,G as qe,H as Ee,I as De}from"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import{p as Le,a as je}from"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./vendor-jquery-48e02303.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))d(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&d(o)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function d(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();const Re={name:"OpenwbAlert",props:{subtype:{validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(t)!==-1},default:"secondary"}}};function We(t,e,n,d,i,s){return l(),u("div",{class:O(["card-text alert","alert-"+n.subtype])},[g(t.$slots,"default",{},void 0,!0)],2)}const Ne=y(Re,[["render",We],["__scopeId","data-v-055c15aa"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),Fe=Object.freeze(Object.defineProperty({__proto__:null,default:Ne},Symbol.toStringTag,{value:"Module"}));C.add(H,U);const He={name:"OpenwbBaseSettingElement",components:{FontAwesomeIcon:$},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},Ue={class:"form-row mb-1"},ze={class:"col-md-4 col-form-label"},Ge={class:"col-md-8"},Je={class:"form-row"},Ke={class:"form-row"},Qe={key:0,class:"form-text alert alert-info my-1 small flex-fill"};function Ze(t,e,n,d,i,s){const o=b("font-awesome-icon");return l(),u("div",Ue,[a("label",ze,[g(t.$slots,"title",{},()=>[e[0]||(e[0]=m("*TITLE*"))]),t.$slots.help?(l(),h(o,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:O(["clickable ml-1",i.showHelp?"text-info":""]),onClick:D(s.toggleHelp,["stop"])},null,8,["icon","class","onClick"])):p("",!0)]),a("div",Ge,[a("div",Je,[g(t.$slots,"default",{},()=>[e[1]||(e[1]=m("*ELEMENT MISSING*"))])]),a("div",Ke,[i.showHelp?(l(),u("span",Qe,[g(t.$slots,"help")])):p("",!0)])])])}const M=y(He,[["render",Ze],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSettingElement.vue"]]),Ye=Object.freeze(Object.defineProperty({__proto__:null,default:M},Symbol.toStringTag,{value:"Module"}));C.add(ce,pe,z,me);const Xe={name:"OpenwbArrayInput",components:{FontAwesomeIcon:$,OpenwbBaseSettingElement:M},inheritAttrs:!1,props:{title:{type:String,required:!0,default:"#TITLE#"},modelValue:{type:Array,default:()=>[]},noElementsMessage:{type:String,default:()=>"Keine Elemente zugeordnet."}},emits:["update:modelValue"],data(){return{newTag:"",showHelp:!1}},computed:{value:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}},newTagValid:{get(){return this.newTag.length>0&&!this.value.includes(this.newTag)}}},methods:{addTag(){if(this.newTagValid){const t=[...this.value,this.newTag].sort();this.value=t,this.newTag=""}this.$refs.tagInput.focus()},removeTag(t){let e=[...this.value];e.splice(t,1),this.value=e}}},et={class:"w-100"},tt={class:"input-group"},nt={class:"input-group-prepend"},st={class:"input-group-text"},ot={class:"input-group-append"},at={class:"tagList mt-1 w-100"},it={key:0,class:"noTag"};function lt(t,e,n,d,i,s){const o=b("font-awesome-icon"),_=b("openwb-base-setting-element");return l(),h(_,null,V({title:c(()=>[g(t.$slots,"title",{},()=>[m(v(n.title),1)],!0)]),default:c(()=>[a("div",et,[a("div",tt,[a("div",nt,[a("div",st,[g(t.$slots,"input-prefix",{},()=>[f(o,{"fixed-width":"",icon:["fas","tag"]})],!0)])]),B(a("input",S({ref:"tagInput","onUpdate:modelValue":e[0]||(e[0]=r=>i.newTag=r),type:"text",class:"form-control"},t.$attrs,{onKeyup:e[1]||(e[1]=X((...r)=>s.addTag&&s.addTag(...r),["enter"]))}),null,16),[[I,i.newTag]]),a("div",ot,[a("div",{class:O(["input-group-text",s.newTagValid?"bg-success clickable":"not-clickable"]),onClick:e[2]||(e[2]=(...r)=>s.addTag&&s.addTag(...r))},[g(t.$slots,"input-add",{},()=>[f(o,{"fixed-width":"",icon:["fas","plus"]})],!0)],2)])])]),a("div",at,[s.value.length==0?(l(),u("span",it,[f(o,{icon:["fas","info-circle"]}),m(" "+v(n.noElementsMessage),1)])):p("",!0),(l(!0),u(T,null,P(s.value,(r,k)=>(l(),u("span",{key:k,class:"tag"},[g(t.$slots,"element-prefix",{},()=>[f(o,{icon:["fas","tag"]})],!0),m(" "+v(r)+" ",1),f(o,{class:"clickable remove-element",icon:["fas","times-circle"],onClick:x=>s.removeTag(k)},null,8,["onClick"])]))),128))])]),_:2},[t.$slots.help?{name:"help",fn:c(()=>[g(t.$slots,"help",{},void 0,!0)]),key:"0"}:void 0]),1024)}const rt=y(Xe,[["render",lt],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),dt=Object.freeze(Object.defineProperty({__proto__:null,default:rt},Symbol.toStringTag,{value:"Module"}));const ut={name:"OpenwbAvatar"},ct={class:"avatar"};function pt(t,e,n,d,i,s){return l(),u("div",ct,[g(t.$slots,"default",{},()=>[e[0]||(e[0]=m("?"))],!0)])}const mt=y(ut,[["render",pt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),ft=Object.freeze(Object.defineProperty({__proto__:null,default:mt},Symbol.toStringTag,{value:"Module"}));C.add(L);const _t={name:"OpenwbButtonGroupInput",components:{FontAwesomeIcon:$,OpenwbBaseSettingElement:M},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Boolean],default:void 0},buttons:{type:Array,required:!0}},emits:["update:modelValue"],computed:{value:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}}}},gt={class:"btn-group btn-block btn-group-toggle"},bt=["value"];function ht(t,e,n,d,i,s){const o=b("font-awesome-icon"),_=b("openwb-base-setting-element");return l(),h(_,null,V({title:c(()=>[g(t.$slots,"title",{},()=>[m(v(n.title),1)])]),default:c(()=>[a("div",gt,[(l(!0),u(T,null,P(n.buttons,r=>(l(),u("label",{key:r.value,class:O(["btn",[s.value==r.buttonValue?"active":"",r.class?r.class:"btn-outline-info"]])},[B(a("input",S({"onUpdate:modelValue":e[0]||(e[0]=k=>s.value=k),type:"radio",value:r.buttonValue,ref_for:!0},t.$attrs),null,16,bt),[[ee,s.value]]),g(t.$slots,"label-"+r.buttonValue,{},()=>[m(v(r.text),1)]),f(o,{"fixed-width":"",icon:["fas","check"],style:te([s.value==r.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),_:2},[t.$slots.help?{name:"help",fn:c(()=>[g(t.$slots,"help")]),key:"0"}:void 0]),1024)}const vt=y(_t,[["render",ht],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),yt=Object.freeze(Object.defineProperty({__proto__:null,default:vt},Symbol.toStringTag,{value:"Module"}));const wt={name:"OpenwbClickButton",props:{title:{type:String,required:!1,default:""}},emits:["buttonClicked"],methods:{click(t){this.$emit("buttonClicked",t)}}};function kt(t,e,n,d,i,s){return l(),u("button",{type:"button",class:"btn btn-block",onClick:e[0]||(e[0]=D((...o)=>s.click&&s.click(...o),["prevent"]))},[g(t.$slots,"default",{},()=>[m(v(n.title),1)],!0)])}const K=y(wt,[["render",kt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),St=Object.freeze(Object.defineProperty({__proto__:null,default:K},Symbol.toStringTag,{value:"Module"})),Bt={name:"OpenwbButtonInput",components:{OpenwbBaseSettingElement:M,OpenwbBaseClickButton:K},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},buttonText:{type:String,required:!1,default:void 0},disabled:{type:Boolean,default:!1},subtype:{type:String,validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(t)!==-1},default:"secondary"}},emits:["buttonClicked"],methods:{handleClick(t){this.$emit("buttonClicked",t)}}};function Ot(t,e,n,d,i,s){const o=b("openwb-base-click-button"),_=b("openwb-base-setting-element");return l(),h(_,null,V({title:c(()=>[g(t.$slots,"title",{},()=>[m(v(n.title),1)])]),default:c(()=>[f(o,S({class:(n.disabled?"btn-outline-":"btn-")+n.subtype,disabled:n.disabled},t.$attrs,{onButtonClicked:s.handleClick}),{default:c(()=>[m(v(n.buttonText),1)]),_:1},16,["class","disabled","onButtonClicked"])]),_:2},[t.$slots.help?{name:"help",fn:c(()=>[g(t.$slots,"help")]),key:"0"}:void 0]),1024)}const Ct=y(Bt,[["render",Ot],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),$t=Object.freeze(Object.defineProperty({__proto__:null,default:Ct},Symbol.toStringTag,{value:"Module"}));C.add(fe,_e);const It={name:"OpenwbCard",components:{FontAwesomeIcon:$},inheritAttrs:!1,props:{title:{type:String,default:void 0},subtype:{validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark","pink","white"].indexOf(t)!==-1},default:"secondary"},bodyBg:{validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark","pink","white"].indexOf(t)!==-1},default:"light"},collapsible:{type:Boolean,default:!1},collapsed:{type:Boolean,default:!1}},data(){return{isCollapsed:this.collapsible&&this.collapsed}},methods:{toggleBody(){this.collapsible===!0&&(this.isCollapsed=!this.isCollapsed)}}},Tt={class:"form-group mb-0"},xt={class:"form-row vaRow mb-0 py-2"},Mt={class:"col"},Vt={class:"card-actions ml-4"},At={key:0,class:"card-actions mr-4"},Pt={key:2,class:"card-footer"};function qt(t,e,n,d,i,s){const o=b("font-awesome-icon");return l(),u("div",{class:O(["card","border-"+n.subtype])},[n.title!==void 0||t.$slots.header?(l(),u("div",{key:0,class:O(["card-header py-1","bg-"+n.subtype]),onClick:e[0]||(e[0]=(..._)=>s.toggleBody&&s.toggleBody(..._))},[a("div",Tt,[a("div",xt,[a("div",Mt,[g(t.$slots,"header",{collapsed:i.isCollapsed},()=>[m(v(n.title),1)])])])]),a("span",Vt,[t.$slots.actions?(l(),u("span",At,[g(t.$slots,"actions",{collapsed:i.isCollapsed})])):p("",!0),n.collapsible?(l(),h(o,{key:1,"fixed-width":"",icon:i.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):p("",!0)])],2)):p("",!0),i.isCollapsed===!1?(l(),u("div",S({key:1,class:["card-body",[n.title==null&&!t.$slots.header?"border-radius-top-inherit":"",t.$slots.footer?"":"border-radius-bottom-inherit","bg-"+n.bodyBg]]},t.$attrs),[g(t.$slots,"default")],16)):p("",!0),t.$slots.footer&&i.isCollapsed===!1?(l(),u("div",Pt,[g(t.$slots,"footer")])):p("",!0)],2)}const Et=y(It,[["render",qt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Dt=Object.freeze(Object.defineProperty({__proto__:null,default:Et},Symbol.toStringTag,{value:"Module"})),Lt={name:"OpenwbCheckboxInput",components:{OpenwbBaseSettingElement:M},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:Boolean}},emits:["update:modelValue"],computed:{value:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}}}},jt={class:"col-md-8"};function Rt(t,e,n,d,i,s){const o=b("openwb-base-setting-element");return l(),h(o,null,V({title:c(()=>[g(t.$slots,"title",{},()=>[m(v(n.title),1)])]),default:c(()=>[a("div",jt,[B(a("input",S({"onUpdate:modelValue":e[0]||(e[0]=_=>s.value=_),class:"form-control",type:"checkbox"},t.$attrs),null,16),[[ne,s.value]])])]),_:2},[t.$slots.help?{name:"help",fn:c(()=>[g(t.$slots,"help")]),key:"0"}:void 0]),1024)}const Wt=y(Lt,[["render",Rt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Nt=Object.freeze(Object.defineProperty({__proto__:null,default:Wt},Symbol.toStringTag,{value:"Module"}));C.add(ge,be);const Ft={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:$},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(this.clipboardApiAvailable)navigator.clipboard.writeText(this.$refs["slot-wrapper"].innerText).then(()=>{this.isCopied=!0},()=>{console.error("copy to clipboard failed")});else{if(console.debug("clipboard api not supported/enabled, fallback to selection or text range"),window.getSelection){const t=window.getSelection(),e=document.createRange();e.selectNodeContents(this.$refs["slot-wrapper"]),t.removeAllRanges(),t.addRange(e);return}if(document.body.createTextRange){const t=document.body.createTextRange();t.moveToElementText(this.$refs["slot-wrapper"]),t.select()}else console.warn("could not select text, unsupported browser")}}}},Ht=["title"];function Ut(t,e,n,d,i,s){const o=b("font-awesome-icon");return l(),u("span",{ref:"slot-wrapper",title:n.tooltip,class:"copy-me",onClick:e[0]||(e[0]=(..._)=>s.click&&s.click(..._))},[g(t.$slots,"default",{},void 0,!0),f(o,{"fixed-width":"",icon:i.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Ht)}const zt=y(Ft,[["render",Ut],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:zt},Symbol.toStringTag,{value:"Module"}));C.add(H,U,L);const Jt={name:"OpenwbHeading",components:{FontAwesomeIcon:$},inheritAttrs:!1,data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},Kt={class:"heading-text"},Qt={key:0,class:"actions"},Zt={class:""},Yt={key:0,class:"form-row alert alert-info small flex-fill"};function Xt(t,e,n,d,i,s){const o=b("font-awesome-icon");return l(),u(T,null,[a("div",S({class:"card-text card-text-heading"},t.$attrs),[a("div",Kt,[g(t.$slots,"default",{},void 0,!0),t.$slots.help?(l(),h(o,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:O(["clickable",i.showHelp?"text-info":""]),onClick:D(s.toggleHelp,["stop"])},null,8,["icon","class","onClick"])):p("",!0)]),t.$slots.actions?(l(),u("span",Qt,[g(t.$slots,"actions",{},void 0,!0)])):p("",!0)],16),a("div",Zt,[i.showHelp?(l(),u("span",Yt,[g(t.$slots,"help",{},void 0,!0)])):p("",!0)])],64)}const en=y(Jt,[["render",Xt],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),tn=Object.freeze(Object.defineProperty({__proto__:null,default:en},Symbol.toStringTag,{value:"Module"})),nn={name:"OpenwbModalDialog",props:{title:{type:String,required:!1,default:""},subtype:{type:String,validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(t)!==-1},default:"secondary"},buttons:{type:Array,default:void 0},footerAlignment:{type:String,validator:function(t){return["around","between","center","end","start"].indexOf(t)!==-1},default:"end"},preventClose:{type:Boolean,default:!1},show:{type:Boolean,default:!1}},emits:["modal-result"],computed:{myButtons(){var t=[];return this.buttons!==void 0&&(t=this.buttons),this.preventClose||t.push({text:"Schließen",event:"close"}),t}},methods:{handleClick(t){t.stopPropagation();let e=t.target.getAttribute("data-event");e===null&&(e="close"),(e!="close"||!this.preventClose)&&this.$emit("modal-result",e)}}},sn={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},on={class:"modal-content"},an={class:"modal-title"},ln={class:"modal-body"},rn=["data-event"];function dn(t,e,n,d,i,s){return n.show?(l(),h(F,{key:0,to:"body"},[e[4]||(e[4]=a("div",{class:"modal-backdrop fade show"},null,-1)),a("div",{class:"modal fade d-block show",role:"dialog",onClick:e[2]||(e[2]=(...o)=>s.handleClick&&s.handleClick(...o))},[a("div",sn,[a("div",on,[a("div",{class:O(["modal-header","bg-"+n.subtype])},[a("h4",an,v(n.title),1),n.preventClose?p("",!0):(l(),u("button",{key:0,type:"button",class:"close",onClick:e[0]||(e[0]=(...o)=>s.handleClick&&s.handleClick(...o))}," × "))],2),a("div",ln,[g(t.$slots,"default",{},()=>[e[3]||(e[3]=m("# Body #"))])]),s.myButtons.length>0?(l(),u("div",{key:0,class:O(["modal-footer d-flex","justify-content-"+n.footerAlignment])},[(l(!0),u(T,null,P(s.myButtons,o=>(l(),u("button",{key:o.text,type:"button",class:O(["btn",o.subtype?"btn-"+o.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":o.event?o.event:"close",onClick:e[1]||(e[1]=(..._)=>s.handleClick&&s.handleClick(..._))},v(o.text),11,rn))),128))],2)):p("",!0)])])])])):p("",!0)}const un=y(nn,[["render",dn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),cn=Object.freeze(Object.defineProperty({__proto__:null,default:un},Symbol.toStringTag,{value:"Module"}));C.add(he);const pn={name:"OpenwbNumberInput",components:{FontAwesomeIcon:$,OpenwbBaseSettingElement:M},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:Number,required:!1,default:void 0},unit:{type:String,required:!1,default:void 0},precision:{type:Number,default:void 0},emptyValue:{type:[Number,null],required:!1,default:null}},emits:["update:modelValue"],computed:{value:{get(){return this.precision!==void 0?parseFloat(Math.round(this.modelValue*Math.pow(10,this.precision))/Math.pow(10,this.precision)):this.modelValue},set(t){(isNaN(t)||typeof t!="number")&&(t=this.emptyValue),this.$emit("update:modelValue",t)}}}},mn={class:"input-group"},fn={class:"input-group-prepend"},_n={class:"input-group-text"},gn={key:0,class:"input-group-append"},bn={class:"input-group-text"};function hn(t,e,n,d,i,s){const o=b("font-awesome-icon"),_=b("openwb-base-setting-element");return l(),h(_,null,V({title:c(()=>[g(t.$slots,"title",{},()=>[m(v(n.title),1)],!0)]),default:c(()=>[a("div",mn,[a("div",fn,[a("div",_n,[f(o,{"fixed-width":"",icon:["fas","calculator"]})])]),B(a("input",S({"onUpdate:modelValue":e[0]||(e[0]=r=>s.value=r),type:"number",class:"form-control"},t.$attrs),null,16),[[I,s.value,void 0,{number:!0}]]),n.unit?(l(),u("div",gn,[a("div",bn,v(n.unit),1)])):p("",!0)])]),_:2},[t.$slots.help?{name:"help",fn:c(()=>[g(t.$slots,"help",{},void 0,!0)]),key:"0"}:void 0]),1024)}const vn=y(pn,[["render",hn],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),yn=Object.freeze(Object.defineProperty({__proto__:null,default:vn},Symbol.toStringTag,{value:"Module"}));C.add(ve,ye);const wn={name:"OpenwbRangeInput",components:{FontAwesomeIcon:$,OpenwbBaseSettingElement:M},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:Number,required:!1,default:void 0},unit:{type:String,required:!1,default:void 0},min:{type:Number,required:!0,default:0},max:{type:Number,required:!0,default:100},step:{type:Number,required:!1,default:1},labels:{type:Array,required:!1,default:void 0}},emits:["update:modelValue"],computed:{label(){var t;return this.labels&&this.sliderValue!=null?this.sliderValue[g(t.$slots,"title",{},()=>[m(v(n.title),1)],!0)]),default:c(()=>[a("div",kn,[a("div",Sn,[s.label?(l(),u("label",Bn,v(s.label),1)):p("",!0),a("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:e[0]||(e[0]=(...r)=>s.decrement&&s.decrement(...r))},[f(o,{icon:["fas","step-backward"]})]),a("div",On,[B(a("input",S({"onUpdate:modelValue":e[1]||(e[1]=r=>s.sliderValue=r),type:"range",class:"form-control-range rangeInput",min:n.min,max:n.max,step:n.step},t.$attrs),null,16,Cn),[[I,s.sliderValue,void 0,{number:!0}]])]),a("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:e[2]||(e[2]=(...r)=>s.increment&&s.increment(...r))},[f(o,{icon:["fas","step-forward"]})])])])]),_:2},[t.$slots.help?{name:"help",fn:c(()=>[g(t.$slots,"help",{},void 0,!0)]),key:"0"}:void 0]),1024)}const In=y(wn,[["render",$n],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Tn=Object.freeze(Object.defineProperty({__proto__:null,default:In},Symbol.toStringTag,{value:"Module"}));C.add(z);const xn={name:"OpenwbSelectInput",components:{FontAwesomeIcon:$,OpenwbBaseSettingElement:M},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Array,null],required:!1,default:void 0},groups:{type:Array,required:!1,default:void 0},options:{type:Array,required:!1,default:void 0},notSelected:{type:String,default:void 0},addButton:{type:Boolean,default:!1}},emits:["update:modelValue","input:add"],computed:{value:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}},addDisabled:{get(){return this.value===void 0}}},methods:{addClicked(){this.addDisabled||this.$emit("input:add")}}},Mn={class:"w-100"},Vn={class:"input-group"},An={key:0,class:"input-group-prepend"},Pn={class:"input-group-text"},qn={key:0,value:void 0,disabled:""},En=["value"],Dn=["label"],Ln=["value"],jn={key:1,class:"input-group-append"};function Rn(t,e,n,d,i,s){const o=b("font-awesome-icon"),_=b("openwb-base-setting-element");return l(),h(_,null,V({title:c(()=>[g(t.$slots,"title",{},()=>[m(v(n.title),1)])]),default:c(()=>[a("div",Mn,[a("div",Vn,[t.$slots.prefix?(l(),u("div",An,[a("div",Pn,[g(t.$slots,"prefix")])])):p("",!0),B(a("select",S({"onUpdate:modelValue":e[0]||(e[0]=r=>s.value=r),class:"col form-control"},t.$attrs),[n.notSelected!==void 0?(l(),u("option",qn," -- "+v(n.notSelected)+" -- ",1)):p("",!0),(l(!0),u(T,null,P(n.options,r=>(l(),u("option",{key:r.value,value:r.value},v(r.text),9,En))),128)),(l(!0),u(T,null,P(n.groups,r=>(l(),u("optgroup",{key:r.label,label:r.label},[(l(!0),u(T,null,P(r.options,k=>(l(),u("option",{key:k.value,value:k.value},v(k.text),9,Ln))),128))],8,Dn))),128))],16),[[se,s.value]]),n.addButton?(l(),u("div",jn,[a("div",{class:O(["input-group-text",s.addDisabled?"not-clickable":"bg-success clickable"]),onClick:e[1]||(e[1]=r=>s.addClicked())},[g(t.$slots,"inputAdd",{},()=>[f(o,{"fixed-width":"",icon:["fas","plus"]})])],2)])):p("",!0)])])]),_:2},[t.$slots.help?{name:"help",fn:c(()=>[g(t.$slots,"help")]),key:"0"}:void 0]),1024)}const Wn=y(xn,[["render",Rn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),Nn=Object.freeze(Object.defineProperty({__proto__:null,default:Wn},Symbol.toStringTag,{value:"Module"}));C.add(L,we,ke);const Fn={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:$},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},emits:["reset","defaults","save"],data(){return{showModalReset:!1,showModalDefaults:!1}},computed:{showModalSave(){return this.$store.state.local.savingData}},methods:{showResetModal(){this.showModalReset=!0},handleModalReset(t){this.showModalReset=!1,t=="confirm"&&this.$emit("reset")},showDefaultsModal(){this.showModalDefaults=!0},handleModalDefaults(t){this.showModalDefaults=!1,t=="confirm"&&this.$emit("defaults")},saveSettings(){if(this.formName){if(!document.forms[this.formName].reportValidity()){console.debug("form invalid");return}}else console.debug("no form to validate");this.$emit("save")}}},Hn={class:"row justify-content-center mb-1"},Un={class:"col-md-4 d-flex py-1 justify-content-center"},zn={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},Gn={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function Jn(t,e,n,d,i,s){const o=b("openwb-base-modal-dialog"),_=b("font-awesome-icon");return l(),u(T,null,[f(o,{show:s.showModalSave,title:"Speichern",subtype:"success","prevent-close":!0},{default:c(()=>e[3]||(e[3]=[m(" Einstellungen werden gespeichert... ")])),_:1},8,["show"]),f(o,{show:i.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:c(()=>e[4]||(e[4]=[m(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")])),_:1},8,["show","onModalResult"]),f(o,{show:i.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:c(()=>e[5]||(e[5]=[m(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")])),_:1},8,["show","onModalResult"]),a("div",Hn,[a("div",Un,[a("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:e[0]||(e[0]=(...r)=>s.saveSettings&&s.saveSettings(...r))},[e[6]||(e[6]=m(" Speichern ")),f(_,{"fixed-width":"",icon:["fas","check"]})])]),n.hideReset?p("",!0):(l(),u("div",zn,[a("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:e[1]||(e[1]=(...r)=>s.showResetModal&&s.showResetModal(...r))},[e[7]||(e[7]=m(" Änderungen verwerfen ")),f(_,{"fixed-width":"",icon:["fas","undo"]})])])),n.hideDefaults?p("",!0):(l(),u("div",Gn,[a("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:e[2]||(e[2]=(...r)=>s.showDefaultsModal&&s.showDefaultsModal(...r))},[e[8]||(e[8]=m(" Werkseinstellungen ")),f(_,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const Kn=y(Fn,[["render",Jn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),Qn=Object.freeze(Object.defineProperty({__proto__:null,default:Kn},Symbol.toStringTag,{value:"Module"}));C.add(G,Se,Be,Oe,Ce,J,$e,Ie,Te,xe,Me,Ve);const Zn={name:"OpenwbTextInput",components:{FontAwesomeIcon:$,OpenwbBaseSettingElement:M},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Object],required:!1,default:void 0},subtype:{validator:function(t){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(t)!==-1},default:"text"},pattern:{type:String,required:!1,default:void 0},unit:{type:String,required:!1,default:void 0},emptyValue:{type:[String,Object,null],required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showPassword:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.warn("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue):this.modelValue},set(t){if(this.subtype=="json")try{let e=JSON.parse(t);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=e,this.$emit("update:modelValue",e)}catch(e){console.error("parsing JSON failed: "+t,e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=t}else t==""&&(t=this.emptyValue),this.$emit("update:modelValue",t)}},inputRef(){switch(this.subtype){case"json":return this.$refs.jsonInput;case"password":return this.$refs.passwordInput;case"host":return this.$refs.hostInput;case"email":case"url":return this.$refs.urlInput;case"time":return this.$refs.timeInput;case"date":return this.$refs.dateInput;case"month":return this.$refs.monthInput;case"year":return this.$refs.yearInput}return this.$refs.textInput}},methods:{togglePassword(){this.showPassword=!this.showPassword},modify(t){var e,n=new Date(this.modelValue);switch(this.subtype){case"date":n.setDate(n.getDate()+t),e=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0")+"-"+String(n.getDate()).padStart(2,"0");break;case"month":n.setMonth(n.getMonth()+t),e=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0");break;case"year":n.setYear(n.getFullYear()+t),e=String(n.getFullYear());break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}e>this.inputRef.max||e[g(t.$slots,"title",{},()=>[m(v(n.title),1)],!0)]),default:c(()=>[a("div",Yn,[a("div",Xn,[a("div",es,[a("div",ts,[n.subtype=="text"?(l(),h(o,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):p("",!0),n.subtype=="email"?(l(),h(o,{key:1,"fixed-width":"",icon:["fas","envelope"]})):p("",!0),n.subtype=="host"?(l(),h(o,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):p("",!0),n.subtype=="url"?(l(),h(o,{key:3,"fixed-width":"",icon:["fas","globe"]})):p("",!0),n.subtype=="user"?(l(),h(o,{key:4,"fixed-width":"",icon:["fas","user"]})):p("",!0),n.subtype=="json"?(l(),h(o,{key:5,"fixed-width":"",icon:["fas","code"]})):p("",!0),n.subtype=="password"?(l(),h(o,{key:6,"fixed-width":"",icon:i.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):p("",!0),n.subtype=="time"?(l(),h(o,{key:7,"fixed-width":"",icon:["fas","clock"]})):p("",!0),n.subtype=="date"||n.subtype=="month"||n.subtype=="year"?(l(),h(o,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):p("",!0)])]),["text","user"].includes(n.subtype)?B((l(),u("input",S({key:0,ref:"textInput","onUpdate:modelValue":e[0]||(e[0]=r=>s.value=r),type:"text",class:["form-control",{invalid:i.inputInvalid}]},t.$attrs,{pattern:n.pattern}),null,16,ns)),[[I,s.value]]):p("",!0),n.subtype=="json"?B((l(),u("input",S({key:1,ref:"jsonInput","onUpdate:modelValue":e[1]||(e[1]=r=>s.value=r),type:"text",class:"form-control"},t.$attrs,{pattern:n.pattern}),null,16,ss)),[[I,s.value]]):p("",!0),n.subtype=="password"?B((l(),u("input",S({key:2,ref:"passwordInput","onUpdate:modelValue":e[2]||(e[2]=r=>s.value=r),type:i.showPassword?"text":"password",class:"form-control"},t.$attrs,{pattern:n.pattern}),null,16,os)),[[W,s.value]]):p("",!0),n.subtype=="host"?B((l(),u("input",S({key:3,ref:"hostInput","onUpdate:modelValue":e[3]||(e[3]=r=>s.value=r),type:"text",class:"form-control"},t.$attrs),null,16)),[[I,s.value]]):p("",!0),["email","url"].includes(n.subtype)?B((l(),u("input",S({key:4,"onUpdate:modelValue":e[4]||(e[4]=r=>s.value=r),refs:"urlInput",type:n.subtype,class:"form-control"},t.$attrs),null,16,as)),[[W,s.value]]):p("",!0),n.subtype=="time"?B((l(),u("input",S({key:5,ref:"timeInput","onUpdate:modelValue":e[5]||(e[5]=r=>s.value=r),type:"time",class:"form-control"},t.$attrs),null,16)),[[I,s.value]]):p("",!0),n.subtype=="date"?B((l(),u("input",S({key:6,ref:"dateInput","onUpdate:modelValue":e[6]||(e[6]=r=>s.value=r),type:"date",class:"form-control"},t.$attrs),null,16)),[[I,s.value]]):p("",!0),n.subtype=="month"?B((l(),u("input",S({key:7,ref:"monthInput","onUpdate:modelValue":e[7]||(e[7]=r=>s.value=r),type:"month",class:"form-control"},t.$attrs),null,16)),[[I,s.value]]):p("",!0),n.subtype=="year"?B((l(),u("input",S({key:8,ref:"yearInput","onUpdate:modelValue":e[8]||(e[8]=r=>s.value=r),type:"number",class:"form-control"},t.$attrs),null,16)),[[I,s.value]]):p("",!0),n.unit?(l(),u("div",is,[a("div",ls,v(n.unit),1)])):p("",!0),n.subtype=="password"?(l(),u("div",{key:10,class:"input-group-append clickable",onClick:e[9]||(e[9]=(...r)=>s.togglePassword&&s.togglePassword(...r))},[a("div",rs,[f(o,{"fixed-width":"",icon:i.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):p("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(l(),u("div",{key:11,class:"input-group-append clickable",onClick:e[10]||(e[10]=r=>s.modify(-1))},e[12]||(e[12]=[a("div",{class:"input-group-text"},"-",-1)]))):p("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(l(),u("div",{key:12,class:"input-group-append clickable",onClick:e[11]||(e[11]=r=>s.modify(1))},e[13]||(e[13]=[a("div",{class:"input-group-text"},"+",-1)]))):p("",!0)])])]),_:2},[t.$slots.help?{name:"help",fn:c(()=>[g(t.$slots,"help",{},void 0,!0)]),key:"0"}:void 0]),1024)}const us=y(Zn,[["render",ds],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),cs=Object.freeze(Object.defineProperty({__proto__:null,default:us},Symbol.toStringTag,{value:"Module"}));C.add(G,J);const ps={name:"OpenwbTextareaInput",components:{OpenwbBaseSettingElement:M,FontAwesomeIcon:$},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Object],required:!1,default:void 0},subtype:{validator:function(t){return["text","json"].indexOf(t)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid JSON as String"),this.tempValue):JSON.stringify(this.tempValue,void 0,2):this.modelValue},set(t){if(this.subtype=="json")try{let e=JSON.parse(t);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=e,this.$emit("update:modelValue",e)}catch(e){console.warn("parsing JSON failed: "+t,e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=t}else this.$emit("update:modelValue",t)}},length:{get(){return this.value!==void 0?this.value.length:0}}}},ms={class:"w-100"},fs={class:"input-group"},_s={class:"input-group-prepend"},gs={class:"input-group-text"},bs={key:2,class:"input-group-append"},hs={class:"input-group-text"},vs={class:"form-text text-muted text-right"};function ys(t,e,n,d,i,s){const o=b("font-awesome-icon"),_=b("openwb-base-setting-element");return l(),h(_,null,V({title:c(()=>[g(t.$slots,"title",{},()=>[m(v(n.title),1)],!0)]),default:c(()=>[a("div",ms,[a("div",fs,[a("div",_s,[a("div",gs,[n.subtype=="text"?(l(),h(o,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):p("",!0),n.subtype=="json"?(l(),h(o,{key:1,"fixed-width":"",icon:["fas","code"]})):p("",!0)])]),n.subtype==="json"?B((l(),u("textarea",S({key:0,ref:"jsonInput","onUpdate:modelValue":e[0]||(e[0]=r=>s.value=r),class:"form-control"},t.$attrs),null,16)),[[I,s.value,void 0,{lazy:!0}]]):B((l(),u("textarea",S({key:1,"onUpdate:modelValue":e[1]||(e[1]=r=>s.value=r),class:"form-control"},t.$attrs),null,16)),[[I,s.value]]),t.$attrs.maxlength?(l(),u("div",bs,[a("div",hs,[a("small",vs,v(s.length)+" / "+v(t.$attrs.maxlength),1)])])):p("",!0)])])]),_:2},[t.$slots.help?{name:"help",fn:c(()=>[g(t.$slots,"help",{},void 0,!0)]),key:"0"}:void 0]),1024)}const ws=y(ps,[["render",ys],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),ks=Object.freeze(Object.defineProperty({__proto__:null,default:ws},Symbol.toStringTag,{value:"Module"}));const Ss={name:"OpenwbToast",props:{topic:{type:String,required:!0},subtype:{validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(t)!==-1},default:"secondary"},source:{type:String,required:!0,validator:function(t){return["system","client","command"].indexOf(t)!==-1}},timestamp:{type:Number,required:!0}},emits:["dismiss","hide"],data(){return{handle:void 0,relativeTime:void 0,hidden:!1}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)},methods:{dismiss(){this.$emit("dismiss",{topic:this.topic})},updateRelativeTime(){const t={year:31536e6,month:2628e6,day:864e5,hour:36e5,minute:6e4,second:1e3};var e=new Intl.RelativeTimeFormat("de",{numeric:"auto"});const d=new Date-this.timestamp*1e3;for(var i in t)if(Math.abs(d)>t[i]){this.relativeTime=e.format(Math.round(-d/t[i]),i);break}d>10*1e3&&!this.hidden&&(this.hidden=!0,this.$emit("hide",{topic:this.topic}))}}},Bs={key:0,class:"time-diff"},Os={class:"toast-body"};function Cs(t,e,n,d,i,s){return l(),u("div",{class:O(["toast","border-"+n.subtype]),role:"alert"},[a("div",{class:O(["toast-header","bg-"+n.subtype])},[e[2]||(e[2]=a("strong",{class:"pr-2 mr-auto"},"openWB",-1)),n.timestamp?(l(),u("small",Bs,v(i.relativeTime),1)):p("",!0),a("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:e[0]||(e[0]=(...o)=>s.dismiss&&s.dismiss(...o))},e[1]||(e[1]=[a("span",{"aria-hidden":"true"},"×",-1)]))],2),a("div",Os,[g(t.$slots,"default",{},void 0,!0)])],2)}const $s=y(Ss,[["render",Cs],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),Is=Object.freeze(Object.defineProperty({__proto__:null,default:$s},Symbol.toStringTag,{value:"Module"}));C.add(Ae);const Ts={name:"OpenwbNavBar",components:{FontAwesomeIcon:$},computed:{nodeEnv(){return"development"}},watch:{$route(){this.$refs.collapsibleNavbar.classList.remove("show"),this.$refs.navbarButton.classList.add("collapsed"),this.$refs.navbarButton.setAttribute("aria-expanded",!1)}}},xs={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},Ms={ref:"navbarButton",class:"navbar-toggler mr-5",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar"},Vs={id:"collapsibleNavbar",ref:"collapsibleNavbar",class:"collapse navbar-collapse navbar-nav-scroll"},As={class:"navbar-nav"},Ps={class:"nav-item"},qs={class:"nav-item dropdown nav-separator-after"},Es={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Ds={class:"nav-item dropdown"},Ls={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},js={class:"nav-item dropdown"},Rs={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Ws={class:"nav-item dropdown"},Ns={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Fs={class:"nav-item dropdown"},Hs={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Us={class:"nav-item nav-separator-before"},zs={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Gs(t,e,n,d,i,s){const o=b("router-link"),_=b("font-awesome-icon");return l(),u("nav",xs,[e[31]||(e[31]=a("a",{class:"navbar-brand",href:"/openWB/web/"},[a("span",null,"openWB")],-1)),a("button",Ms,e[0]||(e[0]=[a("span",{class:"navbar-toggler-icon"},null,-1)]),512),a("div",Vs,[a("ul",As,[a("li",Ps,[f(o,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:c(()=>e[1]||(e[1]=[m(" Status ")])),_:1})]),a("li",qs,[e[4]||(e[4]=a("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),a("div",Es,[f(o,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[2]||(e[2]=[m(" Ladeprotokoll ")])),_:1}),f(o,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[3]||(e[3]=[m(" Diagramme ")])),_:1})])]),a("li",Ds,[e[7]||(e[7]=a("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),a("div",Ls,[f(o,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[5]||(e[5]=[m(" Allgemein ")])),_:1}),f(o,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[6]||(e[6]=[m(" Optionale Hardware ")])),_:1})])]),a("li",js,[e[13]||(e[13]=a("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),a("div",Rs,[f(o,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[8]||(e[8]=[m(" Übergreifendes ")])),_:1}),f(o,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[9]||(e[9]=[m(" Sofortladen ")])),_:1}),f(o,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[10]||(e[10]=[m(" PV-Laden ")])),_:1}),f(o,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[11]||(e[11]=[m(" Zeitladen ")])),_:1}),f(o,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[12]||(e[12]=[m(" Zielladen ")])),_:1})])]),a("li",Ws,[e[20]||(e[20]=a("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),a("div",Ns,[f(o,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[14]||(e[14]=[m(" Geräte und Komponenten ")])),_:1}),f(o,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[15]||(e[15]=[m(" Lastmanagement ")])),_:1}),f(o,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[16]||(e[16]=[m(" Ladepunkte ")])),_:1}),f(o,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[17]||(e[17]=[m(" Fahrzeuge ")])),_:1}),e[18]||(e[18]=a("div",{class:"dropdown-divider"},null,-1)),e[19]||(e[19]=a("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1))])]),a("li",Fs,[e[29]||(e[29]=a("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),a("div",Hs,[f(o,{to:"/System/InstallAssistant",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[21]||(e[21]=[m(" Einrichtungsassistent ")])),_:1}),f(o,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[22]||(e[22]=[m(" openWB Cloud ")])),_:1}),f(o,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[23]||(e[23]=[m(" MQTT-Brücken ")])),_:1}),f(o,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[24]||(e[24]=[m(" Fehlersuche ")])),_:1}),f(o,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[25]||(e[25]=[m(" Support ")])),_:1}),f(o,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[26]||(e[26]=[m(" Datenverwaltung ")])),_:1}),f(o,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[27]||(e[27]=[m(" System ")])),_:1}),f(o,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:c(()=>e[28]||(e[28]=[m(" Rechtliches ")])),_:1})])]),a("li",Us,[a("a",zs,[e[30]||(e[30]=m(" Wiki ")),f(_,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Js=y(Ts,[["render",Gs],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Ks={name:"OpenwbPageFooter"},Qs={id:"footer",class:"footer bg-dark text-light font-small"},Zs={class:"container text-center"};function Ys(t,e,n,d,i,s){return l(),u("footer",Qs,[a("div",Zs,[a("small",null," Sie befinden sich hier: Einstellungen / "+v(t.$route.meta.heading),1)])])}const Xs=y(Ks,[["render",Ys],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]),eo={name:"ComponentState",emits:["reset","defaults","save"],data(){return{mqttTopicsToSubscribe:[]}},computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]},statusLevel(){return["success","warning","danger"]},stateIcon:{get(){switch(this.$store.state.mqtt[this.baseTopic+"/get/fault_state"]){case 0:return["fas","check-circle"];case 1:return["fas","exclamation-triangle"];case 2:return["fas","times-circle"];default:return["fas","check-circle"]}}}},mounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doUnsubscribe(this.mqttTopicsToSubscribe)},methods:{updateState(t,e,n=void 0){console.debug("updateState:",t,e,n),this.$store.commit({type:"updateTopic",topic:t,objectPath:n,payload:e})},ac_current2dc_power(t){return parseFloat((t*3*230/1e3).toFixed(0))},dc_power2ac_current(t){return parseFloat((t*1e3/230/3).toFixed(2))},getWildcardIndexList(t,e=!1){let n=t;e||(n="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let d=Object.keys(this.$store.state.mqtt).filter(i=>i.match(n));return d.forEach((i,s,o)=>{o[s]=parseInt(i.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),d},getWildcardTopics(t,e=!1){let n=t;return e||(n="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(d=>d.match(n)).reduce((d,i)=>({...d,[i]:this.$store.state.mqtt[i]}),{})},formatDate(t,e={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(t).toLocaleDateString(void 0,e)},formatNumber(t,e=0,n=e,d=1){if(!(t==null||isNaN(t)))return t=t*d,t.toLocaleString(void 0,{minimumFractionDigits:e,maximumFractionDigits:n})},formatNumberTopic(t,e=0,n=e,d=1){return this.$store.state.mqtt[t]?this.formatNumber(this.$store.state.mqtt[t],e,n,d):"-"},formatPhaseArrayNumberTopic(t,e=0,n=e,d=1){return this.$store.state.mqtt[t]?this.$store.state.mqtt[t].map(i=>this.formatNumber(i,e,n,d)).join(" / "):"- / - / -"},translateChargeMode(t){switch(t){case"instant_charging":return"Sofort";case"pv_charging":return"PV";case"scheduled_charging":return"Zielladen";case"time_charging":return"Zeitladen";case"standby":return"Standby";case"stop":return"Stop";default:return console.warn("unknown charge mode:",t),t}},getFaultStateSubtype(t){const e=this.$store.state.mqtt[t+"/get/fault_state"];if(e===void 0)return"warning";switch(e){case 0:return"success";case 1:return"warning";case 2:return"danger";default:return"dark"}}}},Q=y(eo,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);C.add(Pe,qe);const to={name:"OpenwbPageMessages",components:{FontAwesomeIcon:$,FontAwesomeLayers:Ee,FontAwesomeLayersText:De},mixins:[Q],data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+"],showAllMessages:!1,hiddenMessages:[]}},computed:{alertLevel(){return this.messages.reduce((e,n)=>((e=="light"&&["info","success","warning","danger"].includes(n.type)||e=="info"&&["success","warning","danger"].includes(n.type)||e=="success"&&["warning","danger"].includes(n.type)||e=="warning"&&n.type=="danger")&&(e=n.type),e),"light")},messages(){const t=[];return this.systemMessages.forEach(e=>{t.push(e)}),this.clientMessages.forEach(e=>{t.push(e)}),t.sort(this.compareMessagesByTimestamp),t},recentMessages(){return this.showAllMessages?this.messages:this.messages.filter(t=>!this.hiddenMessages.includes(t.topic))},messageIndicatorClass(){return"text-"+this.alertLevel},systemMessages(){let t=this.getWildcardTopics("openWB/system/messages/+");var e=[];for(const[n,d]of Object.entries(t))e.push({topic:n,...d});return e},clientMessages(){let t=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var e=[];for(const[n,d]of Object.entries(t))e.push({topic:n,...d});return e}},methods:{toggleAllMessages(){this.showAllMessages=!this.showAllMessages},compareMessagesByTimestamp(t,e){return e.timestamp-t.timestamp},clearTopic(t){this.$root.doPublish(t,void 0)},dismissMessage(t){this.clearTopic(t.topic);var e=this.hiddenMessages.indexOf(t.topic);e>-1&&this.hiddenMessages.splice(e,1)},dismissAllMessages(){this.messages.forEach(t=>{this.clearTopic(t.topic)}),this.hiddenMessages=[],this.toggleAllMessages()},hideMessage(t){this.hiddenMessages.includes(t.topic)||this.hiddenMessages.push(t.topic)}}},no=["innerHTML"];function so(t,e,n,d,i,s){const o=b("font-awesome-icon"),_=b("font-awesome-layers-text"),r=b("font-awesome-layers"),k=b("openwb-base-alert"),x=b("openwb-base-click-button"),q=b("openwb-base-toast");return l(),u(T,null,[(l(),h(F,{to:"body"},[a("div",{id:"message-indicator",class:O(["text-light mt-1 p-2 mr-1 clickable",i.showAllMessages?"active":""]),onClick:e[0]||(e[0]=(...A)=>s.toggleAllMessages&&s.toggleAllMessages(...A))},[f(r,{"full-width":"",style:{"font-size":"175%"}},{default:c(()=>[f(o,{"fixed-width":"",icon:i.showAllMessages?["fas","bell"]:["far","bell"],class:O(s.messageIndicatorClass)},null,8,["icon","class"]),s.messages.length>0?(l(),h(_,{key:0,counter:"",value:s.messages.length,position:"top-right",class:"message-counter bg-light text-dark"},null,8,["value"])):p("",!0)]),_:1})],2)])),s.recentMessages.length>0||i.showAllMessages?(l(),u("div",{key:0,class:O(["openwb-toast-container",i.showAllMessages?"full-height":""])},[s.recentMessages.length==0?(l(),h(k,{key:0,subtype:"info"},{default:c(()=>e[1]||(e[1]=[m(" Keine Nachrichten vorhanden. ")])),_:1})):i.showAllMessages?(l(),h(x,{key:1,class:"btn-sm btn-secondary mb-1",onButtonClicked:s.dismissAllMessages},{default:c(()=>e[2]||(e[2]=[m(" Alle Nachrichten löschen ")])),_:1},8,["onButtonClicked"])):p("",!0),(l(!0),u(T,null,P(s.recentMessages,A=>(l(),h(q,{key:A.topic,topic:A.topic,source:A.source,subtype:A.type,timestamp:A.timestamp,onDismiss:s.dismissMessage,onHide:s.hideMessage},{default:c(()=>[a("span",{innerHTML:A.message},null,8,no)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss","onHide"]))),128))],2)):p("",!0)],64)}const oo=y(to,[["render",so],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ao={name:"OpenwbPageBlocker",mixins:[Q],data(){return{mqttTopicsToSubscribe:["openWB/system/boot_done","openWB/system/update_in_progress"]}},computed:{title(){return this.bootInProgress||this.updateInProgress?"openWB ist noch nicht bereit":this.reloadRequired?"Neues Laden der Seite erforderlich":"???"},myButtons(){return!(this.bootInProgress||this.updateInProgress)&&this.reloadRequired?[{text:"Jetzt neu laden",subtype:"success",event:"reload"}]:[]},bootInProgress(){return this.$store.state.mqtt["openWB/system/boot_done"]==null?!0:!this.$store.state.mqtt["openWB/system/boot_done"]},updateInProgress(){return this.$store.state.mqtt["openWB/system/update_in_progress"]==null?!1:this.$store.state.mqtt["openWB/system/update_in_progress"]},reloadRequired(){return this.$store.state.local.reloadRequired},showModalBlocker(){return this.bootInProgress||this.updateInProgress||this.reloadRequired}},methods:{handleModalResult(t){t=="reload"?location.reload():console.warn("unknown event",t)}}},io={class:"openwb-blocker"},lo={key:0},ro={key:1},uo={key:2},co={key:3};function po(t,e,n,d,i,s){const o=b("openwb-base-modal-dialog");return l(),u("div",io,[f(o,{show:s.showModalBlocker,title:s.title,subtype:"dark","prevent-close":!0,buttons:s.myButtons,onModalResult:e[0]||(e[0]=_=>s.handleModalResult(_))},{default:c(()=>[s.bootInProgress?(l(),u("p",lo,"Der Systemstart ist noch nicht abgeschlossen.")):p("",!0),s.updateInProgress?(l(),u("p",ro,"Es wird eine Systemaktualisierung ausgeführt.")):p("",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(l(),u("p",uo,"Bitte die Seite neu laden.")):(l(),u("p",co,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const mo=y(ao,[["render",po],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const fo={name:"OpenwbSettingsApp",components:{NavBar:Js,PageFooter:Xs,Messages:oo,Blocker:mo},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3}}},computed:{mqttClientId(){try{return this.client.options.clientId}catch(t){console.error("mqttClientId error",t);return}},topicList(){return Object.keys(this.$store.state.mqtt)}},created(){this.createConnection()},methods:{async saveValues(t=void 0){function e(d){return new Promise(i=>setTimeout(i,d))}this.$store.state.local.savingData=!0;let n={};t===void 0?(console.debug("no topics defined, so save everything we have in store"),n=this.$store.state.mqtt):Array.isArray(t)?t.forEach(d=>{n[d]=this.$store.state.mqtt[d]}):console.error("expected array, got ",typeof t);for(const[d,i]of Object.entries(n)){let s=d.replace("openWB/","openWB/set/");console.debug("saving data:",s,i),this.doPublish(s,i),await e(100)}this.$store.state.local.savingData=!1},resetValues(t=this.topicList){console.debug("resetting values..."),console.debug("topics: ",t),this.doUnsubscribe(t),this.doSubscribe(t)},setDefaultValues(){console.debug("setting default values... (ToDo)")},sendCommand(t){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",t,!1)},createConnection(){const{protocol:t,host:e,port:n,endpoint:d,...i}=this.connection,s=`${t}://${e}:${n}${d}`;console.debug("connecting to broker:",s);try{this.client=oe.connect(s,i)}catch(o){console.error("mqtt.connect error",o)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"]),this.doSubscribe(["openWB/system/installAssistantDone"])}),this.client.on("error",o=>{console.error("Connection failed",o)}),this.client.on("message",(o,_)=>{if(_.toString().length>0){let r;try{r=JSON.parse(_.toString())}catch(k){console.debug("Json parsing failed, fallback to string: ",o,k),r=_.toString()}this.$store.commit("updateTopic",{topic:o,payload:r})}else this.$store.commit("removeTopic",o)})},doSubscribe(t){t.forEach(e=>{this.$store.commit("addSubscription",e),this.$store.getters.subscriptionCount(e)==1?(e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):this.$store.commit("addTopic",{topic:e,payload:void 0}),this.client.subscribe(e,{},n=>{if(n){console.error("Subscribe to topics error",n);return}})):console.debug("Already subscribed to topic: ",e)})},doUnsubscribe(t){t.forEach(e=>{this.$store.commit("removeSubscription",e),this.$store.getters.subscriptionCount(e)==0?(this.client.unsubscribe(e,n=>{n&&console.error("Unsubscribe error",n)}),e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic:",e),Object.keys(this.getWildcardTopics(e)).forEach(n=>{console.debug("removing wildcardTopic:",n),this.$store.commit("removeTopic",n)})):(console.debug("removing topic:",e),this.$store.commit("removeTopic",e))):console.debug("Still subscribed to topic: ",e)})},doPublish(t,e,n=!0,d=2){let i={qos:d,retain:n};this.client.publish(t,JSON.stringify(e),i,s=>{s&&console.error("Publish error",s)})},postClientMessage(t,e="secondary"){console.debug("postMessage:",t,e);const n=Date.now(),d="openWB/command/"+this.mqttClientId+"/messages/"+n;this.$store.commit({type:"addTopic",topic:d,payload:{message:t,type:e,source:"client",timestamp:Math.floor(n/1e3)}})},getWildcardTopics(t,e=!1){let n=t;return e||(n="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(d=>d.match(n)).reduce((d,i)=>({...d,[i]:this.$store.state.mqtt[i]}),{})}}},_o={role:"main",class:"container"},go={id:"content"};function bo(t,e,n,d,i,s){const o=b("nav-bar"),_=b("router-view"),r=b("page-footer"),k=b("messages"),x=b("blocker");return l(),u(T,null,[a("header",null,[f(o)]),a("div",_o,[a("div",go,[a("h1",null,v(t.$route.meta.heading),1),f(_,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])])]),f(r),f(k),f(x)],64)}const ho=y(fo,[["render",bo],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),vo="modulepreload",yo=function(t){return"/openWB/web/settings/"+t},N={},w=function(e,n,d){if(!n||n.length===0)return e();const i=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=yo(s),s in N)return;N[s]=!0;const o=s.endsWith(".css"),_=o?'[rel="stylesheet"]':"";if(!!d)for(let x=i.length-1;x>=0;x--){const q=i[x];if(q.href===s&&(!o||q.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${_}`))return;const k=document.createElement("link");if(k.rel=o?"stylesheet":vo,o||(k.as="script",k.crossOrigin=""),k.href=s,document.head.appendChild(k),o)return new Promise((x,q)=>{k.addEventListener("load",x),k.addEventListener("error",()=>q(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>e()).catch(s=>{const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=s,window.dispatchEvent(o),!o.defaultPrevented)throw s})};let Z={mqtt:{},mqttSubscriptions:{},local:{reloadRequired:!1,savingData:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im Wiki.'}};Z.examples={text1:"Text...",text2:"mail@domain.com",text3:"openwb.local",text4:"http://www.openwb.de",text5:"Benutzername",text6:"12:34",text7:"2021-10-31",number1:5,number2:10,number3:28e-5,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:void 0,buttonGroup1:1,checkbox1:!0,json1:{text:"Text",number:123},hierarchy1:[{id:0,type:"counter",children:[{id:3,type:"inverter",children:[]},{id:4,type:"bat",children:[]},{id:1,type:"cp",children:[]},{id:2,type:"cp",children:[]}]}],hierarchy1Labels:{0:"EVU",1:"Ladepunkt 1",2:"Ladepunkt 2",3:"Wechselrichter",4:"Batteriespeicher"},tags:["1234","2345","3456"]};const E=ae({state:Z,mutations:{storeLocal(t,e){t.local[e.name]=e.value},addTopic(t,e){Object.keys(t.mqtt).includes(e.topic)?console.warn("topic already exists: ",e.topic):t.mqtt[e.topic]=e.payload},removeTopic(t,e){delete t.mqtt[e]},updateTopic(t,e){const n=(d,i,s)=>i.split(".").reduce((o,_,r)=>o[_]=i.split(".").length===++r?s:o[_]||{},d);e.topic in t.mqtt||!(e.topic in t.examples)?e.objectPath!=null?n(t.mqtt[e.topic],e.objectPath,e.payload):t.mqtt[e.topic]=e.payload:(console.debug("topic not found in state.mqtt: ",e.topic),e.topic in t.examples?e.objectPath!=null?n(t.examples[e.topic],e.objectPath,e.payload):t.examples[e.topic]=e.payload:console.warn("topic not found in state: ",e.topic," giving up"))},addSubscription(t,e){e in t.mqttSubscriptions?t.mqttSubscriptions[e]+=1:t.mqttSubscriptions[e]=1,console.debug("subscription count: ",e,t.mqttSubscriptions[e])},removeSubscription(t,e){e in t.mqttSubscriptions&&(t.mqttSubscriptions[e]-=1,t.mqttSubscriptions[e]<=0&&delete t.mqttSubscriptions[e])}},actions:{},modules:{},getters:{usageTermsAcknowledged(t){return new Promise(e=>{if(t.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0)e(t.mqtt["openWB/system/usage_terms_acknowledged"]);else{var n,d;n=setTimeout(()=>{clearInterval(d),e(!1)},5e3),d=setInterval(()=>{t.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(n),clearInterval(d),e(t.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})},installAssistantDone(t){return new Promise(e=>{if(t.mqtt["openWB/system/installAssistantDone"]!==void 0)e(t.mqtt["openWB/system/installAssistantDone"]);else{var n,d;n=setTimeout(()=>{clearInterval(d),e(!1)},5e3),d=setInterval(()=>{t.mqtt["openWB/system/installAssistantDone"]!==void 0&&(clearTimeout(n),clearInterval(d),e(t.mqtt["openWB/system/installAssistantDone"]))},100)}})},subscriptionCount:t=>e=>t.mqttSubscriptions[e]||0}}),Y=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>w(()=>import("./Status-3484f650.js"),["assets/Status-3484f650.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-chartjs-1398beb1.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/Status-9ecf39ed.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>w(()=>import("./ChargeLog-7f7c5fe2.js"),["assets/ChargeLog-7f7c5fe2.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/ChargeLog-1fb3fa68.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>w(()=>import("./Chart-bf602480.js"),["assets/Chart-bf602480.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-chartjs-1398beb1.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>w(()=>import("./GeneralConfig-b0e93144.js").then(t=>t.a),["assets/GeneralConfig-b0e93144.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/dynamic-import-helper-be004503.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>w(()=>import("./OptionalComponents-f79f9835.js").then(t=>t.O),["assets/OptionalComponents-f79f9835.js","assets/dynamic-import-helper-be004503.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>w(()=>import("./GeneralChargeConfig-401ab7d4.js").then(t=>t.G),["assets/GeneralChargeConfig-401ab7d4.js","assets/dynamic-import-helper-be004503.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>w(()=>import("./InstantChargeConfig-8da1d692.js"),["assets/InstantChargeConfig-8da1d692.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>w(()=>import("./PVChargeConfig-c750b618.js"),["assets/PVChargeConfig-c750b618.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>w(()=>import("./TimeChargeConfig-d3210f64.js"),["assets/TimeChargeConfig-d3210f64.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>w(()=>import("./ScheduledChargeConfig-85a95906.js"),["assets/ScheduledChargeConfig-85a95906.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>w(()=>import("./HardwareInstallation-3a644290.js").then(t=>t.a),["assets/HardwareInstallation-3a644290.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/dynamic-import-helper-be004503.js"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>w(()=>import("./LoadManagementConfig-c15dfafe.js"),["assets/LoadManagementConfig-c15dfafe.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/OpenwbSortableList-bde71f66.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>w(()=>import("./ChargePointInstallation-408ee2ed.js").then(t=>t.c),["assets/ChargePointInstallation-408ee2ed.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-7b9399a8.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>w(()=>import("./VehicleConfig-a49bda81.js").then(t=>t.b),["assets/VehicleConfig-a49bda81.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/dynamic-import-helper-be004503.js"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>w(()=>import("./CloudConfig-c17b71a6.js"),["assets/CloudConfig-c17b71a6.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>w(()=>import("./MqttBridgeConfig-74fa4482.js"),["assets/MqttBridgeConfig-74fa4482.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>w(()=>import("./DebugConfig-ee93cd2f.js"),["assets/DebugConfig-ee93cd2f.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/DebugConfig-e21ab72c.css"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>w(()=>import("./Support-aeee7674.js"),["assets/Support-aeee7674.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>w(()=>import("./LegalSettings-0ab5ea05.js"),["assets/LegalSettings-0ab5ea05.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>w(()=>import("./System-20e6cb5e.js"),["assets/System-20e6cb5e.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>w(()=>import("./DataManagement-f14600c5.js").then(t=>t.a),["assets/DataManagement-f14600c5.js","assets/vendor-fortawesome-433470db.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/dynamic-import-helper-be004503.js"])},{path:"/System/InstallAssistant",name:"InstallAssistant",meta:{heading:"System - Einrichtungsassistent"},component:()=>w(()=>import("./InstallAssistant-06ef733c.js"),["assets/InstallAssistant-06ef733c.js","assets/dynamic-import-helper-be004503.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js"])}];Y.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>w(()=>import("./TestingStore-96106450.js"),["assets/TestingStore-96106450.js","assets/OpenwbSortableList-bde71f66.js","assets/vendor-ea36120f.js","assets/vendor-sortablejs-c6aaccb3.js","assets/vendor-3a7c342f.css","assets/vendor-fortawesome-433470db.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-038cab7c.js","assets/vendor-jquery-48e02303.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-1f03ee31.js"])});const j=ie({history:le(),routes:Y});j.beforeEach(async t=>{if(await E.getters.usageTermsAcknowledged){if(!await E.getters.installAssistantDone&&t.name!=="InstallAssistant")return{name:"InstallAssistant"}}else if(t.name!=="LegalSettings")return{name:"LegalSettings"}});j.afterEach(t=>{t.meta.heading?document.title="openWB | "+t.meta.heading:document.title="openWB"});const R=re(ho);R.use(E).use(j).use(Le,je);const wo=Object.assign({"./components/OpenwbBaseAlert.vue":Fe,"./components/OpenwbBaseArrayInput.vue":dt,"./components/OpenwbBaseAvatar.vue":ft,"./components/OpenwbBaseButtonGroupInput.vue":yt,"./components/OpenwbBaseButtonInput.vue":$t,"./components/OpenwbBaseCard.vue":Dt,"./components/OpenwbBaseCheckboxInput.vue":Nt,"./components/OpenwbBaseClickButton.vue":St,"./components/OpenwbBaseCopyToClipboard.vue":Gt,"./components/OpenwbBaseHeading.vue":tn,"./components/OpenwbBaseModalDialog.vue":cn,"./components/OpenwbBaseNumberInput.vue":yn,"./components/OpenwbBaseRangeInput.vue":Tn,"./components/OpenwbBaseSelectInput.vue":Nn,"./components/OpenwbBaseSettingElement.vue":Ye,"./components/OpenwbBaseSubmitButtons.vue":Qn,"./components/OpenwbBaseTextInput.vue":cs,"./components/OpenwbBaseTextarea.vue":ks,"./components/OpenwbBaseToast.vue":Is});Object.entries(wo).forEach(([t,e])=>{const n=de(ue(t.split("/").pop().replace(/\.\w+$/,"")));R.component(n,e.default)});R.mount("#app");export{Q as C,M as O,w as _}; diff --git a/web/settings/assets/inverter-66844342.js b/web/settings/assets/inverter-0931beee.js similarity index 73% rename from web/settings/assets/inverter-66844342.js rename to web/settings/assets/inverter-0931beee.js index 26b94de046..1597edc6d5 100644 --- a/web/settings/assets/inverter-66844342.js +++ b/web/settings/assets/inverter-0931beee.js @@ -1 +1 @@ -import{C as s}from"./HardwareInstallation-727b5962.js";import{_ as a,u as t,l as u,m,G as i,E as d,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const v={name:"DeviceOpenwbFlexInverter",mixins:[s]},b={class:"device-openwb-flex-inverter"};function f(o,e,_,w,x,g){const r=t("openwb-base-heading"),l=t("openwb-base-select-input"),p=t("openwb-base-number-input");return u(),m("div",b,[i(r,null,{default:d(()=>e[2]||(e[2]=[c(" Einstellungen für openWB-Flex Wechselrichter ")])),_:1}),i(l,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"},{value:3,text:"SDM120"}],"model-value":o.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(p,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":o.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const W=a(v,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/inverter.vue"]]);export{W as default}; +import{C as s}from"./HardwareInstallation-3a644290.js";import{_ as a,u as t,l as u,m,G as i,E as d,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const v={name:"DeviceOpenwbFlexInverter",mixins:[s]},b={class:"device-openwb-flex-inverter"};function f(o,e,_,w,x,g){const r=t("openwb-base-heading"),l=t("openwb-base-select-input"),p=t("openwb-base-number-input");return u(),m("div",b,[i(r,null,{default:d(()=>e[2]||(e[2]=[c(" Einstellungen für openWB-Flex Wechselrichter ")])),_:1}),i(l,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"},{value:3,text:"SDM120"}],"model-value":o.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(p,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":o.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const W=a(v,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/inverter.vue"]]);export{W as default}; diff --git a/web/settings/assets/inverter-c852411a.js b/web/settings/assets/inverter-0dee4ab1.js similarity index 66% rename from web/settings/assets/inverter-c852411a.js rename to web/settings/assets/inverter-0dee4ab1.js index 64f7be6ec9..7ac088e57e 100644 --- a/web/settings/assets/inverter-c852411a.js +++ b/web/settings/assets/inverter-0dee4ab1.js @@ -1 +1 @@ -import{C as s}from"./HardwareInstallation-727b5962.js";import{_ as d,u as n,l as m,m as c,G as r,E as i,B as a}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceStuderInverter",mixins:[s]},b={class:"device-studer-inverter"};function v(t,e,f,g,V,S){const u=n("openwb-base-heading"),p=n("openwb-base-button-group-input"),l=n("openwb-base-number-input");return m(),c("div",b,[r(u,null,{default:i(()=>e[2]||(e[2]=[a(" Einstellungen für Studer Wechselrichter ")])),_:1}),r(p,{title:"Typ der MPPT Solarladeregler",buttons:[{buttonValue:"VT",text:"Variotrack (VT-40/VT-65/VT-80)"},{buttonValue:"VS",text:"VarioString (VS-70/VS-120)"}],"model-value":t.component.configuration.vc_type,required:"","onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.vc_type"))},null,8,["model-value"]),r(l,{title:"Anzahl MPPT Solarladeregler",required:"",min:1,max:9,"model-value":t.component.configuration.vc_count,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.vc_count"))},{help:i(()=>e[3]||(e[3]=[a(" Anzahl (1-9) der Studer MPPT Solarladeregler im System (VS/VT) ")])),_:1},8,["model-value"])])}const k=d(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/inverter.vue"]]);export{k as default}; +import{C as s}from"./HardwareInstallation-3a644290.js";import{_ as d,u as n,l as m,m as c,G as r,E as i,y as a}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceStuderInverter",mixins:[s]},b={class:"device-studer-inverter"};function v(t,e,f,g,V,S){const u=n("openwb-base-heading"),p=n("openwb-base-button-group-input"),l=n("openwb-base-number-input");return m(),c("div",b,[r(u,null,{default:i(()=>e[2]||(e[2]=[a(" Einstellungen für Studer Wechselrichter ")])),_:1}),r(p,{title:"Typ der MPPT Solarladeregler",buttons:[{buttonValue:"VT",text:"Variotrack (VT-40/VT-65/VT-80)"},{buttonValue:"VS",text:"VarioString (VS-70/VS-120)"}],"model-value":t.component.configuration.vc_type,required:"","onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.vc_type"))},null,8,["model-value"]),r(l,{title:"Anzahl MPPT Solarladeregler",required:"",min:1,max:9,"model-value":t.component.configuration.vc_count,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.vc_count"))},{help:i(()=>e[3]||(e[3]=[a(" Anzahl (1-9) der Studer MPPT Solarladeregler im System (VS/VT) ")])),_:1},8,["model-value"])])}const B=d(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-1a290548.js b/web/settings/assets/inverter-1e549543.js similarity index 63% rename from web/settings/assets/inverter-1a290548.js rename to web/settings/assets/inverter-1e549543.js index 720af47736..8df7136920 100644 --- a/web/settings/assets/inverter-1a290548.js +++ b/web/settings/assets/inverter-1e549543.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as a,u as n,l as m,m as l,G as t,E as u,B as d}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisInverter",mixins:[p]},_={class:"device-solis-inverter"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),l("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[d(" Einstellungen für Solis Wechselrichter ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const I=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/inverter.vue"]]);export{I as default}; +import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as a,u as n,l as m,m as l,G as t,E as u,y as d}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisInverter",mixins:[p]},_={class:"device-solis-inverter"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),l("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[d(" Einstellungen für Solis Wechselrichter ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const I=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/inverter.vue"]]);export{I as default}; diff --git a/web/settings/assets/inverter-ff72f261.js b/web/settings/assets/inverter-1eaedb65.js similarity index 67% rename from web/settings/assets/inverter-ff72f261.js rename to web/settings/assets/inverter-1eaedb65.js index ee69bbb310..47c03e1084 100644 --- a/web/settings/assets/inverter-ff72f261.js +++ b/web/settings/assets/inverter-1eaedb65.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as a,u as o,l,m,G as n,E as u,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbPvkitInverter",mixins:[p]},v={class:"device-openwb-pvkit-inverter"};function _(t,e,f,b,w,g){const i=o("openwb-base-heading"),r=o("openwb-base-select-input");return l(),m("div",v,[n(i,null,{default:u(()=>e[1]||(e[1]=[c(" Einstellungen für openWB PV-Kit Wechselrichter ")])),_:1}),n(r,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_pv_kit/inverter.vue"]]);export{$ as default}; +import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as a,u as o,l,m,G as n,E as u,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbPvkitInverter",mixins:[p]},v={class:"device-openwb-pvkit-inverter"};function _(t,e,f,b,w,g){const i=o("openwb-base-heading"),r=o("openwb-base-select-input");return l(),m("div",v,[n(i,null,{default:u(()=>e[1]||(e[1]=[c(" Einstellungen für openWB PV-Kit Wechselrichter ")])),_:1}),n(r,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_pv_kit/inverter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/inverter-fb891ee4.js b/web/settings/assets/inverter-25109ec8.js similarity index 61% rename from web/settings/assets/inverter-fb891ee4.js rename to web/settings/assets/inverter-25109ec8.js index 43c985a4c5..7605677ea8 100644 --- a/web/settings/assets/inverter-fb891ee4.js +++ b/web/settings/assets/inverter-25109ec8.js @@ -1 +1 @@ -import{C as m}from"./HardwareInstallation-727b5962.js";import{_ as d,u as o,l as u,m as l,G as t,E as i,B as r}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSigenergyInverter",mixins:[m]},_={class:"device-sigenergy-inverter"};function c(n,e,b,f,v,w){const s=o("openwb-base-heading"),p=o("openwb-base-number-input");return u(),l("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Sigenergy Wechselrichter ")])),_:1}),t(p,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[r(" Die Standard-Modbus-ID von Sigenergy ist 247 ")])),_:1},8,["model-value"])])}const M=d(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/inverter.vue"]]);export{M as default}; +import{C as m}from"./HardwareInstallation-3a644290.js";import{_ as d,u as o,l as u,m as l,G as t,E as i,y as r}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSigenergyInverter",mixins:[m]},_={class:"device-sigenergy-inverter"};function c(n,e,b,f,v,y){const s=o("openwb-base-heading"),p=o("openwb-base-number-input");return u(),l("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Sigenergy Wechselrichter ")])),_:1}),t(p,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[r(" Die Standard-Modbus-ID von Sigenergy ist 247 ")])),_:1},8,["model-value"])])}const M=d(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/inverter.vue"]]);export{M as default}; diff --git a/web/settings/assets/inverter-e972f9b7.js b/web/settings/assets/inverter-2d9123ee.js similarity index 65% rename from web/settings/assets/inverter-e972f9b7.js rename to web/settings/assets/inverter-2d9123ee.js index 1acb9230ae..308dee0093 100644 --- a/web/settings/assets/inverter-e972f9b7.js +++ b/web/settings/assets/inverter-2d9123ee.js @@ -1 +1 @@ -import{C as u}from"./HardwareInstallation-727b5962.js";import{_ as a,u as t,l as p,m as l,G as n,E as m,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceYoulessInverter",mixins:[u]},d={class:"device-youless-inverter"};function f(o,e,b,v,g,x){const s=t("openwb-base-heading"),i=t("openwb-base-button-group-input");return p(),l("div",d,[n(s,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für Youless LS120 Wechselrichter ")])),_:1}),n(i,{title:"S0-Eingang auslesen",buttons:[{buttonValue:!1,text:"nein"},{buttonValue:!0,text:"ja"}],"model-value":o.component.configuration.source_s0,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.source_s0"))},null,8,["model-value"])])}const N=a(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/youless/inverter.vue"]]);export{N as default}; +import{C as u}from"./HardwareInstallation-3a644290.js";import{_ as a,u as t,l as p,m as l,G as n,E as m,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceYoulessInverter",mixins:[u]},d={class:"device-youless-inverter"};function f(o,e,b,v,g,x){const s=t("openwb-base-heading"),i=t("openwb-base-button-group-input");return p(),l("div",d,[n(s,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für Youless LS120 Wechselrichter ")])),_:1}),n(i,{title:"S0-Eingang auslesen",buttons:[{buttonValue:!1,text:"nein"},{buttonValue:!0,text:"ja"}],"model-value":o.component.configuration.source_s0,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.source_s0"))},null,8,["model-value"])])}const N=a(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/youless/inverter.vue"]]);export{N as default}; diff --git a/web/settings/assets/inverter-a66b9919.js b/web/settings/assets/inverter-30cf9ccf.js similarity index 68% rename from web/settings/assets/inverter-a66b9919.js rename to web/settings/assets/inverter-30cf9ccf.js index ec7d64075d..55b161f6de 100644 --- a/web/settings/assets/inverter-a66b9919.js +++ b/web/settings/assets/inverter-30cf9ccf.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as l,u as n,l as d,m as c,G as t,E as i,B as r}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceSolarViewInverter",mixins:[p]},_={class:"device-solar-view-inverter"};function f(o,e,v,g,w,b){const s=n("openwb-base-heading"),a=n("openwb-base-text-input");return d(),c("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für SolarView Wechselrichter ")])),_:1}),t(a,{title:"Kommando für die Abfrage",required:"","model-value":o.component.configuration.command,"onUpdate:modelValue":e[0]||(e[0]=m=>o.updateConfiguration(m,"configuration.command"))},{help:i(()=>e[2]||(e[2]=[r(" Kommandos gemäß SolarView-Dokumentation, z.B.: 00* (gesamte Anlage), 01* (Wechselrichter 1), 02* (Wechselrichter 2) ")])),_:1},8,["model-value"])])}const S=l(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/solar_view/inverter.vue"]]);export{S as default}; +import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as l,u as n,l as d,m as c,G as t,E as i,y as r}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceSolarViewInverter",mixins:[p]},_={class:"device-solar-view-inverter"};function f(o,e,v,g,w,b){const s=n("openwb-base-heading"),a=n("openwb-base-text-input");return d(),c("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für SolarView Wechselrichter ")])),_:1}),t(a,{title:"Kommando für die Abfrage",required:"","model-value":o.component.configuration.command,"onUpdate:modelValue":e[0]||(e[0]=m=>o.updateConfiguration(m,"configuration.command"))},{help:i(()=>e[2]||(e[2]=[r(" Kommandos gemäß SolarView-Dokumentation, z.B.: 00* (gesamte Anlage), 01* (Wechselrichter 1), 02* (Wechselrichter 2) ")])),_:1},8,["model-value"])])}const S=l(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/solar_view/inverter.vue"]]);export{S as default}; diff --git a/web/settings/assets/inverter-62f3baf9.js b/web/settings/assets/inverter-39ce3cb1.js similarity index 63% rename from web/settings/assets/inverter-62f3baf9.js rename to web/settings/assets/inverter-39ce3cb1.js index 5c1f2f8d45..7bc9db1402 100644 --- a/web/settings/assets/inverter-62f3baf9.js +++ b/web/settings/assets/inverter-39ce3cb1.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as a,u as n,l as m,m as d,G as t,E as u,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDeyeInverter",mixins:[p]},_={class:"device-deye-inverter"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),d("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[l(" Einstellungen für Deye Wechselrichter ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const k=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/inverter.vue"]]);export{k as default}; +import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as a,u as n,l as m,m as d,G as t,E as u,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDeyeInverter",mixins:[p]},_={class:"device-deye-inverter"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),d("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[l(" Einstellungen für Deye Wechselrichter ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const k=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-b8e6f7ca.js b/web/settings/assets/inverter-456adc79.js similarity index 58% rename from web/settings/assets/inverter-b8e6f7ca.js rename to web/settings/assets/inverter-456adc79.js index 28423e81c8..430cf62805 100644 --- a/web/settings/assets/inverter-b8e6f7ca.js +++ b/web/settings/assets/inverter-456adc79.js @@ -1 +1 @@ -import{C as r}from"./HardwareInstallation-727b5962.js";import{_ as p,u as o,l,m as u,G as n,E as c,B as m}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceKostalStecaInverter",mixins:[r]},_={class:"device-kostal-steca-inverter"};function f(t,e,v,b,g,k){const a=o("openwb-base-heading"),i=o("openwb-base-button-group-input");return l(),u("div",_,[n(a,null,{default:c(()=>e[1]||(e[1]=[m(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept Wechselrichter ")])),_:1}),n(i,{title:"Variante",buttons:[{buttonValue:!1,text:"Kostal Piko MP (non-plus)"},{buttonValue:!0,text:"Kostal Piko MP oder Steca Grid Coolcept"}],"model-value":t.component.configuration.variant_steca,"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.variant_steca"))},null,8,["model-value"])])}const h=p(d,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_steca/inverter.vue"]]);export{h as default}; +import{C as r}from"./HardwareInstallation-3a644290.js";import{_ as p,u as o,l,m as u,G as n,E as c,y as m}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceKostalStecaInverter",mixins:[r]},_={class:"device-kostal-steca-inverter"};function f(t,e,v,b,g,k){const a=o("openwb-base-heading"),i=o("openwb-base-button-group-input");return l(),u("div",_,[n(a,null,{default:c(()=>e[1]||(e[1]=[m(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept Wechselrichter ")])),_:1}),n(i,{title:"Variante",buttons:[{buttonValue:!1,text:"Kostal Piko MP (non-plus)"},{buttonValue:!0,text:"Kostal Piko MP oder Steca Grid Coolcept"}],"model-value":t.component.configuration.variant_steca,"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.variant_steca"))},null,8,["model-value"])])}const B=p(d,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_steca/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-dddc65f7.js b/web/settings/assets/inverter-498c1656.js similarity index 62% rename from web/settings/assets/inverter-dddc65f7.js rename to web/settings/assets/inverter-498c1656.js index 49a096ed7a..67b6253489 100644 --- a/web/settings/assets/inverter-dddc65f7.js +++ b/web/settings/assets/inverter-498c1656.js @@ -1 +1 @@ -import{C as a}from"./HardwareInstallation-727b5962.js";import{_ as m,u as o,l as p,m as l,G as n,E as d,B as u}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartMeInverter",mixins:[a]},_={class:"device-smart-me-inverter"};function f(t,e,v,b,g,x){const r=o("openwb-base-heading"),i=o("openwb-base-text-input");return p(),l("div",_,[n(r,null,{default:d(()=>e[1]||(e[1]=[u(" Einstellungen für smart-me Wechselrichter ")])),_:1}),n(i,{title:"Geräte-ID",required:"","model-value":t.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.id"))},null,8,["model-value"])])}const G=m(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/inverter.vue"]]);export{G as default}; +import{C as a}from"./HardwareInstallation-3a644290.js";import{_ as m,u as o,l as p,m as l,G as n,E as d,y as u}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartMeInverter",mixins:[a]},_={class:"device-smart-me-inverter"};function f(t,e,v,b,g,x){const r=o("openwb-base-heading"),i=o("openwb-base-text-input");return p(),l("div",_,[n(r,null,{default:d(()=>e[1]||(e[1]=[u(" Einstellungen für smart-me Wechselrichter ")])),_:1}),n(i,{title:"Geräte-ID",required:"","model-value":t.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.id"))},null,8,["model-value"])])}const G=m(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/inverter.vue"]]);export{G as default}; diff --git a/web/settings/assets/inverter-1632a4b1.js b/web/settings/assets/inverter-4a2cdfd9.js similarity index 65% rename from web/settings/assets/inverter-1632a4b1.js rename to web/settings/assets/inverter-4a2cdfd9.js index c361ca4c0f..f239176113 100644 --- a/web/settings/assets/inverter-1632a4b1.js +++ b/web/settings/assets/inverter-4a2cdfd9.js @@ -1 +1 @@ -import{C as a}from"./HardwareInstallation-727b5962.js";import{_ as m,u as n,l as p,m as u,G as t,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLoggerInverter",mixins:[a]},_={class:"device-huawei-smart-logger-inverter"};function g(o,e,b,f,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return p(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Huawei SmartLogger Wechselrichter ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const H=m(c,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/inverter.vue"]]);export{H as default}; +import{C as a}from"./HardwareInstallation-3a644290.js";import{_ as m,u as n,l as p,m as u,G as t,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLoggerInverter",mixins:[a]},_={class:"device-huawei-smart-logger-inverter"};function g(o,e,b,f,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return p(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Huawei SmartLogger Wechselrichter ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const H=m(c,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/inverter.vue"]]);export{H as default}; diff --git a/web/settings/assets/inverter-50a72e83.js b/web/settings/assets/inverter-50a72e83.js deleted file mode 100644 index 49060a46c5..0000000000 --- a/web/settings/assets/inverter-50a72e83.js +++ /dev/null @@ -1 +0,0 @@ -import{C as e}from"./HardwareInstallation-727b5962.js";import{_ as t,l as o,m as n}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const r={name:"DeviceOpenDTUInverter",mixins:[e]},i={class:"device-opendtu-inverter"};function p(s,c,m,a,_,d){return o(),n("div",i)}const h=t(r,[["render",p],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/opendtu/opendtu/inverter.vue"]]);export{h as default}; diff --git a/web/settings/assets/inverter-5571eba7.js b/web/settings/assets/inverter-5571eba7.js new file mode 100644 index 0000000000..97b8bf7a3e --- /dev/null +++ b/web/settings/assets/inverter-5571eba7.js @@ -0,0 +1 @@ +import{C as e}from"./HardwareInstallation-3a644290.js";import{_ as t,l as o,m as n}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const r={name:"DeviceOpenDTUInverter",mixins:[e]},i={class:"device-opendtu-inverter"};function p(s,c,m,a,_,d){return o(),n("div",i)}const h=t(r,[["render",p],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/opendtu/opendtu/inverter.vue"]]);export{h as default}; diff --git a/web/settings/assets/inverter-cbcef859.js b/web/settings/assets/inverter-6157a590.js similarity index 76% rename from web/settings/assets/inverter-cbcef859.js rename to web/settings/assets/inverter-6157a590.js index 8a42f12299..a38583be95 100644 --- a/web/settings/assets/inverter-cbcef859.js +++ b/web/settings/assets/inverter-6157a590.js @@ -1 +1 @@ -import{C as d}from"./HardwareInstallation-727b5962.js";import{_ as u,u as a,l as p,m,G as r,E as i,B as t,A as g}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceJsonInverter",mixins:[d]},f={class:"device-json-inverter"};function b(n,e,c,v,_,h){const l=a("openwb-base-heading"),s=a("openwb-base-text-input");return p(),m("div",f,[r(l,null,{default:i(()=>e[2]||(e[2]=[t(" Einstellungen für JSON Wechselrichter ")])),_:1}),r(s,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":n.component.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.jq_power"))},{help:i(()=>e[3]||(e[3]=[t(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),g("br",null,null,-1),t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) ")])),_:1},8,["model-value"]),r(s,{title:"Abfrage für Zählerstand",subtype:"text","model-value":n.component.configuration.jq_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.jq_exported"))},{help:i(()=>e[4]||(e[4]=[t(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"])])}const W=u(w,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/inverter.vue"]]);export{W as default}; +import{C as d}from"./HardwareInstallation-3a644290.js";import{_ as u,u as a,l as p,m,G as r,E as i,y as t,x as g}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceJsonInverter",mixins:[d]},f={class:"device-json-inverter"};function b(n,e,c,v,_,h){const l=a("openwb-base-heading"),s=a("openwb-base-text-input");return p(),m("div",f,[r(l,null,{default:i(()=>e[2]||(e[2]=[t(" Einstellungen für JSON Wechselrichter ")])),_:1}),r(s,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":n.component.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.jq_power"))},{help:i(()=>e[3]||(e[3]=[t(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),g("br",null,null,-1),t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) ")])),_:1},8,["model-value"]),r(s,{title:"Abfrage für Zählerstand",subtype:"text","model-value":n.component.configuration.jq_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.jq_exported"))},{help:i(()=>e[4]||(e[4]=[t(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"])])}const B=u(w,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-2e18bb9f.js b/web/settings/assets/inverter-617b5e4a.js similarity index 75% rename from web/settings/assets/inverter-2e18bb9f.js rename to web/settings/assets/inverter-617b5e4a.js index ce434d843d..d7ff7618d8 100644 --- a/web/settings/assets/inverter-2e18bb9f.js +++ b/web/settings/assets/inverter-617b5e4a.js @@ -1 +1 @@ -import{C as u}from"./HardwareInstallation-727b5962.js";import{_ as m,u as r,l as d,m as g,G as o,E as l,B as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceVZLoggerInverter",mixins:[u]},_={class:"device-vzlogger-inverter"};function c(n,e,v,b,w,Z){const a=r("openwb-base-heading"),p=r("openwb-base-alert"),i=r("openwb-base-number-input");return d(),g("div",_,[o(a,null,{default:l(()=>e[2]||(e[2]=[s(" Einstellungen für VZLogger Wechselrichter ")])),_:1}),o(p,{subtype:"info"},{default:l(()=>e[3]||(e[3]=[s(' Bitte auf der Shell ausführen: "curl -s IPdesVZLogger:Port | jq .|cat -n" Zählen, in welcher Zeile der gesuchte Wert steht. Bei der ersten Zeile mit 1 anfangen zu zählen. ')])),_:1}),o(i,{title:"Zeile der Leistung",required:"",min:0,"model-value":n.component.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.line_power"))},null,8,["model-value"]),o(i,{title:"Zeile der exportierten Energie (Ertrag)",min:0,"model-value":n.component.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.line_exported"))},null,8,["model-value"])])}const W=m(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/inverter.vue"]]);export{W as default}; +import{C as u}from"./HardwareInstallation-3a644290.js";import{_ as m,u as r,l as d,m as g,G as o,E as l,y as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceVZLoggerInverter",mixins:[u]},_={class:"device-vzlogger-inverter"};function c(n,e,v,b,w,Z){const a=r("openwb-base-heading"),p=r("openwb-base-alert"),i=r("openwb-base-number-input");return d(),g("div",_,[o(a,null,{default:l(()=>e[2]||(e[2]=[s(" Einstellungen für VZLogger Wechselrichter ")])),_:1}),o(p,{subtype:"info"},{default:l(()=>e[3]||(e[3]=[s(' Bitte auf der Shell ausführen: "curl -s IPdesVZLogger:Port | jq .|cat -n" Zählen, in welcher Zeile der gesuchte Wert steht. Bei der ersten Zeile mit 1 anfangen zu zählen. ')])),_:1}),o(i,{title:"Zeile der Leistung",required:"",min:0,"model-value":n.component.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.line_power"))},null,8,["model-value"]),o(i,{title:"Zeile der exportierten Energie (Ertrag)",min:0,"model-value":n.component.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.line_exported"))},null,8,["model-value"])])}const W=m(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/inverter.vue"]]);export{W as default}; diff --git a/web/settings/assets/inverter-4cc98b34.js b/web/settings/assets/inverter-62de90f4.js similarity index 63% rename from web/settings/assets/inverter-4cc98b34.js rename to web/settings/assets/inverter-62de90f4.js index 8409580a34..7cd677aa83 100644 --- a/web/settings/assets/inverter-4cc98b34.js +++ b/web/settings/assets/inverter-62de90f4.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as a,u as n,l as m,m as u,G as t,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssInverter",mixins:[p]},c={class:"device-fox_ess-inverter"};function f(o,e,b,v,x,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für FoxEss Wechselrichter ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const F=a(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/inverter.vue"]]);export{F as default}; +import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as a,u as n,l as m,m as u,G as t,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssInverter",mixins:[p]},c={class:"device-fox_ess-inverter"};function f(o,e,b,v,x,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für FoxEss Wechselrichter ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const F=a(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/inverter.vue"]]);export{F as default}; diff --git a/web/settings/assets/inverter-29c8bc0a.js b/web/settings/assets/inverter-68f31134.js similarity index 64% rename from web/settings/assets/inverter-29c8bc0a.js rename to web/settings/assets/inverter-68f31134.js index c23c6c4f6b..6d9609511e 100644 --- a/web/settings/assets/inverter-29c8bc0a.js +++ b/web/settings/assets/inverter-68f31134.js @@ -1 +1 @@ -import{C as a}from"./HardwareInstallation-727b5962.js";import{_ as p,u as n,l as m,m as d,G as t,E as l,B as u}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolaredgeInverter",mixins:[a]},_={class:"device-solaredge-inverter"};function f(o,e,g,b,v,w){const r=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),d("div",_,[t(r,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für SolarEdge Wechselrichter ")])),_:1}),t(i,{title:"SolarEdge-Geräte-ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const D=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/inverter.vue"]]);export{D as default}; +import{C as a}from"./HardwareInstallation-3a644290.js";import{_ as p,u as n,l as m,m as d,G as t,E as l,y as u}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolaredgeInverter",mixins:[a]},_={class:"device-solaredge-inverter"};function f(o,e,g,b,v,w){const r=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),d("div",_,[t(r,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für SolarEdge Wechselrichter ")])),_:1}),t(i,{title:"SolarEdge-Geräte-ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const D=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/inverter.vue"]]);export{D as default}; diff --git a/web/settings/assets/inverter-1170f457.js b/web/settings/assets/inverter-82378537.js similarity index 67% rename from web/settings/assets/inverter-1170f457.js rename to web/settings/assets/inverter-82378537.js index 3c2bb95654..5eb43423df 100644 --- a/web/settings/assets/inverter-1170f457.js +++ b/web/settings/assets/inverter-82378537.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as a,u as o,l,m as u,G as n,E as m,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitInverter",mixins:[p]},v={class:"device-openwb-evukit-inverter"};function _(t,e,f,b,w,g){const i=o("openwb-base-heading"),r=o("openwb-base-select-input");return l(),u("div",v,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Wechselrichter ")])),_:1}),n(r,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/inverter.vue"]]);export{$ as default}; +import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as a,u as o,l,m as u,G as n,E as m,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitInverter",mixins:[p]},v={class:"device-openwb-evukit-inverter"};function _(t,e,f,b,w,g){const i=o("openwb-base-heading"),r=o("openwb-base-select-input");return l(),u("div",v,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Wechselrichter ")])),_:1}),n(r,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/inverter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/inverter-387e64b9.js b/web/settings/assets/inverter-896676a9.js similarity index 67% rename from web/settings/assets/inverter-387e64b9.js rename to web/settings/assets/inverter-896676a9.js index f4e0942f4c..d4fce9abee 100644 --- a/web/settings/assets/inverter-387e64b9.js +++ b/web/settings/assets/inverter-896676a9.js @@ -1 +1 @@ -import{C as u}from"./HardwareInstallation-727b5962.js";import{_ as l,u as t,l as m,m as c,G as r,E as i,B as n,A as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfoxInverter",mixins:[u]},b={class:"device-powerfox-inverter"};function g(o,e,v,w,_,x){const a=t("openwb-base-heading"),p=t("openwb-base-text-input");return m(),c("div",b,[r(a,null,{default:i(()=>e[1]||(e[1]=[n(" Einstellungen für Powerfox Wechselrichter ")])),_:1}),r(p,{title:"ID",required:"","model-value":o.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>o.updateConfiguration(d,"configuration.id"))},{help:i(()=>e[2]||(e[2]=[n(" Um die ID herauszufinden mit dem Browser die Adresse "),s("a",{href:"https://backend.powerfox.energy/api/2.0/my/all/devices",target:"_blank",rel:"noopener noreferrer"}," https://backend.powerfox.energy/api/2.0/my/all/devices ",-1),n(" aufrufen und dort Benutzername und Passwort eingeben. Die DeviceID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/Kleinschreibung ist zu beachten! In dem Feld ist nur die Zeichenfolge direkt hinter "),s("span",{class:"font-weight-bold text-monospace",style:{display:"contents"}},' "DeviceID" ',-1),n(" ohne den Doppelpunkt und Anführungszeichen einzutragen. ")])),_:1},8,["model-value"])])}const V=l(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/inverter.vue"]]);export{V as default}; +import{C as u}from"./HardwareInstallation-3a644290.js";import{_ as l,u as t,l as m,m as c,G as r,E as i,y as n,x as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfoxInverter",mixins:[u]},b={class:"device-powerfox-inverter"};function g(o,e,v,w,x,_){const a=t("openwb-base-heading"),p=t("openwb-base-text-input");return m(),c("div",b,[r(a,null,{default:i(()=>e[1]||(e[1]=[n(" Einstellungen für Powerfox Wechselrichter ")])),_:1}),r(p,{title:"ID",required:"","model-value":o.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>o.updateConfiguration(d,"configuration.id"))},{help:i(()=>e[2]||(e[2]=[n(" Um die ID herauszufinden mit dem Browser die Adresse "),s("a",{href:"https://backend.powerfox.energy/api/2.0/my/all/devices",target:"_blank",rel:"noopener noreferrer"}," https://backend.powerfox.energy/api/2.0/my/all/devices ",-1),n(" aufrufen und dort Benutzername und Passwort eingeben. Die DeviceID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/Kleinschreibung ist zu beachten! In dem Feld ist nur die Zeichenfolge direkt hinter "),s("span",{class:"font-weight-bold text-monospace",style:{display:"contents"}},' "DeviceID" ',-1),n(" ohne den Doppelpunkt und Anführungszeichen einzutragen. ")])),_:1},8,["model-value"])])}const $=l(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/inverter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/inverter-b76a9fda.js b/web/settings/assets/inverter-997c828c.js similarity index 64% rename from web/settings/assets/inverter-b76a9fda.js rename to web/settings/assets/inverter-997c828c.js index 2756740bd6..4d9c761dd7 100644 --- a/web/settings/assets/inverter-b76a9fda.js +++ b/web/settings/assets/inverter-997c828c.js @@ -1 +1 @@ -import{C as a}from"./HardwareInstallation-727b5962.js";import{_ as m,u as n,l as p,m as l,G as t,E as u,B as d}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolarmaxInverter",mixins:[a]},_={class:"device-solarmax-inverter"};function b(o,e,f,v,x,g){const r=n("openwb-base-heading"),i=n("openwb-base-number-input");return p(),l("div",_,[t(r,null,{default:u(()=>e[1]||(e[1]=[d(" Einstellungen für Solarmax Wechselrichter ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const I=m(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/inverter.vue"]]);export{I as default}; +import{C as a}from"./HardwareInstallation-3a644290.js";import{_ as m,u as n,l as p,m as l,G as t,E as u,y as d}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolarmaxInverter",mixins:[a]},_={class:"device-solarmax-inverter"};function b(o,e,f,v,x,g){const r=n("openwb-base-heading"),i=n("openwb-base-number-input");return p(),l("div",_,[t(r,null,{default:u(()=>e[1]||(e[1]=[d(" Einstellungen für Solarmax Wechselrichter ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const I=m(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/inverter.vue"]]);export{I as default}; diff --git a/web/settings/assets/inverter-9c2adc35.js b/web/settings/assets/inverter-9c2adc35.js deleted file mode 100644 index ecd2d436f0..0000000000 --- a/web/settings/assets/inverter-9c2adc35.js +++ /dev/null @@ -1 +0,0 @@ -import{C as e}from"./HardwareInstallation-727b5962.js";import{_ as n,l as t,m as i}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const o={name:"DeviceBenningInverter",mixins:[e]},r={class:"device-benning-inverter"};function s(p,c,m,a,_,v){return t(),i("div",r)}const C=n(o,[["render",s],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/benning/benning/inverter.vue"]]);export{C as default}; diff --git a/web/settings/assets/inverter-f5f1a5c8.js b/web/settings/assets/inverter-a427739c.js similarity index 82% rename from web/settings/assets/inverter-f5f1a5c8.js rename to web/settings/assets/inverter-a427739c.js index fc040623a0..c7fdfe96aa 100644 --- a/web/settings/assets/inverter-f5f1a5c8.js +++ b/web/settings/assets/inverter-a427739c.js @@ -1 +1 @@ -import{C as l}from"./HardwareInstallation-727b5962.js";import{_ as m,u as t,l as b,m as v,G as r,E as i,B as a}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSunnyBoyInverter",mixins:[l]},_={class:"device-sunnyboy-inverter"};function g(n,e,y,c,w,C){const s=t("openwb-base-heading"),u=t("openwb-base-button-group-input"),d=t("openwb-base-select-input"),p=t("openwb-base-number-input");return b(),v("div",_,[r(s,null,{default:i(()=>e[3]||(e[3]=[a(" Einstellungen für SMA Sunny Boy/Tripower Wechselrichter ")])),_:1}),r(u,{title:"Hybrid-System",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":n.component.configuration.hybrid,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.hybrid"))},{help:i(()=>e[4]||(e[4]=[a(" Diese Option aktivieren, wenn ein Tripower Smart Energy, Sunny Boy Smart Energy oder ein anderes Hybrid-System verbaut ist. ")])),_:1},8,["model-value"]),r(d,{title:"Version","not-selected":"Bitte auswählen",options:[{value:0,text:"Standard"},{value:1,text:"Core-2"},{value:2,text:"Data Manager/Cluster Controller"}],"model-value":n.component.configuration.version,required:"","onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.version"))},null,8,["model-value"]),r(p,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},{help:i(()=>e[5]||(e[5]=[a(" Für die Standardversion ist die Standardmodbus-ID 3, für Core-2 ist sie 1 und für Data Manager/Cluster Controller 2. Wurde eine abweichende Modbus ID konfiguriert, entsprechend anpassen. ")])),_:1},8,["model-value"])])}const I=m(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/inverter.vue"]]);export{I as default}; +import{C as l}from"./HardwareInstallation-3a644290.js";import{_ as m,u as t,l as b,m as v,G as r,E as i,y as a}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSunnyBoyInverter",mixins:[l]},_={class:"device-sunnyboy-inverter"};function g(n,e,y,c,w,C){const s=t("openwb-base-heading"),u=t("openwb-base-button-group-input"),d=t("openwb-base-select-input"),p=t("openwb-base-number-input");return b(),v("div",_,[r(s,null,{default:i(()=>e[3]||(e[3]=[a(" Einstellungen für SMA Sunny Boy/Tripower Wechselrichter ")])),_:1}),r(u,{title:"Hybrid-System",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":n.component.configuration.hybrid,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.hybrid"))},{help:i(()=>e[4]||(e[4]=[a(" Diese Option aktivieren, wenn ein Tripower Smart Energy, Sunny Boy Smart Energy oder ein anderes Hybrid-System verbaut ist. ")])),_:1},8,["model-value"]),r(d,{title:"Version","not-selected":"Bitte auswählen",options:[{value:0,text:"Standard"},{value:1,text:"Core-2"},{value:2,text:"Data Manager/Cluster Controller"}],"model-value":n.component.configuration.version,required:"","onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.version"))},null,8,["model-value"]),r(p,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},{help:i(()=>e[5]||(e[5]=[a(" Für die Standardversion ist die Standardmodbus-ID 3, für Core-2 ist sie 1 und für Data Manager/Cluster Controller 2. Wurde eine abweichende Modbus ID konfiguriert, entsprechend anpassen. ")])),_:1},8,["model-value"])])}const I=m(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/inverter.vue"]]);export{I as default}; diff --git a/web/settings/assets/inverter-407f4ad4.js b/web/settings/assets/inverter-c0d3b643.js similarity index 78% rename from web/settings/assets/inverter-407f4ad4.js rename to web/settings/assets/inverter-c0d3b643.js index f18aa0e754..8dc0934acf 100644 --- a/web/settings/assets/inverter-407f4ad4.js +++ b/web/settings/assets/inverter-c0d3b643.js @@ -1 +1 @@ -import{C as u}from"./HardwareInstallation-727b5962.js";import{_ as d,u as s,l as b,m as f,G as o,E as i,B as t,A as n,F as p}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceMqttInverter",mixins:[u]},v={class:"device-mqtt-inverter"};function w(r,e,c,B,x,z){const a=s("openwb-base-heading"),l=s("openwb-base-copy-to-clipboard"),m=s("openwb-base-alert");return b(),f("div",v,[o(a,null,{default:i(()=>e[0]||(e[0]=[t(" Einstellungen für MQTT Wechselrichter ")])),_:1}),o(m,{subtype:"info"},{default:i(()=>[e[9]||(e[9]=t(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: ")),n("ul",null,[n("li",null,[o(l,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/pv/"+p(r.component.id)+"/get/power ",1)]),_:1}),e[1]||(e[1]=n("br",null,null,-1)),e[2]||(e[2]=t(" PV-Leistung in Watt als Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) Beispiel: ")),e[3]||(e[3]=n("span",{class:"text-info"},"-123",-1))]),n("li",null,[o(l,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/pv/"+p(r.component.id)+"/get/exported ",1)]),_:1}),e[4]||(e[4]=n("br",null,null,-1)),e[5]||(e[5]=t(" Erzeugte Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),e[6]||(e[6]=n("br",null,null,-1)),e[7]||(e[7]=t(" Beispiel: ")),e[8]||(e[8]=n("span",{class:"text-info"},"123.45",-1))])])]),_:1})])}const N=d(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/inverter.vue"]]);export{N as default}; +import{C as u}from"./HardwareInstallation-3a644290.js";import{_ as d,u as s,l as b,m as f,G as o,E as i,y as t,x as n,F as p}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceMqttInverter",mixins:[u]},v={class:"device-mqtt-inverter"};function w(r,e,c,x,z,B){const a=s("openwb-base-heading"),l=s("openwb-base-copy-to-clipboard"),m=s("openwb-base-alert");return b(),f("div",v,[o(a,null,{default:i(()=>e[0]||(e[0]=[t(" Einstellungen für MQTT Wechselrichter ")])),_:1}),o(m,{subtype:"info"},{default:i(()=>[e[9]||(e[9]=t(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: ")),n("ul",null,[n("li",null,[o(l,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/pv/"+p(r.component.id)+"/get/power ",1)]),_:1}),e[1]||(e[1]=n("br",null,null,-1)),e[2]||(e[2]=t(" PV-Leistung in Watt als Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) Beispiel: ")),e[3]||(e[3]=n("span",{class:"text-info"},"-123",-1))]),n("li",null,[o(l,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/pv/"+p(r.component.id)+"/get/exported ",1)]),_:1}),e[4]||(e[4]=n("br",null,null,-1)),e[5]||(e[5]=t(" Erzeugte Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),e[6]||(e[6]=n("br",null,null,-1)),e[7]||(e[7]=t(" Beispiel: ")),e[8]||(e[8]=n("span",{class:"text-info"},"123.45",-1))])])]),_:1})])}const N=d(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/inverter.vue"]]);export{N as default}; diff --git a/web/settings/assets/inverter-5009ea23.js b/web/settings/assets/inverter-c1990994.js similarity index 65% rename from web/settings/assets/inverter-5009ea23.js rename to web/settings/assets/inverter-c1990994.js index 506378d02c..3aefb29196 100644 --- a/web/settings/assets/inverter-5009ea23.js +++ b/web/settings/assets/inverter-c1990994.js @@ -1 +1 @@ -import{C as a}from"./HardwareInstallation-727b5962.js";import{_ as d,u as n,l as u,m as c,G as t,E as i,B as r}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceMTecInverter",mixins:[a]},_={class:"device-mtec-inverter"};function b(o,e,f,v,g,w){const s=n("openwb-base-heading"),m=n("openwb-base-number-input");return u(),c("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für M-Tec Wechselrichter ")])),_:1}),t(m,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[r(" Die Standard-Modbus-ID von M-Tec ist 247 ")])),_:1},8,["model-value"])])}const V=d(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/inverter.vue"]]);export{V as default}; +import{C as a}from"./HardwareInstallation-3a644290.js";import{_ as d,u as n,l as u,m as c,G as t,E as i,y as r}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceMTecInverter",mixins:[a]},_={class:"device-mtec-inverter"};function b(o,e,f,v,g,w){const s=n("openwb-base-heading"),m=n("openwb-base-number-input");return u(),c("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für M-Tec Wechselrichter ")])),_:1}),t(m,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[r(" Die Standard-Modbus-ID von M-Tec ist 247 ")])),_:1},8,["model-value"])])}const V=d(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/inverter.vue"]]);export{V as default}; diff --git a/web/settings/assets/inverter-8ea576fa.js b/web/settings/assets/inverter-cad24111.js similarity index 72% rename from web/settings/assets/inverter-8ea576fa.js rename to web/settings/assets/inverter-cad24111.js index 7ff835b48c..51ff4f7648 100644 --- a/web/settings/assets/inverter-8ea576fa.js +++ b/web/settings/assets/inverter-cad24111.js @@ -1 +1 @@ -import{C as l}from"./HardwareInstallation-727b5962.js";import{_ as u,u as n,l as d,m as c,G as o,E as r,B as i}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSmahmInverter",mixins:[l]},f={class:"device-smahm-inverter"};function b(t,e,v,g,h,w){const s=n("openwb-base-heading"),a=n("openwb-base-alert"),m=n("openwb-base-number-input");return d(),c("div",f,[o(s,null,{default:r(()=>e[1]||(e[1]=[i(" Einstellungen für SMA-HM/EM Wechselrichter ")])),_:1}),o(a,{subtype:"info"},{default:r(()=>e[2]||(e[2]=[i(' Dies ist nur die richtige Komponente, wenn ein extra EnergyMeter ausschließlich für die PV-Messung vorhanden ist. Wenn nur ein HomeManager vorhanden ist, muss ein Gerät "SMA Sunny Boy" mit der entsprechenden Wechselrichter-Komponente angelegt werden. ')])),_:1}),o(m,{title:"Seriennummer",required:"","model-value":t.component.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.serials"))},null,8,["model-value"])])}const $=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_shm/inverter.vue"]]);export{$ as default}; +import{C as l}from"./HardwareInstallation-3a644290.js";import{_ as u,u as n,l as d,m as c,G as o,E as r,y as i}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSmahmInverter",mixins:[l]},f={class:"device-smahm-inverter"};function b(t,e,v,g,h,w){const s=n("openwb-base-heading"),a=n("openwb-base-alert"),m=n("openwb-base-number-input");return d(),c("div",f,[o(s,null,{default:r(()=>e[1]||(e[1]=[i(" Einstellungen für SMA-HM/EM Wechselrichter ")])),_:1}),o(a,{subtype:"info"},{default:r(()=>e[2]||(e[2]=[i(' Dies ist nur die richtige Komponente, wenn ein extra EnergyMeter ausschließlich für die PV-Messung vorhanden ist. Wenn nur ein HomeManager vorhanden ist, muss ein Gerät "SMA Sunny Boy" mit der entsprechenden Wechselrichter-Komponente angelegt werden. ')])),_:1}),o(m,{title:"Seriennummer",required:"","model-value":t.component.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.serials"))},null,8,["model-value"])])}const $=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_shm/inverter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/inverter-6cea7a86.js b/web/settings/assets/inverter-d75d32f1.js similarity index 68% rename from web/settings/assets/inverter-6cea7a86.js rename to web/settings/assets/inverter-d75d32f1.js index 580dbb6029..173332d202 100644 --- a/web/settings/assets/inverter-6cea7a86.js +++ b/web/settings/assets/inverter-d75d32f1.js @@ -1 +1 @@ -import{C as d}from"./HardwareInstallation-727b5962.js";import{_ as m,u as r,l as u,m as c,G as n,E as i,B as o,A as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const v={name:"DeviceDiscovergyInverter",mixins:[d]},f={class:"device-discovergy-inverter"};function g(t,e,_,b,w,h){const s=r("openwb-base-heading"),a=r("openwb-base-text-input");return u(),c("div",f,[n(s,null,{default:i(()=>e[1]||(e[1]=[o(" Einstellungen für Discovergy Wechselrichter ")])),_:1}),n(a,{title:"Meter-ID",required:"","model-value":t.component.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>e[2]||(e[2]=[o(" Um die ID herauszufinden mit dem Browser die Adresse "),l("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1),o(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")])),_:1},8,["model-value"])])}const z=m(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/inverter.vue"]]);export{z as default}; +import{C as d}from"./HardwareInstallation-3a644290.js";import{_ as m,u as r,l as u,m as c,G as n,E as i,y as o,x as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const v={name:"DeviceDiscovergyInverter",mixins:[d]},f={class:"device-discovergy-inverter"};function g(t,e,_,b,w,x){const s=r("openwb-base-heading"),a=r("openwb-base-text-input");return u(),c("div",f,[n(s,null,{default:i(()=>e[1]||(e[1]=[o(" Einstellungen für Discovergy Wechselrichter ")])),_:1}),n(a,{title:"Meter-ID",required:"","model-value":t.component.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>e[2]||(e[2]=[o(" Um die ID herauszufinden mit dem Browser die Adresse "),l("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1),o(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")])),_:1},8,["model-value"])])}const z=m(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/inverter.vue"]]);export{z as default}; diff --git a/web/settings/assets/inverter-a8875bde.js b/web/settings/assets/inverter-db7c45b0.js similarity index 78% rename from web/settings/assets/inverter-a8875bde.js rename to web/settings/assets/inverter-db7c45b0.js index 2ba659ad97..f0f84fdf91 100644 --- a/web/settings/assets/inverter-a8875bde.js +++ b/web/settings/assets/inverter-db7c45b0.js @@ -1 +1 @@ -import{C as p}from"./HardwareInstallation-727b5962.js";import{_ as u,u as l,l as m,m as g,G as r,E as o,B as n,A as a}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceHttpInverter",mixins:[p]},c={class:"device-http-inverter"};function b(t,e,v,f,w,_){const d=l("openwb-base-heading"),s=l("openwb-base-text-input");return m(),g("div",c,[r(d,null,{default:o(()=>e[2]||(e[2]=[n(" Einstellungen für Http Wechselrichter ")])),_:1}),r(s,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.power_path"))},{help:o(()=>e[3]||(e[3]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),a("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) ")])),_:1},8,["model-value"]),r(s,{title:"Pfad für Zählerstand Erzeugung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.exported_path,"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.exported_path"))},{help:o(()=>e[4]||(e[4]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),a("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),a("br",null,null,-1),n(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")])),_:1},8,["model-value"])])}const S=u(h,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/inverter.vue"]]);export{S as default}; +import{C as p}from"./HardwareInstallation-3a644290.js";import{_ as u,u as l,l as m,m as g,G as r,E as o,y as n,x as a}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceHttpInverter",mixins:[p]},c={class:"device-http-inverter"};function b(t,e,v,f,w,_){const d=l("openwb-base-heading"),s=l("openwb-base-text-input");return m(),g("div",c,[r(d,null,{default:o(()=>e[2]||(e[2]=[n(" Einstellungen für Http Wechselrichter ")])),_:1}),r(s,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.power_path"))},{help:o(()=>e[3]||(e[3]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),a("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) ")])),_:1},8,["model-value"]),r(s,{title:"Pfad für Zählerstand Erzeugung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.exported_path,"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.exported_path"))},{help:o(()=>e[4]||(e[4]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),a("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),a("br",null,null,-1),n(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")])),_:1},8,["model-value"])])}const W=u(h,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/inverter.vue"]]);export{W as default}; diff --git a/web/settings/assets/inverter-ce8f0bd6.js b/web/settings/assets/inverter-e8d6d647.js similarity index 66% rename from web/settings/assets/inverter-ce8f0bd6.js rename to web/settings/assets/inverter-e8d6d647.js index 6c22134948..8a594b95a1 100644 --- a/web/settings/assets/inverter-ce8f0bd6.js +++ b/web/settings/assets/inverter-e8d6d647.js @@ -1 +1 @@ -import{C as a}from"./HardwareInstallation-727b5962.js";import{_ as p,u as t,l as u,m as l,G as n,E as m,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceKostalPikoInverter",mixins:[a]},_={class:"device-kostal-piko-inverter"};function f(o,e,b,v,g,k){const i=t("openwb-base-heading"),r=t("openwb-base-button-group-input");return u(),l("div",_,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für Kostal Piko Wechselrichter ")])),_:1}),n(r,{title:"Speicher",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":o.component.configuration.bat_configured,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.bat_configured"))},null,8,["model-value"])])}const N=p(d,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/inverter.vue"]]);export{N as default}; +import{C as a}from"./HardwareInstallation-3a644290.js";import{_ as p,u as t,l as u,m as l,G as n,E as m,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceKostalPikoInverter",mixins:[a]},_={class:"device-kostal-piko-inverter"};function f(o,e,b,v,g,k){const i=t("openwb-base-heading"),r=t("openwb-base-button-group-input");return u(),l("div",_,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für Kostal Piko Wechselrichter ")])),_:1}),n(r,{title:"Speicher",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":o.component.configuration.bat_configured,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.bat_configured"))},null,8,["model-value"])])}const N=p(d,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/inverter.vue"]]);export{N as default}; diff --git a/web/settings/assets/inverter-6dedf2c0.js b/web/settings/assets/inverter-f287a1d4.js similarity index 71% rename from web/settings/assets/inverter-6dedf2c0.js rename to web/settings/assets/inverter-f287a1d4.js index 3439361f1c..656635d378 100644 --- a/web/settings/assets/inverter-6dedf2c0.js +++ b/web/settings/assets/inverter-f287a1d4.js @@ -1 +1 @@ -import{C as s}from"./HardwareInstallation-727b5962.js";import{_ as a,u as t,l as m,m as l,G as i,E as d,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceVictronInverter",mixins:[s]},_={class:"device-victron-inverter"};function f(o,e,v,g,w,V){const r=t("openwb-base-heading"),p=t("openwb-base-number-input"),u=t("openwb-base-button-group-input");return m(),l("div",_,[i(r,null,{default:d(()=>e[2]||(e[2]=[c(" Einstellungen für Victron Wechselrichter ")])),_:1}),i(p,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(u,{title:"MPPT",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":o.component.configuration.mppt,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.mppt"))},null,8,["model-value"])])}const I=a(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/inverter.vue"]]);export{I as default}; +import{C as s}from"./HardwareInstallation-3a644290.js";import{_ as a,u as t,l as m,m as l,G as i,E as d,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceVictronInverter",mixins:[s]},_={class:"device-victron-inverter"};function f(o,e,v,g,w,V){const r=t("openwb-base-heading"),p=t("openwb-base-number-input"),u=t("openwb-base-button-group-input");return m(),l("div",_,[i(r,null,{default:d(()=>e[2]||(e[2]=[c(" Einstellungen für Victron Wechselrichter ")])),_:1}),i(p,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(u,{title:"MPPT",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":o.component.configuration.mppt,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.mppt"))},null,8,["model-value"])])}const I=a(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/inverter.vue"]]);export{I as default}; diff --git a/web/settings/assets/inverter-e9bb7891.js b/web/settings/assets/inverter-f413f2e1.js similarity index 60% rename from web/settings/assets/inverter-e9bb7891.js rename to web/settings/assets/inverter-f413f2e1.js index 3b817bebb4..3b669f160d 100644 --- a/web/settings/assets/inverter-e9bb7891.js +++ b/web/settings/assets/inverter-f413f2e1.js @@ -1 +1 @@ -import{C as r}from"./HardwareInstallation-727b5962.js";import{_ as n,u as s,l as o,m as i,G as a,E as p,B as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceVartaInverter",mixins:[r]},d={class:"varta-inverter"};function _(l,e,u,v,f,b){const t=s("openwb-base-alert");return o(),i("div",d,[a(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(" Die Leistung des Wechselrichters ist nur verfügbar, wenn dieser über Sensor an Varta angebunden ist. Wechselrichter die per Modbus mit dem Speicher kommunizieren lassen sich nicht über den Varta PV-Sensor auslesen. ")])),_:1})])}const S=n(m,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/varta/inverter.vue"]]);export{S as default}; +import{C as r}from"./HardwareInstallation-3a644290.js";import{_ as n,u as s,l as o,m as i,G as a,E as p,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceVartaInverter",mixins:[r]},d={class:"varta-inverter"};function _(l,e,u,v,f,b){const t=s("openwb-base-alert");return o(),i("div",d,[a(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(" Die Leistung des Wechselrichters ist nur verfügbar, wenn dieser über Sensor an Varta angebunden ist. Wechselrichter die per Modbus mit dem Speicher kommunizieren lassen sich nicht über den Varta PV-Sensor auslesen. ")])),_:1})])}const S=n(m,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/varta/inverter.vue"]]);export{S as default}; diff --git a/web/settings/assets/inverter-f447aa74.js b/web/settings/assets/inverter-f447aa74.js new file mode 100644 index 0000000000..5cc50ce9eb --- /dev/null +++ b/web/settings/assets/inverter-f447aa74.js @@ -0,0 +1 @@ +import{C as e}from"./HardwareInstallation-3a644290.js";import{_ as n,l as t,m as i}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const o={name:"DeviceBenningInverter",mixins:[e]},r={class:"device-benning-inverter"};function s(p,c,m,a,_,v){return t(),i("div",r)}const C=n(o,[["render",s],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/benning/benning/inverter.vue"]]);export{C as default}; diff --git a/web/settings/assets/inverter-991c91e3.js b/web/settings/assets/inverter-f9eaf59e.js similarity index 53% rename from web/settings/assets/inverter-991c91e3.js rename to web/settings/assets/inverter-f9eaf59e.js index 038470100e..c6ad3220aa 100644 --- a/web/settings/assets/inverter-991c91e3.js +++ b/web/settings/assets/inverter-f9eaf59e.js @@ -1 +1 @@ -import{C as m}from"./HardwareInstallation-727b5962.js";import{_ as d,u as o,l as u,m as l,G as t,E as i,B as r}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceEnphaseInverter",mixins:[m]},_={class:"device-enphase-inverter"};function f(n,e,v,b,g,E){const s=o("openwb-base-heading"),p=o("openwb-base-number-input");return u(),l("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Enphase Envoy / IQ Gateway Wechselrichter ")])),_:1}),t(p,{title:"EID",required:"","model-value":n.component.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.eid"))},{help:i(()=>e[2]||(e[2]=[r(' EID für "production" ')])),_:1},8,["model-value"])])}const k=d(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/inverter.vue"]]);export{k as default}; +import{C as m}from"./HardwareInstallation-3a644290.js";import{_ as d,u as o,l as u,m as l,G as t,E as i,y as r}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceEnphaseInverter",mixins:[m]},_={class:"device-enphase-inverter"};function f(n,e,v,b,g,E){const s=o("openwb-base-heading"),p=o("openwb-base-number-input");return u(),l("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Enphase Envoy / IQ Gateway Wechselrichter ")])),_:1}),t(p,{title:"EID",required:"","model-value":n.component.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.eid"))},{help:i(()=>e[2]||(e[2]=[r(' EID für "production" ')])),_:1},8,["model-value"])])}const V=d(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/inverter.vue"]]);export{V as default}; diff --git a/web/settings/assets/inverter_secondary-987240b8.js b/web/settings/assets/inverter_secondary-daf65789.js similarity index 78% rename from web/settings/assets/inverter_secondary-987240b8.js rename to web/settings/assets/inverter_secondary-daf65789.js index 5cb4c1e24f..d7ba92b117 100644 --- a/web/settings/assets/inverter_secondary-987240b8.js +++ b/web/settings/assets/inverter_secondary-daf65789.js @@ -1 +1 @@ -import{C as u}from"./HardwareInstallation-727b5962.js";import{_ as m,u as t,l as f,m as c,G as i,E as s,B as n,A as a,F as g}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceFroniusInverterSecondary",mixins:[u],computed:{powerFlowUrl:{get(){return`http://${this.device.configuration.ip_address}/solar_api/v1/GetPowerFlowRealtimeData.fcgi?Scope=System`}}}},_={class:"device-fronius-inverter-secondary"},v=["href"];function b(r,e,D,k,h,o){const d=t("openwb-base-heading"),l=t("openwb-base-number-input");return f(),c("div",_,[i(d,null,{default:s(()=>e[1]||(e[1]=[n(" Einstellungen für einen sekundären Wechselrichter ")])),_:1}),i(l,{title:"ID","model-value":r.component.configuration.id,min:"0",required:"","onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.id"))},{help:s(()=>[e[2]||(e[2]=n(" Die ID des sekundären Wechselrichters. Diese ist für jede Installation individuell und muss ermittelt werden. Dafür kann der folgende Link verwendet werden. Die ID kann den zurückgegebenen JSON entnommen werden. ")),a("a",{href:o.powerFlowUrl,target:"_blank",rel:"noopener noreferrer"},g(o.powerFlowUrl),9,v),e[3]||(e[3]=a("br",null,null,-1)),e[4]||(e[4]=n(' Im Abschnitt "Body" -> "Data" -> "SecondaryMeters" werden die installierten Zähler angezeigt. Die ID ist die Zahl vor dem Doppelpunkt und den zugehörigen Daten. '))]),_:1},8,["model-value"])])}const V=m(w,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/inverter_secondary.vue"]]);export{V as default}; +import{C as u}from"./HardwareInstallation-3a644290.js";import{_ as m,u as t,l as f,m as c,G as i,E as s,y as n,x as a,F as g}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceFroniusInverterSecondary",mixins:[u],computed:{powerFlowUrl:{get(){return`http://${this.device.configuration.ip_address}/solar_api/v1/GetPowerFlowRealtimeData.fcgi?Scope=System`}}}},_={class:"device-fronius-inverter-secondary"},v=["href"];function b(r,e,D,k,h,o){const d=t("openwb-base-heading"),l=t("openwb-base-number-input");return f(),c("div",_,[i(d,null,{default:s(()=>e[1]||(e[1]=[n(" Einstellungen für einen sekundären Wechselrichter ")])),_:1}),i(l,{title:"ID","model-value":r.component.configuration.id,min:"0",required:"","onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.id"))},{help:s(()=>[e[2]||(e[2]=n(" Die ID des sekundären Wechselrichters. Diese ist für jede Installation individuell und muss ermittelt werden. Dafür kann der folgende Link verwendet werden. Die ID kann den zurückgegebenen JSON entnommen werden. ")),a("a",{href:o.powerFlowUrl,target:"_blank",rel:"noopener noreferrer"},g(o.powerFlowUrl),9,v),e[3]||(e[3]=a("br",null,null,-1)),e[4]||(e[4]=n(' Im Abschnitt "Body" -> "Data" -> "SecondaryMeters" werden die installierten Zähler angezeigt. Die ID ist die Zahl vor dem Doppelpunkt und den zugehörigen Daten. '))]),_:1},8,["model-value"])])}const V=m(w,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/inverter_secondary.vue"]]);export{V as default}; diff --git a/web/settings/assets/io_action-15f350b8.js b/web/settings/assets/io_action-15f350b8.js deleted file mode 100644 index 72f1ba0d5f..0000000000 --- a/web/settings/assets/io_action-15f350b8.js +++ /dev/null @@ -1 +0,0 @@ -import{a as c}from"./IoConfig-bc616ac4.js";import{O as g}from"./OpenwbIoSinglePattern-83dbc24c.js";import{_ as v,u,l as f,m as b,G as p,A as _,E as w,B as h,N as D}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const V={name:"IoActionDimmingDirectControl",components:{OpenwbIoSinglePattern:g},mixins:[c],computed:{value:{get(){return this.ioAction.configuration.input_pattern},set(t){this.updateConfiguration(t,"configuration.input_pattern")}},ioDevicesOutputOptions(){let t=[];return this.availableIoDevices.forEach(e=>{let n=[];Object.keys(e==null?void 0:e.output.digital).forEach(o=>{n.push({text:`${o}`,value:{type:"io",id:e.id,digital_output:o}})}),n.length>0&&t.push({label:e.name,options:n})}),t},availableDevices(){return[{label:"Ladepunkte",options:this.availableChargePoints.map(t=>({value:{type:"cp",id:t.value},text:t.text}))}].concat(this.ioDevicesOutputOptions)}}};function O(t,e,n,o,k,i){var l,s,r;const d=u("openwb-io-single-pattern"),m=u("openwb-base-select-input");return f(),b(D,null,[p(d,{modelValue:i.value,"onUpdate:modelValue":e[0]||(e[0]=a=>i.value=a),"digital-inputs":(s=(l=t.ioDevice)==null?void 0:l.input)==null?void 0:s.digital,"io-device":t.ioDevice},null,8,["modelValue","digital-inputs","io-device"]),e[3]||(e[3]=_("hr",null,null,-1)),p(m,{title:"Verhalten anwenden auf...","not-selected":"Bitte auswählen","empty-value":[],groups:i.availableDevices,multiple:"",required:"",disabled:!(Object.keys(i.value[0].input_matrix).length>0),"model-value":(r=t.ioAction)==null?void 0:r.configuration.devices,"onUpdate:modelValue":e[1]||(e[1]=a=>t.updateConfiguration(a,"configuration.devices"))},{help:w(()=>e[2]||(e[2]=[h(" Bitte die Ladepunkte und/oder digitalen Ausgänge auswählen, auf welche das Verhalten angewendet werden soll. Es können mehrere Einträge ausgewählt werden. ")])),_:1},8,["groups","disabled","model-value"])],64)}const L=v(V,[["render",O],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/io_actions/controllable_consumers/dimming_direct_control/io_action.vue"]]);export{L as default}; diff --git a/web/settings/assets/io_action-465b927d.js b/web/settings/assets/io_action-465b927d.js deleted file mode 100644 index 76781dd542..0000000000 --- a/web/settings/assets/io_action-465b927d.js +++ /dev/null @@ -1 +0,0 @@ -import{a as b}from"./IoConfig-bc616ac4.js";import{O as v}from"./OpenwbIoSinglePattern-83dbc24c.js";import{_ as f,u as l,l as _,m as w,G as u,A as h,E as k,B as x,N as A}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const D={name:"IoActionDimming",components:{OpenwbIoSinglePattern:v},mixins:[b],computed:{value:{get(){return this.ioAction.configuration.input_pattern},set(t){this.updateConfiguration(t,"configuration.input_pattern")}},ioDevicesOutputOptions(){let t=[];return this.availableIoDevices.forEach(e=>{let o=[];Object.keys(e==null?void 0:e.output.digital).forEach(a=>{o.push({text:`${a}`,value:{type:"io",id:e.id,digital_output:a}})}),o.length>0&&t.push({label:e.name,options:o})}),t},availableDevices(){return[{label:"Ladepunkte",options:this.availableChargePoints.map(t=>({value:{type:"cp",id:t.value},text:t.text}))}].concat(this.ioDevicesOutputOptions)}}};function O(t,e,o,a,V,i){var r,s,p,m;const d=l("openwb-io-single-pattern"),g=l("openwb-base-number-input"),c=l("openwb-base-select-input");return _(),w(A,null,[u(d,{modelValue:i.value,"onUpdate:modelValue":e[0]||(e[0]=n=>i.value=n),"digital-inputs":(s=(r=t.ioDevice)==null?void 0:r.input)==null?void 0:s.digital,"io-device":t.ioDevice},null,8,["modelValue","digital-inputs","io-device"]),u(g,{title:"maximale Bezugsleistung",unit:"kW",min:"0",step:"0.1",required:"",disabled:!(Object.keys(i.value[0].input_matrix).length>0),"model-value":((p=t.ioAction)==null?void 0:p.configuration.max_import_power)/1e3,"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateConfiguration(n*1e3,"configuration.max_import_power"))},null,8,["disabled","model-value"]),e[4]||(e[4]=h("hr",null,null,-1)),u(c,{title:"Anwenden auf...",groups:i.availableDevices,required:"",multiple:"",disabled:!(Object.keys(i.value[0].input_matrix).length>0),"model-value":(m=t.ioAction)==null?void 0:m.configuration.devices,"onUpdate:modelValue":e[2]||(e[2]=n=>t.updateConfiguration(n,"configuration.devices"))},{help:k(()=>e[3]||(e[3]=[x(" Bitte die Ladepunkte und/oder digitale Ausgänge auswählen, welche berücksichtigt werden sollen. Es können mehrere Einträge ausgewählt werden. Bei steuerbaren Verbrauchseinrichtungen, die über einen digitalen Ausgang angesteuert werden, wird eine Leistung von 4,2 kW bei aktiver Dimmung angenommen. ")])),_:1},8,["groups","disabled","model-value"])],64)}const q=f(D,[["render",O],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/io_actions/controllable_consumers/dimming/io_action.vue"]]);export{q as default}; diff --git a/web/settings/assets/io_action-def63b3b.js b/web/settings/assets/io_action-def63b3b.js deleted file mode 100644 index 569e719971..0000000000 --- a/web/settings/assets/io_action-def63b3b.js +++ /dev/null @@ -1 +0,0 @@ -import{a as d}from"./IoConfig-bc616ac4.js";import{O as m}from"./OpenwbIoPattern-278f5a90.js";import{_ as c,u as i,l as g,m as v,G as l,E as r,B as s,F as _,A as f,N as w}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"IoActionPowerLevels",components:{OpenwbIoPattern:m},mixins:[d],computed:{value:{get(){return this.ioAction.configuration.input_pattern},set(e){this.updateConfiguration(e,"configuration.input_pattern")}},availableDevices(){return[{label:"Wechselrichter",options:this.availableComponents.filter(e=>e.type==="inverter").map(e=>({value:{type:e.type,id:e.value},text:e.text}))}]}}};function h(e,t,x,B,y,o){var a;const p=i("openwb-io-pattern"),u=i("openwb-base-select-input");return g(),v(w,null,[l(p,{"model-value":o.value,"digital-inputs":e.ioDevice.input.digital,"enable-add-delete":!1,class:"text-center"},{default:r(n=>[s(_(n.pattern.value*100)+" % ",1)]),_:1},8,["model-value","digital-inputs"]),t[2]||(t[2]=f("hr",null,null,-1)),l(u,{title:"Verhalten anwenden auf...","not-selected":"Bitte auswählen","empty-value":null,groups:o.availableDevices,"model-value":(a=e.ioAction)==null?void 0:a.configuration.component_id,"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateConfiguration(n,"configuration.component_id"))},{help:r(()=>t[1]||(t[1]=[s(" Bitte die Erzeugungsanlage auswählen, auf welche das Verhalten angewendet werden soll. Es kann nur eine Erzeugungsanlage ausgewählt werden. ")])),_:1},8,["groups","model-value"])],64)}const F=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/io_actions/generator_systems/power_levels/io_action.vue"]]);export{F as default}; diff --git a/web/settings/assets/io_action-f16988cb.js b/web/settings/assets/io_action-f16988cb.js deleted file mode 100644 index 21b249572e..0000000000 --- a/web/settings/assets/io_action-f16988cb.js +++ /dev/null @@ -1 +0,0 @@ -import{a as d}from"./IoConfig-bc616ac4.js";import{O as m}from"./OpenwbIoPattern-278f5a90.js";import{_ as c,u as r,l as v,m as _,G as o,E as p,A as f,B as g,N as b}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const w={name:"IoActionRippleControlReceiver",components:{OpenwbIoPattern:m},mixins:[d],computed:{value:{get(){return this.ioAction.configuration.input_pattern},set(e){this.updateConfiguration(e,"configuration.input_pattern")}},availableDevices(){return[{label:"Ladepunkte",options:this.availableChargePoints.map(e=>({value:{type:"cp",id:e.value},text:e.text}))}]}}};function x(e,t,h,B,C,a){var l;const i=r("openwb-base-select-input"),u=r("openwb-io-pattern");return v(),_(b,null,[o(u,{"model-value":a.value,"digital-inputs":e.ioDevice.input.digital,"enable-add-delete":!0,"min-patterns":2},{default:p(n=>[o(i,{required:"","not-selected":"Bitte auswählen","empty-value":null,options:[{value:0,text:"sperren"},{value:1,text:"freigeben"}],"model-value":n.pattern.value,"onUpdate:modelValue":s=>n.pattern.value=s},null,8,["model-value","onUpdate:modelValue"])]),_:1},8,["model-value","digital-inputs"]),t[2]||(t[2]=f("hr",null,null,-1)),o(i,{title:"Anwenden auf...","empty-value":[],groups:a.availableDevices,required:"",multiple:"","model-value":(l=e.ioAction)==null?void 0:l.configuration.devices,"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateConfiguration(n,"configuration.devices"))},{help:p(()=>t[1]||(t[1]=[g(" Bitte die Ladepunkte auswählen, auf die das Verhalten angewendet werden soll. Es können mehrere Einträge ausgewählt werden. ")])),_:1},8,["groups","model-value"])],64)}const q=c(w,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/io_actions/controllable_consumers/ripple_control_receiver/io_action.vue"]]);export{q as default}; diff --git a/web/settings/assets/io_device-6aded7c0.js b/web/settings/assets/io_device-6aded7c0.js deleted file mode 100644 index 1b425a99f7..0000000000 --- a/web/settings/assets/io_device-6aded7c0.js +++ /dev/null @@ -1 +0,0 @@ -import{O as m}from"./IoConfig-bc616ac4.js";import{C as f}from"./index-b236cee5.js";import{_ as g,u as s,l as h,m as b,G as a,E as l,B as o,A as n}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./dynamic-import-helper-be004503.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";const _={name:"IoDeviceAddOn",mixins:[f,m],data(){return{mqttTopicsToSubscribe:["openWB/chargepoint/+/config"]}},computed:{configuredChargePoints(){const t=this.getWildcardTopics("openWB/chargepoint/+/config");let e=[];for(const i of Object.values(t))if(["external_openwb"].includes(i.type)){if(e.find(r=>r.value===i.configuration.ip_address))continue;e.push({value:i.configuration.ip_address,text:i.name})}return e},configuredDisplays(){return[]},availableIoSources:{get(){return[{label:"Ladepunkte",options:this.configuredChargePoints},{label:"Zusatzdisplays",options:this.configuredDisplays}].filter(t=>t.options.length>0)}}}},v={class:"io-device-add-on"};function w(t,e,i,r,B,d){const u=s("openwb-base-alert"),p=s("openwb-base-select-input");return h(),b("div",v,[a(u,{subtype:"warning"},{default:l(()=>e[1]||(e[1]=[o(" Die Kontakte der AddOn-Platine sind nicht galvanisch oder optisch getrennt. Es wird dringend empfohlen, mit Koppelrelais zu arbeiten."),n("br",null,null,-1),o(" Weiterhin muss für die Verwendung der Kontakte in einer openWB series2 eine weitere Kabeldurchführung in das Gehäuse gebohrt werden. Da es hierbei zu Undichtigkeiten kommen kann, ist dies nur von fachkundigen Personen durchzuführen."),n("br",null,null,-1),o(" Es wird keine Haftung für Schäden übernommen, die durch die direkte Beschaltung der Kontakte oder eine zusätzliche Bohrung im Gehäuse entstehen."),n("br",null,null,-1),o(" Es wird der Einsatz des Dimm- & Control-Kits empfohlen! ")])),_:1}),a(p,{title:"Installiert auf...","not-selected":"Bitte auswählen","empty-value":null,options:[{value:"localhost",text:"dieser openWB"}],groups:d.availableIoSources,"model-value":t.ioDevice.configuration.host,"onUpdate:modelValue":e[0]||(e[0]=c=>t.updateConfiguration(c,"configuration.host"))},{help:l(()=>e[2]||(e[2]=[o(" Bitte die Komponente auswählen, an der die Add-On-Platine installiert ist."),n("br",null,null,-1),o(" Unterstützt werden:"),n("br",null,null,-1),n("ul",null,[n("li",null,"openWB standalone (als primary oder Zusatzdisplay)"),n("li",null,'openWB Ladepunkte als primary ("interne openWB") und secondary ("externe openWB")')],-1)])),_:1},8,["groups","model-value"])])}const E=g(_,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/io_devices/add_on/io_device.vue"]]);export{E as default}; diff --git a/web/settings/assets/io_device-a553d2c1.js b/web/settings/assets/io_device-a553d2c1.js deleted file mode 100644 index 9227a93162..0000000000 --- a/web/settings/assets/io_device-a553d2c1.js +++ /dev/null @@ -1 +0,0 @@ -import{O as m}from"./IoConfig-bc616ac4.js";import{_ as p,u as r,l as a,m as s,G as t}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const d={name:"IoDeviceDimmKit",mixins:[m]},l={class:"io-device-dimm-kit"};function v(o,e,c,f,_,b){const u=r("openwb-base-text-input"),n=r("openwb-base-number-input");return a(),s("div",l,[t(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.ioDevice.configuration.host,"onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.host"))},null,8,["model-value"]),t(n,{title:"Port",required:"","model-value":o.ioDevice.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>o.updateConfiguration(i,"configuration.port"))},null,8,["model-value"]),t(n,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":o.ioDevice.configuration.modbus_id,"onUpdate:modelValue":e[2]||(e[2]=i=>o.updateConfiguration(i,"configuration.modbus_id"))},null,8,["model-value"])])}const B=p(d,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/io_devices/dimm_kit/io_device.vue"]]);export{B as default}; diff --git a/web/settings/assets/monitoring-df87d8aa.js b/web/settings/assets/monitoring-f3474b05.js similarity index 81% rename from web/settings/assets/monitoring-df87d8aa.js rename to web/settings/assets/monitoring-f3474b05.js index c34cac0876..6a261a7e19 100644 --- a/web/settings/assets/monitoring-df87d8aa.js +++ b/web/settings/assets/monitoring-f3474b05.js @@ -1 +1 @@ -import{M as l}from"./DataManagement-714df651.js";import{_ as d,u as a,l as p,m,G as t,E as g,B as r,A as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"MonitoringZabbix",mixins:[l]},b={class:"monitoring-zabbix"};function v(n,e,_,k,y,w){const u=a("openwb-base-alert"),i=a("openwb-base-text-input");return p(),m("div",b,[t(u,{subtype:"info"},{default:g(()=>e[4]||(e[4]=[r(" Mit dem Monitoring-Service von openWB kannst Du Dein System ganz einfach überwachen. Einfach "),s("a",{href:"https://openwb.de/dummy",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),r(" anmelden und Deine Zugangsdaten erhalten."),s("br",null,null,-1),r("Alternativ kannst Du auch deinen eigenen Zabbix-Server aufsetzen und die Zugangsdaten hier eintragen. ")])),_:1}),t(i,{title:"Zielhost",subtype:"host",required:"","model-value":n.monitoring.configuration.destination_host,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.destination_host"))},null,8,["model-value"]),t(i,{title:"Eigener Hostname",subtype:"user",required:"","model-value":n.monitoring.configuration.hostname,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.hostname"))},null,8,["model-value"]),t(i,{title:"PSK Identifier",subtype:"text",required:"","model-value":n.monitoring.configuration.psk_identifier,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.psk_identifier"))},null,8,["model-value"]),t(i,{title:"PSK Key",subtype:"password",required:"","model-value":n.monitoring.configuration.psk_key,"onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.psk_key"))},null,8,["model-value"])])}const q=d(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/monitoring/zabbix/monitoring.vue"]]);export{q as default}; +import{M as l}from"./DataManagement-f14600c5.js";import{_ as d,u as a,l as p,m,G as t,E as g,y as r,x as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"MonitoringZabbix",mixins:[l]},b={class:"monitoring-zabbix"};function v(n,e,_,k,y,w){const u=a("openwb-base-alert"),i=a("openwb-base-text-input");return p(),m("div",b,[t(u,{subtype:"info"},{default:g(()=>e[4]||(e[4]=[r(" Mit dem Monitoring-Service von openWB kannst Du Dein System ganz einfach überwachen. Einfach "),s("a",{href:"https://openwb.de/dummy",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),r(" anmelden und Deine Zugangsdaten erhalten."),s("br",null,null,-1),r("Alternativ kannst Du auch deinen eigenen Zabbix-Server aufsetzen und die Zugangsdaten hier eintragen. ")])),_:1}),t(i,{title:"Zielhost",subtype:"host",required:"","model-value":n.monitoring.configuration.destination_host,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.destination_host"))},null,8,["model-value"]),t(i,{title:"Eigener Hostname",subtype:"user",required:"","model-value":n.monitoring.configuration.hostname,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.hostname"))},null,8,["model-value"]),t(i,{title:"PSK Identifier",subtype:"text",required:"","model-value":n.monitoring.configuration.psk_identifier,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.psk_identifier"))},null,8,["model-value"]),t(i,{title:"PSK Key",subtype:"password",required:"","model-value":n.monitoring.configuration.psk_key,"onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.psk_key"))},null,8,["model-value"])])}const q=d(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/monitoring/zabbix/monitoring.vue"]]);export{q as default}; diff --git a/web/settings/assets/ripple_control_receiver-14c898b9.js b/web/settings/assets/ripple_control_receiver-14c898b9.js new file mode 100644 index 0000000000..a9723eb472 --- /dev/null +++ b/web/settings/assets/ripple_control_receiver-14c898b9.js @@ -0,0 +1 @@ +import{R as s}from"./GeneralConfig-b0e93144.js";import{_ as a,u as i,l as d,m as u,G as t,E as m,y as _}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"RippleControlReceiverDimmKit",mixins:[s]},c={class:"ripple-control-receiver-dimm-kit"};function b(o,e,v,g,w,C){const p=i("openwb-base-alert"),l=i("openwb-base-text-input"),r=i("openwb-base-number-input");return d(),u("div",c,[t(p,{subtype:"info"},{default:m(()=>e[3]||(e[3]=[_(" In der aktuellen Implementierung werden Kontakt 1 und 2 des Dimm-Kits ausgewertet. Wenn mindestens ein Kontakt offen ist, wird die Ladung gesperrt. Wenn beide Kontakte geschlossen sind, darf geladen werden. ")])),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.rippleControlReceiver.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"","model-value":o.rippleControlReceiver.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":o.rippleControlReceiver.configuration.modbus_id,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const B=a(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/dimm_kit/ripple_control_receiver.vue"]]);export{B as default}; diff --git a/web/settings/assets/ripple_control_receiver-cd0099ce.js b/web/settings/assets/ripple_control_receiver-cd0099ce.js new file mode 100644 index 0000000000..6067bdfb90 --- /dev/null +++ b/web/settings/assets/ripple_control_receiver-cd0099ce.js @@ -0,0 +1 @@ +import{R as t}from"./GeneralConfig-b0e93144.js";import{_ as r,u as n,l as i,m as p,G as s,E as a,y as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const l={name:"RippleControlReceiverGpio",mixins:[t]},_={class:"ripple-control-receiver-gpio"};function m(d,e,f,u,v,g){const o=n("openwb-base-alert");return i(),p("div",_,[s(o,{subtype:"info"},{default:a(()=>e[0]||(e[0]=[c(" Wenn mindestens ein Kontakt geschlossen ist, wird die Ladung gesperrt. Wenn beide Kontakte offen sind, darf geladen werden. ")])),_:1})])}const h=r(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/gpio/ripple_control_receiver.vue"]]);export{h as default}; diff --git a/web/settings/assets/vehicle-9213f7f9.js b/web/settings/assets/vehicle-0951b87d.js similarity index 68% rename from web/settings/assets/vehicle-9213f7f9.js rename to web/settings/assets/vehicle-0951b87d.js index 37775860ac..14a01a0a9a 100644 --- a/web/settings/assets/vehicle-9213f7f9.js +++ b/web/settings/assets/vehicle-0951b87d.js @@ -1 +1 @@ -import{V as a}from"./VehicleConfig-e49e5ddc.js";import{_ as s,u as p,l as u,m,G as n,E as r,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const d={name:"VehicleSocHttp",mixins:[a]},c={class:"vehicle-soc-http"};function v(t,e,f,h,g,w){const i=p("openwb-base-text-input");return u(),m("div",c,[n(i,{title:"SoC URL",subtype:"url",required:"","model-value":t.vehicle.configuration.soc_url,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.soc_url"))},{help:r(()=>e[2]||(e[2]=[l(" Es wird vom Server eine Zahl (Float mit Punkt als Dezimaltrennzeichen oder Integer) erwartet, welche den aktuellen Ladestand in Prozent (0 bis 100) zurückgibt. ")])),_:1},8,["model-value"]),n(i,{title:"Reichweiten URL",subtype:"url","model-value":t.vehicle.configuration.range_url,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.range_url"))},{help:r(()=>e[3]||(e[3]=[l(" Es wird vom Server eine Zahl (Float mit Punkt als Dezimaltrennzeichen oder Integer) erwartet, welche die aktuelle Reichweite in Kilometern darstellt. Diese Angabe ist optional. ")])),_:1},8,["model-value"])])}const R=s(d,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/http/vehicle.vue"]]);export{R as default}; +import{V as a}from"./VehicleConfig-a49bda81.js";import{_ as s,u as p,l as u,m,G as n,E as r,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const d={name:"VehicleSocHttp",mixins:[a]},c={class:"vehicle-soc-http"};function v(t,e,f,h,g,w){const i=p("openwb-base-text-input");return u(),m("div",c,[n(i,{title:"SoC URL",subtype:"url",required:"","model-value":t.vehicle.configuration.soc_url,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.soc_url"))},{help:r(()=>e[2]||(e[2]=[l(" Es wird vom Server eine Zahl (Float mit Punkt als Dezimaltrennzeichen oder Integer) erwartet, welche den aktuellen Ladestand in Prozent (0 bis 100) zurückgibt. ")])),_:1},8,["model-value"]),n(i,{title:"Reichweiten URL",subtype:"url","model-value":t.vehicle.configuration.range_url,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.range_url"))},{help:r(()=>e[3]||(e[3]=[l(" Es wird vom Server eine Zahl (Float mit Punkt als Dezimaltrennzeichen oder Integer) erwartet, welche die aktuelle Reichweite in Kilometern darstellt. Diese Angabe ist optional. ")])),_:1},8,["model-value"])])}const S=s(d,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/http/vehicle.vue"]]);export{S as default}; diff --git a/web/settings/assets/vehicle-0cab1a3e.js b/web/settings/assets/vehicle-0f1f6912.js similarity index 84% rename from web/settings/assets/vehicle-0cab1a3e.js rename to web/settings/assets/vehicle-0f1f6912.js index 837b3e7f30..b04d29d961 100644 --- a/web/settings/assets/vehicle-0cab1a3e.js +++ b/web/settings/assets/vehicle-0f1f6912.js @@ -1 +1 @@ -import{V as s}from"./VehicleConfig-e49e5ddc.js";import{_ as p,u,l as d,m as v,G as a,E as n,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocEVCC",mixins:[s]},g={class:"vehicle-soc-evcc"};function x(t,e,f,V,w,b){const i=u("openwb-base-text-input"),r=u("openwb-base-select-input");return d(),v("div",g,[a(i,{title:"EVCC Sponsor Token",subtype:"password",required:"","model-value":t.vehicle.configuration.sponsor_token,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.sponsor_token"))},{help:n(()=>e[5]||(e[5]=[l(" EVCC Sponsor Token angeben, dies ist notwendig um SoC über EVCC abrufen zu können. https://sponsor.evcc.io/ ")])),_:1},8,["model-value"]),a(i,{title:"Benutzername",subtype:"text",required:"","model-value":t.vehicle.configuration.user_id,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.user_id"))},{help:n(()=>e[6]||(e[6]=[l(" Benutzername beim Fahrzeughersteller. ")])),_:1},8,["model-value"]),a(i,{title:"Kennwort",subtype:"password",required:"","model-value":t.vehicle.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=o=>t.updateConfiguration(o,"configuration.password"))},{help:n(()=>e[7]||(e[7]=[l(" Kennwort beim Fahrzeughersteller. ")])),_:1},8,["model-value"]),a(r,{title:"Marke",required:"","not-selected":"Bitte auswählen",options:[{value:"aiways",text:"Aiways"},{value:"audi",text:"Audi"},{value:"etron",text:"Audi e-tron"},{value:"bmw",text:"BMW"},{value:"dacia",text:"Dacia"},{value:"fiat",text:"Fiat"},{value:"ford",text:"Ford"},{value:"hyundai",text:"Hyundai"},{value:"jaguar",text:"Jaguar"},{value:"kia",text:"Kia"},{value:"landrover",text:"Landrover"},{value:"mg",text:"Mg"},{value:"mini",text:"Mini"},{value:"nissan",text:"Nissan"},{value:"carwings",text:"Nissan (Leaf pre 2019)"},{value:"ovms",text:"OVMS"},{value:"polestar",text:"Polestar"},{value:"porsche",text:"Porsche"},{value:"renault",text:"Renault"},{value:"seat",text:"Seat"},{value:"cupra",text:"Seat Cupra"},{value:"skoda",text:"Škoda"},{value:"enyaq",text:"Škoda Enyaq"},{value:"smart",text:"Smart"},{value:"smart-hello",text:"Smart-Hello"},{value:"template",text:"Template"},{value:"volvo",text:"Volvo"},{value:"volvo-connected",text:"Volvo-Connected"},{value:"vw",text:"VW"},{value:"id",text:"VW ID"}],"model-value":t.vehicle.configuration.vehicle_type,"onUpdate:modelValue":e[3]||(e[3]=o=>t.updateConfiguration(o,"configuration.vehicle_type"))},{help:n(()=>e[8]||(e[8]=[l(" Marke aus des Fahrzeugs. ")])),_:1},8,["model-value"]),a(i,{title:"VIN",subtype:"text","model-value":t.vehicle.configuration.VIN,"onUpdate:modelValue":e[4]||(e[4]=o=>t.updateConfiguration(o,"configuration.VIN"))},{help:n(()=>e[9]||(e[9]=[l(" Fahrgestellnummer (VIN) des Fahrzeugs. Notwendig falls mehrere Fahrzeuge im Account des Herstellers vorhanden sind. ")])),_:1},8,["model-value"])])}const F=p(m,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evcc/vehicle.vue"]]);export{F as default}; +import{V as s}from"./VehicleConfig-a49bda81.js";import{_ as p,u,l as d,m as v,G as a,E as n,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocEVCC",mixins:[s]},g={class:"vehicle-soc-evcc"};function x(t,e,f,V,w,b){const i=u("openwb-base-text-input"),r=u("openwb-base-select-input");return d(),v("div",g,[a(i,{title:"EVCC Sponsor Token",subtype:"password",required:"","model-value":t.vehicle.configuration.sponsor_token,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.sponsor_token"))},{help:n(()=>e[5]||(e[5]=[l(" EVCC Sponsor Token angeben, dies ist notwendig um SoC über EVCC abrufen zu können. https://sponsor.evcc.io/ ")])),_:1},8,["model-value"]),a(i,{title:"Benutzername",subtype:"text",required:"","model-value":t.vehicle.configuration.user_id,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.user_id"))},{help:n(()=>e[6]||(e[6]=[l(" Benutzername beim Fahrzeughersteller. ")])),_:1},8,["model-value"]),a(i,{title:"Kennwort",subtype:"password",required:"","model-value":t.vehicle.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=o=>t.updateConfiguration(o,"configuration.password"))},{help:n(()=>e[7]||(e[7]=[l(" Kennwort beim Fahrzeughersteller. ")])),_:1},8,["model-value"]),a(r,{title:"Marke",required:"","not-selected":"Bitte auswählen",options:[{value:"aiways",text:"Aiways"},{value:"audi",text:"Audi"},{value:"etron",text:"Audi e-tron"},{value:"bmw",text:"BMW"},{value:"dacia",text:"Dacia"},{value:"fiat",text:"Fiat"},{value:"ford",text:"Ford"},{value:"hyundai",text:"Hyundai"},{value:"jaguar",text:"Jaguar"},{value:"kia",text:"Kia"},{value:"landrover",text:"Landrover"},{value:"mg",text:"Mg"},{value:"mini",text:"Mini"},{value:"nissan",text:"Nissan"},{value:"carwings",text:"Nissan (Leaf pre 2019)"},{value:"ovms",text:"OVMS"},{value:"polestar",text:"Polestar"},{value:"porsche",text:"Porsche"},{value:"renault",text:"Renault"},{value:"seat",text:"Seat"},{value:"cupra",text:"Seat Cupra"},{value:"skoda",text:"Škoda"},{value:"enyaq",text:"Škoda Enyaq"},{value:"smart",text:"Smart"},{value:"smart-hello",text:"Smart-Hello"},{value:"template",text:"Template"},{value:"volvo",text:"Volvo"},{value:"volvo-connected",text:"Volvo-Connected"},{value:"vw",text:"VW"},{value:"id",text:"VW ID"}],"model-value":t.vehicle.configuration.vehicle_type,"onUpdate:modelValue":e[3]||(e[3]=o=>t.updateConfiguration(o,"configuration.vehicle_type"))},{help:n(()=>e[8]||(e[8]=[l(" Marke aus des Fahrzeugs. ")])),_:1},8,["model-value"]),a(i,{title:"VIN",subtype:"text","model-value":t.vehicle.configuration.VIN,"onUpdate:modelValue":e[4]||(e[4]=o=>t.updateConfiguration(o,"configuration.VIN"))},{help:n(()=>e[9]||(e[9]=[l(" Fahrgestellnummer (VIN) des Fahrzeugs. Notwendig falls mehrere Fahrzeuge im Account des Herstellers vorhanden sind. ")])),_:1},8,["model-value"])])}const B=p(m,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evcc/vehicle.vue"]]);export{B as default}; diff --git a/web/settings/assets/vehicle-18edee3a.js b/web/settings/assets/vehicle-18edee3a.js deleted file mode 100644 index 6c3489eb94..0000000000 --- a/web/settings/assets/vehicle-18edee3a.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as h,a4 as c,a5 as _,a6 as f,u as r,l as b,m as k,G as i,E as a,B as s,A as v}from"./vendor-ad7c30fd.js";import{a as w}from"./vendor-axios-8313efad.js";import{C}from"./index-b236cee5.js";import{V as y}from"./VehicleConfig-e49e5ddc.js";import"./vendor-sortablejs-20ba8ac2.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./dynamic-import-helper-be004503.js";const T={name:"VehicleSocTesla",mixins:[C,y],data(){return{tesla_api_oauth2:"https://auth.tesla.com/oauth2/v3",tesla_api_redirect:"https://auth.tesla.com/void/callback",tesla_api_owners:"https://owner-api.teslamotors.com/oauth/token",user_agent:"Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",code_challenge:null,code_verifier:null,page_not_found_url:null}},methods:{tesla_login_window(){this.tesla_gen_challenge();var e=window.open(this.tesla_gen_url(),"TeslaLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");e.focus()},tesla_gen_challenge(){this.code_verifier=c.encode(_.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=_.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=c.encode(e),console.debug(this.code_verifier,this.code_verifier.length,this.code_challenge,this.code_challenge.length)},tesla_gen_url(){const e=new URL(this.tesla_api_oauth2+"/authorize/");return e.searchParams.append("client_id","ownerapi"),e.searchParams.append("code_challenge",this.code_challenge),e.searchParams.append("code_challenge_method","S256"),e.searchParams.append("redirect_uri",this.tesla_api_redirect),e.searchParams.append("response_type","code"),e.searchParams.append("scope","openid email offline_access"),e.searchParams.append("state","myteslaapp"),e},async tesla_login(){const e=f.parse(this.page_not_found_url,!0).query;if(console.debug("queryObject",e),!e.code){console.error("Something is wrong... Code does not exist in URL"),this.$root.postClientMessage("Die eingegebene URL ist ungültig.","danger");return}const n={url:this.tesla_api_owners,user_agent:this.user_agent,data:{grant_type:"authorization_code",client_id:"ownerapi",code:e.code,code_verifier:this.code_verifier,redirect_uri:this.tesla_api_redirect}};try{const o=await w.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/vehicles/tesla/tesla.php",JSON.parse(JSON.stringify(n)),{headers:{"Content-Type":"application/json",Accept:"application/json"}});console.debug("response",o),this.updateConfiguration({access_token:o.data.access_token,refresh_token:o.data.refresh_token,created_at:o.data.created_at,expires_in:o.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(o){console.error(o),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!
"+o+"
","danger")}}}},B={class:"vehicle-soc-tesla"};function U(e,n,o,z,l,p){const u=r("openwb-base-number-input"),m=r("openwb-base-heading"),g=r("openwb-base-button-input"),d=r("openwb-base-text-input");return b(),k("div",B,[i(u,{title:"Fahrzeug-ID",required:"",min:0,"model-value":e.vehicle.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=t=>e.updateConfiguration(t,"configuration.tesla_ev_num"))},{help:a(()=>n[6]||(n[6]=[s(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')])),_:1},8,["model-value"]),i(m,null,{default:a(()=>n[7]||(n[7]=[s("Token abrufen oder eingeben")])),_:1}),i(g,{title:"1. Anmelden","button-text":"Bei Tesla Anmelden",subtype:"success",onButtonClicked:p.tesla_login_window},{help:a(()=>n[8]||(n[8]=[s(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")])),_:1},8,["onButtonClicked"]),i(d,{modelValue:l.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=t=>l.page_not_found_url=t),title:"2. URL kopieren und einfügen",subtype:"url","empty-value":null},{help:a(()=>n[9]||(n[9]=[s(' Hier die komplette URL (Text in der Adresszeile) aus dem geöffneten Browserfenster einfügen, wenn dort "Page Not Found" angezeigt wird. ')])),_:1},8,["modelValue"]),i(g,{title:"3. Token abrufen","button-text":"Jetzt abrufen",subtype:"success",disabled:l.page_not_found_url===null,onButtonClicked:p.tesla_login},{help:a(()=>n[10]||(n[10]=[s(" Der in der eingegebenen URL enthaltene Code wird genutzt, um ein Anmeldetoken bei Tesla abzurufen. Ist dies erfolgreich, so werden die Daten des Token in den weiteren Feldern automatisch eingegeben. ")])),_:1},8,["disabled","onButtonClicked"]),n[13]||(n[13]=v("hr",null,null,-1)),i(d,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=t=>e.updateConfiguration(t,"configuration.token.access_token"))},null,8,["model-value"]),i(d,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=t=>e.updateConfiguration(t,"configuration.token.refresh_token"))},null,8,["model-value"]),i(u,{title:"Erstellt um",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateConfiguration(t,"configuration.token.created_at"))},{help:a(()=>n[11]||(n[11]=[s(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")])),_:1},8,["model-value"]),i(u,{title:"Ungültig in",unit:"s",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateConfiguration(t,"configuration.token.expires_in"))},{help:a(()=>n[12]||(n[12]=[s(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")])),_:1},8,["model-value"])])}const D=h(T,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{D as default}; diff --git a/web/settings/assets/vehicle-711a16c0.js b/web/settings/assets/vehicle-1c25409c.js similarity index 82% rename from web/settings/assets/vehicle-711a16c0.js rename to web/settings/assets/vehicle-1c25409c.js index b1e9f31749..62ed5e0c7b 100644 --- a/web/settings/assets/vehicle-711a16c0.js +++ b/web/settings/assets/vehicle-1c25409c.js @@ -1 +1 @@ -import{V as u}from"./VehicleConfig-e49e5ddc.js";import{_ as d,u as l,l as s,m as p,G as n,E as m,B as a,A as v}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"VehicleSocAiways",mixins:[u]},g={class:"vehicle-soc-aiways"};function c(o,e,w,V,b,C){const r=l("openwb-base-alert"),t=l("openwb-base-text-input");return s(),p("div",g,[n(r,{subtype:"info"},{default:m(()=>e[6]||(e[6]=[a(" Alle Werte müssen von der Aiways App abgefangen werden. Dazu kann diese "),v("a",{href:"https://community.home-assistant.io/t/read-aiways-u5-state-of-charge/466441/5"}," Anleitung ",-1),a(" verwendet werden. ")])),_:1}),n(t,{title:"User ID",required:"","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.user_id"))},null,8,["model-value"]),n(t,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[1]||(e[1]=i=>o.updateConfiguration(i,"configuration.vin"))},null,8,["model-value"]),n(t,{title:"Device ID",required:"","model-value":o.vehicle.configuration.device_id,"onUpdate:modelValue":e[2]||(e[2]=i=>o.updateConfiguration(i,"configuration.device_id"))},null,8,["model-value"]),n(t,{title:"Register ID",required:"","model-value":o.vehicle.configuration.register_id,"onUpdate:modelValue":e[3]||(e[3]=i=>o.updateConfiguration(i,"configuration.register_id"))},null,8,["model-value"]),n(t,{title:"Token",required:"","model-value":o.vehicle.configuration.token,"onUpdate:modelValue":e[4]||(e[4]=i=>o.updateConfiguration(i,"configuration.token"))},null,8,["model-value"]),n(t,{title:"Condition URL",subtype:"url",required:"","model-value":o.vehicle.configuration.condition_url,"onUpdate:modelValue":e[5]||(e[5]=i=>o.updateConfiguration(i,"configuration.condition_url"))},null,8,["model-value"])])}const I=d(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/aiways/vehicle.vue"]]);export{I as default}; +import{V as u}from"./VehicleConfig-a49bda81.js";import{_ as d,u as l,l as s,m as p,G as n,E as m,y as a,x as v}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"VehicleSocAiways",mixins:[u]},g={class:"vehicle-soc-aiways"};function c(o,e,w,V,b,C){const r=l("openwb-base-alert"),t=l("openwb-base-text-input");return s(),p("div",g,[n(r,{subtype:"info"},{default:m(()=>e[6]||(e[6]=[a(" Alle Werte müssen von der Aiways App abgefangen werden. Dazu kann diese "),v("a",{href:"https://community.home-assistant.io/t/read-aiways-u5-state-of-charge/466441/5"}," Anleitung ",-1),a(" verwendet werden. ")])),_:1}),n(t,{title:"User ID",required:"","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.user_id"))},null,8,["model-value"]),n(t,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[1]||(e[1]=i=>o.updateConfiguration(i,"configuration.vin"))},null,8,["model-value"]),n(t,{title:"Device ID",required:"","model-value":o.vehicle.configuration.device_id,"onUpdate:modelValue":e[2]||(e[2]=i=>o.updateConfiguration(i,"configuration.device_id"))},null,8,["model-value"]),n(t,{title:"Register ID",required:"","model-value":o.vehicle.configuration.register_id,"onUpdate:modelValue":e[3]||(e[3]=i=>o.updateConfiguration(i,"configuration.register_id"))},null,8,["model-value"]),n(t,{title:"Token",required:"","model-value":o.vehicle.configuration.token,"onUpdate:modelValue":e[4]||(e[4]=i=>o.updateConfiguration(i,"configuration.token"))},null,8,["model-value"]),n(t,{title:"Condition URL",subtype:"url",required:"","model-value":o.vehicle.configuration.condition_url,"onUpdate:modelValue":e[5]||(e[5]=i=>o.updateConfiguration(i,"configuration.condition_url"))},null,8,["model-value"])])}const I=d(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/aiways/vehicle.vue"]]);export{I as default}; diff --git a/web/settings/assets/vehicle-1fd068b4.js b/web/settings/assets/vehicle-1fd068b4.js new file mode 100644 index 0000000000..9d455ea2f5 --- /dev/null +++ b/web/settings/assets/vehicle-1fd068b4.js @@ -0,0 +1 @@ +import{_ as h,a4 as c,a5 as _,a6 as f,u as r,l as b,m as k,G as i,E as a,y as s,x as v}from"./vendor-ea36120f.js";import{a as w}from"./vendor-axios-1f03ee31.js";import{C as y}from"./index-cc8f65ba.js";import{V as C}from"./VehicleConfig-a49bda81.js";import"./vendor-sortablejs-c6aaccb3.js";import"./vendor-fortawesome-433470db.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./dynamic-import-helper-be004503.js";const T={name:"VehicleSocTesla",mixins:[y,C],data(){return{tesla_api_oauth2:"https://auth.tesla.com/oauth2/v3",tesla_api_redirect:"https://auth.tesla.com/void/callback",tesla_api_owners:"https://owner-api.teslamotors.com/oauth/token",user_agent:"Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",code_challenge:null,code_verifier:null,page_not_found_url:null}},methods:{tesla_login_window(){this.tesla_gen_challenge();var e=window.open(this.tesla_gen_url(),"TeslaLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");e.focus()},tesla_gen_challenge(){this.code_verifier=c.encode(_.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=_.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=c.encode(e),console.debug(this.code_verifier,this.code_verifier.length,this.code_challenge,this.code_challenge.length)},tesla_gen_url(){const e=new URL(this.tesla_api_oauth2+"/authorize/");return e.searchParams.append("client_id","ownerapi"),e.searchParams.append("code_challenge",this.code_challenge),e.searchParams.append("code_challenge_method","S256"),e.searchParams.append("redirect_uri",this.tesla_api_redirect),e.searchParams.append("response_type","code"),e.searchParams.append("scope","openid email offline_access"),e.searchParams.append("state","myteslaapp"),e},async tesla_login(){const e=f.parse(this.page_not_found_url,!0).query;if(console.debug("queryObject",e),!e.code){console.error("Something is wrong... Code does not exist in URL"),this.$root.postClientMessage("Die eingegebene URL ist ungültig.","danger");return}const n={url:this.tesla_api_owners,user_agent:this.user_agent,data:{grant_type:"authorization_code",client_id:"ownerapi",code:e.code,code_verifier:this.code_verifier,redirect_uri:this.tesla_api_redirect}};try{const o=await w.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/vehicles/tesla/tesla.php",JSON.parse(JSON.stringify(n)),{headers:{"Content-Type":"application/json",Accept:"application/json"}});console.debug("response",o),this.updateConfiguration({access_token:o.data.access_token,refresh_token:o.data.refresh_token,created_at:o.data.created_at,expires_in:o.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(o){console.error(o),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!
"+o+"
","danger")}}}},U={class:"vehicle-soc-tesla"};function B(e,n,o,z,l,p){const u=r("openwb-base-number-input"),m=r("openwb-base-heading"),g=r("openwb-base-button-input"),d=r("openwb-base-text-input");return b(),k("div",U,[i(u,{title:"Fahrzeug-ID",required:"",min:0,"model-value":e.vehicle.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=t=>e.updateConfiguration(t,"configuration.tesla_ev_num"))},{help:a(()=>n[6]||(n[6]=[s(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')])),_:1},8,["model-value"]),i(m,null,{default:a(()=>n[7]||(n[7]=[s("Token abrufen oder eingeben")])),_:1}),i(g,{title:"1. Anmelden","button-text":"Bei Tesla Anmelden",subtype:"success",onButtonClicked:p.tesla_login_window},{help:a(()=>n[8]||(n[8]=[s(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")])),_:1},8,["onButtonClicked"]),i(d,{modelValue:l.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=t=>l.page_not_found_url=t),title:"2. URL kopieren und einfügen",subtype:"url","empty-value":null},{help:a(()=>n[9]||(n[9]=[s(' Hier die komplette URL (Text in der Adresszeile) aus dem geöffneten Browserfenster einfügen, wenn dort "Page Not Found" angezeigt wird. ')])),_:1},8,["modelValue"]),i(g,{title:"3. Token abrufen","button-text":"Jetzt abrufen",subtype:"success",disabled:l.page_not_found_url===null,onButtonClicked:p.tesla_login},{help:a(()=>n[10]||(n[10]=[s(" Der in der eingegebenen URL enthaltene Code wird genutzt, um ein Anmeldetoken bei Tesla abzurufen. Ist dies erfolgreich, so werden die Daten des Token in den weiteren Feldern automatisch eingegeben. ")])),_:1},8,["disabled","onButtonClicked"]),n[13]||(n[13]=v("hr",null,null,-1)),i(d,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=t=>e.updateConfiguration(t,"configuration.token.access_token"))},null,8,["model-value"]),i(d,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=t=>e.updateConfiguration(t,"configuration.token.refresh_token"))},null,8,["model-value"]),i(u,{title:"Erstellt um",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateConfiguration(t,"configuration.token.created_at"))},{help:a(()=>n[11]||(n[11]=[s(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")])),_:1},8,["model-value"]),i(u,{title:"Ungültig in",unit:"s",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateConfiguration(t,"configuration.token.expires_in"))},{help:a(()=>n[12]||(n[12]=[s(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")])),_:1},8,["model-value"])])}const x=h(T,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{x as default}; diff --git a/web/settings/assets/vehicle-d5f5aff5.js b/web/settings/assets/vehicle-28d453ca.js similarity index 75% rename from web/settings/assets/vehicle-d5f5aff5.js rename to web/settings/assets/vehicle-28d453ca.js index 2e857dd9d5..26a689469d 100644 --- a/web/settings/assets/vehicle-d5f5aff5.js +++ b/web/settings/assets/vehicle-28d453ca.js @@ -1 +1 @@ -import{V as a}from"./VehicleConfig-e49e5ddc.js";import{_ as l,u as d,l as u,m as p,G as i,E as r,B as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocSkodaconnect",mixins:[a]},v={class:"vehicle-soc-skodaconnect"};function f(o,e,c,g,w,V){const t=d("openwb-base-text-input");return u(),p("div",v,[i(t,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung an den SkodaConnect-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung an den SkodaConnect-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[5]||(e[5]=[s(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const x=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/skodaconnect/vehicle.vue"]]);export{x as default}; +import{V as a}from"./VehicleConfig-a49bda81.js";import{_ as l,u as d,l as u,m as p,G as i,E as r,y as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocSkodaconnect",mixins:[a]},v={class:"vehicle-soc-skodaconnect"};function f(o,e,c,g,w,V){const t=d("openwb-base-text-input");return u(),p("div",v,[i(t,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung an den SkodaConnect-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung an den SkodaConnect-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[5]||(e[5]=[s(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const x=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/skodaconnect/vehicle.vue"]]);export{x as default}; diff --git a/web/settings/assets/vehicle-048a17cd.js b/web/settings/assets/vehicle-2da6d3ec.js similarity index 90% rename from web/settings/assets/vehicle-048a17cd.js rename to web/settings/assets/vehicle-2da6d3ec.js index c96f5f4cbf..2ea4061809 100644 --- a/web/settings/assets/vehicle-048a17cd.js +++ b/web/settings/assets/vehicle-2da6d3ec.js @@ -1 +1 @@ -import{V as p}from"./VehicleConfig-e49e5ddc.js";import{_ as m,u as s,l as g,m as f,G as i,E as r,B as t,A as n}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"VehicleSocBmwBimmerConnected",mixins:[p]},v={class:"vehicle-soc-bmwbc"},w={href:"https://bimmer-connected.readthedocs.io/en/latest/captcha/rest_of_world.html",target:"_blank"};function C(o,e,k,B,V,S){const u=s("openwb-base-text-input"),a=s("font-awesome-icon"),d=s("openwb-base-button-group-input");return g(),f("div",v,[i(u,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=l=>o.updateConfiguration(l,"configuration.user_id"))},{help:r(()=>e[5]||(e[5]=[t(" Der Benutzername für die Anmeldung an den BMW-Servern. ")])),_:1},8,["model-value"]),i(u,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=l=>o.updateConfiguration(l,"configuration.password"))},{help:r(()=>e[6]||(e[6]=[t(" Das Passwort für die Anmeldung an den BMW-Servern. ")])),_:1},8,["model-value"]),i(u,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=l=>o.updateConfiguration(l,"configuration.vin"))},{help:r(()=>e[7]||(e[7]=[t(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"]),i(u,{title:"Captcha-Token",required:"","model-value":o.vehicle.configuration.captcha_token,"onUpdate:modelValue":e[3]||(e[3]=l=>o.updateConfiguration(l,"configuration.captcha_token"))},{help:r(()=>[e[17]||(e[17]=t(" Zum erstmaligen Login z.B. nach einem Neustart ist ein ")),e[18]||(e[18]=n("b",null,"aktuelles Captcha-Token",-1)),e[19]||(e[19]=t(" notwendig.")),e[20]||(e[20]=n("br",null,null,-1)),e[21]||(e[21]=t(" Dazu bitte folgende Schritte durchführen: ")),n("ol",null,[n("li",null,[e[9]||(e[9]=t(" In einem neuen Browser-Tab auf diese Seite gehen:")),e[10]||(e[10]=n("br",null,null,-1)),n("a",w,[e[8]||(e[8]=t(" Captcha Lösen ")),i(a,{"fixed-width":"",icon:["fas","external-link-alt"]})]),e[11]||(e[11]=t(" (https://bimmer-connected.readthedocs.io/en/latest/captcha/rest_of_world.html) "))]),e[12]||(e[12]=n("li",null,' Dort falls angefragt das Captcha lösen und/oder "Ich bin ein Mensch" und dann Submit anklicken. Als Ergebnis wird ein sehr langer String angezeigt. ',-1)),e[13]||(e[13]=n("li",null,[t("Diesen String komplett mit "),n("b",null,"Copy&Paste"),t(" in das Feld Captcha-Token eingeben.")],-1)),e[14]||(e[14]=n("li",null,"Die Konfiguration speichern.",-1)),e[15]||(e[15]=n("li",null,[n("b",null,"Sofort einmal im Desktop manuell (Kreispfeil) den SoC für das Fahrzeug abrufen.")],-1)),e[16]||(e[16]=n("li",null,[n("b",null,"Fertig."),t(" Ab jetzt wird bis zum nächsten Neustart das sog. Refresh-Token verwendet.")],-1))]),e[22]||(e[22]=n("b",null,"Achtung: Das Captcha-Token kann nur einmal verwendet werden und gilt nur kurze Zeit!",-1))]),_:1},8,["model-value"]),i(d,{title:"SoC während der Ladung berechnen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.vehicle.configuration.calculate_soc,"onUpdate:modelValue":e[4]||(e[4]=l=>o.updateConfiguration(l,"configuration.calculate_soc"))},{help:r(()=>e[23]||(e[23]=[t(" Berechnet den Ladestand (SoC) während der Ladung. "),n("br",null,null,-1),t(" Die Berechnung erfolgt über die Ladeleistung und die Ladedauer. "),n("br",null,null,-1)])),_:1},8,["model-value"])])}const q=m(b,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmwbc/vehicle.vue"]]);export{q as default}; +import{V as p}from"./VehicleConfig-a49bda81.js";import{_ as m,u as s,l as g,m as f,G as i,E as r,y as t,x as n}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"VehicleSocBmwBimmerConnected",mixins:[p]},v={class:"vehicle-soc-bmwbc"},w={href:"https://bimmer-connected.readthedocs.io/en/latest/captcha/rest_of_world.html",target:"_blank"};function C(o,e,k,B,V,S){const u=s("openwb-base-text-input"),a=s("font-awesome-icon"),d=s("openwb-base-button-group-input");return g(),f("div",v,[i(u,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=l=>o.updateConfiguration(l,"configuration.user_id"))},{help:r(()=>e[5]||(e[5]=[t(" Der Benutzername für die Anmeldung an den BMW-Servern. ")])),_:1},8,["model-value"]),i(u,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=l=>o.updateConfiguration(l,"configuration.password"))},{help:r(()=>e[6]||(e[6]=[t(" Das Passwort für die Anmeldung an den BMW-Servern. ")])),_:1},8,["model-value"]),i(u,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=l=>o.updateConfiguration(l,"configuration.vin"))},{help:r(()=>e[7]||(e[7]=[t(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"]),i(u,{title:"Captcha-Token",required:"","model-value":o.vehicle.configuration.captcha_token,"onUpdate:modelValue":e[3]||(e[3]=l=>o.updateConfiguration(l,"configuration.captcha_token"))},{help:r(()=>[e[17]||(e[17]=t(" Zum erstmaligen Login z.B. nach einem Neustart ist ein ")),e[18]||(e[18]=n("b",null,"aktuelles Captcha-Token",-1)),e[19]||(e[19]=t(" notwendig.")),e[20]||(e[20]=n("br",null,null,-1)),e[21]||(e[21]=t(" Dazu bitte folgende Schritte durchführen: ")),n("ol",null,[n("li",null,[e[9]||(e[9]=t(" In einem neuen Browser-Tab auf diese Seite gehen:")),e[10]||(e[10]=n("br",null,null,-1)),n("a",w,[e[8]||(e[8]=t(" Captcha Lösen ")),i(a,{"fixed-width":"",icon:["fas","external-link-alt"]})]),e[11]||(e[11]=t(" (https://bimmer-connected.readthedocs.io/en/latest/captcha/rest_of_world.html) "))]),e[12]||(e[12]=n("li",null,' Dort falls angefragt das Captcha lösen und/oder "Ich bin ein Mensch" und dann Submit anklicken. Als Ergebnis wird ein sehr langer String angezeigt. ',-1)),e[13]||(e[13]=n("li",null,[t("Diesen String komplett mit "),n("b",null,"Copy&Paste"),t(" in das Feld Captcha-Token eingeben.")],-1)),e[14]||(e[14]=n("li",null,"Die Konfiguration speichern.",-1)),e[15]||(e[15]=n("li",null,[n("b",null,"Sofort einmal im Desktop manuell (Kreispfeil) den SoC für das Fahrzeug abrufen.")],-1)),e[16]||(e[16]=n("li",null,[n("b",null,"Fertig."),t(" Ab jetzt wird bis zum nächsten Neustart das sog. Refresh-Token verwendet.")],-1))]),e[22]||(e[22]=n("b",null,"Achtung: Das Captcha-Token kann nur einmal verwendet werden und gilt nur kurze Zeit!",-1))]),_:1},8,["model-value"]),i(d,{title:"SoC während der Ladung berechnen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.vehicle.configuration.calculate_soc,"onUpdate:modelValue":e[4]||(e[4]=l=>o.updateConfiguration(l,"configuration.calculate_soc"))},{help:r(()=>e[23]||(e[23]=[t(" Berechnet den Ladestand (SoC) während der Ladung. "),n("br",null,null,-1),t(" Die Berechnung erfolgt über die Ladeleistung und die Ladedauer. "),n("br",null,null,-1)])),_:1},8,["model-value"])])}const q=m(b,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmwbc/vehicle.vue"]]);export{q as default}; diff --git a/web/settings/assets/vehicle-5227ffda.js b/web/settings/assets/vehicle-47a5b0e6.js similarity index 75% rename from web/settings/assets/vehicle-5227ffda.js rename to web/settings/assets/vehicle-47a5b0e6.js index df242084ad..7a213b955f 100644 --- a/web/settings/assets/vehicle-5227ffda.js +++ b/web/settings/assets/vehicle-47a5b0e6.js @@ -1 +1 @@ -import{V as m}from"./VehicleConfig-e49e5ddc.js";import{_ as d,u as r,l as u,m as f,G as n,E as l,B as o,A as t,F as p}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const b={name:"VehicleSocMqtt",mixins:[m]},v={class:"vehicle-soc-mqtt"};function g(i,e,w,k,x,B){const s=r("openwb-base-copy-to-clipboard"),a=r("openwb-base-alert");return u(),f("div",v,[n(a,{subtype:"info"},{default:l(()=>[e[12]||(e[12]=o(" Die Daten werden immer dann aktualisiert, wenn das Topic veröffentlicht wird. Die Abfrageintervalle werden nicht berücksichtigt, da das Intervall vom sendenden Client festgelegt wird. ")),t("ul",null,[t("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[o(" openWB/set/vehicle/"+p(i.vehicleId)+"/get/soc ",1)]),_:1}),e[0]||(e[0]=t("br",null,null,-1)),e[1]||(e[1]=o(" Fahrzeug-SoC mit Nachkommastellen (Float) oder Ganzzahl")),e[2]||(e[2]=t("br",null,null,-1)),e[3]||(e[3]=o(" Beispiel: ")),e[4]||(e[4]=t("span",{class:"text-info"},"89.5",-1))]),t("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[o(" openWB/set/vehicle/"+p(i.vehicleId)+"/get/range ",1)]),_:1}),e[5]||(e[5]=t("br",null,null,-1)),e[6]||(e[6]=o(" Reichweite des Fahrzeugs in km mit Nachkommastellen (Float) oder Ganzzahl")),e[7]||(e[7]=t("br",null,null,-1)),e[8]||(e[8]=o(" Diese Info ist optional.")),e[9]||(e[9]=t("br",null,null,-1)),e[10]||(e[10]=o(" Beispiel: ")),e[11]||(e[11]=t("span",{class:"text-info"},"356.5",-1))])])]),_:1})])}const $=d(b,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mqtt/vehicle.vue"]]);export{$ as default}; +import{V as m}from"./VehicleConfig-a49bda81.js";import{_ as d,u as r,l as u,m as f,G as n,E as l,y as o,x as t,F as p}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const b={name:"VehicleSocMqtt",mixins:[m]},v={class:"vehicle-soc-mqtt"};function g(i,e,w,x,k,B){const s=r("openwb-base-copy-to-clipboard"),a=r("openwb-base-alert");return u(),f("div",v,[n(a,{subtype:"info"},{default:l(()=>[e[12]||(e[12]=o(" Die Daten werden immer dann aktualisiert, wenn das Topic veröffentlicht wird. Die Abfrageintervalle werden nicht berücksichtigt, da das Intervall vom sendenden Client festgelegt wird. ")),t("ul",null,[t("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[o(" openWB/set/vehicle/"+p(i.vehicleId)+"/get/soc ",1)]),_:1}),e[0]||(e[0]=t("br",null,null,-1)),e[1]||(e[1]=o(" Fahrzeug-SoC mit Nachkommastellen (Float) oder Ganzzahl")),e[2]||(e[2]=t("br",null,null,-1)),e[3]||(e[3]=o(" Beispiel: ")),e[4]||(e[4]=t("span",{class:"text-info"},"89.5",-1))]),t("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[o(" openWB/set/vehicle/"+p(i.vehicleId)+"/get/range ",1)]),_:1}),e[5]||(e[5]=t("br",null,null,-1)),e[6]||(e[6]=o(" Reichweite des Fahrzeugs in km mit Nachkommastellen (Float) oder Ganzzahl")),e[7]||(e[7]=t("br",null,null,-1)),e[8]||(e[8]=o(" Diese Info ist optional.")),e[9]||(e[9]=t("br",null,null,-1)),e[10]||(e[10]=o(" Beispiel: ")),e[11]||(e[11]=t("span",{class:"text-info"},"356.5",-1))])])]),_:1})])}const $=d(b,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mqtt/vehicle.vue"]]);export{$ as default}; diff --git a/web/settings/assets/vehicle-3f811862.js b/web/settings/assets/vehicle-47f7fadf.js similarity index 64% rename from web/settings/assets/vehicle-3f811862.js rename to web/settings/assets/vehicle-47f7fadf.js index 2250d39f28..2cdfff977a 100644 --- a/web/settings/assets/vehicle-3f811862.js +++ b/web/settings/assets/vehicle-47f7fadf.js @@ -1 +1 @@ -import{V as n}from"./VehicleConfig-e49e5ddc.js";import{_ as s,u as i,l as o,m as r,G as a,E as d,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const p={name:"VehicleSocManual",mixins:[n]},c={class:"vehicle-soc-tesla"};function m(u,e,_,f,h,g){const t=i("openwb-base-alert");return o(),r("div",c,[a(t,{subtype:"info"},{default:d(()=>e[0]||(e[0]=[l(' Beim Anstecken des Fahrzeugs muss der aktuelle SoC über die Hauptseite angegeben werden. Anhand des Zählers im Ladepunkt wird dann der aktuelle SoC errechnet. Ausschlaggebend für die Qualität dieses Moduls sind die beiden Einstellungen "Kapazität der Batterie" in dem Fahrzeug-Profil und "Wirkungsgrad der Ladeelektronik". ')])),_:1})])}const z=s(p,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/manual/vehicle.vue"]]);export{z as default}; +import{V as n}from"./VehicleConfig-a49bda81.js";import{_ as s,u as i,l as o,m as r,G as a,E as d,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const p={name:"VehicleSocManual",mixins:[n]},c={class:"vehicle-soc-tesla"};function m(u,e,_,f,h,g){const t=i("openwb-base-alert");return o(),r("div",c,[a(t,{subtype:"info"},{default:d(()=>e[0]||(e[0]=[l(' Beim Anstecken des Fahrzeugs muss der aktuelle SoC über die Hauptseite angegeben werden. Anhand des Zählers im Ladepunkt wird dann der aktuelle SoC errechnet. Ausschlaggebend für die Qualität dieses Moduls sind die beiden Einstellungen "Kapazität der Batterie" in dem Fahrzeug-Profil und "Wirkungsgrad der Ladeelektronik". ')])),_:1})])}const z=s(p,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/manual/vehicle.vue"]]);export{z as default}; diff --git a/web/settings/assets/vehicle-e12b30b1.js b/web/settings/assets/vehicle-561e20d5.js similarity index 74% rename from web/settings/assets/vehicle-e12b30b1.js rename to web/settings/assets/vehicle-561e20d5.js index f926657ddd..80c97bbfd7 100644 --- a/web/settings/assets/vehicle-e12b30b1.js +++ b/web/settings/assets/vehicle-561e20d5.js @@ -1 +1 @@ -import{V as u}from"./VehicleConfig-e49e5ddc.js";import{_ as a,u as s,l as d,m as p,G as t,E as r,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocKia",mixins:[u]},v={class:"vehicle-soc-kia"};function f(o,e,g,w,V,b){const i=s("openwb-base-text-input");return d(),p("div",v,[t(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[4]||(e[4]=[l(" Der Benutzername für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),t(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[5]||(e[5]=[l(" Das Passwort für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),t(i,{title:"PIN",required:"",subtype:"password","model-value":o.vehicle.configuration.pin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.pin"))},{help:r(()=>e[6]||(e[6]=[l(" Die PIN für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),t(i,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[7]||(e[7]=[l(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const h=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/kia/vehicle.vue"]]);export{h as default}; +import{V as u}from"./VehicleConfig-a49bda81.js";import{_ as a,u as s,l as d,m as p,G as t,E as r,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocKia",mixins:[u]},v={class:"vehicle-soc-kia"};function f(o,e,g,w,V,b){const i=s("openwb-base-text-input");return d(),p("div",v,[t(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[4]||(e[4]=[l(" Der Benutzername für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),t(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[5]||(e[5]=[l(" Das Passwort für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),t(i,{title:"PIN",required:"",subtype:"password","model-value":o.vehicle.configuration.pin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.pin"))},{help:r(()=>e[6]||(e[6]=[l(" Die PIN für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),t(i,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[7]||(e[7]=[l(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const $=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/kia/vehicle.vue"]]);export{$ as default}; diff --git a/web/settings/assets/vehicle-d18e5ce2.js b/web/settings/assets/vehicle-56b45282.js similarity index 81% rename from web/settings/assets/vehicle-d18e5ce2.js rename to web/settings/assets/vehicle-56b45282.js index 40976a03c5..6d24f70962 100644 --- a/web/settings/assets/vehicle-d18e5ce2.js +++ b/web/settings/assets/vehicle-56b45282.js @@ -1 +1 @@ -import{V as s}from"./VehicleConfig-e49e5ddc.js";import{_ as d,u as a,l as p,m,G as t,E as u,B as n,A as i}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const v={name:"VehicleSocOVMS",mixins:[s]},f={class:"vehicle-soc-ovms"};function g(o,e,V,b,S,w){const l=a("openwb-base-text-input");return p(),m("div",f,[t(l,{title:"Server URL",required:"","model-value":o.vehicle.configuration.server_url,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.server_url"))},{help:u(()=>e[4]||(e[4]=[n(" Die URL (incl. Port) des API des OVMS-Servers, an dem das OVMS-Modul angemeldet ist, z.B. "),i("br",null,null,-1),n(" https://ovms.dexters-web.de:6869"),i("br",null,null,-1),n(" oder"),i("br",null,null,-1),n(" https://api.openvehicles.com:6869"),i("br",null,null,-1),n(" oder ein custom server"),i("br",null,null,-1)])),_:1},8,["model-value"]),t(l,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[1]||(e[1]=r=>o.updateConfiguration(r,"configuration.user_id"))},{help:u(()=>e[5]||(e[5]=[n(" Der Benutzername für die Anmeldung am benutzen OVMS-Servers. ")])),_:1},8,["model-value"]),t(l,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=r=>o.updateConfiguration(r,"configuration.password"))},{help:u(()=>e[6]||(e[6]=[n(" Das Passwort für die Anmeldung am OVMS-Server. ")])),_:1},8,["model-value"]),t(l,{title:"Vehicle Id",required:"","model-value":o.vehicle.configuration.vehicleId,"onUpdate:modelValue":e[3]||(e[3]=r=>o.updateConfiguration(r,"configuration.vehicleId"))},{help:u(()=>e[7]||(e[7]=[n(" Die Id des Fahrzeugs im OVMS, auch Module Id genannt. ")])),_:1},8,["model-value"])])}const q=d(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/ovms/vehicle.vue"]]);export{q as default}; +import{V as s}from"./VehicleConfig-a49bda81.js";import{_ as d,u as a,l as p,m,G as t,E as u,y as n,x as i}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const v={name:"VehicleSocOVMS",mixins:[s]},f={class:"vehicle-soc-ovms"};function g(o,e,V,b,S,w){const l=a("openwb-base-text-input");return p(),m("div",f,[t(l,{title:"Server URL",required:"","model-value":o.vehicle.configuration.server_url,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.server_url"))},{help:u(()=>e[4]||(e[4]=[n(" Die URL (incl. Port) des API des OVMS-Servers, an dem das OVMS-Modul angemeldet ist, z.B. "),i("br",null,null,-1),n(" https://ovms.dexters-web.de:6869"),i("br",null,null,-1),n(" oder"),i("br",null,null,-1),n(" https://api.openvehicles.com:6869"),i("br",null,null,-1),n(" oder ein custom server"),i("br",null,null,-1)])),_:1},8,["model-value"]),t(l,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[1]||(e[1]=r=>o.updateConfiguration(r,"configuration.user_id"))},{help:u(()=>e[5]||(e[5]=[n(" Der Benutzername für die Anmeldung am benutzen OVMS-Servers. ")])),_:1},8,["model-value"]),t(l,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=r=>o.updateConfiguration(r,"configuration.password"))},{help:u(()=>e[6]||(e[6]=[n(" Das Passwort für die Anmeldung am OVMS-Server. ")])),_:1},8,["model-value"]),t(l,{title:"Vehicle Id",required:"","model-value":o.vehicle.configuration.vehicleId,"onUpdate:modelValue":e[3]||(e[3]=r=>o.updateConfiguration(r,"configuration.vehicleId"))},{help:u(()=>e[7]||(e[7]=[n(" Die Id des Fahrzeugs im OVMS, auch Module Id genannt. ")])),_:1},8,["model-value"])])}const q=d(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/ovms/vehicle.vue"]]);export{q as default}; diff --git a/web/settings/assets/vehicle-865f01e8.js b/web/settings/assets/vehicle-5cb1a571.js similarity index 66% rename from web/settings/assets/vehicle-865f01e8.js rename to web/settings/assets/vehicle-5cb1a571.js index 3c7e2bc918..09c713533a 100644 --- a/web/settings/assets/vehicle-865f01e8.js +++ b/web/settings/assets/vehicle-5cb1a571.js @@ -1 +1 @@ -import{V as l}from"./VehicleConfig-e49e5ddc.js";import{_ as a,u,l as d,m as p,G as t,E as r,B as s}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocVwid",mixins:[l]},v={class:"vehicle-soc-vwid"};function f(o,e,g,w,V,b){const i=u("openwb-base-text-input");return d(),p("div",v,[t(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung an den VW-Servern. ")])),_:1},8,["model-value"]),t(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung an den VW-Servern. ")])),_:1},8,["model-value"]),t(i,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[5]||(e[5]=[s(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const D=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/vwid/vehicle.vue"]]);export{D as default}; +import{V as l}from"./VehicleConfig-a49bda81.js";import{_ as a,u,l as d,m as p,G as t,E as r,y as s}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocVwid",mixins:[l]},v={class:"vehicle-soc-vwid"};function f(o,e,g,w,V,b){const i=u("openwb-base-text-input");return d(),p("div",v,[t(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung an den VW-Servern. ")])),_:1},8,["model-value"]),t(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung an den VW-Servern. ")])),_:1},8,["model-value"]),t(i,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[5]||(e[5]=[s(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const z=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/vwid/vehicle.vue"]]);export{z as default}; diff --git a/web/settings/assets/vehicle-c305e7fc.js b/web/settings/assets/vehicle-5d229e55.js similarity index 65% rename from web/settings/assets/vehicle-c305e7fc.js rename to web/settings/assets/vehicle-5d229e55.js index 9956b90314..edc893ceab 100644 --- a/web/settings/assets/vehicle-c305e7fc.js +++ b/web/settings/assets/vehicle-5d229e55.js @@ -1 +1 @@ -import{V as r}from"./VehicleConfig-e49e5ddc.js";import{_ as l,u as s,l as a,m as u,G as i,E as p,B as d}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocSmartHello",mixins:[r]},f={class:"vehicle-soc-smart-hello"};function v(o,e,c,g,h,V){const n=s("openwb-base-text-input");return a(),u("div",f,[i(n,{title:"Benutzername",subtype:"text",required:"","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user_id"))},null,8,["model-value"]),i(n,{title:"Kennwort",subtype:"password",required:"","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"]),i(n,{title:"VIN",subtype:"text","model-value":o.vehicle.configuration.VIN,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.VIN"))},{help:p(()=>e[3]||(e[3]=[d(" Fahrgestellnummer (VIN) des Fahrzeugs. Notwendig falls mehrere Fahrzeuge im Account des Herstellers vorhanden sind. ")])),_:1},8,["model-value"])])}const y=l(m,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarthello/vehicle.vue"]]);export{y as default}; +import{V as r}from"./VehicleConfig-a49bda81.js";import{_ as l,u as s,l as a,m as u,G as i,E as p,y as d}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocSmartHello",mixins:[r]},f={class:"vehicle-soc-smart-hello"};function v(o,e,c,g,h,V){const n=s("openwb-base-text-input");return a(),u("div",f,[i(n,{title:"Benutzername",subtype:"text",required:"","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user_id"))},null,8,["model-value"]),i(n,{title:"Kennwort",subtype:"password",required:"","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"]),i(n,{title:"VIN",subtype:"text","model-value":o.vehicle.configuration.VIN,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.VIN"))},{help:p(()=>e[3]||(e[3]=[d(" Fahrgestellnummer (VIN) des Fahrzeugs. Notwendig falls mehrere Fahrzeuge im Account des Herstellers vorhanden sind. ")])),_:1},8,["model-value"])])}const $=l(m,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarthello/vehicle.vue"]]);export{$ as default}; diff --git a/web/settings/assets/vehicle-7ee8a745.js b/web/settings/assets/vehicle-74dc0824.js similarity index 84% rename from web/settings/assets/vehicle-7ee8a745.js rename to web/settings/assets/vehicle-74dc0824.js index e05cfec4e2..0f4cd92b91 100644 --- a/web/settings/assets/vehicle-7ee8a745.js +++ b/web/settings/assets/vehicle-74dc0824.js @@ -1 +1 @@ -import{V as a}from"./VehicleConfig-e49e5ddc.js";import{_ as d,u,l as p,m as g,G as o,E as l,B as i,A as c}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocTronity",mixins:[a]},f={class:"vehicle-soc-tronity"};function b(n,e,v,C,w,h){const r=u("openwb-base-text-input"),s=u("openwb-base-button-group-input");return p(),g("div",f,[o(r,{title:"Vehicle ID",subtype:"text",required:"","model-value":n.vehicle.configuration.vehicle_id,"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.vehicle_id"))},{help:l(()=>e[4]||(e[4]=[i(' Vehicle ID aus Tronity angeben. Diese ist in den "Assigned Vehicles" zu finden. ')])),_:1},8,["model-value"]),o(r,{title:"Client ID",subtype:"text",required:"","model-value":n.vehicle.configuration.client_id,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.client_id"))},{help:l(()=>e[5]||(e[5]=[i(' Client ID aus Tronity angeben. Diese ist in den "Application Settings" zu finden. ')])),_:1},8,["model-value"]),o(r,{title:"Client Secret",subtype:"password",required:"","model-value":n.vehicle.configuration.client_secret,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.client_secret"))},{help:l(()=>e[6]||(e[6]=[i(' Client Secret aus Tronity angeben. Diese ist in den "Application Settings" zu finden. Das Client Secret kann nur einmalig abgerufen werden. Ggf. neu erzeugen, womit frühere Client Secrets ungültig werden. ')])),_:1},8,["model-value"]),o(s,{title:"SoC während der Ladung berechnen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.vehicle.configuration.calculate_soc,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateConfiguration(t,"configuration.calculate_soc"))},{help:l(()=>e[7]||(e[7]=[i(" Berechnet den Ladestand (SoC) während der Ladung. Dies ist notwendig, wenn der SoC nicht über die Schnittstelle des Fahrzeugs abgerufen werden kann. Die Berechnung erfolgt über die Ladeleistung und die Ladedauer. "),c("br",null,null,-1),i(" Derzeit notwendig für Peugeot, Opel, Citroen und DS. ")])),_:1},8,["model-value"])])}const T=d(m,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tronity/vehicle.vue"]]);export{T as default}; +import{V as a}from"./VehicleConfig-a49bda81.js";import{_ as d,u,l as p,m as g,G as o,E as l,y as i,x as c}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocTronity",mixins:[a]},f={class:"vehicle-soc-tronity"};function b(n,e,v,C,w,h){const r=u("openwb-base-text-input"),s=u("openwb-base-button-group-input");return p(),g("div",f,[o(r,{title:"Vehicle ID",subtype:"text",required:"","model-value":n.vehicle.configuration.vehicle_id,"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.vehicle_id"))},{help:l(()=>e[4]||(e[4]=[i(' Vehicle ID aus Tronity angeben. Diese ist in den "Assigned Vehicles" zu finden. ')])),_:1},8,["model-value"]),o(r,{title:"Client ID",subtype:"text",required:"","model-value":n.vehicle.configuration.client_id,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.client_id"))},{help:l(()=>e[5]||(e[5]=[i(' Client ID aus Tronity angeben. Diese ist in den "Application Settings" zu finden. ')])),_:1},8,["model-value"]),o(r,{title:"Client Secret",subtype:"password",required:"","model-value":n.vehicle.configuration.client_secret,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.client_secret"))},{help:l(()=>e[6]||(e[6]=[i(' Client Secret aus Tronity angeben. Diese ist in den "Application Settings" zu finden. Das Client Secret kann nur einmalig abgerufen werden. Ggf. neu erzeugen, womit frühere Client Secrets ungültig werden. ')])),_:1},8,["model-value"]),o(s,{title:"SoC während der Ladung berechnen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.vehicle.configuration.calculate_soc,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateConfiguration(t,"configuration.calculate_soc"))},{help:l(()=>e[7]||(e[7]=[i(" Berechnet den Ladestand (SoC) während der Ladung. Dies ist notwendig, wenn der SoC nicht über die Schnittstelle des Fahrzeugs abgerufen werden kann. Die Berechnung erfolgt über die Ladeleistung und die Ladedauer. "),c("br",null,null,-1),i(" Derzeit notwendig für Peugeot, Opel, Citroen und DS. ")])),_:1},8,["model-value"])])}const T=d(m,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tronity/vehicle.vue"]]);export{T as default}; diff --git a/web/settings/assets/vehicle-dfe6b66d.js b/web/settings/assets/vehicle-837ef917.js similarity index 87% rename from web/settings/assets/vehicle-dfe6b66d.js rename to web/settings/assets/vehicle-837ef917.js index b29f84e8fc..75a8fe29e7 100644 --- a/web/settings/assets/vehicle-dfe6b66d.js +++ b/web/settings/assets/vehicle-837ef917.js @@ -1 +1 @@ -import{V as m}from"./VehicleConfig-e49e5ddc.js";import{_ as b,u as s,l as g,m as v,G as i,E as o,B as n,A as u,F as _}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"VehicleSocMercedesEq",mixins:[m],computed:{callback_url(){return`${location.origin}/openWB/web/settings/modules/vehicles/mercedeseq/callback_vehicle.php`},login_url(){return`https://ssoalpha.dvb.corpinter.net/v1/auth?response_type=code&state=${this.vehicleId}&client_id=${this.vehicle.configuration.client_id}&redirect_uri=${this.callback_url}&scope=mb:vehicle:mbdata:evstatus%20offline_access%20openid`},input_complete(){return this.vehicle.configuration.client_id&&this.vehicle.configuration.client_secret&&this.vehicle.configuration.vin}},methods:{login_window(){console.debug("callback url",this.callback_url),console.debug("login url",this.login_url);var t=window.open(this.login_url,"MercedesLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");t.focus()}}},h={class:"vehicle-soc-mercedeseq"};function w(t,e,k,C,y,r){const a=s("openwb-base-text-input"),d=s("openwb-base-copy-to-clipboard"),p=s("openwb-base-alert"),c=s("openwb-base-button-input");return g(),v("div",h,[i(a,{title:"Client-ID",required:"",subtype:"user","model-value":t.vehicle.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=l=>t.updateConfiguration(l,"configuration.client_id"))},{help:o(()=>e[3]||(e[3]=[n(" Die im Developer Portal angelegte Client-ID. ")])),_:1},8,["model-value"]),i(a,{title:"Client Secret",required:"",subtype:"password","model-value":t.vehicle.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=l=>t.updateConfiguration(l,"configuration.client_secret"))},{help:o(()=>e[4]||(e[4]=[n(" Das im Developer Portal angelegte Client Secret. ")])),_:1},8,["model-value"]),i(a,{title:"VIN",required:"","model-value":t.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=l=>t.updateConfiguration(l,"configuration.vin"))},{help:o(()=>e[5]||(e[5]=[n(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"]),i(p,{subtype:"info"},{default:o(()=>[e[6]||(e[6]=n(" Vor dem Anmelden bitte die Angaben speichern.")),e[7]||(e[7]=u("br",null,null,-1)),e[8]||(e[8]=n(" Die Callback-URL für die Anmeldung lautet:")),e[9]||(e[9]=u("br",null,null,-1)),i(d,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[n(_(r.callback_url),1)]),_:1})]),_:1}),i(c,{title:"Anmelden","button-text":"Bei Mercedes Anmelden",subtype:"success",disabled:!r.input_complete,onButtonClicked:r.login_window},{help:o(()=>e[10]||(e[10]=[n(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Mercedes mit Ihren Zugangsdaten anmelden können."),u("br",null,null,-1)])),_:1},8,["disabled","onButtonClicked"])])}const U=b(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mercedeseq/vehicle.vue"]]);export{U as default}; +import{V as m}from"./VehicleConfig-a49bda81.js";import{_ as b,u as s,l as g,m as v,G as i,E as o,y as n,x as u,F as _}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"VehicleSocMercedesEq",mixins:[m],computed:{callback_url(){return`${location.origin}/openWB/web/settings/modules/vehicles/mercedeseq/callback_vehicle.php`},login_url(){return`https://ssoalpha.dvb.corpinter.net/v1/auth?response_type=code&state=${this.vehicleId}&client_id=${this.vehicle.configuration.client_id}&redirect_uri=${this.callback_url}&scope=mb:vehicle:mbdata:evstatus%20offline_access%20openid`},input_complete(){return this.vehicle.configuration.client_id&&this.vehicle.configuration.client_secret&&this.vehicle.configuration.vin}},methods:{login_window(){console.debug("callback url",this.callback_url),console.debug("login url",this.login_url);var t=window.open(this.login_url,"MercedesLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");t.focus()}}},h={class:"vehicle-soc-mercedeseq"};function w(t,e,k,C,y,r){const a=s("openwb-base-text-input"),d=s("openwb-base-copy-to-clipboard"),p=s("openwb-base-alert"),c=s("openwb-base-button-input");return g(),v("div",h,[i(a,{title:"Client-ID",required:"",subtype:"user","model-value":t.vehicle.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=l=>t.updateConfiguration(l,"configuration.client_id"))},{help:o(()=>e[3]||(e[3]=[n(" Die im Developer Portal angelegte Client-ID. ")])),_:1},8,["model-value"]),i(a,{title:"Client Secret",required:"",subtype:"password","model-value":t.vehicle.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=l=>t.updateConfiguration(l,"configuration.client_secret"))},{help:o(()=>e[4]||(e[4]=[n(" Das im Developer Portal angelegte Client Secret. ")])),_:1},8,["model-value"]),i(a,{title:"VIN",required:"","model-value":t.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=l=>t.updateConfiguration(l,"configuration.vin"))},{help:o(()=>e[5]||(e[5]=[n(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"]),i(p,{subtype:"info"},{default:o(()=>[e[6]||(e[6]=n(" Vor dem Anmelden bitte die Angaben speichern.")),e[7]||(e[7]=u("br",null,null,-1)),e[8]||(e[8]=n(" Die Callback-URL für die Anmeldung lautet:")),e[9]||(e[9]=u("br",null,null,-1)),i(d,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[n(_(r.callback_url),1)]),_:1})]),_:1}),i(c,{title:"Anmelden","button-text":"Bei Mercedes Anmelden",subtype:"success",disabled:!r.input_complete,onButtonClicked:r.login_window},{help:o(()=>e[10]||(e[10]=[n(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Mercedes mit Ihren Zugangsdaten anmelden können."),u("br",null,null,-1)])),_:1},8,["disabled","onButtonClicked"])])}const U=b(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mercedeseq/vehicle.vue"]]);export{U as default}; diff --git a/web/settings/assets/vehicle-14a72276.js b/web/settings/assets/vehicle-9a78a8ba.js similarity index 64% rename from web/settings/assets/vehicle-14a72276.js rename to web/settings/assets/vehicle-9a78a8ba.js index 3e77e287d5..b0cb3c29bf 100644 --- a/web/settings/assets/vehicle-14a72276.js +++ b/web/settings/assets/vehicle-9a78a8ba.js @@ -1 +1 @@ -import{V as o}from"./VehicleConfig-e49e5ddc.js";import{_ as i,u as r,l as s,m as a,G as c,E as p,B as n,A as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const d={name:"VehicleSocPSA",mixins:[o]},m={class:"vehicle-soc-psa"};function u(f,e,_,h,b,g){const t=r("openwb-base-alert");return s(),a("div",m,[c(t,{subtype:"danger"},{default:p(()=>e[0]||(e[0]=[n(" Diese Modul ist seit Änderungen der Schnittstellen durch PSA nicht mehr funktionsfähig und wird in einer zukünftigen Version entfernt. Bitte auf einen anderen Anbieter wechseln, z.B. Tronity."),l("br",null,null,-1),n(" Bei vorhandener PSA-Integration in Heimautomation kann der SoC ggf. auch per MQTT übergeben werden. ")])),_:1})])}const T=i(d,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/psa/vehicle.vue"]]);export{T as default}; +import{V as o}from"./VehicleConfig-a49bda81.js";import{_ as i,u as r,l as s,m as a,G as c,E as p,y as n,x as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const d={name:"VehicleSocPSA",mixins:[o]},m={class:"vehicle-soc-psa"};function u(f,e,_,h,b,g){const t=r("openwb-base-alert");return s(),a("div",m,[c(t,{subtype:"danger"},{default:p(()=>e[0]||(e[0]=[n(" Diese Modul ist seit Änderungen der Schnittstellen durch PSA nicht mehr funktionsfähig und wird in einer zukünftigen Version entfernt. Bitte auf einen anderen Anbieter wechseln, z.B. Tronity."),l("br",null,null,-1),n(" Bei vorhandener PSA-Integration in Heimautomation kann der SoC ggf. auch per MQTT übergeben werden. ")])),_:1})])}const T=i(d,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/psa/vehicle.vue"]]);export{T as default}; diff --git a/web/settings/assets/vehicle-6006f37f.js b/web/settings/assets/vehicle-9fdd28f6.js similarity index 91% rename from web/settings/assets/vehicle-6006f37f.js rename to web/settings/assets/vehicle-9fdd28f6.js index 3b1a5e8460..4e7b2b2604 100644 --- a/web/settings/assets/vehicle-6006f37f.js +++ b/web/settings/assets/vehicle-9fdd28f6.js @@ -1 +1 @@ -import{V as m}from"./VehicleConfig-e49e5ddc.js";import{_ as p,u as s,l as g,m as b,G as r,E as i,B as n,A as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const f={name:"VehicleSocJson",mixins:[m]},w={class:"vehicle-soc-json"};function h(t,e,v,c,k,z){const a=s("openwb-base-text-input"),u=s("openwb-base-button-group-input"),d=s("openwb-base-number-input");return g(),b("div",w,[r(a,{title:"URL",subtype:"url",required:"","model-value":t.vehicle.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.url"))},{help:i(()=>e[6]||(e[6]=[n(" Es wird eine komplette URL erwartet mit Angaben zum Protokoll, IP oder Hostnamen, optional einem Port und einem Pfad. Die Antwort muss ein json-Objekt sein. Beispiel: http://192.168.1.1:8080/json?data=1 ")])),_:1},8,["model-value"]),r(a,{title:"Abfrage für SoC",subtype:"text",required:"","model-value":t.vehicle.configuration.soc_pattern,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.soc_pattern"))},{help:i(()=>e[7]||(e[7]=[n(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"response":{"soc":"39.8", "range": "207", "timestamp":1734054449}} So muss hier .response.soc eingetragen werden. '),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen Ladestand (SoC) darstellt. ")])),_:1},8,["model-value"]),r(a,{title:"Abfrage für Reichweite",subtype:"text","model-value":t.vehicle.configuration.range_pattern,"onUpdate:modelValue":e[2]||(e[2]=o=>t.updateConfiguration(o,"configuration.range_pattern"))},{help:i(()=>e[8]||(e[8]=[n(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"response":{"soc":"39.8", "range": "207", "timestamp":1734054449}} So muss hier .response.range eingetragen werden. '),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Reichweite darstellt."),l("br",null,null,-1),n(" Ohne Angabe wird die Reichweite nicht abgefragt und auf Null gesetzt. ")])),_:1},8,["model-value"]),r(a,{title:"Abfrage für Zeitstempel",subtype:"text","model-value":t.vehicle.configuration.timestamp_pattern,"onUpdate:modelValue":e[3]||(e[3]=o=>t.updateConfiguration(o,"configuration.timestamp_pattern"))},{help:i(()=>e[9]||(e[9]=[n(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"response":{"soc":"39.8", "range": "207", "timestamp":1734054449}} So muss hier .response.timestamp eingetragen werden.'),l("br",null,null,-1),n(" Es wird vom Server entweder eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen als Epoch Zeitstempel oder eine ISO 8601 formatierte Zeit erwartet welche den Zeitstempel der gelieferten Werte darstellt."),l("br",null,null,-1),n(" Ohne Angabe wird der Zeitpunkt des Datenabrufs als Zeitstempel verwendet. ")])),_:1},8,["model-value"]),r(u,{title:"SoC während der Ladung berechnen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.vehicle.configuration.calculate_soc,"onUpdate:modelValue":e[4]||(e[4]=o=>t.updateConfiguration(o,"configuration.calculate_soc"))},{help:i(()=>e[10]||(e[10]=[n(" Berechnet den Ladestand (SoC) während der Ladung. Dies ist notwendig, wenn der SoC nicht über die Schnittstelle des Fahrzeugs abgerufen werden kann. Die Berechnung erfolgt über die Ladeleistung und die Ladedauer. "),l("br",null,null,-1),n(" Derzeit u.a. notwendig für Peugeot, Opel, Citroen und DS. ")])),_:1},8,["model-value"]),r(d,{title:"Timeout für http-Abfragen",subtype:"number","model-value":t.vehicle.configuration.timeout,"onUpdate:modelValue":e[5]||(e[5]=o=>t.updateConfiguration(o,"configuration.timeout"))},{help:i(()=>e[11]||(e[11]=[n(" Ermöglicht es einen Timeout für die http-Abfragen zu setzen. Der Wert wird in Sekunden angegeben. Standardwert ist 5 Sekunden sofern kein anderer Wert angegeben ist. ")])),_:1},8,["model-value"])])}const E=p(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/json/vehicle.vue"]]);export{E as default}; +import{V as m}from"./VehicleConfig-a49bda81.js";import{_ as p,u as s,l as g,m as b,G as r,E as i,y as n,x as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const f={name:"VehicleSocJson",mixins:[m]},w={class:"vehicle-soc-json"};function h(t,e,v,c,k,z){const a=s("openwb-base-text-input"),u=s("openwb-base-button-group-input"),d=s("openwb-base-number-input");return g(),b("div",w,[r(a,{title:"URL",subtype:"url",required:"","model-value":t.vehicle.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.url"))},{help:i(()=>e[6]||(e[6]=[n(" Es wird eine komplette URL erwartet mit Angaben zum Protokoll, IP oder Hostnamen, optional einem Port und einem Pfad. Die Antwort muss ein json-Objekt sein. Beispiel: http://192.168.1.1:8080/json?data=1 ")])),_:1},8,["model-value"]),r(a,{title:"Abfrage für SoC",subtype:"text",required:"","model-value":t.vehicle.configuration.soc_pattern,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.soc_pattern"))},{help:i(()=>e[7]||(e[7]=[n(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"response":{"soc":"39.8", "range": "207", "timestamp":1734054449}} So muss hier .response.soc eingetragen werden. '),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen Ladestand (SoC) darstellt. ")])),_:1},8,["model-value"]),r(a,{title:"Abfrage für Reichweite",subtype:"text","model-value":t.vehicle.configuration.range_pattern,"onUpdate:modelValue":e[2]||(e[2]=o=>t.updateConfiguration(o,"configuration.range_pattern"))},{help:i(()=>e[8]||(e[8]=[n(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"response":{"soc":"39.8", "range": "207", "timestamp":1734054449}} So muss hier .response.range eingetragen werden. '),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Reichweite darstellt."),l("br",null,null,-1),n(" Ohne Angabe wird die Reichweite nicht abgefragt und auf Null gesetzt. ")])),_:1},8,["model-value"]),r(a,{title:"Abfrage für Zeitstempel",subtype:"text","model-value":t.vehicle.configuration.timestamp_pattern,"onUpdate:modelValue":e[3]||(e[3]=o=>t.updateConfiguration(o,"configuration.timestamp_pattern"))},{help:i(()=>e[9]||(e[9]=[n(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"response":{"soc":"39.8", "range": "207", "timestamp":1734054449}} So muss hier .response.timestamp eingetragen werden.'),l("br",null,null,-1),n(" Es wird vom Server entweder eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen als Epoch Zeitstempel oder eine ISO 8601 formatierte Zeit erwartet welche den Zeitstempel der gelieferten Werte darstellt."),l("br",null,null,-1),n(" Ohne Angabe wird der Zeitpunkt des Datenabrufs als Zeitstempel verwendet. ")])),_:1},8,["model-value"]),r(u,{title:"SoC während der Ladung berechnen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.vehicle.configuration.calculate_soc,"onUpdate:modelValue":e[4]||(e[4]=o=>t.updateConfiguration(o,"configuration.calculate_soc"))},{help:i(()=>e[10]||(e[10]=[n(" Berechnet den Ladestand (SoC) während der Ladung. Dies ist notwendig, wenn der SoC nicht über die Schnittstelle des Fahrzeugs abgerufen werden kann. Die Berechnung erfolgt über die Ladeleistung und die Ladedauer. "),l("br",null,null,-1),n(" Derzeit u.a. notwendig für Peugeot, Opel, Citroen und DS. ")])),_:1},8,["model-value"]),r(d,{title:"Timeout für http-Abfragen",subtype:"number","model-value":t.vehicle.configuration.timeout,"onUpdate:modelValue":e[5]||(e[5]=o=>t.updateConfiguration(o,"configuration.timeout"))},{help:i(()=>e[11]||(e[11]=[n(" Ermöglicht es einen Timeout für die http-Abfragen zu setzen. Der Wert wird in Sekunden angegeben. Standardwert ist 5 Sekunden sofern kein anderer Wert angegeben ist. ")])),_:1},8,["model-value"])])}const E=p(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/json/vehicle.vue"]]);export{E as default}; diff --git a/web/settings/assets/vehicle-b63b1879.js b/web/settings/assets/vehicle-b464d124.js similarity index 79% rename from web/settings/assets/vehicle-b63b1879.js rename to web/settings/assets/vehicle-b464d124.js index 0b6f256b8f..bdf3fdbe91 100644 --- a/web/settings/assets/vehicle-b63b1879.js +++ b/web/settings/assets/vehicle-b464d124.js @@ -1 +1 @@ -import{V as u}from"./VehicleConfig-e49e5ddc.js";import{_ as a,u as s,l as d,m as p,G as i,E as r,B as l}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocRenault",mixins:[u]},f={class:"vehicle-soc-renault"};function v(n,e,g,V,w,b){const t=s("openwb-base-text-input");return d(),p("div",f,[i(t,{title:"Benutzername",required:"",subtype:"user","model-value":n.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.user_id"))},{help:r(()=>e[4]||(e[4]=[l(" Der Benutzername für die Anmeldung an den Renault-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Kennwort",required:"",subtype:"password","model-value":n.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.password"))},{help:r(()=>e[5]||(e[5]=[l(" Das Passwort für die Anmeldung an den Renault-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Land",required:"","model-value":n.vehicle.configuration.country,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.country"))},{help:r(()=>e[6]||(e[6]=[l(" Land des Fahrzeugs, z.b. DE für Deutschland. ")])),_:1},8,["model-value"]),i(t,{title:"VIN","model-value":n.vehicle.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.vin"))},{help:r(()=>e[7]||(e[7]=[l(" Die Fahrgestellnummer des Fahrzeugs falls mehrere Fahrzeuge im Account vorhanden sind. ")])),_:1},8,["model-value"])])}const $=a(m,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/renault/vehicle.vue"]]);export{$ as default}; +import{V as u}from"./VehicleConfig-a49bda81.js";import{_ as a,u as s,l as d,m as p,G as i,E as r,y as l}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocRenault",mixins:[u]},f={class:"vehicle-soc-renault"};function v(n,e,g,V,w,b){const t=s("openwb-base-text-input");return d(),p("div",f,[i(t,{title:"Benutzername",required:"",subtype:"user","model-value":n.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.user_id"))},{help:r(()=>e[4]||(e[4]=[l(" Der Benutzername für die Anmeldung an den Renault-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Kennwort",required:"",subtype:"password","model-value":n.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.password"))},{help:r(()=>e[5]||(e[5]=[l(" Das Passwort für die Anmeldung an den Renault-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Land",required:"","model-value":n.vehicle.configuration.country,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.country"))},{help:r(()=>e[6]||(e[6]=[l(" Land des Fahrzeugs, z.b. DE für Deutschland. ")])),_:1},8,["model-value"]),i(t,{title:"VIN","model-value":n.vehicle.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.vin"))},{help:r(()=>e[7]||(e[7]=[l(" Die Fahrgestellnummer des Fahrzeugs falls mehrere Fahrzeuge im Account vorhanden sind. ")])),_:1},8,["model-value"])])}const $=a(m,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/renault/vehicle.vue"]]);export{$ as default}; diff --git a/web/settings/assets/vehicle-2530ac78.js b/web/settings/assets/vehicle-da54a31e.js similarity index 69% rename from web/settings/assets/vehicle-2530ac78.js rename to web/settings/assets/vehicle-da54a31e.js index 697e1e00ee..74bd0beb2f 100644 --- a/web/settings/assets/vehicle-2530ac78.js +++ b/web/settings/assets/vehicle-da54a31e.js @@ -1 +1 @@ -import{V as a}from"./VehicleConfig-e49e5ddc.js";import{_ as u,u as l,l as p,m as s,G as i}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocEvnotify",mixins:[a]},d={class:"vehicle-soc-evnotify"};function f(e,o,c,v,b,g){const r=l("openwb-base-number-input"),t=l("openwb-base-text-input");return p(),s("div",d,[i(r,{title:"ID",required:"",min:0,"model-value":e.vehicle.configuration.id,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.id"))},null,8,["model-value"]),i(t,{title:"AKey",required:"","model-value":e.vehicle.configuration.akey,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.akey"))},null,8,["model-value"]),i(t,{title:"Token",required:"","model-value":e.vehicle.configuration.token,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.token"))},null,8,["model-value"])])}const B=u(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evnotify/vehicle.vue"]]);export{B as default}; +import{V as a}from"./VehicleConfig-a49bda81.js";import{_ as u,u as l,l as p,m as s,G as i}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocEvnotify",mixins:[a]},d={class:"vehicle-soc-evnotify"};function f(e,o,c,v,b,g){const r=l("openwb-base-number-input"),t=l("openwb-base-text-input");return p(),s("div",d,[i(r,{title:"ID",required:"",min:0,"model-value":e.vehicle.configuration.id,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.id"))},null,8,["model-value"]),i(t,{title:"AKey",required:"","model-value":e.vehicle.configuration.akey,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.akey"))},null,8,["model-value"]),i(t,{title:"Token",required:"","model-value":e.vehicle.configuration.token,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.token"))},null,8,["model-value"])])}const B=u(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evnotify/vehicle.vue"]]);export{B as default}; diff --git a/web/settings/assets/vehicle-94956e80.js b/web/settings/assets/vehicle-f595aaa1.js similarity index 77% rename from web/settings/assets/vehicle-94956e80.js rename to web/settings/assets/vehicle-f595aaa1.js index 21ca42a76c..ad5f4061f8 100644 --- a/web/settings/assets/vehicle-94956e80.js +++ b/web/settings/assets/vehicle-f595aaa1.js @@ -1 +1 @@ -import{V as l}from"./VehicleConfig-e49e5ddc.js";import{_ as p,u as a,l as m,m as f,G as r,E as t,B as i}from"./vendor-ad7c30fd.js";import"./vendor-fortawesome-9d7cfdfb.js";import"./index-b236cee5.js";import"./vendor-bootstrap-a61a47ba.js";import"./vendor-jquery-f04b6372.js";import"./vendor-axios-8313efad.js";import"./vendor-sortablejs-20ba8ac2.js";import"./dynamic-import-helper-be004503.js";const g={name:"VehicleSocPSACC",mixins:[l]},v={class:"vehicle-soc-psacc"};function c(n,e,b,_,C,h){const d=a("openwb-base-alert"),s=a("openwb-base-text-input"),u=a("openwb-base-number-input");return m(),f("div",v,[r(d,{subtype:"info"},{default:t(()=>e[3]||(e[3]=[i(' Der PSA Car Controller muss auf einem eigenen Host installiert werden, mit Zugangsdaten konfiguriert werden und dauerhaft laufen. Die openWB ruft den SoC zu Beginn der Ladung vom PSA Car Controller ab. Während der Ladung liefert PSA keine Updates. Daher wird der SoC während der Ladung aus dem Zählerstand berechnet. Ausschlaggebend für die Genauigkeit dieser Berechnung sind die beiden Einstellungen "Kapazität der Batterie" und "Wirkungsgrad der Ladeelektronik" im Fahrzeug-Profil. ')])),_:1}),r(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.vehicle.configuration.psacc_server_or_ip,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.psacc_server_or_ip"))},{help:t(()=>e[4]||(e[4]=[i("Host, auf dem der PSA Car Controller läuft.")])),_:1},8,["model-value"]),r(u,{title:"Port",required:"",min:1,max:65535,"model-value":n.vehicle.configuration.psacc_port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.psacc_port"))},{help:t(()=>e[5]||(e[5]=[i("Nummer des Ports, den der PSA Car Controller verwendet.")])),_:1},8,["model-value"]),r(s,{title:"VIN",subtype:"text",required:"","model-value":n.vehicle.configuration.vehicle_vin,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.vehicle_vin"))},{help:t(()=>e[6]||(e[6]=[i("Fahrzeug-Identifizierungsnummer des Fahrzeugs, von dem der SoC abgefragt wird.")])),_:1},8,["model-value"])])}const L=p(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/psacc/vehicle.vue"]]);export{L as default}; +import{V as l}from"./VehicleConfig-a49bda81.js";import{_ as p,u as a,l as m,m as f,G as r,E as t,y as i}from"./vendor-ea36120f.js";import"./vendor-fortawesome-433470db.js";import"./index-cc8f65ba.js";import"./vendor-bootstrap-038cab7c.js";import"./vendor-jquery-48e02303.js";import"./vendor-axios-1f03ee31.js";import"./vendor-sortablejs-c6aaccb3.js";import"./dynamic-import-helper-be004503.js";const g={name:"VehicleSocPSACC",mixins:[l]},v={class:"vehicle-soc-psacc"};function c(n,e,b,_,C,h){const d=a("openwb-base-alert"),s=a("openwb-base-text-input"),u=a("openwb-base-number-input");return m(),f("div",v,[r(d,{subtype:"info"},{default:t(()=>e[3]||(e[3]=[i(' Der PSA Car Controller muss auf einem eigenen Host installiert werden, mit Zugangsdaten konfiguriert werden und dauerhaft laufen. Die openWB ruft den SoC zu Beginn der Ladung vom PSA Car Controller ab. Während der Ladung liefert PSA keine Updates. Daher wird der SoC während der Ladung aus dem Zählerstand berechnet. Ausschlaggebend für die Genauigkeit dieser Berechnung sind die beiden Einstellungen "Kapazität der Batterie" und "Wirkungsgrad der Ladeelektronik" im Fahrzeug-Profil. ')])),_:1}),r(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.vehicle.configuration.psacc_server_or_ip,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.psacc_server_or_ip"))},{help:t(()=>e[4]||(e[4]=[i("Host, auf dem der PSA Car Controller läuft.")])),_:1},8,["model-value"]),r(u,{title:"Port",required:"",min:1,max:65535,"model-value":n.vehicle.configuration.psacc_port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.psacc_port"))},{help:t(()=>e[5]||(e[5]=[i("Nummer des Ports, den der PSA Car Controller verwendet.")])),_:1},8,["model-value"]),r(s,{title:"VIN",subtype:"text",required:"","model-value":n.vehicle.configuration.vehicle_vin,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.vehicle_vin"))},{help:t(()=>e[6]||(e[6]=[i("Fahrzeug-Identifizierungsnummer des Fahrzeugs, von dem der SoC abgefragt wird.")])),_:1},8,["model-value"])])}const y=p(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/psacc/vehicle.vue"]]);export{y as default}; diff --git a/web/settings/assets/vendor-3a7c342f.css b/web/settings/assets/vendor-3a7c342f.css new file mode 100644 index 0000000000..04cc584b4f --- /dev/null +++ b/web/settings/assets/vendor-3a7c342f.css @@ -0,0 +1 @@ +.vtl-checkbox-th[data-v-30c302e9],.vtl-checkbox-td[data-v-30c302e9]{width:1%;min-width:38px}.vtl-both[data-v-30c302e9]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X\ QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC)}.vtl-sortable[data-v-30c302e9]{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px!important}.vtl-asc[data-v-30c302e9]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==)}.vtl-desc[data-v-30c302e9]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII=)}.vtl-loading-mask[data-v-30c302e9]{position:absolute;z-index:3;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;flex-flow:column;align-items:center;justify-content:center;transition:opacity .3s ease}.vtl-loading-content[data-v-30c302e9]{flex:1;display:flex;align-items:center;justify-content:center}.vtl-card[data-v-30c302e9]{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box}select[data-v-30c302e9]{width:auto;border:1px solid #cccccc;background-color:#fff;height:auto;padding:0;margin-bottom:0}.vtl-table[data-v-30c302e9]{width:100%;margin-bottom:1rem;color:#212529;border-collapse:collapse}th[data-v-30c302e9]{text-align:inherit}tr[data-v-30c302e9]{display:table-row;vertical-align:inherit;border-color:inherit}.vtl-table-bordered thead td[data-v-30c302e9],.vtl-table-bordered thead th[data-v-30c302e9]{border-bottom-width:2px}.vtl-table thead th[data-v-30c302e9]{vertical-align:bottom;color:#fff;background-color:#343a40;border-color:#454d55;border-bottom:2px solid #dee2e6}.vtl-table-bordered td[data-v-30c302e9],.vtl-table-bordered th[data-v-30c302e9]{border:1px solid #dee2e6}.vtl-table td[data-v-30c302e9],.vtl-table th[data-v-30c302e9]{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6;vertical-align:middle}.vtl-table-hover tbody tr[data-v-30c302e9]:hover{color:#212529;background-color:#ececec}.vtl-table-responsive[data-v-30c302e9]{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.vtl-table-responsive>.vtl-table-bordered[data-v-30c302e9]{border:0}.vtl-row[data-v-30c302e9]{display:flex;flex-wrap:wrap}.vtl-pagination[data-v-30c302e9]{margin:2px 0;white-space:nowrap;justify-content:flex-end;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-item.disabled .page-link[data-v-30c302e9]{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.page-item:first-child .page-link[data-v-30c302e9]{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-link[data-v-30c302e9]{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.sr-only[data-v-30c302e9]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}[data-v-30c302e9],[data-v-30c302e9]:after,[data-v-30c302e9]:before{box-sizing:border-box}.col-sm-12[data-v-30c302e9]{flex:0 0 100%;max-width:100%}.text-center[data-v-30c302e9]{text-align:center}@media (min-width: 576px){.vtl-table-responsive-sm[data-v-30c302e9]{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.vtl-table-responsive-sm>.table-bordered[data-v-30c302e9]{border:0}.col-md-4[data-v-30c302e9]{flex:0 0 33.333333%;max-width:33.333333%}}.vtl-table thead th[data-v-30c302e9]{position:sticky;top:0;z-index:1}.vtl-table tbody th[data-v-30c302e9]{position:sticky;left:0;z-index:1}.fixed-first-column[data-v-30c302e9]{overflow-x:auto}.fixed-first-column tr th[data-v-30c302e9]:first-child{position:sticky;left:0;z-index:2}.fixed-first-column tr td[data-v-30c302e9]:first-child{position:sticky;left:0}.fixed-first-column tr th[data-v-30c302e9]:first-child:before,.fixed-first-second-column tr th[data-v-30c302e9]:nth-child(2):before{content:"";position:absolute;border-right:1px solid #454d55;left:0;top:0;width:102%;height:102%}.fixed-first-column tr .vtl-checkbox-th[data-v-30c302e9]:first-child:before{content:"";position:absolute;border-right:1px solid #454d55;left:0;top:0;width:103%;height:102%}.fixed-first-column tr td[data-v-30c302e9]:first-child:before,.fixed-first-column tr td[data-v-30c302e9]:nth-child(2):before{content:"";position:absolute;border-right:1px solid #dee2e6;left:0;top:0;width:102%;height:102%}.fixed-first-column tr .vtl-checkbox-td[data-v-30c302e9]:first-child:before{content:"";position:absolute;border-right:1px solid #dee2e6;left:0;top:0;width:103%;height:102%}.fixed-first-second-column tr th[data-v-30c302e9]:nth-child(2),.fixed-first-second-column tr td[data-v-30c302e9]:nth-child(2){position:sticky;left:38px}.fixed-first-second-column tr th[data-v-30c302e9]:nth-child(2){z-index:2}.fixed-first-column tr td[data-v-30c302e9]:first-child,.fixed-first-second-column tr td[data-v-30c302e9]:nth-child(2){background-color:#fff}.fixed-first-column tr.hover td[data-v-30c302e9]:first-child,.fixed-first-second-column tr.hover td[data-v-30c302e9]:nth-child(2){background-color:#ececec}.flex[data-v-30c302e9]{display:flex}.animation[data-v-30c302e9]{transform:rotate(0);transition:transform .3s}.cursor-pointer[data-v-30c302e9]{cursor:pointer}.rotated-90[data-v-30c302e9]{transform:rotate(-90deg)}.hidden[data-v-30c302e9]{display:none}.ml-2[data-v-30c302e9]{margin-left:.5rem}.vtl-tbody-td.hover[data-v-30c302e9]{background-color:#ececec}.spinner-border[data-v-30c302e9]{display:inline-block;border:.25em solid currentcolor;border-right-color:transparent;color:#ffffffbf;width:4rem;height:4rem;vertical-align:-.125em;border-radius:50%;animation:.75s linear infinite spinner-border-30c302e9;-webkit-animation:.75s linear infinite spinner-border-30c302e9}@keyframes spinner-border-30c302e9{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.flex-item[data-v-30c302e9]{display:flex;gap:5px}.skeleton-container[data-v-30c302e9]{border:1px solid #f3f4f6;width:100%}.skeleton-section[data-v-30c302e9]{display:grid;overflow:hidden}.skeleton-header[data-v-30c302e9]{grid-template-columns:repeat(auto-fit,minmax(3rem,1fr));background-color:#f3f6f8;padding-top:4px;padding-bottom:4px}.skeleton-body[data-v-30c302e9]{grid-template-columns:repeat(auto-fit,minmax(3rem,1fr))}.skeleton-footer[data-v-30c302e9]{margin-top:10px;margin-bottom:5px;padding-left:8px;padding-right:8px;display:flex;justify-content:space-between}.skeleton-footer .item[data-v-30c302e9]{background-color:#e5e7eb;border-radius:5px;height:30px;min-width:30px;animation:skeleton-pulse-30c302e9 1s cubic-bezier(.4,0,.6,1) infinite}.skeleton-item[data-v-30c302e9]{height:2.5rem;overflow:hidden;padding:8px;border-bottom:1px solid rgb(243,244,246);animation:skeleton-pulse-30c302e9 2s cubic-bezier(.4,0,.6,1) infinite}.skeleton-body:last-child .skeleton-item[data-v-30c302e9]{border-bottom:0}.skeleton-item .item[data-v-30c302e9]{background-color:#e5e7eb;border-radius:5px;height:100%}@keyframes skeleton-pulse-30c302e9{0%,to{opacity:1}50%{opacity:.5}}@media (max-width: 1024px){.skeleton-section[data-v-30c302e9]{grid-template-columns:repeat(8,minmax(12rem,1fr))}}@media (max-width: 640px){.skeleton-section[data-v-30c302e9]{grid-template-columns:repeat(8,minmax(12rem,1fr))}}@media (max-width: 480px){.skeleton-section[data-v-30c302e9]{grid-template-columns:repeat(8,minmax(12rem,1fr))}} diff --git a/web/settings/assets/vendor-aab9f734.css b/web/settings/assets/vendor-aab9f734.css deleted file mode 100644 index dd538519c6..0000000000 --- a/web/settings/assets/vendor-aab9f734.css +++ /dev/null @@ -1 +0,0 @@ -.vtl-checkbox-th[data-v-30c302e9],.vtl-checkbox-td[data-v-30c302e9]{width:1%;min-width:38px}.vtl-both[data-v-30c302e9]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X\ QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC)}.vtl-sortable[data-v-30c302e9]{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px!important}.vtl-asc[data-v-30c302e9]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==)}.vtl-desc[data-v-30c302e9]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII=)}.vtl-loading-mask[data-v-30c302e9]{position:absolute;z-index:3;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;flex-flow:column;transition:opacity .3s ease}.vtl-loading-content[data-v-30c302e9]{flex:1;display:flex;align-items:center;justify-content:center}.vtl-card[data-v-30c302e9]{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box}select[data-v-30c302e9]{width:auto;border:1px solid #cccccc;background-color:#fff;height:auto;padding:0;margin-bottom:0}.vtl-table[data-v-30c302e9]{width:100%;margin-bottom:1rem;color:#212529;border-collapse:collapse}th[data-v-30c302e9]{text-align:inherit}tr[data-v-30c302e9]{display:table-row;vertical-align:inherit;border-color:inherit}.vtl-table-bordered thead td[data-v-30c302e9],.vtl-table-bordered thead th[data-v-30c302e9]{border-bottom-width:2px}.vtl-table thead th[data-v-30c302e9]{vertical-align:bottom;color:#fff;background-color:#343a40;border-color:#454d55;border-bottom:2px solid #dee2e6}.vtl-table-bordered td[data-v-30c302e9],.vtl-table-bordered th[data-v-30c302e9]{border:1px solid #dee2e6}.vtl-table td[data-v-30c302e9],.vtl-table th[data-v-30c302e9]{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6;vertical-align:middle}.vtl-table-hover tbody tr[data-v-30c302e9]:hover{color:#212529;background-color:#ececec}.vtl-table-responsive[data-v-30c302e9]{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.vtl-table-responsive>.vtl-table-bordered[data-v-30c302e9]{border:0}.vtl-row[data-v-30c302e9]{display:flex;flex-wrap:wrap}.vtl-pagination[data-v-30c302e9]{margin:2px 0;white-space:nowrap;justify-content:flex-end;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-item.disabled .page-link[data-v-30c302e9]{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.page-item:first-child .page-link[data-v-30c302e9]{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-link[data-v-30c302e9]{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.sr-only[data-v-30c302e9]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}[data-v-30c302e9],[data-v-30c302e9]:after,[data-v-30c302e9]:before{box-sizing:border-box}.col-sm-12[data-v-30c302e9]{flex:0 0 100%;max-width:100%}.text-center[data-v-30c302e9]{text-align:center}@media (min-width: 576px){.vtl-table-responsive-sm[data-v-30c302e9]{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.vtl-table-responsive-sm>.table-bordered[data-v-30c302e9]{border:0}.col-md-4[data-v-30c302e9]{flex:0 0 33.333333%;max-width:33.333333%}}.vtl-table thead th[data-v-30c302e9]{position:sticky;top:0;z-index:1}.vtl-table tbody th[data-v-30c302e9]{position:sticky;left:0;z-index:1}.fixed-first-column[data-v-30c302e9]{overflow-x:auto}.fixed-first-column tr th[data-v-30c302e9]:first-child{position:sticky;left:0;z-index:2}.fixed-first-column tr td[data-v-30c302e9]:first-child{position:sticky;left:0}.fixed-first-column tr th[data-v-30c302e9]:first-child:before,.fixed-first-second-column tr th[data-v-30c302e9]:nth-child(2):before{content:"";position:absolute;border-right:1px solid #454d55;left:0;top:0;width:102%;height:102%}.fixed-first-column tr .vtl-checkbox-th[data-v-30c302e9]:first-child:before{content:"";position:absolute;border-right:1px solid #454d55;left:0;top:0;width:103%;height:102%}.fixed-first-column tr td[data-v-30c302e9]:first-child:before,.fixed-first-column tr td[data-v-30c302e9]:nth-child(2):before{content:"";position:absolute;border-right:1px solid #dee2e6;left:0;top:0;width:102%;height:102%}.fixed-first-column tr .vtl-checkbox-td[data-v-30c302e9]:first-child:before{content:"";position:absolute;border-right:1px solid #dee2e6;left:0;top:0;width:103%;height:102%}.fixed-first-second-column tr th[data-v-30c302e9]:nth-child(2),.fixed-first-second-column tr td[data-v-30c302e9]:nth-child(2){position:sticky;left:38px}.fixed-first-second-column tr th[data-v-30c302e9]:nth-child(2){z-index:2}.fixed-first-column tr td[data-v-30c302e9]:first-child,.fixed-first-second-column tr td[data-v-30c302e9]:nth-child(2){background-color:#fff}.fixed-first-column tr.hover td[data-v-30c302e9]:first-child,.fixed-first-second-column tr.hover td[data-v-30c302e9]:nth-child(2){background-color:#ececec}.flex[data-v-30c302e9]{display:flex}.animation[data-v-30c302e9]{transform:rotate(0);transition:transform .3s}.cursor-pointer[data-v-30c302e9]{cursor:pointer}.rotated-90[data-v-30c302e9]{transform:rotate(-90deg)}.hidden[data-v-30c302e9]{display:none}.ml-2[data-v-30c302e9]{margin-left:.5rem}.vtl-tbody-td.hover[data-v-30c302e9]{background-color:#ececec} diff --git a/web/settings/assets/vendor-axios-8313efad.js b/web/settings/assets/vendor-axios-1f03ee31.js similarity index 99% rename from web/settings/assets/vendor-axios-8313efad.js rename to web/settings/assets/vendor-axios-1f03ee31.js index 0f6da3b1f9..60ed6e34a9 100644 --- a/web/settings/assets/vendor-axios-8313efad.js +++ b/web/settings/assets/vendor-axios-1f03ee31.js @@ -1,4 +1,4 @@ -import{g as ot,a as Ee,b as it}from"./vendor-ad7c30fd.js";function De(e,t){return function(){return e.apply(t,arguments)}}const{toString:at}=Object.prototype,{getPrototypeOf:de}=Object,K=(e=>t=>{const n=at.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),C=e=>(e=e.toLowerCase(),t=>K(t)===e),X=e=>t=>typeof t===e,{isArray:D}=Array,j=X("undefined");function ct(e){return e!==null&&!j(e)&&e.constructor!==null&&!j(e.constructor)&&A(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const Ue=C("ArrayBuffer");function ut(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&Ue(e.buffer),t}const lt=X("string"),A=X("function"),ke=X("number"),G=e=>e!==null&&typeof e=="object",ft=e=>e===!0||e===!1,H=e=>{if(K(e)!=="object")return!1;const t=de(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},dt=C("Date"),pt=C("File"),ht=C("Blob"),mt=C("FileList"),yt=e=>G(e)&&A(e.pipe),bt=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||A(e.append)&&((t=K(e))==="formdata"||t==="object"&&A(e.toString)&&e.toString()==="[object FormData]"))},wt=C("URLSearchParams"),[Et,gt,St,Rt]=["ReadableStream","Request","Response","Headers"].map(C),Ot=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function q(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let r,s;if(typeof e!="object"&&(e=[e]),D(e))for(r=0,s=e.length;r0;)if(s=n[r],t===s.toLowerCase())return s;return null}const L=(()=>typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:ot)(),qe=e=>!j(e)&&e!==L;function ie(){const{caseless:e}=qe(this)&&this||{},t={},n=(r,s)=>{const o=e&&je(t,s)||s;H(t[o])&&H(r)?t[o]=ie(t[o],r):H(r)?t[o]=ie({},r):D(r)?t[o]=r.slice():t[o]=r};for(let r=0,s=arguments.length;r(q(t,(s,o)=>{n&&A(s)?e[o]=De(s,n):e[o]=s},{allOwnKeys:r}),e),At=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),xt=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},Ct=(e,t,n,r)=>{let s,o,i;const c={};if(t=t||{},e==null)return t;do{for(s=Object.getOwnPropertyNames(e),o=s.length;o-- >0;)i=s[o],(!r||r(i,e,t))&&!c[i]&&(t[i]=e[i],c[i]=!0);e=n!==!1&&de(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},Nt=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return r!==-1&&r===n},Pt=e=>{if(!e)return null;if(D(e))return e;let t=e.length;if(!ke(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},_t=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&de(Uint8Array)),Ft=(e,t)=>{const r=(e&&e[Symbol.iterator]).call(e);let s;for(;(s=r.next())&&!s.done;){const o=s.value;t.call(e,o[0],o[1])}},Lt=(e,t)=>{let n;const r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},Bt=C("HTMLFormElement"),Dt=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,s){return r.toUpperCase()+s}),ge=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),Ut=C("RegExp"),Ie=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};q(n,(s,o)=>{let i;(i=t(s,o,e))!==!1&&(r[o]=i||s)}),Object.defineProperties(e,r)},kt=e=>{Ie(e,(t,n)=>{if(A(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=e[n];if(A(r)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},jt=(e,t)=>{const n={},r=s=>{s.forEach(o=>{n[o]=!0})};return D(e)?r(e):r(String(e).split(t)),n},qt=()=>{},It=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t,te="abcdefghijklmnopqrstuvwxyz",Se="0123456789",He={DIGIT:Se,ALPHA:te,ALPHA_DIGIT:te+te.toUpperCase()+Se},Ht=(e=16,t=He.ALPHA_DIGIT)=>{let n="";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n};function Mt(e){return!!(e&&A(e.append)&&e[Symbol.toStringTag]==="FormData"&&e[Symbol.iterator])}const zt=e=>{const t=new Array(10),n=(r,s)=>{if(G(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[s]=r;const o=D(r)?[]:{};return q(r,(i,c)=>{const f=n(i,s+1);!j(f)&&(o[c]=f)}),t[s]=void 0,o}}return r};return n(e,0)},Vt=C("AsyncFunction"),$t=e=>e&&(G(e)||A(e))&&A(e.then)&&A(e.catch),Me=((e,t)=>e?setImmediate:t?((n,r)=>(L.addEventListener("message",({source:s,data:o})=>{s===L&&o===n&&r.length&&r.shift()()},!1),s=>{r.push(s),L.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",A(L.postMessage)),vt=typeof queueMicrotask<"u"?queueMicrotask.bind(L):typeof Ee<"u"&&Ee.nextTick||Me,a={isArray:D,isArrayBuffer:Ue,isBuffer:ct,isFormData:bt,isArrayBufferView:ut,isString:lt,isNumber:ke,isBoolean:ft,isObject:G,isPlainObject:H,isReadableStream:Et,isRequest:gt,isResponse:St,isHeaders:Rt,isUndefined:j,isDate:dt,isFile:pt,isBlob:ht,isRegExp:Ut,isFunction:A,isStream:yt,isURLSearchParams:wt,isTypedArray:_t,isFileList:mt,forEach:q,merge:ie,extend:Tt,trim:Ot,stripBOM:At,inherits:xt,toFlatObject:Ct,kindOf:K,kindOfTest:C,endsWith:Nt,toArray:Pt,forEachEntry:Ft,matchAll:Lt,isHTMLForm:Bt,hasOwnProperty:ge,hasOwnProp:ge,reduceDescriptors:Ie,freezeMethods:kt,toObjectSet:jt,toCamelCase:Dt,noop:qt,toFiniteNumber:It,findKey:je,global:L,isContextDefined:qe,ALPHABET:He,generateString:Ht,isSpecCompliantForm:Mt,toJSONObject:zt,isAsyncFn:Vt,isThenable:$t,setImmediate:Me,asap:vt};function m(e,t,n,r,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),s&&(this.response=s,this.status=s.status?s.status:null)}a.inherits(m,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:a.toJSONObject(this.config),code:this.code,status:this.status}}});const ze=m.prototype,Ve={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{Ve[e]={value:e}});Object.defineProperties(m,Ve);Object.defineProperty(ze,"isAxiosError",{value:!0});m.from=(e,t,n,r,s,o)=>{const i=Object.create(ze);return a.toFlatObject(e,i,function(f){return f!==Error.prototype},c=>c!=="isAxiosError"),m.call(i,e.message,t,n,r,s),i.cause=e,i.name=e.name,o&&Object.assign(i,o),i};const Jt=null;function ae(e){return a.isPlainObject(e)||a.isArray(e)}function $e(e){return a.endsWith(e,"[]")?e.slice(0,-2):e}function Re(e,t,n){return e?e.concat(t).map(function(s,o){return s=$e(s),!n&&o?"["+s+"]":s}).join(n?".":""):t}function Wt(e){return a.isArray(e)&&!e.some(ae)}const Kt=a.toFlatObject(a,{},null,function(t){return/^is[A-Z]/.test(t)});function Q(e,t,n){if(!a.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=a.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(y,h){return!a.isUndefined(h[y])});const r=n.metaTokens,s=n.visitor||l,o=n.dots,i=n.indexes,f=(n.Blob||typeof Blob<"u"&&Blob)&&a.isSpecCompliantForm(t);if(!a.isFunction(s))throw new TypeError("visitor must be a function");function u(p){if(p===null)return"";if(a.isDate(p))return p.toISOString();if(!f&&a.isBlob(p))throw new m("Blob is not supported. Use a Buffer instead.");return a.isArrayBuffer(p)||a.isTypedArray(p)?f&&typeof Blob=="function"?new Blob([p]):it.Buffer.from(p):p}function l(p,y,h){let w=p;if(p&&!h&&typeof p=="object"){if(a.endsWith(y,"{}"))y=r?y:y.slice(0,-2),p=JSON.stringify(p);else if(a.isArray(p)&&Wt(p)||(a.isFileList(p)||a.endsWith(y,"[]"))&&(w=a.toArray(p)))return y=$e(y),w.forEach(function(R,P){!(a.isUndefined(R)||R===null)&&t.append(i===!0?Re([y],P,o):i===null?y:y+"[]",u(R))}),!1}return ae(p)?!0:(t.append(Re(h,y,o),u(p)),!1)}const d=[],b=Object.assign(Kt,{defaultVisitor:l,convertValue:u,isVisitable:ae});function g(p,y){if(!a.isUndefined(p)){if(d.indexOf(p)!==-1)throw Error("Circular reference detected in "+y.join("."));d.push(p),a.forEach(p,function(w,S){(!(a.isUndefined(w)||w===null)&&s.call(t,w,a.isString(S)?S.trim():S,y,b))===!0&&g(w,y?y.concat(S):[S])}),d.pop()}}if(!a.isObject(e))throw new TypeError("data must be an object");return g(e),t}function Oe(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(r){return t[r]})}function pe(e,t){this._pairs=[],e&&Q(e,this,t)}const ve=pe.prototype;ve.append=function(t,n){this._pairs.push([t,n])};ve.toString=function(t){const n=t?function(r){return t.call(this,r,Oe)}:Oe;return this._pairs.map(function(s){return n(s[0])+"="+n(s[1])},"").join("&")};function Xt(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Je(e,t,n){if(!t)return e;const r=n&&n.encode||Xt;a.isFunction(n)&&(n={serialize:n});const s=n&&n.serialize;let o;if(s?o=s(t,n):o=a.isURLSearchParams(t)?t.toString():new pe(t,n).toString(r),o){const i=e.indexOf("#");i!==-1&&(e=e.slice(0,i)),e+=(e.indexOf("?")===-1?"?":"&")+o}return e}class Gt{constructor(){this.handlers=[]}use(t,n,r){return this.handlers.push({fulfilled:t,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){a.forEach(this.handlers,function(r){r!==null&&t(r)})}}const Te=Gt,We={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Qt=typeof URLSearchParams<"u"?URLSearchParams:pe,Zt=typeof FormData<"u"?FormData:null,Yt=typeof Blob<"u"?Blob:null,en={isBrowser:!0,classes:{URLSearchParams:Qt,FormData:Zt,Blob:Yt},protocols:["http","https","file","blob","url","data"]},he=typeof window<"u"&&typeof document<"u",ce=typeof navigator=="object"&&navigator||void 0,tn=he&&(!ce||["ReactNative","NativeScript","NS"].indexOf(ce.product)<0),nn=(()=>typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function")(),rn=he&&window.location.href||"http://localhost",sn=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:he,hasStandardBrowserEnv:tn,hasStandardBrowserWebWorkerEnv:nn,navigator:ce,origin:rn},Symbol.toStringTag,{value:"Module"})),O={...sn,...en};function on(e,t){return Q(e,new O.classes.URLSearchParams,Object.assign({visitor:function(n,r,s,o){return O.isNode&&a.isBuffer(n)?(this.append(r,n.toString("base64")),!1):o.defaultVisitor.apply(this,arguments)}},t))}function an(e){return a.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function cn(e){const t={},n=Object.keys(e);let r;const s=n.length;let o;for(r=0;r=n.length;return i=!i&&a.isArray(s)?s.length:i,f?(a.hasOwnProp(s,i)?s[i]=[s[i],r]:s[i]=r,!c):((!s[i]||!a.isObject(s[i]))&&(s[i]=[]),t(n,r,s[i],o)&&a.isArray(s[i])&&(s[i]=cn(s[i])),!c)}if(a.isFormData(e)&&a.isFunction(e.entries)){const n={};return a.forEachEntry(e,(r,s)=>{t(an(r),s,n,0)}),n}return null}function un(e,t,n){if(a.isString(e))try{return(t||JSON.parse)(e),a.trim(e)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(e)}const me={transitional:We,adapter:["xhr","http","fetch"],transformRequest:[function(t,n){const r=n.getContentType()||"",s=r.indexOf("application/json")>-1,o=a.isObject(t);if(o&&a.isHTMLForm(t)&&(t=new FormData(t)),a.isFormData(t))return s?JSON.stringify(Ke(t)):t;if(a.isArrayBuffer(t)||a.isBuffer(t)||a.isStream(t)||a.isFile(t)||a.isBlob(t)||a.isReadableStream(t))return t;if(a.isArrayBufferView(t))return t.buffer;if(a.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let c;if(o){if(r.indexOf("application/x-www-form-urlencoded")>-1)return on(t,this.formSerializer).toString();if((c=a.isFileList(t))||r.indexOf("multipart/form-data")>-1){const f=this.env&&this.env.FormData;return Q(c?{"files[]":t}:t,f&&new f,this.formSerializer)}}return o||s?(n.setContentType("application/json",!1),un(t)):t}],transformResponse:[function(t){const n=this.transitional||me.transitional,r=n&&n.forcedJSONParsing,s=this.responseType==="json";if(a.isResponse(t)||a.isReadableStream(t))return t;if(t&&a.isString(t)&&(r&&!this.responseType||s)){const i=!(n&&n.silentJSONParsing)&&s;try{return JSON.parse(t)}catch(c){if(i)throw c.name==="SyntaxError"?m.from(c,m.ERR_BAD_RESPONSE,this,null,this.response):c}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:O.classes.FormData,Blob:O.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};a.forEach(["delete","get","head","post","put","patch"],e=>{me.headers[e]={}});const ye=me,ln=a.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),fn=e=>{const t={};let n,r,s;return e&&e.split(` +import{g as ot,a as Ee,b as it}from"./vendor-ea36120f.js";function De(e,t){return function(){return e.apply(t,arguments)}}const{toString:at}=Object.prototype,{getPrototypeOf:de}=Object,K=(e=>t=>{const n=at.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),C=e=>(e=e.toLowerCase(),t=>K(t)===e),X=e=>t=>typeof t===e,{isArray:D}=Array,j=X("undefined");function ct(e){return e!==null&&!j(e)&&e.constructor!==null&&!j(e.constructor)&&A(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const Ue=C("ArrayBuffer");function ut(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&Ue(e.buffer),t}const lt=X("string"),A=X("function"),ke=X("number"),G=e=>e!==null&&typeof e=="object",ft=e=>e===!0||e===!1,H=e=>{if(K(e)!=="object")return!1;const t=de(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},dt=C("Date"),pt=C("File"),ht=C("Blob"),mt=C("FileList"),yt=e=>G(e)&&A(e.pipe),bt=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||A(e.append)&&((t=K(e))==="formdata"||t==="object"&&A(e.toString)&&e.toString()==="[object FormData]"))},wt=C("URLSearchParams"),[Et,gt,St,Rt]=["ReadableStream","Request","Response","Headers"].map(C),Ot=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function q(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let r,s;if(typeof e!="object"&&(e=[e]),D(e))for(r=0,s=e.length;r0;)if(s=n[r],t===s.toLowerCase())return s;return null}const L=(()=>typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:ot)(),qe=e=>!j(e)&&e!==L;function ie(){const{caseless:e}=qe(this)&&this||{},t={},n=(r,s)=>{const o=e&&je(t,s)||s;H(t[o])&&H(r)?t[o]=ie(t[o],r):H(r)?t[o]=ie({},r):D(r)?t[o]=r.slice():t[o]=r};for(let r=0,s=arguments.length;r(q(t,(s,o)=>{n&&A(s)?e[o]=De(s,n):e[o]=s},{allOwnKeys:r}),e),At=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),xt=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},Ct=(e,t,n,r)=>{let s,o,i;const c={};if(t=t||{},e==null)return t;do{for(s=Object.getOwnPropertyNames(e),o=s.length;o-- >0;)i=s[o],(!r||r(i,e,t))&&!c[i]&&(t[i]=e[i],c[i]=!0);e=n!==!1&&de(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},Nt=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return r!==-1&&r===n},Pt=e=>{if(!e)return null;if(D(e))return e;let t=e.length;if(!ke(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},_t=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&de(Uint8Array)),Ft=(e,t)=>{const r=(e&&e[Symbol.iterator]).call(e);let s;for(;(s=r.next())&&!s.done;){const o=s.value;t.call(e,o[0],o[1])}},Lt=(e,t)=>{let n;const r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},Bt=C("HTMLFormElement"),Dt=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,s){return r.toUpperCase()+s}),ge=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),Ut=C("RegExp"),Ie=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};q(n,(s,o)=>{let i;(i=t(s,o,e))!==!1&&(r[o]=i||s)}),Object.defineProperties(e,r)},kt=e=>{Ie(e,(t,n)=>{if(A(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=e[n];if(A(r)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},jt=(e,t)=>{const n={},r=s=>{s.forEach(o=>{n[o]=!0})};return D(e)?r(e):r(String(e).split(t)),n},qt=()=>{},It=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t,te="abcdefghijklmnopqrstuvwxyz",Se="0123456789",He={DIGIT:Se,ALPHA:te,ALPHA_DIGIT:te+te.toUpperCase()+Se},Ht=(e=16,t=He.ALPHA_DIGIT)=>{let n="";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n};function Mt(e){return!!(e&&A(e.append)&&e[Symbol.toStringTag]==="FormData"&&e[Symbol.iterator])}const zt=e=>{const t=new Array(10),n=(r,s)=>{if(G(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[s]=r;const o=D(r)?[]:{};return q(r,(i,c)=>{const f=n(i,s+1);!j(f)&&(o[c]=f)}),t[s]=void 0,o}}return r};return n(e,0)},Vt=C("AsyncFunction"),$t=e=>e&&(G(e)||A(e))&&A(e.then)&&A(e.catch),Me=((e,t)=>e?setImmediate:t?((n,r)=>(L.addEventListener("message",({source:s,data:o})=>{s===L&&o===n&&r.length&&r.shift()()},!1),s=>{r.push(s),L.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",A(L.postMessage)),vt=typeof queueMicrotask<"u"?queueMicrotask.bind(L):typeof Ee<"u"&&Ee.nextTick||Me,a={isArray:D,isArrayBuffer:Ue,isBuffer:ct,isFormData:bt,isArrayBufferView:ut,isString:lt,isNumber:ke,isBoolean:ft,isObject:G,isPlainObject:H,isReadableStream:Et,isRequest:gt,isResponse:St,isHeaders:Rt,isUndefined:j,isDate:dt,isFile:pt,isBlob:ht,isRegExp:Ut,isFunction:A,isStream:yt,isURLSearchParams:wt,isTypedArray:_t,isFileList:mt,forEach:q,merge:ie,extend:Tt,trim:Ot,stripBOM:At,inherits:xt,toFlatObject:Ct,kindOf:K,kindOfTest:C,endsWith:Nt,toArray:Pt,forEachEntry:Ft,matchAll:Lt,isHTMLForm:Bt,hasOwnProperty:ge,hasOwnProp:ge,reduceDescriptors:Ie,freezeMethods:kt,toObjectSet:jt,toCamelCase:Dt,noop:qt,toFiniteNumber:It,findKey:je,global:L,isContextDefined:qe,ALPHABET:He,generateString:Ht,isSpecCompliantForm:Mt,toJSONObject:zt,isAsyncFn:Vt,isThenable:$t,setImmediate:Me,asap:vt};function m(e,t,n,r,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),s&&(this.response=s,this.status=s.status?s.status:null)}a.inherits(m,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:a.toJSONObject(this.config),code:this.code,status:this.status}}});const ze=m.prototype,Ve={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{Ve[e]={value:e}});Object.defineProperties(m,Ve);Object.defineProperty(ze,"isAxiosError",{value:!0});m.from=(e,t,n,r,s,o)=>{const i=Object.create(ze);return a.toFlatObject(e,i,function(f){return f!==Error.prototype},c=>c!=="isAxiosError"),m.call(i,e.message,t,n,r,s),i.cause=e,i.name=e.name,o&&Object.assign(i,o),i};const Jt=null;function ae(e){return a.isPlainObject(e)||a.isArray(e)}function $e(e){return a.endsWith(e,"[]")?e.slice(0,-2):e}function Re(e,t,n){return e?e.concat(t).map(function(s,o){return s=$e(s),!n&&o?"["+s+"]":s}).join(n?".":""):t}function Wt(e){return a.isArray(e)&&!e.some(ae)}const Kt=a.toFlatObject(a,{},null,function(t){return/^is[A-Z]/.test(t)});function Q(e,t,n){if(!a.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=a.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(y,h){return!a.isUndefined(h[y])});const r=n.metaTokens,s=n.visitor||l,o=n.dots,i=n.indexes,f=(n.Blob||typeof Blob<"u"&&Blob)&&a.isSpecCompliantForm(t);if(!a.isFunction(s))throw new TypeError("visitor must be a function");function u(p){if(p===null)return"";if(a.isDate(p))return p.toISOString();if(!f&&a.isBlob(p))throw new m("Blob is not supported. Use a Buffer instead.");return a.isArrayBuffer(p)||a.isTypedArray(p)?f&&typeof Blob=="function"?new Blob([p]):it.Buffer.from(p):p}function l(p,y,h){let w=p;if(p&&!h&&typeof p=="object"){if(a.endsWith(y,"{}"))y=r?y:y.slice(0,-2),p=JSON.stringify(p);else if(a.isArray(p)&&Wt(p)||(a.isFileList(p)||a.endsWith(y,"[]"))&&(w=a.toArray(p)))return y=$e(y),w.forEach(function(R,P){!(a.isUndefined(R)||R===null)&&t.append(i===!0?Re([y],P,o):i===null?y:y+"[]",u(R))}),!1}return ae(p)?!0:(t.append(Re(h,y,o),u(p)),!1)}const d=[],b=Object.assign(Kt,{defaultVisitor:l,convertValue:u,isVisitable:ae});function g(p,y){if(!a.isUndefined(p)){if(d.indexOf(p)!==-1)throw Error("Circular reference detected in "+y.join("."));d.push(p),a.forEach(p,function(w,S){(!(a.isUndefined(w)||w===null)&&s.call(t,w,a.isString(S)?S.trim():S,y,b))===!0&&g(w,y?y.concat(S):[S])}),d.pop()}}if(!a.isObject(e))throw new TypeError("data must be an object");return g(e),t}function Oe(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(r){return t[r]})}function pe(e,t){this._pairs=[],e&&Q(e,this,t)}const ve=pe.prototype;ve.append=function(t,n){this._pairs.push([t,n])};ve.toString=function(t){const n=t?function(r){return t.call(this,r,Oe)}:Oe;return this._pairs.map(function(s){return n(s[0])+"="+n(s[1])},"").join("&")};function Xt(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Je(e,t,n){if(!t)return e;const r=n&&n.encode||Xt;a.isFunction(n)&&(n={serialize:n});const s=n&&n.serialize;let o;if(s?o=s(t,n):o=a.isURLSearchParams(t)?t.toString():new pe(t,n).toString(r),o){const i=e.indexOf("#");i!==-1&&(e=e.slice(0,i)),e+=(e.indexOf("?")===-1?"?":"&")+o}return e}class Gt{constructor(){this.handlers=[]}use(t,n,r){return this.handlers.push({fulfilled:t,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){a.forEach(this.handlers,function(r){r!==null&&t(r)})}}const Te=Gt,We={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Qt=typeof URLSearchParams<"u"?URLSearchParams:pe,Zt=typeof FormData<"u"?FormData:null,Yt=typeof Blob<"u"?Blob:null,en={isBrowser:!0,classes:{URLSearchParams:Qt,FormData:Zt,Blob:Yt},protocols:["http","https","file","blob","url","data"]},he=typeof window<"u"&&typeof document<"u",ce=typeof navigator=="object"&&navigator||void 0,tn=he&&(!ce||["ReactNative","NativeScript","NS"].indexOf(ce.product)<0),nn=(()=>typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function")(),rn=he&&window.location.href||"http://localhost",sn=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:he,hasStandardBrowserEnv:tn,hasStandardBrowserWebWorkerEnv:nn,navigator:ce,origin:rn},Symbol.toStringTag,{value:"Module"})),O={...sn,...en};function on(e,t){return Q(e,new O.classes.URLSearchParams,Object.assign({visitor:function(n,r,s,o){return O.isNode&&a.isBuffer(n)?(this.append(r,n.toString("base64")),!1):o.defaultVisitor.apply(this,arguments)}},t))}function an(e){return a.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function cn(e){const t={},n=Object.keys(e);let r;const s=n.length;let o;for(r=0;r=n.length;return i=!i&&a.isArray(s)?s.length:i,f?(a.hasOwnProp(s,i)?s[i]=[s[i],r]:s[i]=r,!c):((!s[i]||!a.isObject(s[i]))&&(s[i]=[]),t(n,r,s[i],o)&&a.isArray(s[i])&&(s[i]=cn(s[i])),!c)}if(a.isFormData(e)&&a.isFunction(e.entries)){const n={};return a.forEachEntry(e,(r,s)=>{t(an(r),s,n,0)}),n}return null}function un(e,t,n){if(a.isString(e))try{return(t||JSON.parse)(e),a.trim(e)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(e)}const me={transitional:We,adapter:["xhr","http","fetch"],transformRequest:[function(t,n){const r=n.getContentType()||"",s=r.indexOf("application/json")>-1,o=a.isObject(t);if(o&&a.isHTMLForm(t)&&(t=new FormData(t)),a.isFormData(t))return s?JSON.stringify(Ke(t)):t;if(a.isArrayBuffer(t)||a.isBuffer(t)||a.isStream(t)||a.isFile(t)||a.isBlob(t)||a.isReadableStream(t))return t;if(a.isArrayBufferView(t))return t.buffer;if(a.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let c;if(o){if(r.indexOf("application/x-www-form-urlencoded")>-1)return on(t,this.formSerializer).toString();if((c=a.isFileList(t))||r.indexOf("multipart/form-data")>-1){const f=this.env&&this.env.FormData;return Q(c?{"files[]":t}:t,f&&new f,this.formSerializer)}}return o||s?(n.setContentType("application/json",!1),un(t)):t}],transformResponse:[function(t){const n=this.transitional||me.transitional,r=n&&n.forcedJSONParsing,s=this.responseType==="json";if(a.isResponse(t)||a.isReadableStream(t))return t;if(t&&a.isString(t)&&(r&&!this.responseType||s)){const i=!(n&&n.silentJSONParsing)&&s;try{return JSON.parse(t)}catch(c){if(i)throw c.name==="SyntaxError"?m.from(c,m.ERR_BAD_RESPONSE,this,null,this.response):c}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:O.classes.FormData,Blob:O.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};a.forEach(["delete","get","head","post","put","patch"],e=>{me.headers[e]={}});const ye=me,ln=a.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),fn=e=>{const t={};let n,r,s;return e&&e.split(` `).forEach(function(i){s=i.indexOf(":"),n=i.substring(0,s).trim().toLowerCase(),r=i.substring(s+1).trim(),!(!n||t[n]&&ln[n])&&(n==="set-cookie"?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t},Ae=Symbol("internals");function k(e){return e&&String(e).trim().toLowerCase()}function M(e){return e===!1||e==null?e:a.isArray(e)?e.map(M):String(e)}function dn(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}const pn=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function ne(e,t,n,r,s){if(a.isFunction(r))return r.call(this,t,n);if(s&&(t=n),!!a.isString(t)){if(a.isString(r))return t.indexOf(r)!==-1;if(a.isRegExp(r))return r.test(t)}}function hn(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,r)=>n.toUpperCase()+r)}function mn(e,t){const n=a.toCamelCase(" "+t);["get","set","has"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(s,o,i){return this[r].call(this,t,s,o,i)},configurable:!0})})}class Z{constructor(t){t&&this.set(t)}set(t,n,r){const s=this;function o(c,f,u){const l=k(f);if(!l)throw new Error("header name must be a non-empty string");const d=a.findKey(s,l);(!d||s[d]===void 0||u===!0||u===void 0&&s[d]!==!1)&&(s[d||f]=M(c))}const i=(c,f)=>a.forEach(c,(u,l)=>o(u,l,f));if(a.isPlainObject(t)||t instanceof this.constructor)i(t,n);else if(a.isString(t)&&(t=t.trim())&&!pn(t))i(fn(t),n);else if(a.isHeaders(t))for(const[c,f]of t.entries())o(f,c,r);else t!=null&&o(n,t,r);return this}get(t,n){if(t=k(t),t){const r=a.findKey(this,t);if(r){const s=this[r];if(!n)return s;if(n===!0)return dn(s);if(a.isFunction(n))return n.call(this,s,r);if(a.isRegExp(n))return n.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=k(t),t){const r=a.findKey(this,t);return!!(r&&this[r]!==void 0&&(!n||ne(this,this[r],r,n)))}return!1}delete(t,n){const r=this;let s=!1;function o(i){if(i=k(i),i){const c=a.findKey(r,i);c&&(!n||ne(r,r[c],c,n))&&(delete r[c],s=!0)}}return a.isArray(t)?t.forEach(o):o(t),s}clear(t){const n=Object.keys(this);let r=n.length,s=!1;for(;r--;){const o=n[r];(!t||ne(this,this[o],o,t,!0))&&(delete this[o],s=!0)}return s}normalize(t){const n=this,r={};return a.forEach(this,(s,o)=>{const i=a.findKey(r,o);if(i){n[i]=M(s),delete n[o];return}const c=t?hn(o):String(o).trim();c!==o&&delete n[o],n[c]=M(s),r[c]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return a.forEach(this,(r,s)=>{r!=null&&r!==!1&&(n[s]=t&&a.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(` `)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const r=new this(t);return n.forEach(s=>r.set(s)),r}static accessor(t){const r=(this[Ae]=this[Ae]={accessors:{}}).accessors,s=this.prototype;function o(i){const c=k(i);r[c]||(mn(s,i),r[c]=!0)}return a.isArray(t)?t.forEach(o):o(t),this}}Z.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);a.reduceDescriptors(Z.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(r){this[n]=r}}});a.freezeMethods(Z);const x=Z;function re(e,t){const n=this||ye,r=t||n,s=x.from(r.headers);let o=r.data;return a.forEach(e,function(c){o=c.call(n,o,s.normalize(),t?t.status:void 0)}),s.normalize(),o}function Xe(e){return!!(e&&e.__CANCEL__)}function U(e,t,n){m.call(this,e??"canceled",m.ERR_CANCELED,t,n),this.name="CanceledError"}a.inherits(U,m,{__CANCEL__:!0});function Ge(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new m("Request failed with status code "+n.status,[m.ERR_BAD_REQUEST,m.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function yn(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function bn(e,t){e=e||10;const n=new Array(e),r=new Array(e);let s=0,o=0,i;return t=t!==void 0?t:1e3,function(f){const u=Date.now(),l=r[o];i||(i=u),n[s]=f,r[s]=u;let d=o,b=0;for(;d!==s;)b+=n[d++],d=d%e;if(s=(s+1)%e,s===o&&(o=(o+1)%e),u-i{n=l,s=null,o&&(clearTimeout(o),o=null),e.apply(null,u)};return[(...u)=>{const l=Date.now(),d=l-n;d>=r?i(u,l):(s=u,o||(o=setTimeout(()=>{o=null,i(s)},r-d)))},()=>s&&i(s)]}const $=(e,t,n=3)=>{let r=0;const s=bn(50,250);return wn(o=>{const i=o.loaded,c=o.lengthComputable?o.total:void 0,f=i-r,u=s(f),l=i<=c;r=i;const d={loaded:i,total:c,progress:c?i/c:void 0,bytes:f,rate:u||void 0,estimated:u&&c&&l?(c-i)/u:void 0,event:o,lengthComputable:c!=null,[t?"download":"upload"]:!0};e(d)},n)},xe=(e,t)=>{const n=e!=null;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},Ce=e=>(...t)=>a.asap(()=>e(...t)),En=O.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,O.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(O.origin),O.navigator&&/(msie|trident)/i.test(O.navigator.userAgent)):()=>!0,gn=O.hasStandardBrowserEnv?{write(e,t,n,r,s,o){const i=[e+"="+encodeURIComponent(t)];a.isNumber(n)&&i.push("expires="+new Date(n).toGMTString()),a.isString(r)&&i.push("path="+r),a.isString(s)&&i.push("domain="+s),o===!0&&i.push("secure"),document.cookie=i.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function Sn(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function Rn(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function Qe(e,t){return e&&!Sn(t)?Rn(e,t):t}const Ne=e=>e instanceof x?{...e}:e;function B(e,t){t=t||{};const n={};function r(u,l,d,b){return a.isPlainObject(u)&&a.isPlainObject(l)?a.merge.call({caseless:b},u,l):a.isPlainObject(l)?a.merge({},l):a.isArray(l)?l.slice():l}function s(u,l,d,b){if(a.isUndefined(l)){if(!a.isUndefined(u))return r(void 0,u,d,b)}else return r(u,l,d,b)}function o(u,l){if(!a.isUndefined(l))return r(void 0,l)}function i(u,l){if(a.isUndefined(l)){if(!a.isUndefined(u))return r(void 0,u)}else return r(void 0,l)}function c(u,l,d){if(d in t)return r(u,l);if(d in e)return r(void 0,u)}const f={url:o,method:o,data:o,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:c,headers:(u,l,d)=>s(Ne(u),Ne(l),d,!0)};return a.forEach(Object.keys(Object.assign({},e,t)),function(l){const d=f[l]||s,b=d(e[l],t[l],l);a.isUndefined(b)&&d!==c||(n[l]=b)}),n}const Ze=e=>{const t=B({},e);let{data:n,withXSRFToken:r,xsrfHeaderName:s,xsrfCookieName:o,headers:i,auth:c}=t;t.headers=i=x.from(i),t.url=Je(Qe(t.baseURL,t.url),e.params,e.paramsSerializer),c&&i.set("Authorization","Basic "+btoa((c.username||"")+":"+(c.password?unescape(encodeURIComponent(c.password)):"")));let f;if(a.isFormData(n)){if(O.hasStandardBrowserEnv||O.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if((f=i.getContentType())!==!1){const[u,...l]=f?f.split(";").map(d=>d.trim()).filter(Boolean):[];i.setContentType([u||"multipart/form-data",...l].join("; "))}}if(O.hasStandardBrowserEnv&&(r&&a.isFunction(r)&&(r=r(t)),r||r!==!1&&En(t.url))){const u=s&&o&&gn.read(o);u&&i.set(s,u)}return t},On=typeof XMLHttpRequest<"u",Tn=On&&function(e){return new Promise(function(n,r){const s=Ze(e);let o=s.data;const i=x.from(s.headers).normalize();let{responseType:c,onUploadProgress:f,onDownloadProgress:u}=s,l,d,b,g,p;function y(){g&&g(),p&&p(),s.cancelToken&&s.cancelToken.unsubscribe(l),s.signal&&s.signal.removeEventListener("abort",l)}let h=new XMLHttpRequest;h.open(s.method.toUpperCase(),s.url,!0),h.timeout=s.timeout;function w(){if(!h)return;const R=x.from("getAllResponseHeaders"in h&&h.getAllResponseHeaders()),T={data:!c||c==="text"||c==="json"?h.responseText:h.response,status:h.status,statusText:h.statusText,headers:R,config:e,request:h};Ge(function(F){n(F),y()},function(F){r(F),y()},T),h=null}"onloadend"in h?h.onloadend=w:h.onreadystatechange=function(){!h||h.readyState!==4||h.status===0&&!(h.responseURL&&h.responseURL.indexOf("file:")===0)||setTimeout(w)},h.onabort=function(){h&&(r(new m("Request aborted",m.ECONNABORTED,e,h)),h=null)},h.onerror=function(){r(new m("Network Error",m.ERR_NETWORK,e,h)),h=null},h.ontimeout=function(){let P=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const T=s.transitional||We;s.timeoutErrorMessage&&(P=s.timeoutErrorMessage),r(new m(P,T.clarifyTimeoutError?m.ETIMEDOUT:m.ECONNABORTED,e,h)),h=null},o===void 0&&i.setContentType(null),"setRequestHeader"in h&&a.forEach(i.toJSON(),function(P,T){h.setRequestHeader(T,P)}),a.isUndefined(s.withCredentials)||(h.withCredentials=!!s.withCredentials),c&&c!=="json"&&(h.responseType=s.responseType),u&&([b,p]=$(u,!0),h.addEventListener("progress",b)),f&&h.upload&&([d,g]=$(f),h.upload.addEventListener("progress",d),h.upload.addEventListener("loadend",g)),(s.cancelToken||s.signal)&&(l=R=>{h&&(r(!R||R.type?new U(null,e,h):R),h.abort(),h=null)},s.cancelToken&&s.cancelToken.subscribe(l),s.signal&&(s.signal.aborted?l():s.signal.addEventListener("abort",l)));const S=yn(s.url);if(S&&O.protocols.indexOf(S)===-1){r(new m("Unsupported protocol "+S+":",m.ERR_BAD_REQUEST,e));return}h.send(o||null)})},An=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let r=new AbortController,s;const o=function(u){if(!s){s=!0,c();const l=u instanceof Error?u:this.reason;r.abort(l instanceof m?l:new U(l instanceof Error?l.message:l))}};let i=t&&setTimeout(()=>{i=null,o(new m(`timeout ${t} of ms exceeded`,m.ETIMEDOUT))},t);const c=()=>{e&&(i&&clearTimeout(i),i=null,e.forEach(u=>{u.unsubscribe?u.unsubscribe(o):u.removeEventListener("abort",o)}),e=null)};e.forEach(u=>u.addEventListener("abort",o));const{signal:f}=r;return f.unsubscribe=()=>a.asap(c),f}},xn=An,Cn=function*(e,t){let n=e.byteLength;if(!t||n{const s=Nn(e,t);let o=0,i,c=f=>{i||(i=!0,r&&r(f))};return new ReadableStream({async pull(f){try{const{done:u,value:l}=await s.next();if(u){c(),f.close();return}let d=l.byteLength;if(n){let b=o+=d;n(b)}f.enqueue(new Uint8Array(l))}catch(u){throw c(u),u}},cancel(f){return c(f),s.return()}},{highWaterMark:2})},Y=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",Ye=Y&&typeof ReadableStream=="function",_n=Y&&(typeof TextEncoder=="function"?(e=>t=>e.encode(t))(new TextEncoder):async e=>new Uint8Array(await new Response(e).arrayBuffer())),et=(e,...t)=>{try{return!!e(...t)}catch{return!1}},Fn=Ye&&et(()=>{let e=!1;const t=new Request(O.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),_e=64*1024,ue=Ye&&et(()=>a.isReadableStream(new Response("").body)),v={stream:ue&&(e=>e.body)};Y&&(e=>{["text","arrayBuffer","blob","formData","stream"].forEach(t=>{!v[t]&&(v[t]=a.isFunction(e[t])?n=>n[t]():(n,r)=>{throw new m(`Response type '${t}' is not supported`,m.ERR_NOT_SUPPORT,r)})})})(new Response);const Ln=async e=>{if(e==null)return 0;if(a.isBlob(e))return e.size;if(a.isSpecCompliantForm(e))return(await new Request(O.origin,{method:"POST",body:e}).arrayBuffer()).byteLength;if(a.isArrayBufferView(e)||a.isArrayBuffer(e))return e.byteLength;if(a.isURLSearchParams(e)&&(e=e+""),a.isString(e))return(await _n(e)).byteLength},Bn=async(e,t)=>{const n=a.toFiniteNumber(e.getContentLength());return n??Ln(t)},Dn=Y&&(async e=>{let{url:t,method:n,data:r,signal:s,cancelToken:o,timeout:i,onDownloadProgress:c,onUploadProgress:f,responseType:u,headers:l,withCredentials:d="same-origin",fetchOptions:b}=Ze(e);u=u?(u+"").toLowerCase():"text";let g=xn([s,o&&o.toAbortSignal()],i),p;const y=g&&g.unsubscribe&&(()=>{g.unsubscribe()});let h;try{if(f&&Fn&&n!=="get"&&n!=="head"&&(h=await Bn(l,r))!==0){let T=new Request(t,{method:"POST",body:r,duplex:"half"}),_;if(a.isFormData(r)&&(_=T.headers.get("content-type"))&&l.setContentType(_),T.body){const[F,I]=xe(h,$(Ce(f)));r=Pe(T.body,_e,F,I)}}a.isString(d)||(d=d?"include":"omit");const w="credentials"in Request.prototype;p=new Request(t,{...b,signal:g,method:n.toUpperCase(),headers:l.normalize().toJSON(),body:r,duplex:"half",credentials:w?d:void 0});let S=await fetch(p);const R=ue&&(u==="stream"||u==="response");if(ue&&(c||R&&y)){const T={};["status","statusText","headers"].forEach(we=>{T[we]=S[we]});const _=a.toFiniteNumber(S.headers.get("content-length")),[F,I]=c&&xe(_,$(Ce(c),!0))||[];S=new Response(Pe(S.body,_e,F,()=>{I&&I(),y&&y()}),T)}u=u||"text";let P=await v[a.findKey(v,u)||"text"](S,e);return!R&&y&&y(),await new Promise((T,_)=>{Ge(T,_,{data:P,headers:x.from(S.headers),status:S.status,statusText:S.statusText,config:e,request:p})})}catch(w){throw y&&y(),w&&w.name==="TypeError"&&/fetch/i.test(w.message)?Object.assign(new m("Network Error",m.ERR_NETWORK,e,p),{cause:w.cause||w}):m.from(w,w&&w.code,e,p)}}),le={http:Jt,xhr:Tn,fetch:Dn};a.forEach(le,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const Fe=e=>`- ${e}`,Un=e=>a.isFunction(e)||e===null||e===!1,tt={getAdapter:e=>{e=a.isArray(e)?e:[e];const{length:t}=e;let n,r;const s={};for(let o=0;o`adapter ${c} `+(f===!1?"is not supported by the environment":"is not available in the build"));let i=t?o.length>1?`since : `+o.map(Fe).join(` diff --git a/web/settings/assets/vendor-bootstrap-a61a47ba.js b/web/settings/assets/vendor-bootstrap-038cab7c.js similarity index 99% rename from web/settings/assets/vendor-bootstrap-a61a47ba.js rename to web/settings/assets/vendor-bootstrap-038cab7c.js index 882725ce98..ea156d3efd 100644 --- a/web/settings/assets/vendor-bootstrap-a61a47ba.js +++ b/web/settings/assets/vendor-bootstrap-038cab7c.js @@ -1,4 +1,4 @@ -import{r as or,c as ur}from"./vendor-ad7c30fd.js";import{r as fr}from"./vendor-jquery-f04b6372.js";var Ft={exports:{}};/*! +import{r as or,c as ur}from"./vendor-ea36120f.js";import{r as fr}from"./vendor-jquery-48e02303.js";var Ft={exports:{}};/*! * Bootstrap v4.6.2 (https://getbootstrap.com/) * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) diff --git a/web/settings/assets/vendor-chartjs-6a6474b3.js b/web/settings/assets/vendor-chartjs-1398beb1.js similarity index 99% rename from web/settings/assets/vendor-chartjs-6a6474b3.js rename to web/settings/assets/vendor-chartjs-1398beb1.js index 0fc0d6595a..a2292def40 100644 --- a/web/settings/assets/vendor-chartjs-6a6474b3.js +++ b/web/settings/assets/vendor-chartjs-1398beb1.js @@ -1,4 +1,4 @@ -var Po=Object.defineProperty;var Co=(i,t,e)=>t in i?Po(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var S=(i,t,e)=>(Co(i,typeof t!="symbol"?t+"":t,e),e);import{C as ms,d as bs,s as xs,h as li,v as Do,e as Oo,o as To,f as Lo,w as Ao,t as ci,n as zo,i as _s,H as ee}from"./vendor-ad7c30fd.js";import{D as ht}from"./vendor-luxon-8ddd27a0.js";/*! +var Po=Object.defineProperty;var Co=(i,t,e)=>t in i?Po(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var S=(i,t,e)=>(Co(i,typeof t!="symbol"?t+"":t,e),e);import{C as ms,d as bs,s as xs,h as li,v as Do,e as Oo,o as To,f as Lo,w as Ao,t as ci,n as zo,i as _s,H as ee}from"./vendor-ea36120f.js";import{D as ht}from"./vendor-luxon-8ddd27a0.js";/*! * Chart.js v4.4.7 * https://www.chartjs.org * (c) 2024 Chart.js Contributors diff --git a/web/settings/assets/vendor-ad7c30fd.js b/web/settings/assets/vendor-ea36120f.js similarity index 89% rename from web/settings/assets/vendor-ad7c30fd.js rename to web/settings/assets/vendor-ea36120f.js index 162d83f187..0ed8bc7680 100644 --- a/web/settings/assets/vendor-ad7c30fd.js +++ b/web/settings/assets/vendor-ea36120f.js @@ -1,9 +1,9 @@ -import{r as require$$1$5}from"./vendor-sortablejs-20ba8ac2.js";var commonjsGlobal=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function getDefaultExportFromCjs(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function getAugmentedNamespace(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function o(){return this instanceof o?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(o){var u=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(n,o,u.get?u:{enumerable:!0,get:function(){return e[o]}})}),n}var buffer$2={},base64Js={};base64Js.byteLength=byteLength$1;base64Js.toByteArray=toByteArray;base64Js.fromByteArray=fromByteArray;var lookup=[],revLookup=[],Arr=typeof Uint8Array<"u"?Uint8Array:Array,code="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var i=0,len=code.length;i0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");n===-1&&(n=t);var o=n===t?0:4-n%4;return[n,o]}function byteLength$1(e){var t=getLens(e),n=t[0],o=t[1];return(n+o)*3/4-o}function _byteLength(e,t,n){return(t+n)*3/4-n}function toByteArray(e){var t,n=getLens(e),o=n[0],u=n[1],a=new Arr(_byteLength(e,o,u)),v=0,y=u>0?o-4:o,w;for(w=0;w>16&255,a[v++]=t>>8&255,a[v++]=t&255;return u===2&&(t=revLookup[e.charCodeAt(w)]<<2|revLookup[e.charCodeAt(w+1)]>>4,a[v++]=t&255),u===1&&(t=revLookup[e.charCodeAt(w)]<<10|revLookup[e.charCodeAt(w+1)]<<4|revLookup[e.charCodeAt(w+2)]>>2,a[v++]=t>>8&255,a[v++]=t&255),a}function tripletToBase64(e){return lookup[e>>18&63]+lookup[e>>12&63]+lookup[e>>6&63]+lookup[e&63]}function encodeChunk(e,t,n){for(var o,u=[],a=t;ay?y:v+a));return o===1?(t=e[n-1],u.push(lookup[t>>2]+lookup[t<<4&63]+"==")):o===2&&(t=(e[n-2]<<8)+e[n-1],u.push(lookup[t>>10]+lookup[t>>4&63]+lookup[t<<2&63]+"=")),u.join("")}var ieee754={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ieee754.read=function(e,t,n,o,u){var a,v,y=u*8-o-1,w=(1<>1,x=-7,E=n?u-1:0,P=n?-1:1,I=e[t+E];for(E+=P,a=I&(1<<-x)-1,I>>=-x,x+=y;x>0;a=a*256+e[t+E],E+=P,x-=8);for(v=a&(1<<-x)-1,a>>=-x,x+=o;x>0;v=v*256+e[t+E],E+=P,x-=8);if(a===0)a=1-$;else{if(a===w)return v?NaN:(I?-1:1)*(1/0);v=v+Math.pow(2,o),a=a-$}return(I?-1:1)*v*Math.pow(2,a-o)};ieee754.write=function(e,t,n,o,u,a){var v,y,w,$=a*8-u-1,x=(1<<$)-1,E=x>>1,P=u===23?Math.pow(2,-24)-Math.pow(2,-77):0,I=o?0:a-1,L=o?1:-1,D=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(y=isNaN(t)?1:0,v=x):(v=Math.floor(Math.log(t)/Math.LN2),t*(w=Math.pow(2,-v))<1&&(v--,w*=2),v+E>=1?t+=P/w:t+=P*Math.pow(2,1-E),t*w>=2&&(v++,w/=2),v+E>=x?(y=0,v=x):v+E>=1?(y=(t*w-1)*Math.pow(2,u),v=v+E):(y=t*Math.pow(2,E-1)*Math.pow(2,u),v=0));u>=8;e[n+I]=y&255,I+=L,y/=256,u-=8);for(v=v<0;e[n+I]=v&255,I+=L,v/=256,$-=8);e[n+I-L]|=D*128};/*! +import{r as require$$1$5}from"./vendor-sortablejs-c6aaccb3.js";var commonjsGlobal=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function getDefaultExportFromCjs(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function getAugmentedNamespace(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function o(){return this instanceof o?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(o){var u=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(n,o,u.get?u:{enumerable:!0,get:function(){return e[o]}})}),n}var buffer$2={},base64Js={};base64Js.byteLength=byteLength$1;base64Js.toByteArray=toByteArray;base64Js.fromByteArray=fromByteArray;var lookup=[],revLookup=[],Arr=typeof Uint8Array<"u"?Uint8Array:Array,code="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var i=0,len=code.length;i0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");n===-1&&(n=t);var o=n===t?0:4-n%4;return[n,o]}function byteLength$1(e){var t=getLens(e),n=t[0],o=t[1];return(n+o)*3/4-o}function _byteLength(e,t,n){return(t+n)*3/4-n}function toByteArray(e){var t,n=getLens(e),o=n[0],u=n[1],a=new Arr(_byteLength(e,o,u)),v=0,y=u>0?o-4:o,w;for(w=0;w>16&255,a[v++]=t>>8&255,a[v++]=t&255;return u===2&&(t=revLookup[e.charCodeAt(w)]<<2|revLookup[e.charCodeAt(w+1)]>>4,a[v++]=t&255),u===1&&(t=revLookup[e.charCodeAt(w)]<<10|revLookup[e.charCodeAt(w+1)]<<4|revLookup[e.charCodeAt(w+2)]>>2,a[v++]=t>>8&255,a[v++]=t&255),a}function tripletToBase64(e){return lookup[e>>18&63]+lookup[e>>12&63]+lookup[e>>6&63]+lookup[e&63]}function encodeChunk(e,t,n){for(var o,u=[],a=t;ay?y:v+a));return o===1?(t=e[n-1],u.push(lookup[t>>2]+lookup[t<<4&63]+"==")):o===2&&(t=(e[n-2]<<8)+e[n-1],u.push(lookup[t>>10]+lookup[t>>4&63]+lookup[t<<2&63]+"=")),u.join("")}var ieee754={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ieee754.read=function(e,t,n,o,u){var a,v,y=u*8-o-1,w=(1<>1,x=-7,E=n?u-1:0,B=n?-1:1,I=e[t+E];for(E+=B,a=I&(1<<-x)-1,I>>=-x,x+=y;x>0;a=a*256+e[t+E],E+=B,x-=8);for(v=a&(1<<-x)-1,a>>=-x,x+=o;x>0;v=v*256+e[t+E],E+=B,x-=8);if(a===0)a=1-$;else{if(a===w)return v?NaN:(I?-1:1)*(1/0);v=v+Math.pow(2,o),a=a-$}return(I?-1:1)*v*Math.pow(2,a-o)};ieee754.write=function(e,t,n,o,u,a){var v,y,w,$=a*8-u-1,x=(1<<$)-1,E=x>>1,B=u===23?Math.pow(2,-24)-Math.pow(2,-77):0,I=o?0:a-1,L=o?1:-1,D=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(y=isNaN(t)?1:0,v=x):(v=Math.floor(Math.log(t)/Math.LN2),t*(w=Math.pow(2,-v))<1&&(v--,w*=2),v+E>=1?t+=B/w:t+=B*Math.pow(2,1-E),t*w>=2&&(v++,w/=2),v+E>=x?(y=0,v=x):v+E>=1?(y=(t*w-1)*Math.pow(2,u),v=v+E):(y=t*Math.pow(2,E-1)*Math.pow(2,u),v=0));u>=8;e[n+I]=y&255,I+=L,y/=256,u-=8);for(v=v<0;e[n+I]=v&255,I+=L,v/=256,$-=8);e[n+I-L]|=D*128};/*! * The buffer module from node.js, for the browser. * * @author Feross Aboukhadijeh * @license MIT - */(function(e){var t=base64Js,n=ieee754,o=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=y,e.SlowBuffer=j,e.INSPECT_MAX_BYTES=50;var u=2147483647;e.kMaxLength=u,y.TYPED_ARRAY_SUPPORT=a(),!y.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function a(){try{var X=new Uint8Array(1),Y={foo:function(){return 42}};return Object.setPrototypeOf(Y,Uint8Array.prototype),Object.setPrototypeOf(X,Y),X.foo()===42}catch{return!1}}Object.defineProperty(y.prototype,"parent",{enumerable:!0,get:function(){if(y.isBuffer(this))return this.buffer}}),Object.defineProperty(y.prototype,"offset",{enumerable:!0,get:function(){if(y.isBuffer(this))return this.byteOffset}});function v(X){if(X>u)throw new RangeError('The value "'+X+'" is invalid for option "size"');var Y=new Uint8Array(X);return Object.setPrototypeOf(Y,y.prototype),Y}function y(X,Y,Z){if(typeof X=="number"){if(typeof Y=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return E(X)}return w(X,Y,Z)}y.poolSize=8192;function w(X,Y,Z){if(typeof X=="string")return P(X,Y);if(ArrayBuffer.isView(X))return L(X);if(X==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof X);if(ee(X,ArrayBuffer)||X&&ee(X.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(ee(X,SharedArrayBuffer)||X&&ee(X.buffer,SharedArrayBuffer)))return D(X,Y,Z);if(typeof X=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var ie=X.valueOf&&X.valueOf();if(ie!=null&&ie!==X)return y.from(ie,Y,Z);var ve=V(X);if(ve)return ve;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof X[Symbol.toPrimitive]=="function")return y.from(X[Symbol.toPrimitive]("string"),Y,Z);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof X)}y.from=function(X,Y,Z){return w(X,Y,Z)},Object.setPrototypeOf(y.prototype,Uint8Array.prototype),Object.setPrototypeOf(y,Uint8Array);function $(X){if(typeof X!="number")throw new TypeError('"size" argument must be of type number');if(X<0)throw new RangeError('The value "'+X+'" is invalid for option "size"')}function x(X,Y,Z){return $(X),X<=0?v(X):Y!==void 0?typeof Z=="string"?v(X).fill(Y,Z):v(X).fill(Y):v(X)}y.alloc=function(X,Y,Z){return x(X,Y,Z)};function E(X){return $(X),v(X<0?0:H(X)|0)}y.allocUnsafe=function(X){return E(X)},y.allocUnsafeSlow=function(X){return E(X)};function P(X,Y){if((typeof Y!="string"||Y==="")&&(Y="utf8"),!y.isEncoding(Y))throw new TypeError("Unknown encoding: "+Y);var Z=z(X,Y)|0,ie=v(Z),ve=ie.write(X,Y);return ve!==Z&&(ie=ie.slice(0,ve)),ie}function I(X){for(var Y=X.length<0?0:H(X.length)|0,Z=v(Y),ie=0;ie=u)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+u.toString(16)+" bytes");return X|0}function j(X){return+X!=X&&(X=0),y.alloc(+X)}y.isBuffer=function(Y){return Y!=null&&Y._isBuffer===!0&&Y!==y.prototype},y.compare=function(Y,Z){if(ee(Y,Uint8Array)&&(Y=y.from(Y,Y.offset,Y.byteLength)),ee(Z,Uint8Array)&&(Z=y.from(Z,Z.offset,Z.byteLength)),!y.isBuffer(Y)||!y.isBuffer(Z))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(Y===Z)return 0;for(var ie=Y.length,ve=Z.length,he=0,pe=Math.min(ie,ve);heve.length?y.from(pe).copy(ve,he):Uint8Array.prototype.set.call(ve,pe,he);else if(y.isBuffer(pe))pe.copy(ve,he);else throw new TypeError('"list" argument must be an Array of Buffers');he+=pe.length}return ve};function z(X,Y){if(y.isBuffer(X))return X.length;if(ArrayBuffer.isView(X)||ee(X,ArrayBuffer))return X.byteLength;if(typeof X!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof X);var Z=X.length,ie=arguments.length>2&&arguments[2]===!0;if(!ie&&Z===0)return 0;for(var ve=!1;;)switch(Y){case"ascii":case"latin1":case"binary":return Z;case"utf8":case"utf-8":return q(X).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Z*2;case"hex":return Z>>>1;case"base64":return k(X).length;default:if(ve)return ie?-1:q(X).length;Y=(""+Y).toLowerCase(),ve=!0}}y.byteLength=z;function J(X,Y,Z){var ie=!1;if((Y===void 0||Y<0)&&(Y=0),Y>this.length||((Z===void 0||Z>this.length)&&(Z=this.length),Z<=0)||(Z>>>=0,Y>>>=0,Z<=Y))return"";for(X||(X="utf8");;)switch(X){case"hex":return S(this,Y,Z);case"utf8":case"utf-8":return m(this,Y,Z);case"ascii":return A(this,Y,Z);case"latin1":case"binary":return C(this,Y,Z);case"base64":return d(this,Y,Z);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return c(this,Y,Z);default:if(ie)throw new TypeError("Unknown encoding: "+X);X=(X+"").toLowerCase(),ie=!0}}y.prototype._isBuffer=!0;function re(X,Y,Z){var ie=X[Y];X[Y]=X[Z],X[Z]=ie}y.prototype.swap16=function(){var Y=this.length;if(Y%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var Z=0;ZZ&&(Y+=" ... "),""},o&&(y.prototype[o]=y.prototype.inspect),y.prototype.compare=function(Y,Z,ie,ve,he){if(ee(Y,Uint8Array)&&(Y=y.from(Y,Y.offset,Y.byteLength)),!y.isBuffer(Y))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof Y);if(Z===void 0&&(Z=0),ie===void 0&&(ie=Y?Y.length:0),ve===void 0&&(ve=0),he===void 0&&(he=this.length),Z<0||ie>Y.length||ve<0||he>this.length)throw new RangeError("out of range index");if(ve>=he&&Z>=ie)return 0;if(ve>=he)return-1;if(Z>=ie)return 1;if(Z>>>=0,ie>>>=0,ve>>>=0,he>>>=0,this===Y)return 0;for(var pe=he-ve,Ae=ie-Z,_e=Math.min(pe,Ae),we=this.slice(ve,he),qe=Y.slice(Z,ie),Se=0;Se<_e;++Se)if(we[Se]!==qe[Se]){pe=we[Se],Ae=qe[Se];break}return pe2147483647?Z=2147483647:Z<-2147483648&&(Z=-2147483648),Z=+Z,Q(Z)&&(Z=ve?0:X.length-1),Z<0&&(Z=X.length+Z),Z>=X.length){if(ve)return-1;Z=X.length-1}else if(Z<0)if(ve)Z=0;else return-1;if(typeof Y=="string"&&(Y=y.from(Y,ie)),y.isBuffer(Y))return Y.length===0?-1:me(X,Y,Z,ie,ve);if(typeof Y=="number")return Y=Y&255,typeof Uint8Array.prototype.indexOf=="function"?ve?Uint8Array.prototype.indexOf.call(X,Y,Z):Uint8Array.prototype.lastIndexOf.call(X,Y,Z):me(X,[Y],Z,ie,ve);throw new TypeError("val must be string, number or Buffer")}function me(X,Y,Z,ie,ve){var he=1,pe=X.length,Ae=Y.length;if(ie!==void 0&&(ie=String(ie).toLowerCase(),ie==="ucs2"||ie==="ucs-2"||ie==="utf16le"||ie==="utf-16le")){if(X.length<2||Y.length<2)return-1;he=2,pe/=2,Ae/=2,Z/=2}function _e(Me,de){return he===1?Me[de]:Me.readUInt16BE(de*he)}var we;if(ve){var qe=-1;for(we=Z;wepe&&(Z=pe-Ae),we=Z;we>=0;we--){for(var Se=!0,Re=0;Reve&&(ie=ve)):ie=ve;var he=Y.length;ie>he/2&&(ie=he/2);for(var pe=0;pe>>0,isFinite(ie)?(ie=ie>>>0,ve===void 0&&(ve="utf8")):(ve=ie,ie=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var he=this.length-Z;if((ie===void 0||ie>he)&&(ie=he),Y.length>0&&(ie<0||Z<0)||Z>this.length)throw new RangeError("Attempt to write outside buffer bounds");ve||(ve="utf8");for(var pe=!1;;)switch(ve){case"hex":return ue(this,Y,Z,ie);case"utf8":case"utf-8":return ne(this,Y,Z,ie);case"ascii":case"latin1":case"binary":return ye(this,Y,Z,ie);case"base64":return T(this,Y,Z,ie);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return l(this,Y,Z,ie);default:if(pe)throw new TypeError("Unknown encoding: "+ve);ve=(""+ve).toLowerCase(),pe=!0}},y.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function d(X,Y,Z){return Y===0&&Z===X.length?t.fromByteArray(X):t.fromByteArray(X.slice(Y,Z))}function m(X,Y,Z){Z=Math.min(X.length,Z);for(var ie=[],ve=Y;ve239?4:he>223?3:he>191?2:1;if(ve+Ae<=Z){var _e,we,qe,Se;switch(Ae){case 1:he<128&&(pe=he);break;case 2:_e=X[ve+1],(_e&192)===128&&(Se=(he&31)<<6|_e&63,Se>127&&(pe=Se));break;case 3:_e=X[ve+1],we=X[ve+2],(_e&192)===128&&(we&192)===128&&(Se=(he&15)<<12|(_e&63)<<6|we&63,Se>2047&&(Se<55296||Se>57343)&&(pe=Se));break;case 4:_e=X[ve+1],we=X[ve+2],qe=X[ve+3],(_e&192)===128&&(we&192)===128&&(qe&192)===128&&(Se=(he&15)<<18|(_e&63)<<12|(we&63)<<6|qe&63,Se>65535&&Se<1114112&&(pe=Se))}}pe===null?(pe=65533,Ae=1):pe>65535&&(pe-=65536,ie.push(pe>>>10&1023|55296),pe=56320|pe&1023),ie.push(pe),ve+=Ae}return _(ie)}var b=4096;function _(X){var Y=X.length;if(Y<=b)return String.fromCharCode.apply(String,X);for(var Z="",ie=0;ieie)&&(Z=ie);for(var ve="",he=Y;heie&&(Y=ie),Z<0?(Z+=ie,Z<0&&(Z=0)):Z>ie&&(Z=ie),ZZ)throw new RangeError("Trying to access beyond buffer length")}y.prototype.readUintLE=y.prototype.readUIntLE=function(Y,Z,ie){Y=Y>>>0,Z=Z>>>0,ie||M(Y,Z,this.length);for(var ve=this[Y],he=1,pe=0;++pe>>0,Z=Z>>>0,ie||M(Y,Z,this.length);for(var ve=this[Y+--Z],he=1;Z>0&&(he*=256);)ve+=this[Y+--Z]*he;return ve},y.prototype.readUint8=y.prototype.readUInt8=function(Y,Z){return Y=Y>>>0,Z||M(Y,1,this.length),this[Y]},y.prototype.readUint16LE=y.prototype.readUInt16LE=function(Y,Z){return Y=Y>>>0,Z||M(Y,2,this.length),this[Y]|this[Y+1]<<8},y.prototype.readUint16BE=y.prototype.readUInt16BE=function(Y,Z){return Y=Y>>>0,Z||M(Y,2,this.length),this[Y]<<8|this[Y+1]},y.prototype.readUint32LE=y.prototype.readUInt32LE=function(Y,Z){return Y=Y>>>0,Z||M(Y,4,this.length),(this[Y]|this[Y+1]<<8|this[Y+2]<<16)+this[Y+3]*16777216},y.prototype.readUint32BE=y.prototype.readUInt32BE=function(Y,Z){return Y=Y>>>0,Z||M(Y,4,this.length),this[Y]*16777216+(this[Y+1]<<16|this[Y+2]<<8|this[Y+3])},y.prototype.readIntLE=function(Y,Z,ie){Y=Y>>>0,Z=Z>>>0,ie||M(Y,Z,this.length);for(var ve=this[Y],he=1,pe=0;++pe=he&&(ve-=Math.pow(2,8*Z)),ve},y.prototype.readIntBE=function(Y,Z,ie){Y=Y>>>0,Z=Z>>>0,ie||M(Y,Z,this.length);for(var ve=Z,he=1,pe=this[Y+--ve];ve>0&&(he*=256);)pe+=this[Y+--ve]*he;return he*=128,pe>=he&&(pe-=Math.pow(2,8*Z)),pe},y.prototype.readInt8=function(Y,Z){return Y=Y>>>0,Z||M(Y,1,this.length),this[Y]&128?(255-this[Y]+1)*-1:this[Y]},y.prototype.readInt16LE=function(Y,Z){Y=Y>>>0,Z||M(Y,2,this.length);var ie=this[Y]|this[Y+1]<<8;return ie&32768?ie|4294901760:ie},y.prototype.readInt16BE=function(Y,Z){Y=Y>>>0,Z||M(Y,2,this.length);var ie=this[Y+1]|this[Y]<<8;return ie&32768?ie|4294901760:ie},y.prototype.readInt32LE=function(Y,Z){return Y=Y>>>0,Z||M(Y,4,this.length),this[Y]|this[Y+1]<<8|this[Y+2]<<16|this[Y+3]<<24},y.prototype.readInt32BE=function(Y,Z){return Y=Y>>>0,Z||M(Y,4,this.length),this[Y]<<24|this[Y+1]<<16|this[Y+2]<<8|this[Y+3]},y.prototype.readFloatLE=function(Y,Z){return Y=Y>>>0,Z||M(Y,4,this.length),n.read(this,Y,!0,23,4)},y.prototype.readFloatBE=function(Y,Z){return Y=Y>>>0,Z||M(Y,4,this.length),n.read(this,Y,!1,23,4)},y.prototype.readDoubleLE=function(Y,Z){return Y=Y>>>0,Z||M(Y,8,this.length),n.read(this,Y,!0,52,8)},y.prototype.readDoubleBE=function(Y,Z){return Y=Y>>>0,Z||M(Y,8,this.length),n.read(this,Y,!1,52,8)};function N(X,Y,Z,ie,ve,he){if(!y.isBuffer(X))throw new TypeError('"buffer" argument must be a Buffer instance');if(Y>ve||YX.length)throw new RangeError("Index out of range")}y.prototype.writeUintLE=y.prototype.writeUIntLE=function(Y,Z,ie,ve){if(Y=+Y,Z=Z>>>0,ie=ie>>>0,!ve){var he=Math.pow(2,8*ie)-1;N(this,Y,Z,ie,he,0)}var pe=1,Ae=0;for(this[Z]=Y&255;++Ae>>0,ie=ie>>>0,!ve){var he=Math.pow(2,8*ie)-1;N(this,Y,Z,ie,he,0)}var pe=ie-1,Ae=1;for(this[Z+pe]=Y&255;--pe>=0&&(Ae*=256);)this[Z+pe]=Y/Ae&255;return Z+ie},y.prototype.writeUint8=y.prototype.writeUInt8=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,1,255,0),this[Z]=Y&255,Z+1},y.prototype.writeUint16LE=y.prototype.writeUInt16LE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,2,65535,0),this[Z]=Y&255,this[Z+1]=Y>>>8,Z+2},y.prototype.writeUint16BE=y.prototype.writeUInt16BE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,2,65535,0),this[Z]=Y>>>8,this[Z+1]=Y&255,Z+2},y.prototype.writeUint32LE=y.prototype.writeUInt32LE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,4,4294967295,0),this[Z+3]=Y>>>24,this[Z+2]=Y>>>16,this[Z+1]=Y>>>8,this[Z]=Y&255,Z+4},y.prototype.writeUint32BE=y.prototype.writeUInt32BE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,4,4294967295,0),this[Z]=Y>>>24,this[Z+1]=Y>>>16,this[Z+2]=Y>>>8,this[Z+3]=Y&255,Z+4},y.prototype.writeIntLE=function(Y,Z,ie,ve){if(Y=+Y,Z=Z>>>0,!ve){var he=Math.pow(2,8*ie-1);N(this,Y,Z,ie,he-1,-he)}var pe=0,Ae=1,_e=0;for(this[Z]=Y&255;++pe>0)-_e&255;return Z+ie},y.prototype.writeIntBE=function(Y,Z,ie,ve){if(Y=+Y,Z=Z>>>0,!ve){var he=Math.pow(2,8*ie-1);N(this,Y,Z,ie,he-1,-he)}var pe=ie-1,Ae=1,_e=0;for(this[Z+pe]=Y&255;--pe>=0&&(Ae*=256);)Y<0&&_e===0&&this[Z+pe+1]!==0&&(_e=1),this[Z+pe]=(Y/Ae>>0)-_e&255;return Z+ie},y.prototype.writeInt8=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,1,127,-128),Y<0&&(Y=255+Y+1),this[Z]=Y&255,Z+1},y.prototype.writeInt16LE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,2,32767,-32768),this[Z]=Y&255,this[Z+1]=Y>>>8,Z+2},y.prototype.writeInt16BE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,2,32767,-32768),this[Z]=Y>>>8,this[Z+1]=Y&255,Z+2},y.prototype.writeInt32LE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,4,2147483647,-2147483648),this[Z]=Y&255,this[Z+1]=Y>>>8,this[Z+2]=Y>>>16,this[Z+3]=Y>>>24,Z+4},y.prototype.writeInt32BE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,4,2147483647,-2147483648),Y<0&&(Y=4294967295+Y+1),this[Z]=Y>>>24,this[Z+1]=Y>>>16,this[Z+2]=Y>>>8,this[Z+3]=Y&255,Z+4};function U(X,Y,Z,ie,ve,he){if(Z+ie>X.length)throw new RangeError("Index out of range");if(Z<0)throw new RangeError("Index out of range")}function oe(X,Y,Z,ie,ve){return Y=+Y,Z=Z>>>0,ve||U(X,Y,Z,4),n.write(X,Y,Z,ie,23,4),Z+4}y.prototype.writeFloatLE=function(Y,Z,ie){return oe(this,Y,Z,!0,ie)},y.prototype.writeFloatBE=function(Y,Z,ie){return oe(this,Y,Z,!1,ie)};function le(X,Y,Z,ie,ve){return Y=+Y,Z=Z>>>0,ve||U(X,Y,Z,8),n.write(X,Y,Z,ie,52,8),Z+8}y.prototype.writeDoubleLE=function(Y,Z,ie){return le(this,Y,Z,!0,ie)},y.prototype.writeDoubleBE=function(Y,Z,ie){return le(this,Y,Z,!1,ie)},y.prototype.copy=function(Y,Z,ie,ve){if(!y.isBuffer(Y))throw new TypeError("argument should be a Buffer");if(ie||(ie=0),!ve&&ve!==0&&(ve=this.length),Z>=Y.length&&(Z=Y.length),Z||(Z=0),ve>0&&ve=this.length)throw new RangeError("Index out of range");if(ve<0)throw new RangeError("sourceEnd out of bounds");ve>this.length&&(ve=this.length),Y.length-Z>>0,ie=ie===void 0?this.length:ie>>>0,Y||(Y=0);var pe;if(typeof Y=="number")for(pe=Z;pe55295&&Z<57344){if(!ve){if(Z>56319){(Y-=3)>-1&&he.push(239,191,189);continue}else if(pe+1===ie){(Y-=3)>-1&&he.push(239,191,189);continue}ve=Z;continue}if(Z<56320){(Y-=3)>-1&&he.push(239,191,189),ve=Z;continue}Z=(ve-55296<<10|Z-56320)+65536}else ve&&(Y-=3)>-1&&he.push(239,191,189);if(ve=null,Z<128){if((Y-=1)<0)break;he.push(Z)}else if(Z<2048){if((Y-=2)<0)break;he.push(Z>>6|192,Z&63|128)}else if(Z<65536){if((Y-=3)<0)break;he.push(Z>>12|224,Z>>6&63|128,Z&63|128)}else if(Z<1114112){if((Y-=4)<0)break;he.push(Z>>18|240,Z>>12&63|128,Z>>6&63|128,Z&63|128)}else throw new Error("Invalid code point")}return he}function te(X){for(var Y=[],Z=0;Z>8,ve=Z%256,he.push(ve),he.push(ie);return he}function k(X){return t.toByteArray(O(X))}function B(X,Y,Z,ie){for(var ve=0;ve=Y.length||ve>=X.length);++ve)Y[ve+Z]=X[ve];return ve}function ee(X,Y){return X instanceof Y||X!=null&&X.constructor!=null&&X.constructor.name!=null&&X.constructor.name===Y.name}function Q(X){return X!==X}var fe=function(){for(var X="0123456789abcdef",Y=new Array(256),Z=0;Z<16;++Z)for(var ie=Z*16,ve=0;ve<16;++ve)Y[ie+ve]=X[Z]+X[ve];return Y}()})(buffer$2);var browser$1$1={exports:{}},process=browser$1$1.exports={},cachedSetTimeout,cachedClearTimeout;function defaultSetTimout(){throw new Error("setTimeout has not been defined")}function defaultClearTimeout(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?cachedSetTimeout=setTimeout:cachedSetTimeout=defaultSetTimout}catch{cachedSetTimeout=defaultSetTimout}try{typeof clearTimeout=="function"?cachedClearTimeout=clearTimeout:cachedClearTimeout=defaultClearTimeout}catch{cachedClearTimeout=defaultClearTimeout}})();function runTimeout(e){if(cachedSetTimeout===setTimeout)return setTimeout(e,0);if((cachedSetTimeout===defaultSetTimout||!cachedSetTimeout)&&setTimeout)return cachedSetTimeout=setTimeout,setTimeout(e,0);try{return cachedSetTimeout(e,0)}catch{try{return cachedSetTimeout.call(null,e,0)}catch{return cachedSetTimeout.call(this,e,0)}}}function runClearTimeout(e){if(cachedClearTimeout===clearTimeout)return clearTimeout(e);if((cachedClearTimeout===defaultClearTimeout||!cachedClearTimeout)&&clearTimeout)return cachedClearTimeout=clearTimeout,clearTimeout(e);try{return cachedClearTimeout(e)}catch{try{return cachedClearTimeout.call(null,e)}catch{return cachedClearTimeout.call(this,e)}}}var queue$1=[],draining=!1,currentQueue,queueIndex=-1;function cleanUpNextTick(){!draining||!currentQueue||(draining=!1,currentQueue.length?queue$1=currentQueue.concat(queue$1):queueIndex=-1,queue$1.length&&drainQueue())}function drainQueue(){if(!draining){var e=runTimeout(cleanUpNextTick);draining=!0;for(var t=queue$1.length;t;){for(currentQueue=queue$1,queue$1=[];++queueIndex1)for(var n=1;nu)throw new RangeError('The value "'+X+'" is invalid for option "size"');var Y=new Uint8Array(X);return Object.setPrototypeOf(Y,y.prototype),Y}function y(X,Y,Z){if(typeof X=="number"){if(typeof Y=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return E(X)}return w(X,Y,Z)}y.poolSize=8192;function w(X,Y,Z){if(typeof X=="string")return B(X,Y);if(ArrayBuffer.isView(X))return L(X);if(X==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof X);if(ee(X,ArrayBuffer)||X&&ee(X.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(ee(X,SharedArrayBuffer)||X&&ee(X.buffer,SharedArrayBuffer)))return D(X,Y,Z);if(typeof X=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var ie=X.valueOf&&X.valueOf();if(ie!=null&&ie!==X)return y.from(ie,Y,Z);var ve=V(X);if(ve)return ve;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof X[Symbol.toPrimitive]=="function")return y.from(X[Symbol.toPrimitive]("string"),Y,Z);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof X)}y.from=function(X,Y,Z){return w(X,Y,Z)},Object.setPrototypeOf(y.prototype,Uint8Array.prototype),Object.setPrototypeOf(y,Uint8Array);function $(X){if(typeof X!="number")throw new TypeError('"size" argument must be of type number');if(X<0)throw new RangeError('The value "'+X+'" is invalid for option "size"')}function x(X,Y,Z){return $(X),X<=0?v(X):Y!==void 0?typeof Z=="string"?v(X).fill(Y,Z):v(X).fill(Y):v(X)}y.alloc=function(X,Y,Z){return x(X,Y,Z)};function E(X){return $(X),v(X<0?0:H(X)|0)}y.allocUnsafe=function(X){return E(X)},y.allocUnsafeSlow=function(X){return E(X)};function B(X,Y){if((typeof Y!="string"||Y==="")&&(Y="utf8"),!y.isEncoding(Y))throw new TypeError("Unknown encoding: "+Y);var Z=z(X,Y)|0,ie=v(Z),ve=ie.write(X,Y);return ve!==Z&&(ie=ie.slice(0,ve)),ie}function I(X){for(var Y=X.length<0?0:H(X.length)|0,Z=v(Y),ie=0;ie=u)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+u.toString(16)+" bytes");return X|0}function j(X){return+X!=X&&(X=0),y.alloc(+X)}y.isBuffer=function(Y){return Y!=null&&Y._isBuffer===!0&&Y!==y.prototype},y.compare=function(Y,Z){if(ee(Y,Uint8Array)&&(Y=y.from(Y,Y.offset,Y.byteLength)),ee(Z,Uint8Array)&&(Z=y.from(Z,Z.offset,Z.byteLength)),!y.isBuffer(Y)||!y.isBuffer(Z))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(Y===Z)return 0;for(var ie=Y.length,ve=Z.length,he=0,pe=Math.min(ie,ve);heve.length?y.from(pe).copy(ve,he):Uint8Array.prototype.set.call(ve,pe,he);else if(y.isBuffer(pe))pe.copy(ve,he);else throw new TypeError('"list" argument must be an Array of Buffers');he+=pe.length}return ve};function z(X,Y){if(y.isBuffer(X))return X.length;if(ArrayBuffer.isView(X)||ee(X,ArrayBuffer))return X.byteLength;if(typeof X!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof X);var Z=X.length,ie=arguments.length>2&&arguments[2]===!0;if(!ie&&Z===0)return 0;for(var ve=!1;;)switch(Y){case"ascii":case"latin1":case"binary":return Z;case"utf8":case"utf-8":return q(X).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Z*2;case"hex":return Z>>>1;case"base64":return k(X).length;default:if(ve)return ie?-1:q(X).length;Y=(""+Y).toLowerCase(),ve=!0}}y.byteLength=z;function J(X,Y,Z){var ie=!1;if((Y===void 0||Y<0)&&(Y=0),Y>this.length||((Z===void 0||Z>this.length)&&(Z=this.length),Z<=0)||(Z>>>=0,Y>>>=0,Z<=Y))return"";for(X||(X="utf8");;)switch(X){case"hex":return S(this,Y,Z);case"utf8":case"utf-8":return m(this,Y,Z);case"ascii":return A(this,Y,Z);case"latin1":case"binary":return C(this,Y,Z);case"base64":return d(this,Y,Z);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return c(this,Y,Z);default:if(ie)throw new TypeError("Unknown encoding: "+X);X=(X+"").toLowerCase(),ie=!0}}y.prototype._isBuffer=!0;function re(X,Y,Z){var ie=X[Y];X[Y]=X[Z],X[Z]=ie}y.prototype.swap16=function(){var Y=this.length;if(Y%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var Z=0;ZZ&&(Y+=" ... "),""},o&&(y.prototype[o]=y.prototype.inspect),y.prototype.compare=function(Y,Z,ie,ve,he){if(ee(Y,Uint8Array)&&(Y=y.from(Y,Y.offset,Y.byteLength)),!y.isBuffer(Y))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof Y);if(Z===void 0&&(Z=0),ie===void 0&&(ie=Y?Y.length:0),ve===void 0&&(ve=0),he===void 0&&(he=this.length),Z<0||ie>Y.length||ve<0||he>this.length)throw new RangeError("out of range index");if(ve>=he&&Z>=ie)return 0;if(ve>=he)return-1;if(Z>=ie)return 1;if(Z>>>=0,ie>>>=0,ve>>>=0,he>>>=0,this===Y)return 0;for(var pe=he-ve,Ae=ie-Z,_e=Math.min(pe,Ae),we=this.slice(ve,he),qe=Y.slice(Z,ie),Se=0;Se<_e;++Se)if(we[Se]!==qe[Se]){pe=we[Se],Ae=qe[Se];break}return pe2147483647?Z=2147483647:Z<-2147483648&&(Z=-2147483648),Z=+Z,Q(Z)&&(Z=ve?0:X.length-1),Z<0&&(Z=X.length+Z),Z>=X.length){if(ve)return-1;Z=X.length-1}else if(Z<0)if(ve)Z=0;else return-1;if(typeof Y=="string"&&(Y=y.from(Y,ie)),y.isBuffer(Y))return Y.length===0?-1:me(X,Y,Z,ie,ve);if(typeof Y=="number")return Y=Y&255,typeof Uint8Array.prototype.indexOf=="function"?ve?Uint8Array.prototype.indexOf.call(X,Y,Z):Uint8Array.prototype.lastIndexOf.call(X,Y,Z):me(X,[Y],Z,ie,ve);throw new TypeError("val must be string, number or Buffer")}function me(X,Y,Z,ie,ve){var he=1,pe=X.length,Ae=Y.length;if(ie!==void 0&&(ie=String(ie).toLowerCase(),ie==="ucs2"||ie==="ucs-2"||ie==="utf16le"||ie==="utf-16le")){if(X.length<2||Y.length<2)return-1;he=2,pe/=2,Ae/=2,Z/=2}function _e(Me,de){return he===1?Me[de]:Me.readUInt16BE(de*he)}var we;if(ve){var qe=-1;for(we=Z;wepe&&(Z=pe-Ae),we=Z;we>=0;we--){for(var Se=!0,Re=0;Reve&&(ie=ve)):ie=ve;var he=Y.length;ie>he/2&&(ie=he/2);for(var pe=0;pe>>0,isFinite(ie)?(ie=ie>>>0,ve===void 0&&(ve="utf8")):(ve=ie,ie=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var he=this.length-Z;if((ie===void 0||ie>he)&&(ie=he),Y.length>0&&(ie<0||Z<0)||Z>this.length)throw new RangeError("Attempt to write outside buffer bounds");ve||(ve="utf8");for(var pe=!1;;)switch(ve){case"hex":return ue(this,Y,Z,ie);case"utf8":case"utf-8":return ne(this,Y,Z,ie);case"ascii":case"latin1":case"binary":return ye(this,Y,Z,ie);case"base64":return T(this,Y,Z,ie);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return l(this,Y,Z,ie);default:if(pe)throw new TypeError("Unknown encoding: "+ve);ve=(""+ve).toLowerCase(),pe=!0}},y.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function d(X,Y,Z){return Y===0&&Z===X.length?t.fromByteArray(X):t.fromByteArray(X.slice(Y,Z))}function m(X,Y,Z){Z=Math.min(X.length,Z);for(var ie=[],ve=Y;ve239?4:he>223?3:he>191?2:1;if(ve+Ae<=Z){var _e,we,qe,Se;switch(Ae){case 1:he<128&&(pe=he);break;case 2:_e=X[ve+1],(_e&192)===128&&(Se=(he&31)<<6|_e&63,Se>127&&(pe=Se));break;case 3:_e=X[ve+1],we=X[ve+2],(_e&192)===128&&(we&192)===128&&(Se=(he&15)<<12|(_e&63)<<6|we&63,Se>2047&&(Se<55296||Se>57343)&&(pe=Se));break;case 4:_e=X[ve+1],we=X[ve+2],qe=X[ve+3],(_e&192)===128&&(we&192)===128&&(qe&192)===128&&(Se=(he&15)<<18|(_e&63)<<12|(we&63)<<6|qe&63,Se>65535&&Se<1114112&&(pe=Se))}}pe===null?(pe=65533,Ae=1):pe>65535&&(pe-=65536,ie.push(pe>>>10&1023|55296),pe=56320|pe&1023),ie.push(pe),ve+=Ae}return _(ie)}var b=4096;function _(X){var Y=X.length;if(Y<=b)return String.fromCharCode.apply(String,X);for(var Z="",ie=0;ieie)&&(Z=ie);for(var ve="",he=Y;heie&&(Y=ie),Z<0?(Z+=ie,Z<0&&(Z=0)):Z>ie&&(Z=ie),ZZ)throw new RangeError("Trying to access beyond buffer length")}y.prototype.readUintLE=y.prototype.readUIntLE=function(Y,Z,ie){Y=Y>>>0,Z=Z>>>0,ie||M(Y,Z,this.length);for(var ve=this[Y],he=1,pe=0;++pe>>0,Z=Z>>>0,ie||M(Y,Z,this.length);for(var ve=this[Y+--Z],he=1;Z>0&&(he*=256);)ve+=this[Y+--Z]*he;return ve},y.prototype.readUint8=y.prototype.readUInt8=function(Y,Z){return Y=Y>>>0,Z||M(Y,1,this.length),this[Y]},y.prototype.readUint16LE=y.prototype.readUInt16LE=function(Y,Z){return Y=Y>>>0,Z||M(Y,2,this.length),this[Y]|this[Y+1]<<8},y.prototype.readUint16BE=y.prototype.readUInt16BE=function(Y,Z){return Y=Y>>>0,Z||M(Y,2,this.length),this[Y]<<8|this[Y+1]},y.prototype.readUint32LE=y.prototype.readUInt32LE=function(Y,Z){return Y=Y>>>0,Z||M(Y,4,this.length),(this[Y]|this[Y+1]<<8|this[Y+2]<<16)+this[Y+3]*16777216},y.prototype.readUint32BE=y.prototype.readUInt32BE=function(Y,Z){return Y=Y>>>0,Z||M(Y,4,this.length),this[Y]*16777216+(this[Y+1]<<16|this[Y+2]<<8|this[Y+3])},y.prototype.readIntLE=function(Y,Z,ie){Y=Y>>>0,Z=Z>>>0,ie||M(Y,Z,this.length);for(var ve=this[Y],he=1,pe=0;++pe=he&&(ve-=Math.pow(2,8*Z)),ve},y.prototype.readIntBE=function(Y,Z,ie){Y=Y>>>0,Z=Z>>>0,ie||M(Y,Z,this.length);for(var ve=Z,he=1,pe=this[Y+--ve];ve>0&&(he*=256);)pe+=this[Y+--ve]*he;return he*=128,pe>=he&&(pe-=Math.pow(2,8*Z)),pe},y.prototype.readInt8=function(Y,Z){return Y=Y>>>0,Z||M(Y,1,this.length),this[Y]&128?(255-this[Y]+1)*-1:this[Y]},y.prototype.readInt16LE=function(Y,Z){Y=Y>>>0,Z||M(Y,2,this.length);var ie=this[Y]|this[Y+1]<<8;return ie&32768?ie|4294901760:ie},y.prototype.readInt16BE=function(Y,Z){Y=Y>>>0,Z||M(Y,2,this.length);var ie=this[Y+1]|this[Y]<<8;return ie&32768?ie|4294901760:ie},y.prototype.readInt32LE=function(Y,Z){return Y=Y>>>0,Z||M(Y,4,this.length),this[Y]|this[Y+1]<<8|this[Y+2]<<16|this[Y+3]<<24},y.prototype.readInt32BE=function(Y,Z){return Y=Y>>>0,Z||M(Y,4,this.length),this[Y]<<24|this[Y+1]<<16|this[Y+2]<<8|this[Y+3]},y.prototype.readFloatLE=function(Y,Z){return Y=Y>>>0,Z||M(Y,4,this.length),n.read(this,Y,!0,23,4)},y.prototype.readFloatBE=function(Y,Z){return Y=Y>>>0,Z||M(Y,4,this.length),n.read(this,Y,!1,23,4)},y.prototype.readDoubleLE=function(Y,Z){return Y=Y>>>0,Z||M(Y,8,this.length),n.read(this,Y,!0,52,8)},y.prototype.readDoubleBE=function(Y,Z){return Y=Y>>>0,Z||M(Y,8,this.length),n.read(this,Y,!1,52,8)};function N(X,Y,Z,ie,ve,he){if(!y.isBuffer(X))throw new TypeError('"buffer" argument must be a Buffer instance');if(Y>ve||YX.length)throw new RangeError("Index out of range")}y.prototype.writeUintLE=y.prototype.writeUIntLE=function(Y,Z,ie,ve){if(Y=+Y,Z=Z>>>0,ie=ie>>>0,!ve){var he=Math.pow(2,8*ie)-1;N(this,Y,Z,ie,he,0)}var pe=1,Ae=0;for(this[Z]=Y&255;++Ae>>0,ie=ie>>>0,!ve){var he=Math.pow(2,8*ie)-1;N(this,Y,Z,ie,he,0)}var pe=ie-1,Ae=1;for(this[Z+pe]=Y&255;--pe>=0&&(Ae*=256);)this[Z+pe]=Y/Ae&255;return Z+ie},y.prototype.writeUint8=y.prototype.writeUInt8=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,1,255,0),this[Z]=Y&255,Z+1},y.prototype.writeUint16LE=y.prototype.writeUInt16LE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,2,65535,0),this[Z]=Y&255,this[Z+1]=Y>>>8,Z+2},y.prototype.writeUint16BE=y.prototype.writeUInt16BE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,2,65535,0),this[Z]=Y>>>8,this[Z+1]=Y&255,Z+2},y.prototype.writeUint32LE=y.prototype.writeUInt32LE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,4,4294967295,0),this[Z+3]=Y>>>24,this[Z+2]=Y>>>16,this[Z+1]=Y>>>8,this[Z]=Y&255,Z+4},y.prototype.writeUint32BE=y.prototype.writeUInt32BE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,4,4294967295,0),this[Z]=Y>>>24,this[Z+1]=Y>>>16,this[Z+2]=Y>>>8,this[Z+3]=Y&255,Z+4},y.prototype.writeIntLE=function(Y,Z,ie,ve){if(Y=+Y,Z=Z>>>0,!ve){var he=Math.pow(2,8*ie-1);N(this,Y,Z,ie,he-1,-he)}var pe=0,Ae=1,_e=0;for(this[Z]=Y&255;++pe>0)-_e&255;return Z+ie},y.prototype.writeIntBE=function(Y,Z,ie,ve){if(Y=+Y,Z=Z>>>0,!ve){var he=Math.pow(2,8*ie-1);N(this,Y,Z,ie,he-1,-he)}var pe=ie-1,Ae=1,_e=0;for(this[Z+pe]=Y&255;--pe>=0&&(Ae*=256);)Y<0&&_e===0&&this[Z+pe+1]!==0&&(_e=1),this[Z+pe]=(Y/Ae>>0)-_e&255;return Z+ie},y.prototype.writeInt8=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,1,127,-128),Y<0&&(Y=255+Y+1),this[Z]=Y&255,Z+1},y.prototype.writeInt16LE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,2,32767,-32768),this[Z]=Y&255,this[Z+1]=Y>>>8,Z+2},y.prototype.writeInt16BE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,2,32767,-32768),this[Z]=Y>>>8,this[Z+1]=Y&255,Z+2},y.prototype.writeInt32LE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,4,2147483647,-2147483648),this[Z]=Y&255,this[Z+1]=Y>>>8,this[Z+2]=Y>>>16,this[Z+3]=Y>>>24,Z+4},y.prototype.writeInt32BE=function(Y,Z,ie){return Y=+Y,Z=Z>>>0,ie||N(this,Y,Z,4,2147483647,-2147483648),Y<0&&(Y=4294967295+Y+1),this[Z]=Y>>>24,this[Z+1]=Y>>>16,this[Z+2]=Y>>>8,this[Z+3]=Y&255,Z+4};function U(X,Y,Z,ie,ve,he){if(Z+ie>X.length)throw new RangeError("Index out of range");if(Z<0)throw new RangeError("Index out of range")}function oe(X,Y,Z,ie,ve){return Y=+Y,Z=Z>>>0,ve||U(X,Y,Z,4),n.write(X,Y,Z,ie,23,4),Z+4}y.prototype.writeFloatLE=function(Y,Z,ie){return oe(this,Y,Z,!0,ie)},y.prototype.writeFloatBE=function(Y,Z,ie){return oe(this,Y,Z,!1,ie)};function le(X,Y,Z,ie,ve){return Y=+Y,Z=Z>>>0,ve||U(X,Y,Z,8),n.write(X,Y,Z,ie,52,8),Z+8}y.prototype.writeDoubleLE=function(Y,Z,ie){return le(this,Y,Z,!0,ie)},y.prototype.writeDoubleBE=function(Y,Z,ie){return le(this,Y,Z,!1,ie)},y.prototype.copy=function(Y,Z,ie,ve){if(!y.isBuffer(Y))throw new TypeError("argument should be a Buffer");if(ie||(ie=0),!ve&&ve!==0&&(ve=this.length),Z>=Y.length&&(Z=Y.length),Z||(Z=0),ve>0&&ve=this.length)throw new RangeError("Index out of range");if(ve<0)throw new RangeError("sourceEnd out of bounds");ve>this.length&&(ve=this.length),Y.length-Z>>0,ie=ie===void 0?this.length:ie>>>0,Y||(Y=0);var pe;if(typeof Y=="number")for(pe=Z;pe55295&&Z<57344){if(!ve){if(Z>56319){(Y-=3)>-1&&he.push(239,191,189);continue}else if(pe+1===ie){(Y-=3)>-1&&he.push(239,191,189);continue}ve=Z;continue}if(Z<56320){(Y-=3)>-1&&he.push(239,191,189),ve=Z;continue}Z=(ve-55296<<10|Z-56320)+65536}else ve&&(Y-=3)>-1&&he.push(239,191,189);if(ve=null,Z<128){if((Y-=1)<0)break;he.push(Z)}else if(Z<2048){if((Y-=2)<0)break;he.push(Z>>6|192,Z&63|128)}else if(Z<65536){if((Y-=3)<0)break;he.push(Z>>12|224,Z>>6&63|128,Z&63|128)}else if(Z<1114112){if((Y-=4)<0)break;he.push(Z>>18|240,Z>>12&63|128,Z>>6&63|128,Z&63|128)}else throw new Error("Invalid code point")}return he}function te(X){for(var Y=[],Z=0;Z>8,ve=Z%256,he.push(ve),he.push(ie);return he}function k(X){return t.toByteArray(O(X))}function P(X,Y,Z,ie){for(var ve=0;ve=Y.length||ve>=X.length);++ve)Y[ve+Z]=X[ve];return ve}function ee(X,Y){return X instanceof Y||X!=null&&X.constructor!=null&&X.constructor.name!=null&&X.constructor.name===Y.name}function Q(X){return X!==X}var fe=function(){for(var X="0123456789abcdef",Y=new Array(256),Z=0;Z<16;++Z)for(var ie=Z*16,ve=0;ve<16;++ve)Y[ie+ve]=X[Z]+X[ve];return Y}()})(buffer$2);var browser$1$1={exports:{}},process=browser$1$1.exports={},cachedSetTimeout,cachedClearTimeout;function defaultSetTimout(){throw new Error("setTimeout has not been defined")}function defaultClearTimeout(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?cachedSetTimeout=setTimeout:cachedSetTimeout=defaultSetTimout}catch{cachedSetTimeout=defaultSetTimout}try{typeof clearTimeout=="function"?cachedClearTimeout=clearTimeout:cachedClearTimeout=defaultClearTimeout}catch{cachedClearTimeout=defaultClearTimeout}})();function runTimeout(e){if(cachedSetTimeout===setTimeout)return setTimeout(e,0);if((cachedSetTimeout===defaultSetTimout||!cachedSetTimeout)&&setTimeout)return cachedSetTimeout=setTimeout,setTimeout(e,0);try{return cachedSetTimeout(e,0)}catch{try{return cachedSetTimeout.call(null,e,0)}catch{return cachedSetTimeout.call(this,e,0)}}}function runClearTimeout(e){if(cachedClearTimeout===clearTimeout)return clearTimeout(e);if((cachedClearTimeout===defaultClearTimeout||!cachedClearTimeout)&&clearTimeout)return cachedClearTimeout=clearTimeout,clearTimeout(e);try{return cachedClearTimeout(e)}catch{try{return cachedClearTimeout.call(null,e)}catch{return cachedClearTimeout.call(this,e)}}}var queue$1=[],draining=!1,currentQueue,queueIndex=-1;function cleanUpNextTick(){!draining||!currentQueue||(draining=!1,currentQueue.length?queue$1=currentQueue.concat(queue$1):queueIndex=-1,queue$1.length&&drainQueue())}function drainQueue(){if(!draining){var e=runTimeout(cleanUpNextTick);draining=!0;for(var t=queue$1.length;t;){for(currentQueue=queue$1,queue$1=[];++queueIndex1)for(var n=1;n0)return;if(batchedComputed){let t=batchedComputed;for(batchedComputed=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;batchedSub;){let t=batchedSub;for(batchedSub=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(o){e||(e=o)}t=n}}if(e)throw e}function prepareDeps(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function cleanupDeps(e){let t,n=e.depsTail,o=n;for(;o;){const u=o.prevDep;o.version===-1?(o===n&&(n=u),removeSub(o),removeDep(o)):t=o,o.dep.activeLink=o.prevActiveLink,o.prevActiveLink=void 0,o=u}e.deps=t,e.depsTail=n}function isDirty(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(refreshComputed(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function refreshComputed(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===globalVersion))return;e.globalVersion=globalVersion;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!isDirty(e)){e.flags&=-3;return}const n=activeSub,o=shouldTrack;activeSub=e,shouldTrack=!0;try{prepareDeps(e);const u=e.fn(e._value);(t.version===0||hasChanged(u,e._value))&&(e._value=u,t.version++)}catch(u){throw t.version++,u}finally{activeSub=n,shouldTrack=o,cleanupDeps(e),e.flags&=-3}}function removeSub(e,t=!1){const{dep:n,prevSub:o,nextSub:u}=e;if(o&&(o.nextSub=u,e.prevSub=void 0),u&&(u.prevSub=o,e.nextSub=void 0),n.subsHead===e&&(n.subsHead=u),n.subs===e&&(n.subs=o,!o&&n.computed)){n.computed.flags&=-5;for(let a=n.computed.deps;a;a=a.nextDep)removeSub(a,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function removeDep(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}function effect(e,t){e.effect instanceof ReactiveEffect&&(e=e.effect.fn);const n=new ReactiveEffect(e);t&&extend$1(n,t);try{n.run()}catch(u){throw n.stop(),u}const o=n.run.bind(n);return o.effect=n,o}function stop(e){e.effect.stop()}let shouldTrack=!0;const trackStack=[];function pauseTracking(){trackStack.push(shouldTrack),shouldTrack=!1}function resetTracking(){const e=trackStack.pop();shouldTrack=e===void 0?!0:e}function cleanupEffect(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=activeSub;activeSub=void 0;try{t()}finally{activeSub=n}}}let globalVersion=0;class Link{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Dep{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.subsHead=void 0}track(t){if(!activeSub||!shouldTrack||activeSub===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==activeSub)n=this.activeLink=new Link(activeSub,this),activeSub.deps?(n.prevDep=activeSub.depsTail,activeSub.depsTail.nextDep=n,activeSub.depsTail=n):activeSub.deps=activeSub.depsTail=n,addSub(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const o=n.nextDep;o.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=o),n.prevDep=activeSub.depsTail,n.nextDep=void 0,activeSub.depsTail.nextDep=n,activeSub.depsTail=n,activeSub.deps===n&&(activeSub.deps=o)}return activeSub.onTrack&&activeSub.onTrack(extend$1({effect:activeSub},t)),n}trigger(t){this.version++,globalVersion++,this.notify(t)}notify(t){startBatch();try{for(let n=this.subsHead;n;n=n.nextSub)n.sub.onTrigger&&!(n.sub.flags&8)&&n.sub.onTrigger(extend$1({effect:n.sub},t));for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{endBatch()}}}function addSub(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let o=t.deps;o;o=o.nextDep)addSub(o)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subsHead===void 0&&(e.dep.subsHead=e),e.dep.subs=e}}const targetMap=new WeakMap,ITERATE_KEY=Symbol("Object iterate"),MAP_KEY_ITERATE_KEY=Symbol("Map keys iterate"),ARRAY_ITERATE_KEY=Symbol("Array iterate");function track(e,t,n){if(shouldTrack&&activeSub){let o=targetMap.get(e);o||targetMap.set(e,o=new Map);let u=o.get(n);u||(o.set(n,u=new Dep),u.map=o,u.key=n),u.track({target:e,type:t,key:n})}}function trigger(e,t,n,o,u,a){const v=targetMap.get(e);if(!v){globalVersion++;return}const y=w=>{w&&w.trigger({target:e,type:t,key:n,newValue:o,oldValue:u,oldTarget:a})};if(startBatch(),t==="clear")v.forEach(y);else{const w=isArray$8(e),$=w&&isIntegerKey(n);if(w&&n==="length"){const x=Number(o);v.forEach((E,P)=>{(P==="length"||P===ARRAY_ITERATE_KEY||!isSymbol$4(P)&&P>=x)&&y(E)})}else switch((n!==void 0||v.has(void 0))&&y(v.get(n)),$&&y(v.get(ARRAY_ITERATE_KEY)),t){case"add":w?$&&y(v.get("length")):(y(v.get(ITERATE_KEY)),isMap$1(e)&&y(v.get(MAP_KEY_ITERATE_KEY)));break;case"delete":w||(y(v.get(ITERATE_KEY)),isMap$1(e)&&y(v.get(MAP_KEY_ITERATE_KEY)));break;case"set":isMap$1(e)&&y(v.get(ITERATE_KEY));break}}endBatch()}function getDepFromReactive(e,t){const n=targetMap.get(e);return n&&n.get(t)}function reactiveReadArray(e){const t=toRaw(e);return t===e?t:(track(t,"iterate",ARRAY_ITERATE_KEY),isShallow(e)?t:t.map(toReactive))}function shallowReadArray(e){return track(e=toRaw(e),"iterate",ARRAY_ITERATE_KEY),e}const arrayInstrumentations={__proto__:null,[Symbol.iterator](){return iterator$1(this,Symbol.iterator,toReactive)},concat(...e){return reactiveReadArray(this).concat(...e.map(t=>isArray$8(t)?reactiveReadArray(t):t))},entries(){return iterator$1(this,"entries",e=>(e[1]=toReactive(e[1]),e))},every(e,t){return apply(this,"every",e,t,void 0,arguments)},filter(e,t){return apply(this,"filter",e,t,n=>n.map(toReactive),arguments)},find(e,t){return apply(this,"find",e,t,toReactive,arguments)},findIndex(e,t){return apply(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return apply(this,"findLast",e,t,toReactive,arguments)},findLastIndex(e,t){return apply(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return apply(this,"forEach",e,t,void 0,arguments)},includes(...e){return searchProxy(this,"includes",e)},indexOf(...e){return searchProxy(this,"indexOf",e)},join(e){return reactiveReadArray(this).join(e)},lastIndexOf(...e){return searchProxy(this,"lastIndexOf",e)},map(e,t){return apply(this,"map",e,t,void 0,arguments)},pop(){return noTracking(this,"pop")},push(...e){return noTracking(this,"push",e)},reduce(e,...t){return reduce(this,"reduce",e,t)},reduceRight(e,...t){return reduce(this,"reduceRight",e,t)},shift(){return noTracking(this,"shift")},some(e,t){return apply(this,"some",e,t,void 0,arguments)},splice(...e){return noTracking(this,"splice",e)},toReversed(){return reactiveReadArray(this).toReversed()},toSorted(e){return reactiveReadArray(this).toSorted(e)},toSpliced(...e){return reactiveReadArray(this).toSpliced(...e)},unshift(...e){return noTracking(this,"unshift",e)},values(){return iterator$1(this,"values",toReactive)}};function iterator$1(e,t,n){const o=shallowReadArray(e),u=o[t]();return o!==e&&!isShallow(e)&&(u._next=u.next,u.next=()=>{const a=u._next();return a.value&&(a.value=n(a.value)),a}),u}const arrayProto=Array.prototype;function apply(e,t,n,o,u,a){const v=shallowReadArray(e),y=v!==e&&!isShallow(e),w=v[t];if(w!==arrayProto[t]){const E=w.apply(e,a);return y?toReactive(E):E}let $=n;v!==e&&(y?$=function(E,P){return n.call(this,toReactive(E),P,e)}:n.length>2&&($=function(E,P){return n.call(this,E,P,e)}));const x=w.call(v,$,o);return y&&u?u(x):x}function reduce(e,t,n,o){const u=shallowReadArray(e);let a=n;return u!==e&&(isShallow(e)?n.length>3&&(a=function(v,y,w){return n.call(this,v,y,w,e)}):a=function(v,y,w){return n.call(this,v,toReactive(y),w,e)}),u[t](a,...o)}function searchProxy(e,t,n){const o=toRaw(e);track(o,"iterate",ARRAY_ITERATE_KEY);const u=o[t](...n);return(u===-1||u===!1)&&isProxy(n[0])?(n[0]=toRaw(n[0]),o[t](...n)):u}function noTracking(e,t,n=[]){pauseTracking(),startBatch();const o=toRaw(e)[t].apply(e,n);return endBatch(),resetTracking(),o}const isNonTrackableKeys=makeMap("__proto__,__v_isRef,__isVue"),builtInSymbols=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(isSymbol$4));function hasOwnProperty$3(e){isSymbol$4(e)||(e=String(e));const t=toRaw(this);return track(t,"has",e),t.hasOwnProperty(e)}class BaseReactiveHandler{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,o){if(n==="__v_skip")return t.__v_skip;const u=this._isReadonly,a=this._isShallow;if(n==="__v_isReactive")return!u;if(n==="__v_isReadonly")return u;if(n==="__v_isShallow")return a;if(n==="__v_raw")return o===(u?a?shallowReadonlyMap:readonlyMap:a?shallowReactiveMap:reactiveMap).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(o)?t:void 0;const v=isArray$8(t);if(!u){let w;if(v&&(w=arrayInstrumentations[n]))return w;if(n==="hasOwnProperty")return hasOwnProperty$3}const y=Reflect.get(t,n,isRef(t)?t:o);return(isSymbol$4(n)?builtInSymbols.has(n):isNonTrackableKeys(n))||(u||track(t,"get",n),a)?y:isRef(y)?v&&isIntegerKey(n)?y:y.value:isObject$2(y)?u?readonly(y):reactive(y):y}}class MutableReactiveHandler extends BaseReactiveHandler{constructor(t=!1){super(!1,t)}set(t,n,o,u){let a=t[n];if(!this._isShallow){const w=isReadonly(a);if(!isShallow(o)&&!isReadonly(o)&&(a=toRaw(a),o=toRaw(o)),!isArray$8(t)&&isRef(a)&&!isRef(o))return w?!1:(a.value=o,!0)}const v=isArray$8(t)&&isIntegerKey(n)?Number(n)e,getProto$3=e=>Reflect.getPrototypeOf(e);function createIterableMethod(e,t,n){return function(...o){const u=this.__v_raw,a=toRaw(u),v=isMap$1(a),y=e==="entries"||e===Symbol.iterator&&v,w=e==="keys"&&v,$=u[e](...o),x=n?toShallow:t?toReadonly:toReactive;return!t&&track(a,"iterate",w?MAP_KEY_ITERATE_KEY:ITERATE_KEY),{next(){const{value:E,done:P}=$.next();return P?{value:E,done:P}:{value:y?[x(E[0]),x(E[1])]:x(E),done:P}},[Symbol.iterator](){return this}}}}function createReadonlyMethod(e){return function(...t){{const n=t[0]?`on key "${t[0]}" `:"";warn$3(`${capitalize$2(e)} operation ${n}failed: target is readonly.`,toRaw(this))}return e==="delete"?!1:e==="clear"?void 0:this}}function createInstrumentations(e,t){const n={get(u){const a=this.__v_raw,v=toRaw(a),y=toRaw(u);e||(hasChanged(u,y)&&track(v,"get",u),track(v,"get",y));const{has:w}=getProto$3(v),$=t?toShallow:e?toReadonly:toReactive;if(w.call(v,u))return $(a.get(u));if(w.call(v,y))return $(a.get(y));a!==v&&a.get(u)},get size(){const u=this.__v_raw;return!e&&track(toRaw(u),"iterate",ITERATE_KEY),Reflect.get(u,"size",u)},has(u){const a=this.__v_raw,v=toRaw(a),y=toRaw(u);return e||(hasChanged(u,y)&&track(v,"has",u),track(v,"has",y)),u===y?a.has(u):a.has(u)||a.has(y)},forEach(u,a){const v=this,y=v.__v_raw,w=toRaw(y),$=t?toShallow:e?toReadonly:toReactive;return!e&&track(w,"iterate",ITERATE_KEY),y.forEach((x,E)=>u.call(a,$(x),$(E),v))}};return extend$1(n,e?{add:createReadonlyMethod("add"),set:createReadonlyMethod("set"),delete:createReadonlyMethod("delete"),clear:createReadonlyMethod("clear")}:{add(u){!t&&!isShallow(u)&&!isReadonly(u)&&(u=toRaw(u));const a=toRaw(this);return getProto$3(a).has.call(a,u)||(a.add(u),trigger(a,"add",u,u)),this},set(u,a){!t&&!isShallow(a)&&!isReadonly(a)&&(a=toRaw(a));const v=toRaw(this),{has:y,get:w}=getProto$3(v);let $=y.call(v,u);$?checkIdentityKeys(v,y,u):(u=toRaw(u),$=y.call(v,u));const x=w.call(v,u);return v.set(u,a),$?hasChanged(a,x)&&trigger(v,"set",u,a,x):trigger(v,"add",u,a),this},delete(u){const a=toRaw(this),{has:v,get:y}=getProto$3(a);let w=v.call(a,u);w?checkIdentityKeys(a,v,u):(u=toRaw(u),w=v.call(a,u));const $=y?y.call(a,u):void 0,x=a.delete(u);return w&&trigger(a,"delete",u,void 0,$),x},clear(){const u=toRaw(this),a=u.size!==0,v=isMap$1(u)?new Map(u):new Set(u),y=u.clear();return a&&trigger(u,"clear",void 0,void 0,v),y}}),["keys","values","entries",Symbol.iterator].forEach(u=>{n[u]=createIterableMethod(u,e,t)}),n}function createInstrumentationGetter(e,t){const n=createInstrumentations(e,t);return(o,u,a)=>u==="__v_isReactive"?!e:u==="__v_isReadonly"?e:u==="__v_raw"?o:Reflect.get(hasOwn$3(n,u)&&u in o?n:o,u,a)}const mutableCollectionHandlers={get:createInstrumentationGetter(!1,!1)},shallowCollectionHandlers={get:createInstrumentationGetter(!1,!0)},readonlyCollectionHandlers={get:createInstrumentationGetter(!0,!1)},shallowReadonlyCollectionHandlers={get:createInstrumentationGetter(!0,!0)};function checkIdentityKeys(e,t,n){const o=toRaw(n);if(o!==n&&t.call(e,o)){const u=toRawType(e);warn$3(`Reactive ${u} contains both the raw and reactive versions of the same object${u==="Map"?" as keys":""}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`)}}const reactiveMap=new WeakMap,shallowReactiveMap=new WeakMap,readonlyMap=new WeakMap,shallowReadonlyMap=new WeakMap;function targetTypeMap(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function getTargetType(e){return e.__v_skip||!Object.isExtensible(e)?0:targetTypeMap(toRawType(e))}function reactive(e){return isReadonly(e)?e:createReactiveObject(e,!1,mutableHandlers,mutableCollectionHandlers,reactiveMap)}function shallowReactive(e){return createReactiveObject(e,!1,shallowReactiveHandlers,shallowCollectionHandlers,shallowReactiveMap)}function readonly(e){return createReactiveObject(e,!0,readonlyHandlers,readonlyCollectionHandlers,readonlyMap)}function shallowReadonly(e){return createReactiveObject(e,!0,shallowReadonlyHandlers,shallowReadonlyCollectionHandlers,shallowReadonlyMap)}function createReactiveObject(e,t,n,o,u){if(!isObject$2(e))return warn$3(`value cannot be made ${t?"readonly":"reactive"}: ${String(e)}`),e;if(e.__v_raw&&!(t&&e.__v_isReactive))return e;const a=u.get(e);if(a)return a;const v=getTargetType(e);if(v===0)return e;const y=new Proxy(e,v===2?o:n);return u.set(e,y),y}function isReactive(e){return isReadonly(e)?isReactive(e.__v_raw):!!(e&&e.__v_isReactive)}function isReadonly(e){return!!(e&&e.__v_isReadonly)}function isShallow(e){return!!(e&&e.__v_isShallow)}function isProxy(e){return e?!!e.__v_raw:!1}function toRaw(e){const t=e&&e.__v_raw;return t?toRaw(t):e}function markRaw(e){return!hasOwn$3(e,"__v_skip")&&Object.isExtensible(e)&&def(e,"__v_skip",!0),e}const toReactive=e=>isObject$2(e)?reactive(e):e,toReadonly=e=>isObject$2(e)?readonly(e):e;function isRef(e){return e?e.__v_isRef===!0:!1}function ref$1(e){return createRef(e,!1)}function shallowRef(e){return createRef(e,!0)}function createRef(e,t){return isRef(e)?e:new RefImpl(e,t)}class RefImpl{constructor(t,n){this.dep=new Dep,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:toRaw(t),this._value=n?t:toReactive(t),this.__v_isShallow=n}get value(){return this.dep.track({target:this,type:"get",key:"value"}),this._value}set value(t){const n=this._rawValue,o=this.__v_isShallow||isShallow(t)||isReadonly(t);t=o?t:toRaw(t),hasChanged(t,n)&&(this._rawValue=t,this._value=o?t:toReactive(t),this.dep.trigger({target:this,type:"set",key:"value",newValue:t,oldValue:n}))}}function triggerRef(e){e.dep&&e.dep.trigger({target:e,type:"set",key:"value",newValue:e._value})}function unref(e){return isRef(e)?e.value:e}function toValue$1(e){return isFunction$2(e)?e():unref(e)}const shallowUnwrapHandlers={get:(e,t,n)=>t==="__v_raw"?e:unref(Reflect.get(e,t,n)),set:(e,t,n,o)=>{const u=e[t];return isRef(u)&&!isRef(n)?(u.value=n,!0):Reflect.set(e,t,n,o)}};function proxyRefs(e){return isReactive(e)?e:new Proxy(e,shallowUnwrapHandlers)}class CustomRefImpl{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new Dep,{get:o,set:u}=t(n.track.bind(n),n.trigger.bind(n));this._get=o,this._set=u}get value(){return this._value=this._get()}set value(t){this._set(t)}}function customRef(e){return new CustomRefImpl(e)}function toRefs(e){isProxy(e)||warn$3("toRefs() expects a reactive object but received a plain one.");const t=isArray$8(e)?new Array(e.length):{};for(const n in e)t[n]=propertyToRef(e,n);return t}class ObjectRefImpl{constructor(t,n,o){this._object=t,this._key=n,this._defaultValue=o,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return getDepFromReactive(toRaw(this._object),this._key)}}class GetterRefImpl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function toRef(e,t,n){return isRef(e)?e:isFunction$2(e)?new GetterRefImpl(e):isObject$2(e)&&arguments.length>1?propertyToRef(e,t,n):ref$1(e)}function propertyToRef(e,t,n){const o=e[t];return isRef(o)?o:new ObjectRefImpl(e,t,n)}class ComputedRefImpl{constructor(t,n,o){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Dep(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=globalVersion-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=o}notify(){if(this.flags|=16,!(this.flags&8)&&activeSub!==this)return batch(this,!0),!0}get value(){const t=this.dep.track({target:this,type:"get",key:"value"});return refreshComputed(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter?this.setter(t):warn$3("Write operation failed: computed value is readonly")}}function computed$1(e,t,n=!1){let o,u;isFunction$2(e)?o=e:(o=e.get,u=e.set);const a=new ComputedRefImpl(o,u,n);return t&&!n&&(a.onTrack=t.onTrack,a.onTrigger=t.onTrigger),a}const TrackOpTypes={GET:"get",HAS:"has",ITERATE:"iterate"},TriggerOpTypes={SET:"set",ADD:"add",DELETE:"delete",CLEAR:"clear"},INITIAL_WATCHER_VALUE={},cleanupMap=new WeakMap;let activeWatcher;function getCurrentWatcher(){return activeWatcher}function onWatcherCleanup(e,t=!1,n=activeWatcher){if(n){let o=cleanupMap.get(n);o||cleanupMap.set(n,o=[]),o.push(e)}else t||warn$3("onWatcherCleanup() was called when there was no active watcher to associate with.")}function watch$1(e,t,n=EMPTY_OBJ){const{immediate:o,deep:u,once:a,scheduler:v,augmentJob:y,call:w}=n,$=re=>{(n.onWarn||warn$3)("Invalid watch source: ",re,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},x=re=>u?re:isShallow(re)||u===!1||u===0?traverse(re,1):traverse(re);let E,P,I,L,D=!1,V=!1;if(isRef(e)?(P=()=>e.value,D=isShallow(e)):isReactive(e)?(P=()=>x(e),D=!0):isArray$8(e)?(V=!0,D=e.some(re=>isReactive(re)||isShallow(re)),P=()=>e.map(re=>{if(isRef(re))return re.value;if(isReactive(re))return x(re);if(isFunction$2(re))return w?w(re,2):re();$(re)})):isFunction$2(e)?t?P=w?()=>w(e,2):e:P=()=>{if(I){pauseTracking();try{I()}finally{resetTracking()}}const re=activeWatcher;activeWatcher=E;try{return w?w(e,3,[L]):e(L)}finally{activeWatcher=re}}:(P=NOOP,$(e)),t&&u){const re=P,ae=u===!0?1/0:u;P=()=>traverse(re(),ae)}const H=getCurrentScope(),j=()=>{E.stop(),H&&H.active&&remove(H.effects,E)};if(a&&t){const re=t;t=(...ae)=>{re(...ae),j()}}let z=V?new Array(e.length).fill(INITIAL_WATCHER_VALUE):INITIAL_WATCHER_VALUE;const J=re=>{if(!(!(E.flags&1)||!E.dirty&&!re))if(t){const ae=E.run();if(u||D||(V?ae.some((me,ue)=>hasChanged(me,z[ue])):hasChanged(ae,z))){I&&I();const me=activeWatcher;activeWatcher=E;try{const ue=[ae,z===INITIAL_WATCHER_VALUE?void 0:V&&z[0]===INITIAL_WATCHER_VALUE?[]:z,L];w?w(t,3,ue):t(...ue),z=ae}finally{activeWatcher=me}}}else E.run()};return y&&y(J),E=new ReactiveEffect(P),E.scheduler=v?()=>v(J,!1):J,L=re=>onWatcherCleanup(re,!1,E),I=E.onStop=()=>{const re=cleanupMap.get(E);if(re){if(w)w(re,4);else for(const ae of re)ae();cleanupMap.delete(E)}},E.onTrack=n.onTrack,E.onTrigger=n.onTrigger,t?o?J(!0):z=E.run():v?v(J.bind(null,!0),!0):E.run(),j.pause=E.pause.bind(E),j.resume=E.resume.bind(E),j.stop=j,j}function traverse(e,t=1/0,n){if(t<=0||!isObject$2(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,isRef(e))traverse(e.value,t,n);else if(isArray$8(e))for(let o=0;o{traverse(o,t,n)});else if(isPlainObject(e)){for(const o in e)traverse(e[o],t,n);for(const o of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,o)&&traverse(e[o],t,n)}return e}/** +**/function warn$3(e,...t){console.warn(`[Vue warn] ${e}`,...t)}let activeEffectScope;class EffectScope{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=activeEffectScope,!t&&activeEffectScope&&(this.index=(activeEffectScope.scopes||(activeEffectScope.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0)return;if(batchedComputed){let t=batchedComputed;for(batchedComputed=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;batchedSub;){let t=batchedSub;for(batchedSub=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(o){e||(e=o)}t=n}}if(e)throw e}function prepareDeps(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function cleanupDeps(e){let t,n=e.depsTail,o=n;for(;o;){const u=o.prevDep;o.version===-1?(o===n&&(n=u),removeSub(o),removeDep(o)):t=o,o.dep.activeLink=o.prevActiveLink,o.prevActiveLink=void 0,o=u}e.deps=t,e.depsTail=n}function isDirty(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(refreshComputed(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function refreshComputed(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===globalVersion))return;e.globalVersion=globalVersion;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!isDirty(e)){e.flags&=-3;return}const n=activeSub,o=shouldTrack;activeSub=e,shouldTrack=!0;try{prepareDeps(e);const u=e.fn(e._value);(t.version===0||hasChanged(u,e._value))&&(e._value=u,t.version++)}catch(u){throw t.version++,u}finally{activeSub=n,shouldTrack=o,cleanupDeps(e),e.flags&=-3}}function removeSub(e,t=!1){const{dep:n,prevSub:o,nextSub:u}=e;if(o&&(o.nextSub=u,e.prevSub=void 0),u&&(u.prevSub=o,e.nextSub=void 0),n.subsHead===e&&(n.subsHead=u),n.subs===e&&(n.subs=o,!o&&n.computed)){n.computed.flags&=-5;for(let a=n.computed.deps;a;a=a.nextDep)removeSub(a,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function removeDep(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}function effect(e,t){e.effect instanceof ReactiveEffect&&(e=e.effect.fn);const n=new ReactiveEffect(e);t&&extend$1(n,t);try{n.run()}catch(u){throw n.stop(),u}const o=n.run.bind(n);return o.effect=n,o}function stop(e){e.effect.stop()}let shouldTrack=!0;const trackStack=[];function pauseTracking(){trackStack.push(shouldTrack),shouldTrack=!1}function resetTracking(){const e=trackStack.pop();shouldTrack=e===void 0?!0:e}function cleanupEffect(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=activeSub;activeSub=void 0;try{t()}finally{activeSub=n}}}let globalVersion=0;class Link{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Dep{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.subsHead=void 0}track(t){if(!activeSub||!shouldTrack||activeSub===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==activeSub)n=this.activeLink=new Link(activeSub,this),activeSub.deps?(n.prevDep=activeSub.depsTail,activeSub.depsTail.nextDep=n,activeSub.depsTail=n):activeSub.deps=activeSub.depsTail=n,addSub(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const o=n.nextDep;o.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=o),n.prevDep=activeSub.depsTail,n.nextDep=void 0,activeSub.depsTail.nextDep=n,activeSub.depsTail=n,activeSub.deps===n&&(activeSub.deps=o)}return activeSub.onTrack&&activeSub.onTrack(extend$1({effect:activeSub},t)),n}trigger(t){this.version++,globalVersion++,this.notify(t)}notify(t){startBatch();try{for(let n=this.subsHead;n;n=n.nextSub)n.sub.onTrigger&&!(n.sub.flags&8)&&n.sub.onTrigger(extend$1({effect:n.sub},t));for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{endBatch()}}}function addSub(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let o=t.deps;o;o=o.nextDep)addSub(o)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subsHead===void 0&&(e.dep.subsHead=e),e.dep.subs=e}}const targetMap=new WeakMap,ITERATE_KEY=Symbol("Object iterate"),MAP_KEY_ITERATE_KEY=Symbol("Map keys iterate"),ARRAY_ITERATE_KEY=Symbol("Array iterate");function track(e,t,n){if(shouldTrack&&activeSub){let o=targetMap.get(e);o||targetMap.set(e,o=new Map);let u=o.get(n);u||(o.set(n,u=new Dep),u.map=o,u.key=n),u.track({target:e,type:t,key:n})}}function trigger(e,t,n,o,u,a){const v=targetMap.get(e);if(!v){globalVersion++;return}const y=w=>{w&&w.trigger({target:e,type:t,key:n,newValue:o,oldValue:u,oldTarget:a})};if(startBatch(),t==="clear")v.forEach(y);else{const w=isArray$8(e),$=w&&isIntegerKey(n);if(w&&n==="length"){const x=Number(o);v.forEach((E,B)=>{(B==="length"||B===ARRAY_ITERATE_KEY||!isSymbol$4(B)&&B>=x)&&y(E)})}else switch((n!==void 0||v.has(void 0))&&y(v.get(n)),$&&y(v.get(ARRAY_ITERATE_KEY)),t){case"add":w?$&&y(v.get("length")):(y(v.get(ITERATE_KEY)),isMap$1(e)&&y(v.get(MAP_KEY_ITERATE_KEY)));break;case"delete":w||(y(v.get(ITERATE_KEY)),isMap$1(e)&&y(v.get(MAP_KEY_ITERATE_KEY)));break;case"set":isMap$1(e)&&y(v.get(ITERATE_KEY));break}}endBatch()}function getDepFromReactive(e,t){const n=targetMap.get(e);return n&&n.get(t)}function reactiveReadArray(e){const t=toRaw(e);return t===e?t:(track(t,"iterate",ARRAY_ITERATE_KEY),isShallow(e)?t:t.map(toReactive))}function shallowReadArray(e){return track(e=toRaw(e),"iterate",ARRAY_ITERATE_KEY),e}const arrayInstrumentations={__proto__:null,[Symbol.iterator](){return iterator$1(this,Symbol.iterator,toReactive)},concat(...e){return reactiveReadArray(this).concat(...e.map(t=>isArray$8(t)?reactiveReadArray(t):t))},entries(){return iterator$1(this,"entries",e=>(e[1]=toReactive(e[1]),e))},every(e,t){return apply(this,"every",e,t,void 0,arguments)},filter(e,t){return apply(this,"filter",e,t,n=>n.map(toReactive),arguments)},find(e,t){return apply(this,"find",e,t,toReactive,arguments)},findIndex(e,t){return apply(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return apply(this,"findLast",e,t,toReactive,arguments)},findLastIndex(e,t){return apply(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return apply(this,"forEach",e,t,void 0,arguments)},includes(...e){return searchProxy(this,"includes",e)},indexOf(...e){return searchProxy(this,"indexOf",e)},join(e){return reactiveReadArray(this).join(e)},lastIndexOf(...e){return searchProxy(this,"lastIndexOf",e)},map(e,t){return apply(this,"map",e,t,void 0,arguments)},pop(){return noTracking(this,"pop")},push(...e){return noTracking(this,"push",e)},reduce(e,...t){return reduce(this,"reduce",e,t)},reduceRight(e,...t){return reduce(this,"reduceRight",e,t)},shift(){return noTracking(this,"shift")},some(e,t){return apply(this,"some",e,t,void 0,arguments)},splice(...e){return noTracking(this,"splice",e)},toReversed(){return reactiveReadArray(this).toReversed()},toSorted(e){return reactiveReadArray(this).toSorted(e)},toSpliced(...e){return reactiveReadArray(this).toSpliced(...e)},unshift(...e){return noTracking(this,"unshift",e)},values(){return iterator$1(this,"values",toReactive)}};function iterator$1(e,t,n){const o=shallowReadArray(e),u=o[t]();return o!==e&&!isShallow(e)&&(u._next=u.next,u.next=()=>{const a=u._next();return a.value&&(a.value=n(a.value)),a}),u}const arrayProto=Array.prototype;function apply(e,t,n,o,u,a){const v=shallowReadArray(e),y=v!==e&&!isShallow(e),w=v[t];if(w!==arrayProto[t]){const E=w.apply(e,a);return y?toReactive(E):E}let $=n;v!==e&&(y?$=function(E,B){return n.call(this,toReactive(E),B,e)}:n.length>2&&($=function(E,B){return n.call(this,E,B,e)}));const x=w.call(v,$,o);return y&&u?u(x):x}function reduce(e,t,n,o){const u=shallowReadArray(e);let a=n;return u!==e&&(isShallow(e)?n.length>3&&(a=function(v,y,w){return n.call(this,v,y,w,e)}):a=function(v,y,w){return n.call(this,v,toReactive(y),w,e)}),u[t](a,...o)}function searchProxy(e,t,n){const o=toRaw(e);track(o,"iterate",ARRAY_ITERATE_KEY);const u=o[t](...n);return(u===-1||u===!1)&&isProxy(n[0])?(n[0]=toRaw(n[0]),o[t](...n)):u}function noTracking(e,t,n=[]){pauseTracking(),startBatch();const o=toRaw(e)[t].apply(e,n);return endBatch(),resetTracking(),o}const isNonTrackableKeys=makeMap("__proto__,__v_isRef,__isVue"),builtInSymbols=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(isSymbol$4));function hasOwnProperty$3(e){isSymbol$4(e)||(e=String(e));const t=toRaw(this);return track(t,"has",e),t.hasOwnProperty(e)}class BaseReactiveHandler{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,o){if(n==="__v_skip")return t.__v_skip;const u=this._isReadonly,a=this._isShallow;if(n==="__v_isReactive")return!u;if(n==="__v_isReadonly")return u;if(n==="__v_isShallow")return a;if(n==="__v_raw")return o===(u?a?shallowReadonlyMap:readonlyMap:a?shallowReactiveMap:reactiveMap).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(o)?t:void 0;const v=isArray$8(t);if(!u){let w;if(v&&(w=arrayInstrumentations[n]))return w;if(n==="hasOwnProperty")return hasOwnProperty$3}const y=Reflect.get(t,n,isRef(t)?t:o);return(isSymbol$4(n)?builtInSymbols.has(n):isNonTrackableKeys(n))||(u||track(t,"get",n),a)?y:isRef(y)?v&&isIntegerKey(n)?y:y.value:isObject$2(y)?u?readonly(y):reactive(y):y}}class MutableReactiveHandler extends BaseReactiveHandler{constructor(t=!1){super(!1,t)}set(t,n,o,u){let a=t[n];if(!this._isShallow){const w=isReadonly(a);if(!isShallow(o)&&!isReadonly(o)&&(a=toRaw(a),o=toRaw(o)),!isArray$8(t)&&isRef(a)&&!isRef(o))return w?!1:(a.value=o,!0)}const v=isArray$8(t)&&isIntegerKey(n)?Number(n)e,getProto$3=e=>Reflect.getPrototypeOf(e);function createIterableMethod(e,t,n){return function(...o){const u=this.__v_raw,a=toRaw(u),v=isMap$1(a),y=e==="entries"||e===Symbol.iterator&&v,w=e==="keys"&&v,$=u[e](...o),x=n?toShallow:t?toReadonly:toReactive;return!t&&track(a,"iterate",w?MAP_KEY_ITERATE_KEY:ITERATE_KEY),{next(){const{value:E,done:B}=$.next();return B?{value:E,done:B}:{value:y?[x(E[0]),x(E[1])]:x(E),done:B}},[Symbol.iterator](){return this}}}}function createReadonlyMethod(e){return function(...t){{const n=t[0]?`on key "${t[0]}" `:"";warn$3(`${capitalize$2(e)} operation ${n}failed: target is readonly.`,toRaw(this))}return e==="delete"?!1:e==="clear"?void 0:this}}function createInstrumentations(e,t){const n={get(u){const a=this.__v_raw,v=toRaw(a),y=toRaw(u);e||(hasChanged(u,y)&&track(v,"get",u),track(v,"get",y));const{has:w}=getProto$3(v),$=t?toShallow:e?toReadonly:toReactive;if(w.call(v,u))return $(a.get(u));if(w.call(v,y))return $(a.get(y));a!==v&&a.get(u)},get size(){const u=this.__v_raw;return!e&&track(toRaw(u),"iterate",ITERATE_KEY),Reflect.get(u,"size",u)},has(u){const a=this.__v_raw,v=toRaw(a),y=toRaw(u);return e||(hasChanged(u,y)&&track(v,"has",u),track(v,"has",y)),u===y?a.has(u):a.has(u)||a.has(y)},forEach(u,a){const v=this,y=v.__v_raw,w=toRaw(y),$=t?toShallow:e?toReadonly:toReactive;return!e&&track(w,"iterate",ITERATE_KEY),y.forEach((x,E)=>u.call(a,$(x),$(E),v))}};return extend$1(n,e?{add:createReadonlyMethod("add"),set:createReadonlyMethod("set"),delete:createReadonlyMethod("delete"),clear:createReadonlyMethod("clear")}:{add(u){!t&&!isShallow(u)&&!isReadonly(u)&&(u=toRaw(u));const a=toRaw(this);return getProto$3(a).has.call(a,u)||(a.add(u),trigger(a,"add",u,u)),this},set(u,a){!t&&!isShallow(a)&&!isReadonly(a)&&(a=toRaw(a));const v=toRaw(this),{has:y,get:w}=getProto$3(v);let $=y.call(v,u);$?checkIdentityKeys(v,y,u):(u=toRaw(u),$=y.call(v,u));const x=w.call(v,u);return v.set(u,a),$?hasChanged(a,x)&&trigger(v,"set",u,a,x):trigger(v,"add",u,a),this},delete(u){const a=toRaw(this),{has:v,get:y}=getProto$3(a);let w=v.call(a,u);w?checkIdentityKeys(a,v,u):(u=toRaw(u),w=v.call(a,u));const $=y?y.call(a,u):void 0,x=a.delete(u);return w&&trigger(a,"delete",u,void 0,$),x},clear(){const u=toRaw(this),a=u.size!==0,v=isMap$1(u)?new Map(u):new Set(u),y=u.clear();return a&&trigger(u,"clear",void 0,void 0,v),y}}),["keys","values","entries",Symbol.iterator].forEach(u=>{n[u]=createIterableMethod(u,e,t)}),n}function createInstrumentationGetter(e,t){const n=createInstrumentations(e,t);return(o,u,a)=>u==="__v_isReactive"?!e:u==="__v_isReadonly"?e:u==="__v_raw"?o:Reflect.get(hasOwn$3(n,u)&&u in o?n:o,u,a)}const mutableCollectionHandlers={get:createInstrumentationGetter(!1,!1)},shallowCollectionHandlers={get:createInstrumentationGetter(!1,!0)},readonlyCollectionHandlers={get:createInstrumentationGetter(!0,!1)},shallowReadonlyCollectionHandlers={get:createInstrumentationGetter(!0,!0)};function checkIdentityKeys(e,t,n){const o=toRaw(n);if(o!==n&&t.call(e,o)){const u=toRawType(e);warn$3(`Reactive ${u} contains both the raw and reactive versions of the same object${u==="Map"?" as keys":""}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`)}}const reactiveMap=new WeakMap,shallowReactiveMap=new WeakMap,readonlyMap=new WeakMap,shallowReadonlyMap=new WeakMap;function targetTypeMap(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function getTargetType(e){return e.__v_skip||!Object.isExtensible(e)?0:targetTypeMap(toRawType(e))}function reactive(e){return isReadonly(e)?e:createReactiveObject(e,!1,mutableHandlers,mutableCollectionHandlers,reactiveMap)}function shallowReactive(e){return createReactiveObject(e,!1,shallowReactiveHandlers,shallowCollectionHandlers,shallowReactiveMap)}function readonly(e){return createReactiveObject(e,!0,readonlyHandlers,readonlyCollectionHandlers,readonlyMap)}function shallowReadonly(e){return createReactiveObject(e,!0,shallowReadonlyHandlers,shallowReadonlyCollectionHandlers,shallowReadonlyMap)}function createReactiveObject(e,t,n,o,u){if(!isObject$2(e))return warn$3(`value cannot be made ${t?"readonly":"reactive"}: ${String(e)}`),e;if(e.__v_raw&&!(t&&e.__v_isReactive))return e;const a=u.get(e);if(a)return a;const v=getTargetType(e);if(v===0)return e;const y=new Proxy(e,v===2?o:n);return u.set(e,y),y}function isReactive(e){return isReadonly(e)?isReactive(e.__v_raw):!!(e&&e.__v_isReactive)}function isReadonly(e){return!!(e&&e.__v_isReadonly)}function isShallow(e){return!!(e&&e.__v_isShallow)}function isProxy(e){return e?!!e.__v_raw:!1}function toRaw(e){const t=e&&e.__v_raw;return t?toRaw(t):e}function markRaw(e){return!hasOwn$3(e,"__v_skip")&&Object.isExtensible(e)&&def(e,"__v_skip",!0),e}const toReactive=e=>isObject$2(e)?reactive(e):e,toReadonly=e=>isObject$2(e)?readonly(e):e;function isRef(e){return e?e.__v_isRef===!0:!1}function ref$1(e){return createRef(e,!1)}function shallowRef(e){return createRef(e,!0)}function createRef(e,t){return isRef(e)?e:new RefImpl(e,t)}class RefImpl{constructor(t,n){this.dep=new Dep,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:toRaw(t),this._value=n?t:toReactive(t),this.__v_isShallow=n}get value(){return this.dep.track({target:this,type:"get",key:"value"}),this._value}set value(t){const n=this._rawValue,o=this.__v_isShallow||isShallow(t)||isReadonly(t);t=o?t:toRaw(t),hasChanged(t,n)&&(this._rawValue=t,this._value=o?t:toReactive(t),this.dep.trigger({target:this,type:"set",key:"value",newValue:t,oldValue:n}))}}function triggerRef(e){e.dep&&e.dep.trigger({target:e,type:"set",key:"value",newValue:e._value})}function unref(e){return isRef(e)?e.value:e}function toValue$1(e){return isFunction$2(e)?e():unref(e)}const shallowUnwrapHandlers={get:(e,t,n)=>t==="__v_raw"?e:unref(Reflect.get(e,t,n)),set:(e,t,n,o)=>{const u=e[t];return isRef(u)&&!isRef(n)?(u.value=n,!0):Reflect.set(e,t,n,o)}};function proxyRefs(e){return isReactive(e)?e:new Proxy(e,shallowUnwrapHandlers)}class CustomRefImpl{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new Dep,{get:o,set:u}=t(n.track.bind(n),n.trigger.bind(n));this._get=o,this._set=u}get value(){return this._value=this._get()}set value(t){this._set(t)}}function customRef(e){return new CustomRefImpl(e)}function toRefs(e){isProxy(e)||warn$3("toRefs() expects a reactive object but received a plain one.");const t=isArray$8(e)?new Array(e.length):{};for(const n in e)t[n]=propertyToRef(e,n);return t}class ObjectRefImpl{constructor(t,n,o){this._object=t,this._key=n,this._defaultValue=o,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return getDepFromReactive(toRaw(this._object),this._key)}}class GetterRefImpl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function toRef(e,t,n){return isRef(e)?e:isFunction$2(e)?new GetterRefImpl(e):isObject$2(e)&&arguments.length>1?propertyToRef(e,t,n):ref$1(e)}function propertyToRef(e,t,n){const o=e[t];return isRef(o)?o:new ObjectRefImpl(e,t,n)}class ComputedRefImpl{constructor(t,n,o){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Dep(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=globalVersion-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=o}notify(){if(this.flags|=16,!(this.flags&8)&&activeSub!==this)return batch(this,!0),!0}get value(){const t=this.dep.track({target:this,type:"get",key:"value"});return refreshComputed(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter?this.setter(t):warn$3("Write operation failed: computed value is readonly")}}function computed$1(e,t,n=!1){let o,u;isFunction$2(e)?o=e:(o=e.get,u=e.set);const a=new ComputedRefImpl(o,u,n);return t&&!n&&(a.onTrack=t.onTrack,a.onTrigger=t.onTrigger),a}const TrackOpTypes={GET:"get",HAS:"has",ITERATE:"iterate"},TriggerOpTypes={SET:"set",ADD:"add",DELETE:"delete",CLEAR:"clear"},INITIAL_WATCHER_VALUE={},cleanupMap=new WeakMap;let activeWatcher;function getCurrentWatcher(){return activeWatcher}function onWatcherCleanup(e,t=!1,n=activeWatcher){if(n){let o=cleanupMap.get(n);o||cleanupMap.set(n,o=[]),o.push(e)}else t||warn$3("onWatcherCleanup() was called when there was no active watcher to associate with.")}function watch$1(e,t,n=EMPTY_OBJ){const{immediate:o,deep:u,once:a,scheduler:v,augmentJob:y,call:w}=n,$=re=>{(n.onWarn||warn$3)("Invalid watch source: ",re,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},x=re=>u?re:isShallow(re)||u===!1||u===0?traverse(re,1):traverse(re);let E,B,I,L,D=!1,V=!1;if(isRef(e)?(B=()=>e.value,D=isShallow(e)):isReactive(e)?(B=()=>x(e),D=!0):isArray$8(e)?(V=!0,D=e.some(re=>isReactive(re)||isShallow(re)),B=()=>e.map(re=>{if(isRef(re))return re.value;if(isReactive(re))return x(re);if(isFunction$2(re))return w?w(re,2):re();$(re)})):isFunction$2(e)?t?B=w?()=>w(e,2):e:B=()=>{if(I){pauseTracking();try{I()}finally{resetTracking()}}const re=activeWatcher;activeWatcher=E;try{return w?w(e,3,[L]):e(L)}finally{activeWatcher=re}}:(B=NOOP,$(e)),t&&u){const re=B,ae=u===!0?1/0:u;B=()=>traverse(re(),ae)}const H=getCurrentScope(),j=()=>{E.stop(),H&&H.active&&remove(H.effects,E)};if(a&&t){const re=t;t=(...ae)=>{re(...ae),j()}}let z=V?new Array(e.length).fill(INITIAL_WATCHER_VALUE):INITIAL_WATCHER_VALUE;const J=re=>{if(!(!(E.flags&1)||!E.dirty&&!re))if(t){const ae=E.run();if(u||D||(V?ae.some((me,ue)=>hasChanged(me,z[ue])):hasChanged(ae,z))){I&&I();const me=activeWatcher;activeWatcher=E;try{const ue=[ae,z===INITIAL_WATCHER_VALUE?void 0:V&&z[0]===INITIAL_WATCHER_VALUE?[]:z,L];w?w(t,3,ue):t(...ue),z=ae}finally{activeWatcher=me}}}else E.run()};return y&&y(J),E=new ReactiveEffect(B),E.scheduler=v?()=>v(J,!1):J,L=re=>onWatcherCleanup(re,!1,E),I=E.onStop=()=>{const re=cleanupMap.get(E);if(re){if(w)w(re,4);else for(const ae of re)ae();cleanupMap.delete(E)}},E.onTrack=n.onTrack,E.onTrigger=n.onTrigger,t?o?J(!0):z=E.run():v?v(J.bind(null,!0),!0):E.run(),j.pause=E.pause.bind(E),j.resume=E.resume.bind(E),j.stop=j,j}function traverse(e,t=1/0,n){if(t<=0||!isObject$2(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,isRef(e))traverse(e.value,t,n);else if(isArray$8(e))for(let o=0;o{traverse(o,t,n)});else if(isPlainObject(e)){for(const o in e)traverse(e[o],t,n);for(const o of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,o)&&traverse(e[o],t,n)}return e}/** * @vue/runtime-core v3.5.13 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/const stack=[];function pushWarningContext(e){stack.push(e)}function popWarningContext(){stack.pop()}let isWarning=!1;function warn$1(e,...t){if(isWarning)return;isWarning=!0,pauseTracking();const n=stack.length?stack[stack.length-1].component:null,o=n&&n.appContext.config.warnHandler,u=getComponentTrace();if(o)callWithErrorHandling(o,n,11,[e+t.map(a=>{var v,y;return(y=(v=a.toString)==null?void 0:v.call(a))!=null?y:JSON.stringify(a)}).join(""),n&&n.proxy,u.map(({vnode:a})=>`at <${formatComponentName(n,a.type)}>`).join(` `),u]);else{const a=[`[Vue warn]: ${e}`,...t];u.length&&a.push(` `,...formatTrace(u)),console.warn(...a)}resetTracking(),isWarning=!1}function getComponentTrace(){let e=stack[stack.length-1];if(!e)return[];const t=[];for(;e;){const n=t[0];n&&n.vnode===e?n.recurseCount++:t.push({vnode:e,recurseCount:0});const o=e.component&&e.component.parent;e=o&&o.vnode}return t}function formatTrace(e){const t=[];return e.forEach((n,o)=>{t.push(...o===0?[]:[` -`],...formatTraceEntry(n))}),t}function formatTraceEntry({vnode:e,recurseCount:t}){const n=t>0?`... (${t} recursive calls)`:"",o=e.component?e.component.parent==null:!1,u=` at <${formatComponentName(e.component,e.type,o)}`,a=">"+n;return e.props?[u,...formatProps(e.props),a]:[u+a]}function formatProps(e){const t=[],n=Object.keys(e);return n.slice(0,3).forEach(o=>{t.push(...formatProp(o,e[o]))}),n.length>3&&t.push(" ..."),t}function formatProp(e,t,n){return isString$2(t)?(t=JSON.stringify(t),n?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?n?t:[`${e}=${t}`]:isRef(t)?(t=formatProp(e,toRaw(t.value),!0),n?t:[`${e}=Ref<`,t,">"]):isFunction$2(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=toRaw(t),n?t:[`${e}=`,t])}function assertNumber(e,t){e!==void 0&&(typeof e!="number"?warn$1(`${t} is not a valid number - got ${JSON.stringify(e)}.`):isNaN(e)&&warn$1(`${t} is NaN - the duration expression might be incorrect.`))}const ErrorCodes={SETUP_FUNCTION:0,0:"SETUP_FUNCTION",RENDER_FUNCTION:1,1:"RENDER_FUNCTION",NATIVE_EVENT_HANDLER:5,5:"NATIVE_EVENT_HANDLER",COMPONENT_EVENT_HANDLER:6,6:"COMPONENT_EVENT_HANDLER",VNODE_HOOK:7,7:"VNODE_HOOK",DIRECTIVE_HOOK:8,8:"DIRECTIVE_HOOK",TRANSITION_HOOK:9,9:"TRANSITION_HOOK",APP_ERROR_HANDLER:10,10:"APP_ERROR_HANDLER",APP_WARN_HANDLER:11,11:"APP_WARN_HANDLER",FUNCTION_REF:12,12:"FUNCTION_REF",ASYNC_COMPONENT_LOADER:13,13:"ASYNC_COMPONENT_LOADER",SCHEDULER:14,14:"SCHEDULER",COMPONENT_UPDATE:15,15:"COMPONENT_UPDATE",APP_UNMOUNT_CLEANUP:16,16:"APP_UNMOUNT_CLEANUP"},ErrorTypeStrings$1={sp:"serverPrefetch hook",bc:"beforeCreate hook",c:"created hook",bm:"beforeMount hook",m:"mounted hook",bu:"beforeUpdate hook",u:"updated",bum:"beforeUnmount hook",um:"unmounted hook",a:"activated hook",da:"deactivated hook",ec:"errorCaptured hook",rtc:"renderTracked hook",rtg:"renderTriggered hook",0:"setup function",1:"render function",2:"watcher getter",3:"watcher callback",4:"watcher cleanup function",5:"native event handler",6:"component event handler",7:"vnode hook",8:"directive hook",9:"transition hook",10:"app errorHandler",11:"app warnHandler",12:"ref function",13:"async component loader",14:"scheduler flush",15:"component update",16:"app unmount cleanup function"};function callWithErrorHandling(e,t,n,o){try{return o?e(...o):e()}catch(u){handleError(u,t,n)}}function callWithAsyncErrorHandling(e,t,n,o){if(isFunction$2(e)){const u=callWithErrorHandling(e,t,n,o);return u&&isPromise$1(u)&&u.catch(a=>{handleError(a,t,n)}),u}if(isArray$8(e)){const u=[];for(let a=0;a>>1,u=queue[o],a=getId(u);a=getId(n)?queue.push(e):queue.splice(findInsertionIndex$1(t),0,e),e.flags|=1,queueFlush()}}function queueFlush(){currentFlushPromise||(currentFlushPromise=resolvedPromise.then(flushJobs))}function queuePostFlushCb(e){isArray$8(e)?pendingPostFlushCbs.push(...e):activePostFlushCbs&&e.id===-1?activePostFlushCbs.splice(postFlushIndex+1,0,e):e.flags&1||(pendingPostFlushCbs.push(e),e.flags|=1),queueFlush()}function flushPreFlushCbs(e,t,n=flushIndex+1){for(t=t||new Map;ngetId(n)-getId(o));if(pendingPostFlushCbs.length=0,activePostFlushCbs){activePostFlushCbs.push(...t);return}for(activePostFlushCbs=t,e=e||new Map,postFlushIndex=0;postFlushIndexe.id==null?e.flags&2?-1:1/0:e.id;function flushJobs(e){e=e||new Map;const t=n=>checkRecursiveUpdates(e,n);try{for(flushIndex=0;flushIndexRECURSION_LIMIT){const o=t.i,u=o&&getComponentName(o.type);return handleError(`Maximum recursive updates exceeded${u?` in component <${u}>`:""}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,null,10),!0}return e.set(t,n+1),!1}let isHmrUpdating=!1;const hmrDirtyComponents=new Map;getGlobalThis().__VUE_HMR_RUNTIME__={createRecord:tryWrap(createRecord),rerender:tryWrap(rerender),reload:tryWrap(reload)};const map$2=new Map;function registerHMR(e){const t=e.type.__hmrId;let n=map$2.get(t);n||(createRecord(t,e.type),n=map$2.get(t)),n.instances.add(e)}function unregisterHMR(e){map$2.get(e.type.__hmrId).instances.delete(e)}function createRecord(e,t){return map$2.has(e)?!1:(map$2.set(e,{initialDef:normalizeClassComponent(t),instances:new Set}),!0)}function normalizeClassComponent(e){return isClassComponent(e)?e.__vccOpts:e}function rerender(e,t){const n=map$2.get(e);n&&(n.initialDef.render=t,[...n.instances].forEach(o=>{t&&(o.render=t,normalizeClassComponent(o.type).render=t),o.renderCache=[],isHmrUpdating=!0,o.update(),isHmrUpdating=!1}))}function reload(e,t){const n=map$2.get(e);if(!n)return;t=normalizeClassComponent(t),updateComponentDef(n.initialDef,t);const o=[...n.instances];for(let u=0;u{isHmrUpdating=!0,a.parent.update(),isHmrUpdating=!1,y.delete(a)}):a.appContext.reload?a.appContext.reload():typeof window<"u"?window.location.reload():console.warn("[HMR] Root or manually mounted instance modified. Full reload required."),a.root.ce&&a!==a.root&&a.root.ce._removeChildStyle(v)}queuePostFlushCb(()=>{hmrDirtyComponents.clear()})}function updateComponentDef(e,t){extend$1(e,t);for(const n in e)n!=="__file"&&!(n in t)&&delete e[n]}function tryWrap(e){return(t,n)=>{try{return e(t,n)}catch(o){console.error(o),console.warn("[HMR] Something went wrong during Vue component hot-reload. Full reload required.")}}}let devtools$1,buffer$1=[],devtoolsNotInstalled=!1;function emit$1(e,...t){devtools$1?devtools$1.emit(e,...t):devtoolsNotInstalled||buffer$1.push({event:e,args:t})}function setDevtoolsHook$1(e,t){var n,o;devtools$1=e,devtools$1?(devtools$1.enabled=!0,buffer$1.forEach(({event:u,args:a})=>devtools$1.emit(u,...a)),buffer$1=[]):typeof window<"u"&&window.HTMLElement&&!((o=(n=window.navigator)==null?void 0:n.userAgent)!=null&&o.includes("jsdom"))?((t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push(a=>{setDevtoolsHook$1(a,t)}),setTimeout(()=>{devtools$1||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,devtoolsNotInstalled=!0,buffer$1=[])},3e3)):(devtoolsNotInstalled=!0,buffer$1=[])}function devtoolsInitApp(e,t){emit$1("app:init",e,t,{Fragment,Text,Comment,Static})}function devtoolsUnmountApp(e){emit$1("app:unmount",e)}const devtoolsComponentAdded=createDevtoolsComponentHook("component:added"),devtoolsComponentUpdated=createDevtoolsComponentHook("component:updated"),_devtoolsComponentRemoved=createDevtoolsComponentHook("component:removed"),devtoolsComponentRemoved=e=>{devtools$1&&typeof devtools$1.cleanupBuffer=="function"&&!devtools$1.cleanupBuffer(e)&&_devtoolsComponentRemoved(e)};/*! #__NO_SIDE_EFFECTS__ */function createDevtoolsComponentHook(e){return t=>{emit$1(e,t.appContext.app,t.uid,t.parent?t.parent.uid:void 0,t)}}const devtoolsPerfStart=createDevtoolsPerformanceHook("perf:start"),devtoolsPerfEnd=createDevtoolsPerformanceHook("perf:end");function createDevtoolsPerformanceHook(e){return(t,n,o)=>{emit$1(e,t.appContext.app,t.uid,t,n,o)}}function devtoolsComponentEmit(e,t,n){emit$1("component:emit",e.appContext.app,e,t,n)}let currentRenderingInstance=null,currentScopeId=null;function setCurrentRenderingInstance(e){const t=currentRenderingInstance;return currentRenderingInstance=e,currentScopeId=e&&e.type.__scopeId||null,t}function pushScopeId(e){currentScopeId=e}function popScopeId(){currentScopeId=null}const withScopeId=e=>withCtx;function withCtx(e,t=currentRenderingInstance,n){if(!t||e._n)return e;const o=(...u)=>{o._d&&setBlockTracking(-1);const a=setCurrentRenderingInstance(t);let v;try{v=e(...u)}finally{setCurrentRenderingInstance(a),o._d&&setBlockTracking(1)}return devtoolsComponentUpdated(t),v};return o._n=!0,o._c=!0,o._d=!0,o}function validateDirectiveName(e){isBuiltInDirective(e)&&warn$1("Do not use built-in directive ids as custom directive id: "+e)}function withDirectives(e,t){if(currentRenderingInstance===null)return warn$1("withDirectives can only be used inside render functions."),e;const n=getComponentPublicInstance(currentRenderingInstance),o=e.dirs||(e.dirs=[]);for(let u=0;ue.__isTeleport,isTeleportDisabled=e=>e&&(e.disabled||e.disabled===""),isTeleportDeferred=e=>e&&(e.defer||e.defer===""),isTargetSVG=e=>typeof SVGElement<"u"&&e instanceof SVGElement,isTargetMathML=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,resolveTarget=(e,t)=>{const n=e&&e.to;if(isString$2(n))if(t){const o=t(n);return!o&&!isTeleportDisabled(e)&&warn$1(`Failed to locate Teleport target with selector "${n}". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.`),o}else return warn$1("Current renderer does not support string target for Teleports. (missing querySelector renderer option)"),null;else return!n&&!isTeleportDisabled(e)&&warn$1(`Invalid Teleport target: ${n}`),n},TeleportImpl={name:"Teleport",__isTeleport:!0,process(e,t,n,o,u,a,v,y,w,$){const{mc:x,pc:E,pbc:P,o:{insert:I,querySelector:L,createText:D,createComment:V}}=$,H=isTeleportDisabled(t.props);let{shapeFlag:j,children:z,dynamicChildren:J}=t;if(isHmrUpdating&&(w=!1,J=null),e==null){const re=t.el=V("teleport start"),ae=t.anchor=V("teleport end");I(re,n,o),I(ae,n,o);const me=(ne,ye)=>{j&16&&(u&&u.isCE&&(u.ce._teleportTarget=ne),x(z,ne,ye,u,a,v,y,w))},ue=()=>{const ne=t.target=resolveTarget(t.props,L),ye=prepareAnchor(ne,t,D,I);ne?(v!=="svg"&&isTargetSVG(ne)?v="svg":v!=="mathml"&&isTargetMathML(ne)&&(v="mathml"),H||(me(ne,ye),updateCssVars(t,!1))):H||warn$1("Invalid Teleport target on mount:",ne,`(${typeof ne})`)};H&&(me(n,ae),updateCssVars(t,!0)),isTeleportDeferred(t.props)?queuePostRenderEffect(()=>{ue(),t.el.__isMounted=!0},a):ue()}else{if(isTeleportDeferred(t.props)&&!e.el.__isMounted){queuePostRenderEffect(()=>{TeleportImpl.process(e,t,n,o,u,a,v,y,w,$),delete e.el.__isMounted},a);return}t.el=e.el,t.targetStart=e.targetStart;const re=t.anchor=e.anchor,ae=t.target=e.target,me=t.targetAnchor=e.targetAnchor,ue=isTeleportDisabled(e.props),ne=ue?n:ae,ye=ue?re:me;if(v==="svg"||isTargetSVG(ae)?v="svg":(v==="mathml"||isTargetMathML(ae))&&(v="mathml"),J?(P(e.dynamicChildren,J,ne,u,a,v,y),traverseStaticChildren(e,t,!0)):w||E(e,t,ne,ye,u,a,v,y,!1),H)ue?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):moveTeleport(t,n,re,$,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const T=t.target=resolveTarget(t.props,L);T?moveTeleport(t,T,null,$,0):warn$1("Invalid Teleport target on update:",ae,`(${typeof ae})`)}else ue&&moveTeleport(t,ae,me,$,1);updateCssVars(t,H)}},remove(e,t,n,{um:o,o:{remove:u}},a){const{shapeFlag:v,children:y,anchor:w,targetStart:$,targetAnchor:x,target:E,props:P}=e;if(E&&(u($),u(x)),a&&u(w),v&16){const I=a||!isTeleportDisabled(P);for(let L=0;L{e.isMounted=!0}),onBeforeUnmount(()=>{e.isUnmounting=!0}),e}const TransitionHookValidator=[Function,Array],BaseTransitionPropsValidators={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:TransitionHookValidator,onEnter:TransitionHookValidator,onAfterEnter:TransitionHookValidator,onEnterCancelled:TransitionHookValidator,onBeforeLeave:TransitionHookValidator,onLeave:TransitionHookValidator,onAfterLeave:TransitionHookValidator,onLeaveCancelled:TransitionHookValidator,onBeforeAppear:TransitionHookValidator,onAppear:TransitionHookValidator,onAfterAppear:TransitionHookValidator,onAppearCancelled:TransitionHookValidator},recursiveGetSubtree=e=>{const t=e.subTree;return t.component?recursiveGetSubtree(t.component):t},BaseTransitionImpl={name:"BaseTransition",props:BaseTransitionPropsValidators,setup(e,{slots:t}){const n=getCurrentInstance(),o=useTransitionState();return()=>{const u=t.default&&getTransitionRawChildren(t.default(),!0);if(!u||!u.length)return;const a=findNonCommentChild(u),v=toRaw(e),{mode:y}=v;if(y&&y!=="in-out"&&y!=="out-in"&&y!=="default"&&warn$1(`invalid mode: ${y}`),o.isLeaving)return emptyPlaceholder(a);const w=getInnerChild$1(a);if(!w)return emptyPlaceholder(a);let $=resolveTransitionHooks(w,v,o,n,E=>$=E);w.type!==Comment&&setTransitionHooks(w,$);let x=n.subTree&&getInnerChild$1(n.subTree);if(x&&x.type!==Comment&&!isSameVNodeType(w,x)&&recursiveGetSubtree(n).type!==Comment){let E=resolveTransitionHooks(x,v,o,n);if(setTransitionHooks(x,E),y==="out-in"&&w.type!==Comment)return o.isLeaving=!0,E.afterLeave=()=>{o.isLeaving=!1,n.job.flags&8||n.update(),delete E.afterLeave,x=void 0},emptyPlaceholder(a);y==="in-out"&&w.type!==Comment?E.delayLeave=(P,I,L)=>{const D=getLeavingNodesForType(o,x);D[String(x.key)]=x,P[leaveCbKey]=()=>{I(),P[leaveCbKey]=void 0,delete $.delayedLeave,x=void 0},$.delayedLeave=()=>{L(),delete $.delayedLeave,x=void 0}}:x=void 0}else x&&(x=void 0);return a}}};function findNonCommentChild(e){let t=e[0];if(e.length>1){let n=!1;for(const o of e)if(o.type!==Comment){if(n){warn$1(" can only be used on a single element or component. Use for lists.");break}t=o,n=!0}}return t}const BaseTransition=BaseTransitionImpl;function getLeavingNodesForType(e,t){const{leavingVNodes:n}=e;let o=n.get(t.type);return o||(o=Object.create(null),n.set(t.type,o)),o}function resolveTransitionHooks(e,t,n,o,u){const{appear:a,mode:v,persisted:y=!1,onBeforeEnter:w,onEnter:$,onAfterEnter:x,onEnterCancelled:E,onBeforeLeave:P,onLeave:I,onAfterLeave:L,onLeaveCancelled:D,onBeforeAppear:V,onAppear:H,onAfterAppear:j,onAppearCancelled:z}=t,J=String(e.key),re=getLeavingNodesForType(n,e),ae=(ne,ye)=>{ne&&callWithAsyncErrorHandling(ne,o,9,ye)},me=(ne,ye)=>{const T=ye[1];ae(ne,ye),isArray$8(ne)?ne.every(l=>l.length<=1)&&T():ne.length<=1&&T()},ue={mode:v,persisted:y,beforeEnter(ne){let ye=w;if(!n.isMounted)if(a)ye=V||w;else return;ne[leaveCbKey]&&ne[leaveCbKey](!0);const T=re[J];T&&isSameVNodeType(e,T)&&T.el[leaveCbKey]&&T.el[leaveCbKey](),ae(ye,[ne])},enter(ne){let ye=$,T=x,l=E;if(!n.isMounted)if(a)ye=H||$,T=j||x,l=z||E;else return;let d=!1;const m=ne[enterCbKey$1]=b=>{d||(d=!0,b?ae(l,[ne]):ae(T,[ne]),ue.delayedLeave&&ue.delayedLeave(),ne[enterCbKey$1]=void 0)};ye?me(ye,[ne,m]):m()},leave(ne,ye){const T=String(e.key);if(ne[enterCbKey$1]&&ne[enterCbKey$1](!0),n.isUnmounting)return ye();ae(P,[ne]);let l=!1;const d=ne[leaveCbKey]=m=>{l||(l=!0,ye(),m?ae(D,[ne]):ae(L,[ne]),ne[leaveCbKey]=void 0,re[T]===e&&delete re[T])};re[T]=e,I?me(I,[ne,d]):d()},clone(ne){const ye=resolveTransitionHooks(ne,t,n,o,u);return u&&u(ye),ye}};return ue}function emptyPlaceholder(e){if(isKeepAlive(e))return e=cloneVNode(e),e.children=null,e}function getInnerChild$1(e){if(!isKeepAlive(e))return isTeleport(e.type)&&e.children?findNonCommentChild(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&isFunction$2(n.default))return n.default()}}function setTransitionHooks(e,t){e.shapeFlag&6&&e.component?(e.transition=t,setTransitionHooks(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function getTransitionRawChildren(e,t=!1,n){let o=[],u=0;for(let a=0;a1)for(let a=0;aextend$1({name:e.name},t,{setup:e}))():e}function useId(){const e=getCurrentInstance();return e?(e.appContext.config.idPrefix||"v")+"-"+e.ids[0]+e.ids[1]++:(warn$1("useId() is called when there is no active component instance to be associated with."),"")}function markAsyncBoundary(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}const knownTemplateRefs=new WeakSet;function useTemplateRef(e){const t=getCurrentInstance(),n=shallowRef(null);if(t){const u=t.refs===EMPTY_OBJ?t.refs={}:t.refs;let a;(a=Object.getOwnPropertyDescriptor(u,e))&&!a.configurable?warn$1(`useTemplateRef('${e}') already exists.`):Object.defineProperty(u,e,{enumerable:!0,get:()=>n.value,set:v=>n.value=v})}else warn$1("useTemplateRef() is called when there is no active component instance to be associated with.");const o=readonly(n);return knownTemplateRefs.add(o),o}function setRef(e,t,n,o,u=!1){if(isArray$8(e)){e.forEach((L,D)=>setRef(L,t&&(isArray$8(t)?t[D]:t),n,o,u));return}if(isAsyncWrapper(o)&&!u){o.shapeFlag&512&&o.type.__asyncResolved&&o.component.subTree.component&&setRef(e,t,n,o.component.subTree);return}const a=o.shapeFlag&4?getComponentPublicInstance(o.component):o.el,v=u?null:a,{i:y,r:w}=e;if(!y){warn$1("Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.");return}const $=t&&t.r,x=y.refs===EMPTY_OBJ?y.refs={}:y.refs,E=y.setupState,P=toRaw(E),I=E===EMPTY_OBJ?()=>!1:L=>(hasOwn$3(P,L)&&!isRef(P[L])&&warn$1(`Template ref "${L}" used on a non-ref value. It will not work in the production build.`),knownTemplateRefs.has(P[L])?!1:hasOwn$3(P,L));if($!=null&&$!==w&&(isString$2($)?(x[$]=null,I($)&&(E[$]=null)):isRef($)&&($.value=null)),isFunction$2(w))callWithErrorHandling(w,y,12,[v,x]);else{const L=isString$2(w),D=isRef(w);if(L||D){const V=()=>{if(e.f){const H=L?I(w)?E[w]:x[w]:w.value;u?isArray$8(H)&&remove(H,a):isArray$8(H)?H.includes(a)||H.push(a):L?(x[w]=[a],I(w)&&(E[w]=x[w])):(w.value=[a],e.k&&(x[e.k]=w.value))}else L?(x[w]=v,I(w)&&(E[w]=v)):D?(w.value=v,e.k&&(x[e.k]=v)):warn$1("Invalid template ref type:",w,`(${typeof w})`)};v?(V.id=-1,queuePostRenderEffect(V,n)):V()}else warn$1("Invalid template ref type:",w,`(${typeof w})`)}}let hasLoggedMismatchError=!1;const logMismatchError=()=>{hasLoggedMismatchError||(console.error("Hydration completed but contains mismatches."),hasLoggedMismatchError=!0)},isSVGContainer=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",isMathMLContainer=e=>e.namespaceURI.includes("MathML"),getContainerType=e=>{if(e.nodeType===1){if(isSVGContainer(e))return"svg";if(isMathMLContainer(e))return"mathml"}},isComment=e=>e.nodeType===8;function createHydrationFunctions(e){const{mt:t,p:n,o:{patchProp:o,createText:u,nextSibling:a,parentNode:v,remove:y,insert:w,createComment:$}}=e,x=(z,J)=>{if(!J.hasChildNodes()){warn$1("Attempting to hydrate existing markup but container is empty. Performing full mount instead."),n(null,z,J),flushPostFlushCbs(),J._vnode=z;return}E(J.firstChild,z,null,null,null),flushPostFlushCbs(),J._vnode=z},E=(z,J,re,ae,me,ue=!1)=>{ue=ue||!!J.dynamicChildren;const ne=isComment(z)&&z.data==="[",ye=()=>D(z,J,re,ae,me,ne),{type:T,ref:l,shapeFlag:d,patchFlag:m}=J;let b=z.nodeType;J.el=z,def(z,"__vnode",J,!0),def(z,"__vueParentComponent",re,!0),m===-2&&(ue=!1,J.dynamicChildren=null);let _=null;switch(T){case Text:b!==3?J.children===""?(w(J.el=u(""),v(z),z),_=z):_=ye():(z.data!==J.children&&(warn$1("Hydration text mismatch in",z.parentNode,` +`],...formatTraceEntry(n))}),t}function formatTraceEntry({vnode:e,recurseCount:t}){const n=t>0?`... (${t} recursive calls)`:"",o=e.component?e.component.parent==null:!1,u=` at <${formatComponentName(e.component,e.type,o)}`,a=">"+n;return e.props?[u,...formatProps(e.props),a]:[u+a]}function formatProps(e){const t=[],n=Object.keys(e);return n.slice(0,3).forEach(o=>{t.push(...formatProp(o,e[o]))}),n.length>3&&t.push(" ..."),t}function formatProp(e,t,n){return isString$2(t)?(t=JSON.stringify(t),n?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?n?t:[`${e}=${t}`]:isRef(t)?(t=formatProp(e,toRaw(t.value),!0),n?t:[`${e}=Ref<`,t,">"]):isFunction$2(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=toRaw(t),n?t:[`${e}=`,t])}function assertNumber(e,t){e!==void 0&&(typeof e!="number"?warn$1(`${t} is not a valid number - got ${JSON.stringify(e)}.`):isNaN(e)&&warn$1(`${t} is NaN - the duration expression might be incorrect.`))}const ErrorCodes={SETUP_FUNCTION:0,0:"SETUP_FUNCTION",RENDER_FUNCTION:1,1:"RENDER_FUNCTION",NATIVE_EVENT_HANDLER:5,5:"NATIVE_EVENT_HANDLER",COMPONENT_EVENT_HANDLER:6,6:"COMPONENT_EVENT_HANDLER",VNODE_HOOK:7,7:"VNODE_HOOK",DIRECTIVE_HOOK:8,8:"DIRECTIVE_HOOK",TRANSITION_HOOK:9,9:"TRANSITION_HOOK",APP_ERROR_HANDLER:10,10:"APP_ERROR_HANDLER",APP_WARN_HANDLER:11,11:"APP_WARN_HANDLER",FUNCTION_REF:12,12:"FUNCTION_REF",ASYNC_COMPONENT_LOADER:13,13:"ASYNC_COMPONENT_LOADER",SCHEDULER:14,14:"SCHEDULER",COMPONENT_UPDATE:15,15:"COMPONENT_UPDATE",APP_UNMOUNT_CLEANUP:16,16:"APP_UNMOUNT_CLEANUP"},ErrorTypeStrings$1={sp:"serverPrefetch hook",bc:"beforeCreate hook",c:"created hook",bm:"beforeMount hook",m:"mounted hook",bu:"beforeUpdate hook",u:"updated",bum:"beforeUnmount hook",um:"unmounted hook",a:"activated hook",da:"deactivated hook",ec:"errorCaptured hook",rtc:"renderTracked hook",rtg:"renderTriggered hook",0:"setup function",1:"render function",2:"watcher getter",3:"watcher callback",4:"watcher cleanup function",5:"native event handler",6:"component event handler",7:"vnode hook",8:"directive hook",9:"transition hook",10:"app errorHandler",11:"app warnHandler",12:"ref function",13:"async component loader",14:"scheduler flush",15:"component update",16:"app unmount cleanup function"};function callWithErrorHandling(e,t,n,o){try{return o?e(...o):e()}catch(u){handleError(u,t,n)}}function callWithAsyncErrorHandling(e,t,n,o){if(isFunction$2(e)){const u=callWithErrorHandling(e,t,n,o);return u&&isPromise$1(u)&&u.catch(a=>{handleError(a,t,n)}),u}if(isArray$8(e)){const u=[];for(let a=0;a>>1,u=queue[o],a=getId(u);a=getId(n)?queue.push(e):queue.splice(findInsertionIndex$1(t),0,e),e.flags|=1,queueFlush()}}function queueFlush(){currentFlushPromise||(currentFlushPromise=resolvedPromise.then(flushJobs))}function queuePostFlushCb(e){isArray$8(e)?pendingPostFlushCbs.push(...e):activePostFlushCbs&&e.id===-1?activePostFlushCbs.splice(postFlushIndex+1,0,e):e.flags&1||(pendingPostFlushCbs.push(e),e.flags|=1),queueFlush()}function flushPreFlushCbs(e,t,n=flushIndex+1){for(t=t||new Map;ngetId(n)-getId(o));if(pendingPostFlushCbs.length=0,activePostFlushCbs){activePostFlushCbs.push(...t);return}for(activePostFlushCbs=t,e=e||new Map,postFlushIndex=0;postFlushIndexe.id==null?e.flags&2?-1:1/0:e.id;function flushJobs(e){e=e||new Map;const t=n=>checkRecursiveUpdates(e,n);try{for(flushIndex=0;flushIndexRECURSION_LIMIT){const o=t.i,u=o&&getComponentName(o.type);return handleError(`Maximum recursive updates exceeded${u?` in component <${u}>`:""}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,null,10),!0}return e.set(t,n+1),!1}let isHmrUpdating=!1;const hmrDirtyComponents=new Map;getGlobalThis().__VUE_HMR_RUNTIME__={createRecord:tryWrap(createRecord),rerender:tryWrap(rerender),reload:tryWrap(reload)};const map$2=new Map;function registerHMR(e){const t=e.type.__hmrId;let n=map$2.get(t);n||(createRecord(t,e.type),n=map$2.get(t)),n.instances.add(e)}function unregisterHMR(e){map$2.get(e.type.__hmrId).instances.delete(e)}function createRecord(e,t){return map$2.has(e)?!1:(map$2.set(e,{initialDef:normalizeClassComponent(t),instances:new Set}),!0)}function normalizeClassComponent(e){return isClassComponent(e)?e.__vccOpts:e}function rerender(e,t){const n=map$2.get(e);n&&(n.initialDef.render=t,[...n.instances].forEach(o=>{t&&(o.render=t,normalizeClassComponent(o.type).render=t),o.renderCache=[],isHmrUpdating=!0,o.update(),isHmrUpdating=!1}))}function reload(e,t){const n=map$2.get(e);if(!n)return;t=normalizeClassComponent(t),updateComponentDef(n.initialDef,t);const o=[...n.instances];for(let u=0;u{isHmrUpdating=!0,a.parent.update(),isHmrUpdating=!1,y.delete(a)}):a.appContext.reload?a.appContext.reload():typeof window<"u"?window.location.reload():console.warn("[HMR] Root or manually mounted instance modified. Full reload required."),a.root.ce&&a!==a.root&&a.root.ce._removeChildStyle(v)}queuePostFlushCb(()=>{hmrDirtyComponents.clear()})}function updateComponentDef(e,t){extend$1(e,t);for(const n in e)n!=="__file"&&!(n in t)&&delete e[n]}function tryWrap(e){return(t,n)=>{try{return e(t,n)}catch(o){console.error(o),console.warn("[HMR] Something went wrong during Vue component hot-reload. Full reload required.")}}}let devtools$1,buffer$1=[],devtoolsNotInstalled=!1;function emit$1(e,...t){devtools$1?devtools$1.emit(e,...t):devtoolsNotInstalled||buffer$1.push({event:e,args:t})}function setDevtoolsHook$1(e,t){var n,o;devtools$1=e,devtools$1?(devtools$1.enabled=!0,buffer$1.forEach(({event:u,args:a})=>devtools$1.emit(u,...a)),buffer$1=[]):typeof window<"u"&&window.HTMLElement&&!((o=(n=window.navigator)==null?void 0:n.userAgent)!=null&&o.includes("jsdom"))?((t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push(a=>{setDevtoolsHook$1(a,t)}),setTimeout(()=>{devtools$1||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,devtoolsNotInstalled=!0,buffer$1=[])},3e3)):(devtoolsNotInstalled=!0,buffer$1=[])}function devtoolsInitApp(e,t){emit$1("app:init",e,t,{Fragment,Text,Comment,Static})}function devtoolsUnmountApp(e){emit$1("app:unmount",e)}const devtoolsComponentAdded=createDevtoolsComponentHook("component:added"),devtoolsComponentUpdated=createDevtoolsComponentHook("component:updated"),_devtoolsComponentRemoved=createDevtoolsComponentHook("component:removed"),devtoolsComponentRemoved=e=>{devtools$1&&typeof devtools$1.cleanupBuffer=="function"&&!devtools$1.cleanupBuffer(e)&&_devtoolsComponentRemoved(e)};/*! #__NO_SIDE_EFFECTS__ */function createDevtoolsComponentHook(e){return t=>{emit$1(e,t.appContext.app,t.uid,t.parent?t.parent.uid:void 0,t)}}const devtoolsPerfStart=createDevtoolsPerformanceHook("perf:start"),devtoolsPerfEnd=createDevtoolsPerformanceHook("perf:end");function createDevtoolsPerformanceHook(e){return(t,n,o)=>{emit$1(e,t.appContext.app,t.uid,t,n,o)}}function devtoolsComponentEmit(e,t,n){emit$1("component:emit",e.appContext.app,e,t,n)}let currentRenderingInstance=null,currentScopeId=null;function setCurrentRenderingInstance(e){const t=currentRenderingInstance;return currentRenderingInstance=e,currentScopeId=e&&e.type.__scopeId||null,t}function pushScopeId(e){currentScopeId=e}function popScopeId(){currentScopeId=null}const withScopeId=e=>withCtx;function withCtx(e,t=currentRenderingInstance,n){if(!t||e._n)return e;const o=(...u)=>{o._d&&setBlockTracking(-1);const a=setCurrentRenderingInstance(t);let v;try{v=e(...u)}finally{setCurrentRenderingInstance(a),o._d&&setBlockTracking(1)}return devtoolsComponentUpdated(t),v};return o._n=!0,o._c=!0,o._d=!0,o}function validateDirectiveName(e){isBuiltInDirective(e)&&warn$1("Do not use built-in directive ids as custom directive id: "+e)}function withDirectives(e,t){if(currentRenderingInstance===null)return warn$1("withDirectives can only be used inside render functions."),e;const n=getComponentPublicInstance(currentRenderingInstance),o=e.dirs||(e.dirs=[]);for(let u=0;ue.__isTeleport,isTeleportDisabled=e=>e&&(e.disabled||e.disabled===""),isTeleportDeferred=e=>e&&(e.defer||e.defer===""),isTargetSVG=e=>typeof SVGElement<"u"&&e instanceof SVGElement,isTargetMathML=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,resolveTarget=(e,t)=>{const n=e&&e.to;if(isString$2(n))if(t){const o=t(n);return!o&&!isTeleportDisabled(e)&&warn$1(`Failed to locate Teleport target with selector "${n}". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.`),o}else return warn$1("Current renderer does not support string target for Teleports. (missing querySelector renderer option)"),null;else return!n&&!isTeleportDisabled(e)&&warn$1(`Invalid Teleport target: ${n}`),n},TeleportImpl={name:"Teleport",__isTeleport:!0,process(e,t,n,o,u,a,v,y,w,$){const{mc:x,pc:E,pbc:B,o:{insert:I,querySelector:L,createText:D,createComment:V}}=$,H=isTeleportDisabled(t.props);let{shapeFlag:j,children:z,dynamicChildren:J}=t;if(isHmrUpdating&&(w=!1,J=null),e==null){const re=t.el=V("teleport start"),ae=t.anchor=V("teleport end");I(re,n,o),I(ae,n,o);const me=(ne,ye)=>{j&16&&(u&&u.isCE&&(u.ce._teleportTarget=ne),x(z,ne,ye,u,a,v,y,w))},ue=()=>{const ne=t.target=resolveTarget(t.props,L),ye=prepareAnchor(ne,t,D,I);ne?(v!=="svg"&&isTargetSVG(ne)?v="svg":v!=="mathml"&&isTargetMathML(ne)&&(v="mathml"),H||(me(ne,ye),updateCssVars(t,!1))):H||warn$1("Invalid Teleport target on mount:",ne,`(${typeof ne})`)};H&&(me(n,ae),updateCssVars(t,!0)),isTeleportDeferred(t.props)?queuePostRenderEffect(()=>{ue(),t.el.__isMounted=!0},a):ue()}else{if(isTeleportDeferred(t.props)&&!e.el.__isMounted){queuePostRenderEffect(()=>{TeleportImpl.process(e,t,n,o,u,a,v,y,w,$),delete e.el.__isMounted},a);return}t.el=e.el,t.targetStart=e.targetStart;const re=t.anchor=e.anchor,ae=t.target=e.target,me=t.targetAnchor=e.targetAnchor,ue=isTeleportDisabled(e.props),ne=ue?n:ae,ye=ue?re:me;if(v==="svg"||isTargetSVG(ae)?v="svg":(v==="mathml"||isTargetMathML(ae))&&(v="mathml"),J?(B(e.dynamicChildren,J,ne,u,a,v,y),traverseStaticChildren(e,t,!0)):w||E(e,t,ne,ye,u,a,v,y,!1),H)ue?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):moveTeleport(t,n,re,$,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const T=t.target=resolveTarget(t.props,L);T?moveTeleport(t,T,null,$,0):warn$1("Invalid Teleport target on update:",ae,`(${typeof ae})`)}else ue&&moveTeleport(t,ae,me,$,1);updateCssVars(t,H)}},remove(e,t,n,{um:o,o:{remove:u}},a){const{shapeFlag:v,children:y,anchor:w,targetStart:$,targetAnchor:x,target:E,props:B}=e;if(E&&(u($),u(x)),a&&u(w),v&16){const I=a||!isTeleportDisabled(B);for(let L=0;L{e.isMounted=!0}),onBeforeUnmount(()=>{e.isUnmounting=!0}),e}const TransitionHookValidator=[Function,Array],BaseTransitionPropsValidators={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:TransitionHookValidator,onEnter:TransitionHookValidator,onAfterEnter:TransitionHookValidator,onEnterCancelled:TransitionHookValidator,onBeforeLeave:TransitionHookValidator,onLeave:TransitionHookValidator,onAfterLeave:TransitionHookValidator,onLeaveCancelled:TransitionHookValidator,onBeforeAppear:TransitionHookValidator,onAppear:TransitionHookValidator,onAfterAppear:TransitionHookValidator,onAppearCancelled:TransitionHookValidator},recursiveGetSubtree=e=>{const t=e.subTree;return t.component?recursiveGetSubtree(t.component):t},BaseTransitionImpl={name:"BaseTransition",props:BaseTransitionPropsValidators,setup(e,{slots:t}){const n=getCurrentInstance(),o=useTransitionState();return()=>{const u=t.default&&getTransitionRawChildren(t.default(),!0);if(!u||!u.length)return;const a=findNonCommentChild(u),v=toRaw(e),{mode:y}=v;if(y&&y!=="in-out"&&y!=="out-in"&&y!=="default"&&warn$1(`invalid mode: ${y}`),o.isLeaving)return emptyPlaceholder(a);const w=getInnerChild$1(a);if(!w)return emptyPlaceholder(a);let $=resolveTransitionHooks(w,v,o,n,E=>$=E);w.type!==Comment&&setTransitionHooks(w,$);let x=n.subTree&&getInnerChild$1(n.subTree);if(x&&x.type!==Comment&&!isSameVNodeType(w,x)&&recursiveGetSubtree(n).type!==Comment){let E=resolveTransitionHooks(x,v,o,n);if(setTransitionHooks(x,E),y==="out-in"&&w.type!==Comment)return o.isLeaving=!0,E.afterLeave=()=>{o.isLeaving=!1,n.job.flags&8||n.update(),delete E.afterLeave,x=void 0},emptyPlaceholder(a);y==="in-out"&&w.type!==Comment?E.delayLeave=(B,I,L)=>{const D=getLeavingNodesForType(o,x);D[String(x.key)]=x,B[leaveCbKey]=()=>{I(),B[leaveCbKey]=void 0,delete $.delayedLeave,x=void 0},$.delayedLeave=()=>{L(),delete $.delayedLeave,x=void 0}}:x=void 0}else x&&(x=void 0);return a}}};function findNonCommentChild(e){let t=e[0];if(e.length>1){let n=!1;for(const o of e)if(o.type!==Comment){if(n){warn$1(" can only be used on a single element or component. Use for lists.");break}t=o,n=!0}}return t}const BaseTransition=BaseTransitionImpl;function getLeavingNodesForType(e,t){const{leavingVNodes:n}=e;let o=n.get(t.type);return o||(o=Object.create(null),n.set(t.type,o)),o}function resolveTransitionHooks(e,t,n,o,u){const{appear:a,mode:v,persisted:y=!1,onBeforeEnter:w,onEnter:$,onAfterEnter:x,onEnterCancelled:E,onBeforeLeave:B,onLeave:I,onAfterLeave:L,onLeaveCancelled:D,onBeforeAppear:V,onAppear:H,onAfterAppear:j,onAppearCancelled:z}=t,J=String(e.key),re=getLeavingNodesForType(n,e),ae=(ne,ye)=>{ne&&callWithAsyncErrorHandling(ne,o,9,ye)},me=(ne,ye)=>{const T=ye[1];ae(ne,ye),isArray$8(ne)?ne.every(l=>l.length<=1)&&T():ne.length<=1&&T()},ue={mode:v,persisted:y,beforeEnter(ne){let ye=w;if(!n.isMounted)if(a)ye=V||w;else return;ne[leaveCbKey]&&ne[leaveCbKey](!0);const T=re[J];T&&isSameVNodeType(e,T)&&T.el[leaveCbKey]&&T.el[leaveCbKey](),ae(ye,[ne])},enter(ne){let ye=$,T=x,l=E;if(!n.isMounted)if(a)ye=H||$,T=j||x,l=z||E;else return;let d=!1;const m=ne[enterCbKey$1]=b=>{d||(d=!0,b?ae(l,[ne]):ae(T,[ne]),ue.delayedLeave&&ue.delayedLeave(),ne[enterCbKey$1]=void 0)};ye?me(ye,[ne,m]):m()},leave(ne,ye){const T=String(e.key);if(ne[enterCbKey$1]&&ne[enterCbKey$1](!0),n.isUnmounting)return ye();ae(B,[ne]);let l=!1;const d=ne[leaveCbKey]=m=>{l||(l=!0,ye(),m?ae(D,[ne]):ae(L,[ne]),ne[leaveCbKey]=void 0,re[T]===e&&delete re[T])};re[T]=e,I?me(I,[ne,d]):d()},clone(ne){const ye=resolveTransitionHooks(ne,t,n,o,u);return u&&u(ye),ye}};return ue}function emptyPlaceholder(e){if(isKeepAlive(e))return e=cloneVNode(e),e.children=null,e}function getInnerChild$1(e){if(!isKeepAlive(e))return isTeleport(e.type)&&e.children?findNonCommentChild(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&isFunction$2(n.default))return n.default()}}function setTransitionHooks(e,t){e.shapeFlag&6&&e.component?(e.transition=t,setTransitionHooks(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function getTransitionRawChildren(e,t=!1,n){let o=[],u=0;for(let a=0;a1)for(let a=0;aextend$1({name:e.name},t,{setup:e}))():e}function useId(){const e=getCurrentInstance();return e?(e.appContext.config.idPrefix||"v")+"-"+e.ids[0]+e.ids[1]++:(warn$1("useId() is called when there is no active component instance to be associated with."),"")}function markAsyncBoundary(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}const knownTemplateRefs=new WeakSet;function useTemplateRef(e){const t=getCurrentInstance(),n=shallowRef(null);if(t){const u=t.refs===EMPTY_OBJ?t.refs={}:t.refs;let a;(a=Object.getOwnPropertyDescriptor(u,e))&&!a.configurable?warn$1(`useTemplateRef('${e}') already exists.`):Object.defineProperty(u,e,{enumerable:!0,get:()=>n.value,set:v=>n.value=v})}else warn$1("useTemplateRef() is called when there is no active component instance to be associated with.");const o=readonly(n);return knownTemplateRefs.add(o),o}function setRef(e,t,n,o,u=!1){if(isArray$8(e)){e.forEach((L,D)=>setRef(L,t&&(isArray$8(t)?t[D]:t),n,o,u));return}if(isAsyncWrapper(o)&&!u){o.shapeFlag&512&&o.type.__asyncResolved&&o.component.subTree.component&&setRef(e,t,n,o.component.subTree);return}const a=o.shapeFlag&4?getComponentPublicInstance(o.component):o.el,v=u?null:a,{i:y,r:w}=e;if(!y){warn$1("Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.");return}const $=t&&t.r,x=y.refs===EMPTY_OBJ?y.refs={}:y.refs,E=y.setupState,B=toRaw(E),I=E===EMPTY_OBJ?()=>!1:L=>(hasOwn$3(B,L)&&!isRef(B[L])&&warn$1(`Template ref "${L}" used on a non-ref value. It will not work in the production build.`),knownTemplateRefs.has(B[L])?!1:hasOwn$3(B,L));if($!=null&&$!==w&&(isString$2($)?(x[$]=null,I($)&&(E[$]=null)):isRef($)&&($.value=null)),isFunction$2(w))callWithErrorHandling(w,y,12,[v,x]);else{const L=isString$2(w),D=isRef(w);if(L||D){const V=()=>{if(e.f){const H=L?I(w)?E[w]:x[w]:w.value;u?isArray$8(H)&&remove(H,a):isArray$8(H)?H.includes(a)||H.push(a):L?(x[w]=[a],I(w)&&(E[w]=x[w])):(w.value=[a],e.k&&(x[e.k]=w.value))}else L?(x[w]=v,I(w)&&(E[w]=v)):D?(w.value=v,e.k&&(x[e.k]=v)):warn$1("Invalid template ref type:",w,`(${typeof w})`)};v?(V.id=-1,queuePostRenderEffect(V,n)):V()}else warn$1("Invalid template ref type:",w,`(${typeof w})`)}}let hasLoggedMismatchError=!1;const logMismatchError=()=>{hasLoggedMismatchError||(console.error("Hydration completed but contains mismatches."),hasLoggedMismatchError=!0)},isSVGContainer=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",isMathMLContainer=e=>e.namespaceURI.includes("MathML"),getContainerType=e=>{if(e.nodeType===1){if(isSVGContainer(e))return"svg";if(isMathMLContainer(e))return"mathml"}},isComment=e=>e.nodeType===8;function createHydrationFunctions(e){const{mt:t,p:n,o:{patchProp:o,createText:u,nextSibling:a,parentNode:v,remove:y,insert:w,createComment:$}}=e,x=(z,J)=>{if(!J.hasChildNodes()){warn$1("Attempting to hydrate existing markup but container is empty. Performing full mount instead."),n(null,z,J),flushPostFlushCbs(),J._vnode=z;return}E(J.firstChild,z,null,null,null),flushPostFlushCbs(),J._vnode=z},E=(z,J,re,ae,me,ue=!1)=>{ue=ue||!!J.dynamicChildren;const ne=isComment(z)&&z.data==="[",ye=()=>D(z,J,re,ae,me,ne),{type:T,ref:l,shapeFlag:d,patchFlag:m}=J;let b=z.nodeType;J.el=z,def(z,"__vnode",J,!0),def(z,"__vueParentComponent",re,!0),m===-2&&(ue=!1,J.dynamicChildren=null);let _=null;switch(T){case Text:b!==3?J.children===""?(w(J.el=u(""),v(z),z),_=z):_=ye():(z.data!==J.children&&(warn$1("Hydration text mismatch in",z.parentNode,` - rendered on server: ${JSON.stringify(z.data)} - - expected on client: ${JSON.stringify(J.children)}`),logMismatchError(),z.data=J.children),_=a(z));break;case Comment:j(z)?(_=a(z),H(J.el=z.content.firstChild,z,re)):b!==8||ne?_=ye():_=a(z);break;case Static:if(ne&&(z=a(z),b=z.nodeType),b===1||b===3){_=z;const A=!J.children.length;for(let C=0;C{ue=ue||!!J.dynamicChildren;const{type:ne,props:ye,patchFlag:T,shapeFlag:l,dirs:d,transition:m}=J,b=ne==="input"||ne==="option";{d&&invokeDirectiveHook(J,null,re,"created");let _=!1;if(j(z)){_=needTransition(null,m)&&re&&re.vnode.props&&re.vnode.props.appear;const C=z.content.firstChild;_&&m.beforeEnter(C),H(C,z,re),J.el=z=C}if(l&16&&!(ye&&(ye.innerHTML||ye.textContent))){let C=I(z.firstChild,J,z,re,ae,me,ue),S=!1;for(;C;){isMismatchAllowed(z,1)||(S||(warn$1("Hydration children mismatch on",z,` + - expected on client: ${JSON.stringify(J.children)}`),logMismatchError(),z.data=J.children),_=a(z));break;case Comment:j(z)?(_=a(z),H(J.el=z.content.firstChild,z,re)):b!==8||ne?_=ye():_=a(z);break;case Static:if(ne&&(z=a(z),b=z.nodeType),b===1||b===3){_=z;const A=!J.children.length;for(let C=0;C{ue=ue||!!J.dynamicChildren;const{type:ne,props:ye,patchFlag:T,shapeFlag:l,dirs:d,transition:m}=J,b=ne==="input"||ne==="option";{d&&invokeDirectiveHook(J,null,re,"created");let _=!1;if(j(z)){_=needTransition(null,m)&&re&&re.vnode.props&&re.vnode.props.appear;const C=z.content.firstChild;_&&m.beforeEnter(C),H(C,z,re),J.el=z=C}if(l&16&&!(ye&&(ye.innerHTML||ye.textContent))){let C=I(z.firstChild,J,z,re,ae,me,ue),S=!1;for(;C;){isMismatchAllowed(z,1)||(S||(warn$1("Hydration children mismatch on",z,` Server rendered element contains more child nodes than client vdom.`),S=!0),logMismatchError());const c=C;C=C.nextSibling,y(c)}}else if(l&8){let C=J.children;C[0]===` `&&(z.tagName==="PRE"||z.tagName==="TEXTAREA")&&(C=C.slice(1)),z.textContent!==C&&(isMismatchAllowed(z,0)||(warn$1("Hydration text content mismatch on",z,` - rendered on server: ${z.textContent} - expected on client: ${J.children}`),logMismatchError()),z.textContent=J.children)}if(ye){const C=z.tagName.includes("-");for(const S in ye)!(d&&d.some(c=>c.dir.created))&&propHasMismatch(z,S,ye[S],J,re)&&logMismatchError(),(b&&(S.endsWith("value")||S==="indeterminate")||isOn(S)&&!isReservedProp(S)||S[0]==="."||C)&&o(z,S,null,ye[S],void 0,re)}let A;(A=ye&&ye.onVnodeBeforeMount)&&invokeVNodeHook(A,re,J),d&&invokeDirectiveHook(J,null,re,"beforeMount"),((A=ye&&ye.onVnodeMounted)||d||_)&&queueEffectWithSuspense(()=>{A&&invokeVNodeHook(A,re,J),_&&m.enter(z),d&&invokeDirectiveHook(J,null,re,"mounted")},ae)}return z.nextSibling},I=(z,J,re,ae,me,ue,ne)=>{ne=ne||!!J.dynamicChildren;const ye=J.children,T=ye.length;let l=!1;for(let d=0;d{const{slotScopeIds:ne}=J;ne&&(me=me?me.concat(ne):ne);const ye=v(z),T=I(a(z),J,ye,re,ae,me,ue);return T&&isComment(T)&&T.data==="]"?a(J.anchor=T):(logMismatchError(),w(J.anchor=$("]"),ye,T),T)},D=(z,J,re,ae,me,ue)=>{if(isMismatchAllowed(z.parentElement,1)||(warn$1(`Hydration node mismatch: - rendered on server:`,z,z.nodeType===3?"(text)":isComment(z)&&z.data==="["?"(start of fragment)":"",` -- expected on client:`,J.type),logMismatchError()),J.el=null,ue){const T=V(z);for(;;){const l=a(z);if(l&&l!==T)y(l);else break}}const ne=a(z),ye=v(z);return y(z),n(null,J,ye,ne,re,ae,getContainerType(ye),me),re&&(re.vnode.el=J.el,updateHOCHostEl(re,J.el)),ne},V=(z,J="[",re="]")=>{let ae=0;for(;z;)if(z=a(z),z&&isComment(z)&&(z.data===J&&ae++,z.data===re)){if(ae===0)return a(z);ae--}return z},H=(z,J,re)=>{const ae=J.parentNode;ae&&ae.replaceChild(z,J);let me=re;for(;me;)me.vnode.el===J&&(me.vnode.el=me.subTree.el=z),me=me.parent},j=z=>z.nodeType===1&&z.tagName==="TEMPLATE";return[x,E]}function propHasMismatch(e,t,n,o,u){let a,v,y,w;if(t==="class")y=e.getAttribute("class"),w=normalizeClass(n),isSetEqual(toClassSet(y||""),toClassSet(w))||(a=2,v="class");else if(t==="style"){y=e.getAttribute("style")||"",w=isString$2(n)?n:stringifyStyle(normalizeStyle(n));const $=toStyleMap(y),x=toStyleMap(w);if(o.dirs)for(const{dir:E,value:P}of o.dirs)E.name==="show"&&!P&&x.set("display","none");u&&resolveCssVars(u,o,x),isMapEqual($,x)||(a=3,v="style")}else(e instanceof SVGElement&&isKnownSvgAttr(t)||e instanceof HTMLElement&&(isBooleanAttr(t)||isKnownHtmlAttr(t)))&&(isBooleanAttr(t)?(y=e.hasAttribute(t),w=includeBooleanAttr(n)):n==null?(y=e.hasAttribute(t),w=!1):(e.hasAttribute(t)?y=e.getAttribute(t):t==="value"&&e.tagName==="TEXTAREA"?y=e.value:y=!1,w=isRenderableAttrValue(n)?String(n):!1),y!==w&&(a=4,v=t));if(a!=null&&!isMismatchAllowed(e,a)){const $=P=>P===!1?"(not rendered)":`${v}="${P}"`,x=`Hydration ${MismatchTypeString[a]} mismatch on`,E=` +- expected on client:`,J.type),logMismatchError()),J.el=null,ue){const T=V(z);for(;;){const l=a(z);if(l&&l!==T)y(l);else break}}const ne=a(z),ye=v(z);return y(z),n(null,J,ye,ne,re,ae,getContainerType(ye),me),re&&(re.vnode.el=J.el,updateHOCHostEl(re,J.el)),ne},V=(z,J="[",re="]")=>{let ae=0;for(;z;)if(z=a(z),z&&isComment(z)&&(z.data===J&&ae++,z.data===re)){if(ae===0)return a(z);ae--}return z},H=(z,J,re)=>{const ae=J.parentNode;ae&&ae.replaceChild(z,J);let me=re;for(;me;)me.vnode.el===J&&(me.vnode.el=me.subTree.el=z),me=me.parent},j=z=>z.nodeType===1&&z.tagName==="TEMPLATE";return[x,E]}function propHasMismatch(e,t,n,o,u){let a,v,y,w;if(t==="class")y=e.getAttribute("class"),w=normalizeClass(n),isSetEqual(toClassSet(y||""),toClassSet(w))||(a=2,v="class");else if(t==="style"){y=e.getAttribute("style")||"",w=isString$2(n)?n:stringifyStyle(normalizeStyle(n));const $=toStyleMap(y),x=toStyleMap(w);if(o.dirs)for(const{dir:E,value:B}of o.dirs)E.name==="show"&&!B&&x.set("display","none");u&&resolveCssVars(u,o,x),isMapEqual($,x)||(a=3,v="style")}else(e instanceof SVGElement&&isKnownSvgAttr(t)||e instanceof HTMLElement&&(isBooleanAttr(t)||isKnownHtmlAttr(t)))&&(isBooleanAttr(t)?(y=e.hasAttribute(t),w=includeBooleanAttr(n)):n==null?(y=e.hasAttribute(t),w=!1):(e.hasAttribute(t)?y=e.getAttribute(t):t==="value"&&e.tagName==="TEXTAREA"?y=e.value:y=!1,w=isRenderableAttrValue(n)?String(n):!1),y!==w&&(a=4,v=t));if(a!=null&&!isMismatchAllowed(e,a)){const $=B=>B===!1?"(not rendered)":`${v}="${B}"`,x=`Hydration ${MismatchTypeString[a]} mismatch on`,E=` - rendered on server: ${$(y)} - expected on client: ${$(w)} Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead. - You should fix the source of the mismatch.`;return warn$1(x,e,E),!0}return!1}function toClassSet(e){return new Set(e.trim().split(/\s+/))}function isSetEqual(e,t){if(e.size!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0}function toStyleMap(e){const t=new Map;for(const n of e.split(";")){let[o,u]=n.split(":");o=o.trim(),u=u&&u.trim(),o&&u&&t.set(o,u)}return t}function isMapEqual(e,t){if(e.size!==t.size)return!1;for(const[n,o]of e)if(o!==t.get(n))return!1;return!0}function resolveCssVars(e,t,n){const o=e.subTree;if(e.getCssVars&&(t===o||o&&o.type===Fragment&&o.children.includes(t))){const u=e.getCssVars();for(const a in u)n.set(`--${getEscapedCssVarName(a,!1)}`,String(u[a]))}t===o&&e.parent&&resolveCssVars(e.parent,e.vnode,n)}const allowMismatchAttr="data-allow-mismatch",MismatchTypeString={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function isMismatchAllowed(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(allowMismatchAttr);)e=e.parentElement;const n=e&&e.getAttribute(allowMismatchAttr);if(n==null)return!1;if(n==="")return!0;{const o=n.split(",");return t===0&&o.includes("children")?!0:n.split(",").includes(MismatchTypeString[t])}}const requestIdleCallback=getGlobalThis().requestIdleCallback||(e=>setTimeout(e,1)),cancelIdleCallback=getGlobalThis().cancelIdleCallback||(e=>clearTimeout(e)),hydrateOnIdle=(e=1e4)=>t=>{const n=requestIdleCallback(t,{timeout:e});return()=>cancelIdleCallback(n)};function elementIsVisibleInViewport(e){const{top:t,left:n,bottom:o,right:u}=e.getBoundingClientRect(),{innerHeight:a,innerWidth:v}=window;return(t>0&&t0&&o0&&n0&&u(t,n)=>{const o=new IntersectionObserver(u=>{for(const a of u)if(a.isIntersecting){o.disconnect(),t();break}},e);return n(u=>{if(u instanceof Element){if(elementIsVisibleInViewport(u))return t(),o.disconnect(),!1;o.observe(u)}}),()=>o.disconnect()},hydrateOnMediaQuery=e=>t=>{if(e){const n=matchMedia(e);if(n.matches)t();else return n.addEventListener("change",t,{once:!0}),()=>n.removeEventListener("change",t)}},hydrateOnInteraction=(e=[])=>(t,n)=>{isString$2(e)&&(e=[e]);let o=!1;const u=v=>{o||(o=!0,a(),t(),v.target.dispatchEvent(new v.constructor(v.type,v)))},a=()=>{n(v=>{for(const y of e)v.removeEventListener(y,u)})};return n(v=>{for(const y of e)v.addEventListener(y,u,{once:!0})}),a};function forEachElement(e,t){if(isComment(e)&&e.data==="["){let n=1,o=e.nextSibling;for(;o;){if(o.nodeType===1){if(t(o)===!1)break}else if(isComment(o))if(o.data==="]"){if(--n===0)break}else o.data==="["&&n++;o=o.nextSibling}}else t(e)}const isAsyncWrapper=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function defineAsyncComponent(e){isFunction$2(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:o,delay:u=200,hydrate:a,timeout:v,suspensible:y=!0,onError:w}=e;let $=null,x,E=0;const P=()=>(E++,$=null,I()),I=()=>{let L;return $||(L=$=t().catch(D=>{if(D=D instanceof Error?D:new Error(String(D)),w)return new Promise((V,H)=>{w(D,()=>V(P()),()=>H(D),E+1)});throw D}).then(D=>{if(L!==$&&$)return $;if(D||warn$1("Async component loader resolved to undefined. If you are using retry(), make sure to return its return value."),D&&(D.__esModule||D[Symbol.toStringTag]==="Module")&&(D=D.default),D&&!isObject$2(D)&&!isFunction$2(D))throw new Error(`Invalid async component load result: ${D}`);return x=D,D}))};return defineComponent({name:"AsyncComponentWrapper",__asyncLoader:I,__asyncHydrate(L,D,V){const H=a?()=>{const j=a(V,z=>forEachElement(L,z));j&&(D.bum||(D.bum=[])).push(j)}:V;x?H():I().then(()=>!D.isUnmounted&&H())},get __asyncResolved(){return x},setup(){const L=currentInstance;if(markAsyncBoundary(L),x)return()=>createInnerComp(x,L);const D=z=>{$=null,handleError(z,L,13,!o)};if(y&&L.suspense||isInSSRComponentSetup)return I().then(z=>()=>createInnerComp(z,L)).catch(z=>(D(z),()=>o?createVNode(o,{error:z}):null));const V=ref$1(!1),H=ref$1(),j=ref$1(!!u);return u&&setTimeout(()=>{j.value=!1},u),v!=null&&setTimeout(()=>{if(!V.value&&!H.value){const z=new Error(`Async component timed out after ${v}ms.`);D(z),H.value=z}},v),I().then(()=>{V.value=!0,L.parent&&isKeepAlive(L.parent.vnode)&&L.parent.update()}).catch(z=>{D(z),H.value=z}),()=>{if(V.value&&x)return createInnerComp(x,L);if(H.value&&o)return createVNode(o,{error:H.value});if(n&&!j.value)return createVNode(n)}}})}function createInnerComp(e,t){const{ref:n,props:o,children:u,ce:a}=t.vnode,v=createVNode(e,o,u);return v.ref=n,v.ce=a,delete t.vnode.ce,v}const isKeepAlive=e=>e.type.__isKeepAlive,KeepAliveImpl={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const n=getCurrentInstance(),o=n.ctx;if(!o.renderer)return()=>{const j=t.default&&t.default();return j&&j.length===1?j[0]:j};const u=new Map,a=new Set;let v=null;n.__v_cache=u;const y=n.suspense,{renderer:{p:w,m:$,um:x,o:{createElement:E}}}=o,P=E("div");o.activate=(j,z,J,re,ae)=>{const me=j.component;$(j,z,J,0,y),w(me.vnode,j,z,J,me,y,re,j.slotScopeIds,ae),queuePostRenderEffect(()=>{me.isDeactivated=!1,me.a&&invokeArrayFns(me.a);const ue=j.props&&j.props.onVnodeMounted;ue&&invokeVNodeHook(ue,me.parent,j)},y),devtoolsComponentAdded(me)},o.deactivate=j=>{const z=j.component;invalidateMount(z.m),invalidateMount(z.a),$(j,P,null,1,y),queuePostRenderEffect(()=>{z.da&&invokeArrayFns(z.da);const J=j.props&&j.props.onVnodeUnmounted;J&&invokeVNodeHook(J,z.parent,j),z.isDeactivated=!0},y),devtoolsComponentAdded(z)};function I(j){resetShapeFlag(j),x(j,n,y,!0)}function L(j){u.forEach((z,J)=>{const re=getComponentName(z.type);re&&!j(re)&&D(J)})}function D(j){const z=u.get(j);z&&(!v||!isSameVNodeType(z,v))?I(z):v&&resetShapeFlag(v),u.delete(j),a.delete(j)}watch(()=>[e.include,e.exclude],([j,z])=>{j&&L(J=>matches(j,J)),z&&L(J=>!matches(z,J))},{flush:"post",deep:!0});let V=null;const H=()=>{V!=null&&(isSuspense(n.subTree.type)?queuePostRenderEffect(()=>{u.set(V,getInnerChild(n.subTree))},n.subTree.suspense):u.set(V,getInnerChild(n.subTree)))};return onMounted(H),onUpdated(H),onBeforeUnmount(()=>{u.forEach(j=>{const{subTree:z,suspense:J}=n,re=getInnerChild(z);if(j.type===re.type&&j.key===re.key){resetShapeFlag(re);const ae=re.component.da;ae&&queuePostRenderEffect(ae,J);return}I(j)})}),()=>{if(V=null,!t.default)return v=null;const j=t.default(),z=j[0];if(j.length>1)return warn$1("KeepAlive should contain exactly one component child."),v=null,j;if(!isVNode(z)||!(z.shapeFlag&4)&&!(z.shapeFlag&128))return v=null,z;let J=getInnerChild(z);if(J.type===Comment)return v=null,J;const re=J.type,ae=getComponentName(isAsyncWrapper(J)?J.type.__asyncResolved||{}:re),{include:me,exclude:ue,max:ne}=e;if(me&&(!ae||!matches(me,ae))||ue&&ae&&matches(ue,ae))return J.shapeFlag&=-257,v=J,z;const ye=J.key==null?re:J.key,T=u.get(ye);return J.el&&(J=cloneVNode(J),z.shapeFlag&128&&(z.ssContent=J)),V=ye,T?(J.el=T.el,J.component=T.component,J.transition&&setTransitionHooks(J,J.transition),J.shapeFlag|=512,a.delete(ye),a.add(ye)):(a.add(ye),ne&&a.size>parseInt(ne,10)&&D(a.values().next().value)),J.shapeFlag|=256,v=J,isSuspense(z.type)?z:J}}},KeepAlive=KeepAliveImpl;function matches(e,t){return isArray$8(e)?e.some(n=>matches(n,t)):isString$2(e)?e.split(",").includes(t):isRegExp$3(e)?(e.lastIndex=0,e.test(t)):!1}function onActivated(e,t){registerKeepAliveHook(e,"a",t)}function onDeactivated(e,t){registerKeepAliveHook(e,"da",t)}function registerKeepAliveHook(e,t,n=currentInstance){const o=e.__wdc||(e.__wdc=()=>{let u=n;for(;u;){if(u.isDeactivated)return;u=u.parent}return e()});if(injectHook(t,o,n),n){let u=n.parent;for(;u&&u.parent;)isKeepAlive(u.parent.vnode)&&injectToKeepAliveRoot(o,t,n,u),u=u.parent}}function injectToKeepAliveRoot(e,t,n,o){const u=injectHook(t,e,o,!0);onUnmounted(()=>{remove(o[t],u)},n)}function resetShapeFlag(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function getInnerChild(e){return e.shapeFlag&128?e.ssContent:e}function injectHook(e,t,n=currentInstance,o=!1){if(n){const u=n[e]||(n[e]=[]),a=t.__weh||(t.__weh=(...v)=>{pauseTracking();const y=setCurrentInstance(n),w=callWithAsyncErrorHandling(t,n,e,v);return y(),resetTracking(),w});return o?u.unshift(a):u.push(a),a}else{const u=toHandlerKey(ErrorTypeStrings$1[e].replace(/ hook$/,""));warn$1(`${u} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup(). If you are using async setup(), make sure to register lifecycle hooks before the first await statement.`)}}const createHook=e=>(t,n=currentInstance)=>{(!isInSSRComponentSetup||e==="sp")&&injectHook(e,(...o)=>t(...o),n)},onBeforeMount=createHook("bm"),onMounted=createHook("m"),onBeforeUpdate=createHook("bu"),onUpdated=createHook("u"),onBeforeUnmount=createHook("bum"),onUnmounted=createHook("um"),onServerPrefetch=createHook("sp"),onRenderTriggered=createHook("rtg"),onRenderTracked=createHook("rtc");function onErrorCaptured(e,t=currentInstance){injectHook("ec",e,t)}const COMPONENTS="components",DIRECTIVES="directives";function resolveComponent(e,t){return resolveAsset(COMPONENTS,e,!0,t)||e}const NULL_DYNAMIC_COMPONENT=Symbol.for("v-ndc");function resolveDynamicComponent(e){return isString$2(e)?resolveAsset(COMPONENTS,e,!1)||e:e||NULL_DYNAMIC_COMPONENT}function resolveDirective(e){return resolveAsset(DIRECTIVES,e)}function resolveAsset(e,t,n=!0,o=!1){const u=currentRenderingInstance||currentInstance;if(u){const a=u.type;if(e===COMPONENTS){const y=getComponentName(a,!1);if(y&&(y===t||y===camelize(t)||y===capitalize$2(camelize(t))))return a}const v=resolve$2(u[e]||a[e],t)||resolve$2(u.appContext[e],t);if(!v&&o)return a;if(n&&!v){const y=e===COMPONENTS?` -If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.`:"";warn$1(`Failed to resolve ${e.slice(0,-1)}: ${t}${y}`)}return v}else warn$1(`resolve${capitalize$2(e.slice(0,-1))} can only be used in render() or setup().`)}function resolve$2(e,t){return e&&(e[t]||e[camelize(t)]||e[capitalize$2(camelize(t))])}function renderList(e,t,n,o){let u;const a=n&&n[o],v=isArray$8(e);if(v||isString$2(e)){const y=v&&isReactive(e);let w=!1;y&&(w=!isShallow(e),e=shallowReadArray(e)),u=new Array(e.length);for(let $=0,x=e.length;$t(y,w,void 0,a&&a[w]));else{const y=Object.keys(e);u=new Array(y.length);for(let w=0,$=y.length;w<$;w++){const x=y[w];u[w]=t(e[x],x,w,a&&a[w])}}else u=[];return n&&(n[o]=u),u}function createSlots(e,t){for(let n=0;n{const a=o.fn(...u);return a&&(a.key=o.key),a}:o.fn)}return e}function renderSlot(e,t,n={},o,u){if(currentRenderingInstance.ce||currentRenderingInstance.parent&&isAsyncWrapper(currentRenderingInstance.parent)&¤tRenderingInstance.parent.ce)return t!=="default"&&(n.name=t),openBlock(),createBlock(Fragment,null,[createVNode("slot",n,o&&o())],64);let a=e[t];a&&a.length>1&&(warn$1("SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template."),a=()=>[]),a&&a._c&&(a._d=!1),openBlock();const v=a&&ensureValidVNode(a(n)),y=n.key||v&&v.key,w=createBlock(Fragment,{key:(y&&!isSymbol$4(y)?y:`_${t}`)+(!v&&o?"_fb":"")},v||(o?o():[]),v&&e._===1?64:-2);return!u&&w.scopeId&&(w.slotScopeIds=[w.scopeId+"-s"]),a&&a._c&&(a._d=!0),w}function ensureValidVNode(e){return e.some(t=>isVNode(t)?!(t.type===Comment||t.type===Fragment&&!ensureValidVNode(t.children)):!0)?e:null}function toHandlers(e,t){const n={};if(!isObject$2(e))return warn$1("v-on with no argument expects an object value."),n;for(const o in e)n[t&&/[A-Z]/.test(o)?`on:${o}`:toHandlerKey(o)]=e[o];return n}const getPublicInstance=e=>e?isStatefulComponent(e)?getComponentPublicInstance(e):getPublicInstance(e.parent):null,publicPropertiesMap=extend$1(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>shallowReadonly(e.props),$attrs:e=>shallowReadonly(e.attrs),$slots:e=>shallowReadonly(e.slots),$refs:e=>shallowReadonly(e.refs),$parent:e=>getPublicInstance(e.parent),$root:e=>getPublicInstance(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>resolveMergedOptions(e),$forceUpdate:e=>e.f||(e.f=()=>{queueJob(e.update)}),$nextTick:e=>e.n||(e.n=nextTick$4.bind(e.proxy)),$watch:e=>instanceWatch.bind(e)}),isReservedPrefix=e=>e==="_"||e==="$",hasSetupBinding=(e,t)=>e!==EMPTY_OBJ&&!e.__isScriptSetup&&hasOwn$3(e,t),PublicInstanceProxyHandlers={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:o,data:u,props:a,accessCache:v,type:y,appContext:w}=e;if(t==="__isVue")return!0;let $;if(t[0]!=="$"){const I=v[t];if(I!==void 0)switch(I){case 1:return o[t];case 2:return u[t];case 4:return n[t];case 3:return a[t]}else{if(hasSetupBinding(o,t))return v[t]=1,o[t];if(u!==EMPTY_OBJ&&hasOwn$3(u,t))return v[t]=2,u[t];if(($=e.propsOptions[0])&&hasOwn$3($,t))return v[t]=3,a[t];if(n!==EMPTY_OBJ&&hasOwn$3(n,t))return v[t]=4,n[t];shouldCacheAccess&&(v[t]=0)}}const x=publicPropertiesMap[t];let E,P;if(x)return t==="$attrs"?(track(e.attrs,"get",""),markAttrsAccessed()):t==="$slots"&&track(e,"get",t),x(e);if((E=y.__cssModules)&&(E=E[t]))return E;if(n!==EMPTY_OBJ&&hasOwn$3(n,t))return v[t]=4,n[t];if(P=w.config.globalProperties,hasOwn$3(P,t))return P[t];currentRenderingInstance&&(!isString$2(t)||t.indexOf("__v")!==0)&&(u!==EMPTY_OBJ&&isReservedPrefix(t[0])&&hasOwn$3(u,t)?warn$1(`Property ${JSON.stringify(t)} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.`):e===currentRenderingInstance&&warn$1(`Property ${JSON.stringify(t)} was accessed during render but is not defined on instance.`))},set({_:e},t,n){const{data:o,setupState:u,ctx:a}=e;return hasSetupBinding(u,t)?(u[t]=n,!0):u.__isScriptSetup&&hasOwn$3(u,t)?(warn$1(`Cannot mutate - - - - - - - + + + + + + + +